needoriginalname Posted March 27, 2016 Posted March 27, 2016 I am making a mod that causes an action occur, usually a chat message appears, when the player clicked a modded Item a made when clicking the left button. I know how to do an action on the right mouse button, but how does one do it on the left mouse, especially if there might not be a block or entity when ever it clicks. Quote
coolAlias Posted March 27, 2016 Posted March 27, 2016 Last I checked there wasn't any generic left click method in the Item class, but you can subscribe to the ClientTickEvent and check if the GameSettings#keyBindAttack was pressed and your item is held, then call a method. Note that this is all CLIENT side, so if you want to do anything real, you'll need to send a packet to the server and do it there. PlayerInteractEvent may also work, but I don't recall whether there is a LEFT_CLICK_AIR; if there is, you probably still need to send a packet, as I doubt it is called server side. If you plan on having more than one item with this type of interaction, I'd make an interface for it such as ILeftClick with a method #onLeftClick, then you can have one check for that type of Item rather than a bunch of if/else if statements for all the different item types you want to handle. Quote http://i.imgur.com/NdrFdld.png[/img]
UberAffe Posted March 28, 2016 Posted March 28, 2016 I am also trying to do stuff on left click, here is what I have: @SideOnly(Side.CLIENT) @SubscribeEvent public void LeftClick(ClientTickEvent event) { //LogHelper.info("At least I get called"); if(Minecraft.getMinecraft().gameSettings.keyBindAttack.isPressed()) { LogHelper.info("Attacking"); } } When the first LogHelper is uncommented it spams the log, so I know this method is getting called, but the second LogHelper never gets called. Any idea what I have wrong with this if statement? Quote Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
coolAlias Posted March 28, 2016 Posted March 28, 2016 You need to use #getKeyIsPressed, not #isPressed (at least in 1.8 it was that way). Also, TickEvents have both a Start and an End phase and you only want to choose one of them: // example shortcut to only handle the start phase (in pseudo-code) if (event.phase == end) { return; } rest of code; Quote http://i.imgur.com/NdrFdld.png[/img]
UberAffe Posted March 28, 2016 Posted March 28, 2016 Forgot about the event phase, but I cant find a getKeyIsPressed anywhere(I am in 1.8.9) I switched to isKeyDown and that seems to be working how I want it to. Quote Current Project: Armerger Planned mods: Light Drafter | Ore Swords Looking for help getting a mod off the ground? Coding | Textures
Recommended Posts
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.