Posted July 13, 201411 yr Is there any event in 1.7.2 which allows you to execute code when the player switches what item they're holding? I'm trying to create a system whereby a player needs to meet certain requirements to use certain items/tools. So far I've been using PlayerTickEvent, and using dropOneItem() to make the player drop the item, and give them a chat message, but they receive the message ~5 times and drop the previous item they were holding too.
July 14, 201411 yr What does your code look like? Please use a gist. I prefer spoilers. You want to trigger something when the player changes his item, right? I would use something like this in an living update event: ItemStack oldItem; if(!player.inventory.getCurrentItem().isItemEqual(oldItem){ oldItem=player.inventory.getCurrentItem().copy(); YOUR CODE HERE.... } Here could be your advertisement!
July 14, 201411 yr Seeing as I asked him to paste quite a bit of code, I prefer gists, as they Are syntax highlighted Have line numbers (that can be highlighted from the URL) Are forkable
July 14, 201411 yr Seeing as I asked him to paste quite a bit of code, I prefer gists, as they Are syntax highlighted Have line numbers (that can be highlighted from the URL) Are forkable but they are opened in an external window/tab ); i already have 23 tabs open. Wait, maybe there is some way to embed them via a frame in a spoiler... Here could be your advertisement!
July 15, 201411 yr Author ... which is just because websites have the horrible habit of forcing external links to open in a new tab. If I want something in a new tab, I do it manually with the middle mouse button. /rant. This. Also, sorry, didn't realise people had replied to this - I'll post source code (both in a spoiler and in a gist ) when I get home from work.
July 17, 201411 yr Author Right, sorry it's taken so long for me to respond to this, been busy at work. Anyway, here is the code for my PlayerTickEvent: Gist: https://gist.github.com/Zer0HD/9c2b3a54a8e6b61b2d07 @SubscribeEvent public void onPlayerTick(PlayerTickEvent event) { EntityPlayer player = (EntityPlayer)event.player; ItemStack itemstack = player.getCurrentEquippedItem(); if(itemstack != null && itemstack.getItem() instanceof ItemSword) { ExtendedPlayerProperties props = ExtendedPlayerProperties.fetchProperties(player); int att = props.getStat("att"); Map<String, Integer> levelMap = new HashMap<String, Integer>(); levelMap.put("WOOD", 1); levelMap.put("STONE", 2); levelMap.put("copperMaterial", 4); levelMap.put("bronzeMaterial", 5); levelMap.put("GOLD", 5); levelMap.put("IRON", 7); levelMap.put("DIAMOND", ; levelMap.put("obsidianMaterial", 10); ItemSword sword = (ItemSword)itemstack.getItem(); String mat = sword.getToolMaterialName(); if(att < levelMap.get(mat)) { player.dropOneItem(false); player.addChatMessage(new ChatComponentText(EnumChatFormatting.GRAY + "You do not have a high enough attack level to use this item.")); } } }
July 17, 201411 yr Author For some reason I can't change the syntax highlighting of the gist, it keeps reverting to plaintext. No idea what's going on there.
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.