Mugging.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package me.km.effects.passive;
  2. import java.util.ArrayList;
  3. import java.util.stream.Collectors;
  4. import me.km.api.Module;
  5. import me.km.api.ModuleListener;
  6. public class Mugging extends ModuleListener
  7. {
  8. public Mugging(Module m)
  9. {
  10. super(m);
  11. }
  12. // TODO
  13. /*
  14. @EventHandler(ignoreCancelled = true)
  15. public void mugging(PlayerInteractEntityEvent e)
  16. {
  17. Player p = e.getPlayer();
  18. if(e.getHand() == EquipmentSlot.OFF_HAND ||
  19. !KajetansTools.worldManager.getWorldPreferences(p.getWorld()).skills ||
  20. !checkForDagger(p))
  21. {
  22. return;
  23. }
  24. int mugging = EffectUtils.getEffectLevel(p, Effect.MUGGING);
  25. if(mugging < 1)
  26. {
  27. return;
  28. }
  29. e.setCancelled(true);
  30. Entity ent = e.getRightClicked();
  31. if(ent instanceof Monster)
  32. {
  33. if(p.getInventory().firstEmpty() == -1)
  34. {
  35. this.getModule().send(p, "Dein Inventar ist zu voll für einen Diebstahl.");
  36. return;
  37. }
  38. Monster m = (Monster) ent;
  39. if(mugging < Utils.randomInt(1, 5))
  40. {
  41. this.getModule().send(p, "Der Diebstahl hat fehlgeschlagen.");
  42. if(!p.hasPotionEffect(PotionEffectType.INVISIBILITY))
  43. {
  44. m.setTarget(p);
  45. }
  46. CustomItemUtils.lowerDurability(p, 15);
  47. return;
  48. }
  49. ArrayList<Integer> loot = new ArrayList<>();
  50. EntityEquipment equ = m.getEquipment();
  51. if(equ.getHelmet().getType() != Material.AIR)
  52. {
  53. loot.add(0);
  54. }
  55. if(equ.getChestplate().getType() != Material.AIR)
  56. {
  57. loot.add(1);
  58. }
  59. if(equ.getLeggings().getType() != Material.AIR)
  60. {
  61. loot.add(2);
  62. }
  63. if(equ.getBoots().getType() != Material.AIR)
  64. {
  65. loot.add(3);
  66. }
  67. if(equ.getItemInMainHand().getType() != Material.AIR)
  68. {
  69. loot.add(4);
  70. }
  71. if(equ.getItemInOffHand().getType() != Material.AIR)
  72. {
  73. loot.add(5);
  74. }
  75. if(loot.isEmpty())
  76. {
  77. this.getModule().send(p, "Hier gibt es nichts zum stehlen.");
  78. return;
  79. }
  80. switch(loot.get(Utils.randomInt(0, loot.size() - 1)))
  81. {
  82. case 0:
  83. p.getInventory().addItem(equ.getHelmet());
  84. equ.setHelmet(new ItemStack(Material.AIR));
  85. break;
  86. case 1:
  87. p.getInventory().addItem(equ.getChestplate());
  88. equ.setChestplate(new ItemStack(Material.AIR));
  89. break;
  90. case 2:
  91. p.getInventory().addItem(equ.getLeggings());
  92. equ.setLeggings(new ItemStack(Material.AIR));
  93. break;
  94. case 3:
  95. p.getInventory().addItem(equ.getBoots());
  96. equ.setBoots(new ItemStack(Material.AIR));
  97. break;
  98. case 4:
  99. p.getInventory().addItem(equ.getItemInMainHand());
  100. equ.setItemInMainHand(new ItemStack(Material.AIR));
  101. break;
  102. case 5:
  103. p.getInventory().addItem(equ.getItemInOffHand());
  104. equ.setItemInOffHand(new ItemStack(Material.AIR));
  105. break;
  106. }
  107. this.getModule().send(p, "Der Diebstahl war erfolgreich.");
  108. }
  109. else if(ent instanceof Villager)
  110. {
  111. if(p.getInventory().firstEmpty() == -1)
  112. {
  113. this.getModule().send(p, "Dein Inventar ist zu voll für einen Diebstahl.");
  114. return;
  115. }
  116. Villager v = (Villager) ent;
  117. if(mugging < Utils.randomInt(1, 5))
  118. {
  119. this.getModule().send(p, "Der Diebstahl hat fehlgeschlagen.");
  120. Utils.damageItemInHand(p, 15);
  121. if(!p.hasPotionEffect(PotionEffectType.INVISIBILITY))
  122. {
  123. p.sendMessage("§7[§c" + v.getName() + "§7] §rWas machst du da?");
  124. p.damage(Utils.randomInt(6, 12), v);
  125. return;
  126. }
  127. p.sendMessage("§7[§c" + v.getName() + "§7] §rHuch, was war das?");
  128. return;
  129. }
  130. ArrayList<ItemStack> loot = new ArrayList<>(v.getRecipes().stream().map(r -> r.getResult()).collect(Collectors.toList()));
  131. loot.add(new ItemStack(Material.BREAD));
  132. p.getInventory().addItem(loot.get(Utils.randomInt(0, loot.size() - 1)));
  133. this.getModule().send(p, "Der Diebstahl war erfolgreich.");
  134. }
  135. }*/
  136. }