Posted July 30, 20169 yr I'm trying to create a method that, when holding an item(climbing_hook), the player may be able to "hook" onto walls while crouching and having the hook in hand. This is my event class: package bloopers.climbing.eventhandeler; import com.sun.media.jfxmedia.events.PlayerEvent; import bloopers.climbing.init.ClimbingItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class EventOnHeld { @SubscribeEvent public void HeldItem(PlayerInteractEvent event, EntityPlayer player, World world) { if (player.getHeldItemMainhand() != null) { Item item = player.getHeldItemMainhand().getItem(); if (item == ClimbingItems.climbing_hook) { if (player.isSneaking()) { if (player.isCollidedVertically) { player.setVelocity(0.0F, 0.0F, 0.0F); } } } } } } And this is how I am registering it: MinecraftForge.EVENT_BUS.register(new EventOnHeld()); Whenever I launch the game, it loads up and crashes before it reaches the home screen. If I comment out the register thing, minecraft launches fine, but the event can't be registered.
July 30, 20169 yr Author You cannot just add arbitrary parameters to event handler methods. A method annotated with @SubscribeEvent must take a single parameter: the event. PlayerInteractEvent has several sub-events, you should choose one, don't just subscribe to one. And why do you need an event handler here at all? If it's your item, you can use the callback methods in the Item class. How would I go about using a callback method for this?
July 30, 20169 yr onItemRightClick() in the Items class. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 9, 20169 yr You cannot put invalid arguments while using @Subscribe events, like EntityPlayer player, World world (your world class is not even imported correctly?). The only accepted input is the event. The correct way of using an event (getting event fields) is like this: @SubscribeEvent public void HeldItem(PlayerInteractEvent event) { EntityPlayer player = event.getEntityPlayer(); World world = player.getEntityWorld(); } which there after you can refer to the player and world of the event.
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.