Jump to content

How to run onItemRightClick one time?


progamergalil

Recommended Posts

I' ve a problem with onItemRightClick function...

It' s a loop, and when I right click the text is repeated several times...

How can I print only one time every time that I right click?

Here is the code:

    @Override
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
        
        player.addChatMessage(new ChatComponentText("Hello world"));
        
        return stack;
    }

Link to comment
Share on other sites

I mean that the function must write "hello world" only 1 time evry right click...

I've think that I could make a function that "lock" onItemRightClick function if right click is pressed.

 

int count = 1;

    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {

        if (count == 1) {

             player.addChatMessage(new ChatComponentText("Right clicked"));

        }

     count = 0;

    }

 

public void control() {

      if ("here test if mouse is NOT right clicked") {   // <-- LOOK DOWN *

             count = 1;

       }

}

 

 

*This is the "if" that I don't know. Is possible to test in "if" if mouse is not right clicked?

 

With this way the onItemRightClick function is executed ONE time (because the next time COUNT is equal to 0).

Edited by progamergalil
Link to comment
Share on other sites

11 minutes ago, progamergalil said:

Sorry, I mean once per side / per hand...

Can you give me an easy example?

The function is called four times. Once on each side for each hand. Two sides, two hands, four calls.

 

You need to check what side and which hand and decide based on that information what to do. You want to pick one combination and only send the chat message on that combination.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

What they mean is that the function isn't really on a loop, rather it is being called on both the client and the server and for each of those called passing in ItemStack in each of the two hands.

 

So you don't stop it from running, instead when it runs you need to check which side is running and which whether the itemstack is passed in a hand that you care about and then act accordingly.

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

2 minutes ago, jabelar said:

What they mean is that the function isn't really on a loop, rather it is being called on both the client and the server and for each of those called passing in ItemStack in each of the two hands.

 

So you don't stop it from running, instead when it runs you need to check which side is running and which whether the itemstack is passed in a hand that you care about and then act accordingly.

 

Yes, but I don't know how to make it :'(

Link to comment
Share on other sites

if(the active side == side I care about && active hand == hand I care about) {
  //do something
}

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Well...one of the parameters passed the function is a World object. World objects can either be client side or server side and you can tell by querying World#isRemote.

Edited by Draco18s

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

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.