Ms_Raven Posted January 9, 2016 Share Posted January 9, 2016 I made an enchantment that's supposed to increase the player's speed every level. But walking with the max-level enchanted boots equipped is still the default speed doesn't even happen and instead the world keeps unloading and loading. My event handler registered and working perfectly fine with other events so I can't figure out what I'm doing wrong. @SubscribeEvent public void updateEnchantments(LivingUpdateEvent event) { if (event.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.entity; ItemStack item; for (int i = 0; i < 4; i++) { item = player.getCurrentArmor(i); if (item != null) { int j = EnchantmentHelper.getEnchantmentLevel(Worlds.hyperspeed.effectId, item); if (j > 0) { player.capabilities.setPlayerWalkSpeed(player.capabilities.getWalkSpeed() + 1 * j); Worlds.log.entry("Speed - " + player.capabilities.getWalkSpeed()); } } } } } Quote Link to comment Share on other sites More sharing options...
jeffryfisher Posted January 10, 2016 Share Posted January 10, 2016 How often does LivingUpdateEvent get called? I may be wrong, but it looks like every update is going to multiply the player's speed again and again until it overflows. Am I reading your expression wrong? I trust you've looked at how a speed potion (or running) produces its effect in vanilla code. Do they use such multiplication in effectively the same place that this event fires? Also, you mention boots but your loop looks at all four armor slots. Is speed intended to work on helms etc? Quote The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting. Link to comment Share on other sites More sharing options...
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.