Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package remvn.xenchantmentpack.passive;
- import com.google.common.collect.Maps;
- import org.bukkit.Sound;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.EntityDamageByEntityEvent;
- import org.bukkit.event.player.PlayerItemHeldEvent;
- import org.bukkit.inventory.ItemStack;
- import remvn.xenchantment.XEnchantment;
- import remvn.xenchantment.api.EnchantEntry;
- import remvn.xenchantmentpack.XEnchantmentPack;
- import remvn.xenchantmentpack.abs.PercentEnchant;
- import remvn.xlibrary.itemstack.ItemSet;
- import java.util.Map;
- import java.util.UUID;
- import java.util.concurrent.atomic.AtomicInteger;
- public class Cumulative extends PercentEnchant implements Listener {
- boolean isMainHandOnly;
- XEnchantmentPack plugin = XEnchantmentPack.getInstance();
- private final Map<UUID, AtomicInteger> counterMap = Maps.newConcurrentMap();
- public Cumulative() {
- super("Cumulative");
- setDisplayName(getName());
- addNaturalItems(ItemSet.AXES.getItems());
- plugin.getServer().getPluginManager().registerEvents(this, plugin);
- }
- @Override
- public void loadConfig(YamlConfiguration config) {
- super.loadConfig(config);
- setEnchantable(config.getBoolean("enable"));
- isMainHandOnly = config.getBoolean("mainHandOnly");
- }
- @Override
- public void applyOnHit(Player user, LivingEntity target, EnchantEntry entry, EntityDamageByEntityEvent event) {
- if (isMainHandOnly) {
- if (checkMainHand(entry)) return;
- run(entry, event);
- return;
- }
- run(entry, event);
- }
- private void run(EnchantEntry entry, EntityDamageByEntityEvent event) {
- Player p = (Player) event.getDamager();
- AtomicInteger counter = counterMap.compute(p.getUniqueId(), (uuid, c) -> {
- AtomicInteger res = c == null ? new AtomicInteger(0) : c;
- res.incrementAndGet();
- return res;
- });
- int mod = counter.get() % 5;
- if (mod == 4) {
- p.playSound(p.getEyeLocation(), Sound.BLOCK_RESPAWN_ANCHOR_AMBIENT, 1f, 1f);
- } else if (mod == 0) {
- double percent = getPercent(entry.getLevel());
- event.setDamage(event.getDamage() * (1 + percent));
- p.playSound(p.getEyeLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 1f, 1f);
- LivingEntity victim = (LivingEntity) event.getEntity();
- //effect
- }
- }
- @EventHandler
- public void onChangeHotBar(PlayerItemHeldEvent event){
- Player p = event.getPlayer();
- ItemStack item = p.getInventory().getItem(event.getNewSlot());
- if (item == null) return;
- EnchantEntry entry = XEnchantment.getXEnchantAPI().getEnchant(item, getID());
- if (entry != null) {
- counterMap.remove(p.getUniqueId());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment