Jump to content

Recommended Posts

Posted

I've added bows to my mod, and used PlayerAPI to get access to the methods getItemIcon and getFOVMultiplier in EntityPlayerSP, which are necessary for the zoom function while pulling back the string of the bow. I'd like to be able to do this without using PlayerAPI, just in Forge. If these hooks have already been suggested, or even already exist, I am very sorry. I've looked for them with no result. Thanks.

Posted

I do not see why you would need to override getItemIcon, pretty sure that just returning a new icon index from your item class should work based on the calculated state of things.

 

As for getFOVMultiplier, I do not see any way to change what it returns, reflectively or not, directly that is.  However it seems that its return value is set straight on the entity renderer class fovMultiplierTemp instance variable, which in turn is used in calculations on the instance variable fovModifierHand as seen in updateFovModifierHand.  If you can tick at the right time then you could probably override it easily enough using reflection.  However ticking like that at the right time may be costly, a proper hook would be better, should be as generic as possible though, if you want to submit one.

Posted

I do not see why you would need to override getItemIcon, pretty sure that just returning a new icon index from your item class should work based on the calculated state of things.

 

As for getFOVMultiplier, I do not see any way to change what it returns, reflectively or not, directly that is.  However it seems that its return value is set straight on the entity renderer class fovMultiplierTemp instance variable, which in turn is used in calculations on the instance variable fovModifierHand as seen in updateFovModifierHand.  If you can tick at the right time then you could probably override it easily enough using reflection.  However ticking like that at the right time may be costly, a proper hook would be better, should be as generic as possible though, if you want to submit one.

I'm not sure if you know what getItemIcon does, or I'm just not understanding you correctly. It returns the icon that is displayed in your hand. Normally it uses the texture for the item you are holding, but while pulling back the bow, it must be changed to the textures with the string being pulled back. If I were to return a different texture from the item, it would also change the texture in the hot bar, which is not what I want to do.

 

As a new user of Forge and a relatively inexperienced programmer, what you are saying concerning getFOVMultiplier is beyond my knowledge. I've read a bit about reflection in order to better understand it, but I'm not sure if I would be able to make a hook. I'll look into it. I should be able to add a simple hook to EntityPlayer for getItemIcon, unless you think I shouldn't. I'll use that as a sort of introductory course to creating Forge hooks, then make an attempt at changing the FOV with a hook. Do you know of any tutorials for creating and submitting a Forge hook? Thanks for the help.

Posted

I do not see why you would need to override getItemIcon, pretty sure that just returning a new icon index from your item class should work based on the calculated state of things.

 

As for getFOVMultiplier, I do not see any way to change what it returns, reflectively or not, directly that is.  However it seems that its return value is set straight on the entity renderer class fovMultiplierTemp instance variable, which in turn is used in calculations on the instance variable fovModifierHand as seen in updateFovModifierHand.  If you can tick at the right time then you could probably override it easily enough using reflection.  However ticking like that at the right time may be costly, a proper hook would be better, should be as generic as possible though, if you want to submit one.

I'm not sure if you know what getItemIcon does, or I'm just not understanding you correctly. It returns the icon that is displayed in your hand. Normally it uses the texture for the item you are holding, but while pulling back the bow, it must be changed to the textures with the string being pulled back. If I were to return a different texture from the item, it would also change the texture in the hot bar, which is not what I want to do.

Correct, and doesn't it repoll it every time it renders, thus just returning a different index based on state would work I would think?  I have not actually made one myself though uncertain.

 

As a new user of Forge and a relatively inexperienced programmer, what you are saying concerning getFOVMultiplier is beyond my knowledge. I've read a bit about reflection in order to better understand it, but I'm not sure if I would be able to make a hook. I'll look into it. I should be able to add a simple hook to EntityPlayer for getItemIcon, unless you think I shouldn't. I'll use that as a sort of introductory course to creating Forge hooks, then make an attempt at changing the FOV with a hook. Do you know of any tutorials for creating and submitting a Forge hook? Thanks for the help.

I'd say wait on Lex to determine about the getItemIcon, he would know better, and ditto about the FOV.

Posted

Correct, and doesn't it repoll it every time it renders, thus just returning a different index based on state would work I would think?  I have not actually made one myself though uncertain.

 

I'd say wait on Lex to determine about the getItemIcon, he would know better, and ditto about the FOV.

It's my understanding that you want me to change the icon index of the bow item while it is being pulled back, so that the result of getIconIndex for the bow changes as it is being right-clicked. If this is the case, then it will not work how I want it to. I've gone through the code for rendering the hot bar, and it does check the index every time it renders. Changing getIconIndex would give the desired effect of the string being pulled back on the in-hand bow, but it would also do that in the inventory. As far as I can tell, this won't work without a hook. I don't mind adding a hook, especially if I'm going to do one for the FOV anyway. I just have to learn how to create hooks, and check with Lex.

 

EDIT: How do you suggest I contact Lex? He seems to have blocked PMs.

Posted

Dont dare try to pm me -.-

And we already have a use-duration sensitive version of getIconIndex

So go use that like you should. Do some research before thinking about writing new hooks.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

And we already have a use-duration sensitive version of getIconIndex

Ah, I knew there was, saw it in some code a while back and it worked in that mod, just thought it was the normal function though.

Posted

Dont dare try to pm me -.-

And we already have a use-duration sensitive version of getIconIndex

So go use that like you should. Do some research before thinking about writing new hooks.

After further research, I still cannot find any information on the getIconIndex. Could you please help me out? As for the hook regarding the FOV, should I create it? Do you already have one of those too?

Posted

Dont dare try to pm me -.-

And we already have a use-duration sensitive version of getIconIndex

So go use that like you should. Do some research before thinking about writing new hooks.

After further research, I still cannot find any information on the getIconIndex. Could you please help me out? As for the hook regarding the FOV, should I create it? Do you already have one of those too?

In other words there should be *two* getIconIndex methods, with different arguments.  The other one is the one you want.

 

As for the FOV, unsure yet...

Posted

Thanks for the help, both of you. I had confused getItemIcon and getIconIndex, which caused me trouble when I tried to find the hook. I found it now. Sorry about that. I do still need help with the FOV hook though.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Back then there was a number which determined the tier of an item and block. If the block tier is lower or equal to the item number, the block would be mined. this however, has changed and now it goes by "needs_netherite_tool" which is fine, until you realized that some mods had items and blocks that exceeded these values. You can make you own "needs_mod_tool" but I feel that this is more limiting(and just more work) than before. So is there anyway to use something similar to the old tier system while also still being compatible with a lot of other mod tools?
    • Well, when I log in to the server, sometimes within an hour, sometimes within a minute, the server closes and informs me that there was a Ticking entity error. Below is the crash report
    • Try switching to Windowed or Borderless Window mode in Minecraft. These modes make it easier for the recorder to capture gameplay, as it still has access to the display without the game taking up all of the graphics resources.
    • This forum is for Forge, not NeoForge. Please go to them for support.
    • Forge version: 55.0.0 Minecraft version: 1.21.5 Downloads: As this is the start of a new version, it is recommended that you check the downloads page and use the latest version to receive any bug fixes. Downloads page Intro: Good evening! Today, we have released our initial build of Forge 55.0 for Minecraft 1.21.5. 1.21.5 is the newest member of the 1.21 family of versions, which was released yesterday on March 25, 2025. As a reminder, the first minor (X.0) of a Forge version is a beta. Forge betas are marked as such on the bottom left of the title screen and are candidates for any breaking changes. Additionally, there are a couple of important things to note about this update, which I've made sure to mention in this post as well. Feel free to chat with us about bugs or these implementation changes on GitHub and in our Discord server. As always, we will continue to keep all versions of 1.21 and 1.20 in active support as covered by our tiered support policy. Cheers, happy modding, and good luck porting! Rendering Refactor For those who tuned in to Minecraft Live on March 22, 2025, you may already know that Mojang have announced their intention to bring their new Vibrant Visuals overhaul to Java in the future. They've taken the first steps toward this by refactoring how rendering pipelines and render types are handled internally. This has, in turn, made many of Forge's rendering APIs that have existed for years obsolete, as they (for the most part) can be done directly in vanilla. If there was a rendering API that was provided by Forge which you believe should be re-implemented, we're happy to discuss on GitHub through an issue or a pull request. Deprecation of weapon-like ToolActions In 1.21.5, Minecraft added new data components for defining the characteristics of weapons in data. This includes attack speed, block tags which define efficient blocks, and more. As such, we will begin marking our ToolActions solution for this as deprecated. ToolActions were originally added to address the problem of creating modded tools that needed to perform the same actions as vanilla tools. There are still a few tool actions that will continue to be used, such as the shears tool action for example. There are some existing Forge tool actions that are currently obsolete and have no effect given the way the new data components are implemented. We will continue to work on these deprecations and invite you to chat with us on GitHub or Discord if you have any questions.
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.