PlasmaVNGaming

Untitled

Aug 18th, 2021
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. package remvn.xenchantmentpack.passive;
  2.  
  3. import com.google.common.collect.Maps;
  4. import org.bukkit.Sound;
  5. import org.bukkit.configuration.file.YamlConfiguration;
  6. import org.bukkit.entity.LivingEntity;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  11. import org.bukkit.event.player.PlayerItemHeldEvent;
  12. import org.bukkit.inventory.ItemStack;
  13. import remvn.xenchantment.XEnchantment;
  14. import remvn.xenchantment.api.EnchantEntry;
  15. import remvn.xenchantmentpack.XEnchantmentPack;
  16. import remvn.xenchantmentpack.abs.PercentEnchant;
  17. import remvn.xlibrary.itemstack.ItemSet;
  18.  
  19. import java.util.Map;
  20. import java.util.UUID;
  21. import java.util.concurrent.atomic.AtomicInteger;
  22.  
  23. public class Cumulative extends PercentEnchant implements Listener {
  24.  
  25. boolean isMainHandOnly;
  26. XEnchantmentPack plugin = XEnchantmentPack.getInstance();
  27.  
  28. private final Map<UUID, AtomicInteger> counterMap = Maps.newConcurrentMap();
  29.  
  30. public Cumulative() {
  31. super("Cumulative");
  32. setDisplayName(getName());
  33. addNaturalItems(ItemSet.AXES.getItems());
  34. plugin.getServer().getPluginManager().registerEvents(this, plugin);
  35. }
  36.  
  37. @Override
  38. public void loadConfig(YamlConfiguration config) {
  39. super.loadConfig(config);
  40. setEnchantable(config.getBoolean("enable"));
  41. isMainHandOnly = config.getBoolean("mainHandOnly");
  42. }
  43.  
  44. @Override
  45. public void applyOnHit(Player user, LivingEntity target, EnchantEntry entry, EntityDamageByEntityEvent event) {
  46. if (isMainHandOnly) {
  47. if (checkMainHand(entry)) return;
  48. run(entry, event);
  49. return;
  50. }
  51. run(entry, event);
  52. }
  53.  
  54. private void run(EnchantEntry entry, EntityDamageByEntityEvent event) {
  55. Player p = (Player) event.getDamager();
  56. AtomicInteger counter = counterMap.compute(p.getUniqueId(), (uuid, c) -> {
  57. AtomicInteger res = c == null ? new AtomicInteger(0) : c;
  58. res.incrementAndGet();
  59. return res;
  60. });
  61.  
  62. int mod = counter.get() % 5;
  63. if (mod == 4) {
  64. p.playSound(p.getEyeLocation(), Sound.BLOCK_RESPAWN_ANCHOR_AMBIENT, 1f, 1f);
  65. } else if (mod == 0) {
  66. double percent = getPercent(entry.getLevel());
  67. event.setDamage(event.getDamage() * (1 + percent));
  68.  
  69. p.playSound(p.getEyeLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 1f, 1f);
  70. LivingEntity victim = (LivingEntity) event.getEntity();
  71.  
  72. //effect
  73. }
  74. }
  75.  
  76. @EventHandler
  77. public void onChangeHotBar(PlayerItemHeldEvent event){
  78. Player p = event.getPlayer();
  79. ItemStack item = p.getInventory().getItem(event.getNewSlot());
  80. if (item == null) return;
  81. EnchantEntry entry = XEnchantment.getXEnchantAPI().getEnchant(item, getID());
  82. if (entry != null) {
  83. counterMap.remove(p.getUniqueId());
  84. }
  85. }
  86.  
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment