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



×
×
  • Create New...

Important Information

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