ItemWand.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package me.km.items;
  2. import me.km.KajetansMod;
  3. import me.km.api.GlobalText;
  4. import me.km.effects.ActiveEffectBase;
  5. import me.km.effects.Effect;
  6. import me.km.effects.EffectCause;
  7. import me.km.effects.EffectUtils;
  8. import net.minecraft.entity.player.EntityPlayer;
  9. import net.minecraft.entity.player.EntityPlayerMP;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraft.stats.StatList;
  12. import net.minecraft.util.ActionResult;
  13. import net.minecraft.util.EnumActionResult;
  14. import net.minecraft.util.EnumHand;
  15. import net.minecraft.world.World;
  16. public class ItemWand extends ItemWeapon
  17. {
  18. private final int strength;
  19. public ItemWand(String name, String local, ToolMaterial material, int strength)
  20. {
  21. super(name, local, material, 0, -3);
  22. this.strength = strength;
  23. }
  24. @Override
  25. public ActionResult<ItemStack> onItemRightClick(World w, EntityPlayer p, EnumHand hand)
  26. {
  27. if(w.isRemote || KajetansMod.singlePlayer)
  28. {
  29. return new ActionResult(EnumActionResult.SUCCESS, p.getHeldItem(hand));
  30. }
  31. if(!KajetansMod.worldManager.getWorldPreferences(w).scrolls)
  32. {
  33. KajetansMod.effects.send(p, GlobalText.noScrolls());
  34. return new ActionResult(EnumActionResult.FAIL, p.getHeldItem(hand));
  35. }
  36. int wand = EffectUtils.getEffectLevel(p, Effect.USE_WAND);
  37. if(wand < 1)
  38. {
  39. KajetansMod.effects.send(p, "Du kannst keine Zauberstäbe benutzen.");
  40. return new ActionResult(EnumActionResult.FAIL, p.getHeldItem(hand));
  41. }
  42. ItemStack stack = p.getHeldItem(hand);
  43. try
  44. {
  45. Class<? extends ActiveEffectBase> c = EffectUtils.getEffectClass(stack.getDisplayName().substring(2));
  46. if(c == null)
  47. {
  48. throw new Exception();
  49. }
  50. if(ActiveEffectBase.executeEffect(c, (EntityPlayerMP) p, strength, 0, EffectCause.WAND))
  51. {
  52. if(!p.isCreative())
  53. {
  54. stack.damageItem(1, p);
  55. }
  56. }
  57. }
  58. catch(Exception ex)
  59. {
  60. KajetansMod.effects.send(p, "Der Zauberstab ist korrupt.");
  61. return new ActionResult(EnumActionResult.FAIL, stack);
  62. }
  63. p.addStat(StatList.getObjectUseStats(this));
  64. return new ActionResult(EnumActionResult.SUCCESS, stack);
  65. }
  66. }