Updated to new listener system

This commit is contained in:
Auxilor
2020-09-25 19:15:44 +01:00
parent e9b78175b0
commit 473fb5ad0f
129 changed files with 632 additions and 2026 deletions

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -23,7 +24,7 @@ public class InaccuracyCurse extends EcoEnchant {
@Override
public void onBowShoot(LivingEntity shooter, int level, EntityShootBowEvent event) {
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
double spread = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "spread");
Vector velocity = event.getProjectile().getVelocity().clone();

View File

@@ -26,7 +26,7 @@ public class Aerial extends EcoEnchant {
@Override
public void onBowShoot(LivingEntity shooter, int level, EntityShootBowEvent event) {
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
if(!(event.getProjectile() instanceof Arrow)) return;
if(shooter.isOnGround()) return;

View File

@@ -22,22 +22,13 @@ public class BlastMining extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
if (block.hasMetadata("from-drill") || block.hasMetadata("from-lumberjack") || block.hasMetadata("from-blastmining") || block.hasMetadata("from-vein")) {
return;
}
if (!EnchantChecks.mainhand(player, this)) return;
if (event.isCancelled())
return;
if(!AntigriefManager.canBreakBlock(player, block)) return;
if(player.isSneaking() && this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "disable-on-sneak")) return;
boolean hasExploded = false;

View File

@@ -24,26 +24,12 @@ public class Bleed extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (attacker instanceof Player && Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -24,27 +24,9 @@ public class Blind extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if(event.isCancelled()) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -18,19 +19,12 @@ public class BlockBreather extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHurt(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player))
return;
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(!event.getCause().equals(EntityDamageEvent.DamageCause.SUFFOCATION))
return;
Player player = (Player) event.getEntity();
if(!EnchantChecks.helmet(player, this)) return;
int level = EnchantChecks.getHelmetLevel(player, this);
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
if (NumberUtils.randFloat(0, 1) > level * 0.01 * chance)
@@ -38,5 +32,4 @@ public class BlockBreather extends EcoEnchant {
event.setCancelled(true);
}
}

View File

@@ -4,10 +4,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Boss;
import org.bukkit.entity.ElderGuardian;
import org.bukkit.entity.Player;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
public class BossHunter extends EcoEnchant {
@@ -19,19 +16,9 @@ public class BossHunter extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow)) return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player)) return;
if (!(event.getEntity() instanceof Boss || event.getEntity() instanceof ElderGuardian)) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Boss || victim instanceof ElderGuardian)) return;
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -8,10 +8,7 @@ import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.Sound;
import org.bukkit.SoundCategory;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.AbstractArrow;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.util.Vector;
@@ -24,21 +21,12 @@ public class Buckshot extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onShoot(EntityShootBowEvent event) {
if (event.getProjectile().getType() != EntityType.ARROW)
return;
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
event.getProjectile().remove();
player.playSound(player.getLocation(), Sound.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, 1.0f, 1.0f);
if(shooter instanceof Player) {
((Player) shooter).playSound(shooter.getLocation(), Sound.ENTITY_ARROW_SHOOT, SoundCategory.PLAYERS, 1.0f, 1.0f);
}
int numberPerLevel = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "amount-per-level");
int number = numberPerLevel * level;
@@ -51,9 +39,9 @@ public class Buckshot extends EcoEnchant {
velocity.add(new Vector(NumberUtils.randFloat(-spread, spread), NumberUtils.randFloat(-spread, spread), NumberUtils.randFloat(-spread, spread)));
Arrow arrow = player.launchProjectile(Arrow.class, velocity);
if(EnchantChecks.mainhand(player, Enchantment.ARROW_FIRE)) arrow.setFireTicks(Integer.MAX_VALUE);
arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);
Arrow arrow1 = shooter.launchProjectile(Arrow.class, velocity);
if(EnchantChecks.mainhand(shooter, Enchantment.ARROW_FIRE)) arrow1.setFireTicks(Integer.MAX_VALUE);
arrow1.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);
}
}
}

View File

@@ -18,22 +18,12 @@ public class Butchering extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void butcheringHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.getEntity() instanceof Monster)
return;
Player player = (Player) event.getDamager();
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(victim instanceof Monster) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-level");
event.setDamage(event.getDamage() + (level * multiplier));
}
}

View File

@@ -18,23 +18,12 @@ public class Cerebral extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onCerebralDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow)) return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player)) return;
if (!(event.getEntity() instanceof LivingEntity)) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (!(arrow.getLocation().getY() >= victim.getLocation().getY() + victim.getEyeHeight() - 0.22)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -4,9 +4,12 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
public class Chopless extends EcoEnchant {
public Chopless() {
super(
@@ -16,28 +19,17 @@ public class Chopless extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onPreservationHurt(EntityDamageByEntityEvent event) {
if(!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof Player))
return;
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(victim.getEquipment() == null) return;
Player player = (Player) event.getEntity();
Player damager = (Player) event.getDamager();
if(!damager.getInventory().getItemInMainHand().getType().toString().endsWith("_AXE"))
return;
int totalChoplessPoints = EnchantChecks.getArmorPoints(player, this, 1);
if (totalChoplessPoints == 0)
if(!victim.getEquipment().getItemInMainHand().getType().toString().endsWith("_AXE"))
return;
double reduction = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-less-per-level");
double multiplier = 1 - (reduction/100 * totalChoplessPoints);
double multiplier = 1 - (reduction/100 * level);
event.setDamage(event.getDamage() * multiplier);
}

View File

@@ -22,28 +22,15 @@ public class Cleave extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(victim.hasMetadata("cleaved"))
return;
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
double damagePerLevel = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-percentage-per-level") * 0.01;
double radiusPerLevel = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "radius-per-level");
@@ -52,10 +39,10 @@ public class Cleave extends EcoEnchant {
victim.getNearbyEntities(radius, radius, radius).stream()
.filter(entity -> entity instanceof LivingEntity)
.filter(entity -> !entity.equals(player))
.filter(entity -> !entity.equals(attacker))
.forEach(entity -> {
entity.setMetadata("cleaved", new FixedMetadataValue(EcoEnchantsPlugin.getInstance(), true));
((LivingEntity) entity).damage(damage, player);
((LivingEntity) entity).damage(damage, attacker);
Bukkit.getScheduler().runTaskLater(EcoEnchantsPlugin.getInstance(), () -> entity.removeMetadata("cleaved", EcoEnchantsPlugin.getInstance()), 5);
});
}

View File

@@ -5,8 +5,10 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
public class Collateral extends EcoEnchant {
public Collateral() {
@@ -17,23 +19,9 @@ public class Collateral extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onCollateralShoot(ProjectileLaunchEvent event) {
if (event.getEntityType() != EntityType.ARROW)
return;
if (!(event.getEntity().getShooter() instanceof Player))
return;
Player player = (Player) event.getEntity().getShooter();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
if (!(event.getEntity() instanceof Arrow)) return;
Arrow a = (Arrow) event.getEntity();
a.setPierceLevel(level);
@Override
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
arrow.setPierceLevel(level);
}
}

View File

@@ -21,20 +21,9 @@ public class Conclude extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.integrations.antigrief.AntigriefManager;
import com.willfp.ecoenchants.util.ItemDurability;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -23,29 +24,10 @@ public class Corrosive extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof Player))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Player victim = (Player) event.getEntity();
Arrow arrow = (Arrow) event.getDamager();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity uncastVictim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(uncastVictim instanceof Player) return;
Player victim = (Player) uncastVictim;
ArrayList<ItemStack> armor = new ArrayList<ItemStack>(Arrays.asList(victim.getInventory().getArmorContents()));
if (armor.isEmpty())
@@ -57,16 +39,16 @@ public class Corrosive extends EcoEnchant {
if(armorPiece.equals(victim.getInventory().getHelmet())) {
ItemDurability.damageItem(player, player.getInventory().getHelmet(), level, 39);
ItemDurability.damageItem(victim, victim.getInventory().getHelmet(), level, 39);
}
if(armorPiece.equals(victim.getInventory().getChestplate())) {
ItemDurability.damageItem(player, player.getInventory().getChestplate(), level, 38);
ItemDurability.damageItem(victim, victim.getInventory().getChestplate(), level, 38);
}
if(armorPiece.equals(victim.getInventory().getLeggings())) {
ItemDurability.damageItem(player, player.getInventory().getLeggings(), level, 37);
ItemDurability.damageItem(victim, victim.getInventory().getLeggings(), level, 37);
}
if(armorPiece.equals(victim.getInventory().getBoots())) {
ItemDurability.damageItem(player, player.getInventory().getBoots(), level, 36);
ItemDurability.damageItem(victim, victim.getInventory().getBoots(), level, 36);
}
}
}

View File

@@ -20,26 +20,11 @@ public class Cranial extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident)) return;
if (!(((Trident) event.getDamager()).getShooter() instanceof Player)) return;
if (!(event.getEntity() instanceof LivingEntity)) return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if (!(trident.getLocation().getY() >= victim.getLocation().getY() + victim.getEyeHeight() - 0.22)) return;
ItemStack item = TridentStack.getTridentStack(trident);
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");
double damageMultiplier = (level * multiplier) + 1;

View File

@@ -17,23 +17,11 @@ public class Criticals extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void criticalHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (!(attacker.getFallDistance() > 0 && !attacker.isOnGround()))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
if (!(player.getFallDistance() > 0 && !player.isOnGround()))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
event.setDamage(event.getDamage() * ((level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level")) + 1));
}

View File

@@ -19,20 +19,9 @@ public class Cubism extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player)) return;
if (!(event.getEntity() instanceof LivingEntity)) return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!(victim instanceof Slime))
return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Slime)) return;
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -4,6 +4,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
@@ -18,22 +19,15 @@ public class Defender extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof Tameable))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Tameable entity = (Tameable) event.getEntity();
Arrow arrow = (Arrow) event.getDamager();
if(entity.getOwner() == null) return;
if(!entity.getOwner().equals(player)) return;
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Tameable)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
Tameable pet = (Tameable) victim;
if(pet.getOwner() == null) return;
if(!pet.getOwner().equals(attacker)) return;
event.setCancelled(true);
}

View File

@@ -18,31 +18,13 @@ public class Deflection extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDeflect(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double perlevel = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-deflected-per-level");
double damagePercent = (perlevel/100) * level;
double damage = event.getDamage() * damagePercent;
victim.damage(damage, player);
attacker.damage(damage, attacker);
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -17,22 +18,12 @@ public class Defusion extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void defusionHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof Creeper))
return;
Player player = (Player) event.getDamager();
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Creeper)) return;
Creeper victim = (Creeper) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-level");
event.setDamage(event.getDamage() + (level * multiplier));
}
}

View File

@@ -23,25 +23,13 @@ public class Disable extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -6,9 +6,11 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.Bukkit;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class Disappear extends EcoEnchant {
@@ -20,25 +22,15 @@ public class Disappear extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHurt(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
Bukkit.getScheduler().runTaskLater(EcoEnchantsPlugin.getInstance(), () -> {
Player player = (Player) event.getEntity();
if(player.getHealth() > EcoEnchants.DISAPPEAR.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "threshold"))
return;
final int points = EnchantChecks.getArmorPoints(player, this, 1);
if (points == 0)
if(victim.getHealth() > EcoEnchants.DISAPPEAR.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "threshold"))
return;
int ticksPerLevel = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "ticks-per-level");
final int ticks = ticksPerLevel * points;
player.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, ticks, 1, false, false, true));
final int ticks = ticksPerLevel * level;
victim.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, ticks, 1, false, false, true));
}, 1);
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -18,21 +19,13 @@ public class Diurnal extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL))
return;
Player player = (Player) event.getDamager();
if(!(attacker.getWorld().getTime() < 12300 && attacker.getWorld().getTime() > 23850)) return;
if(!player.getWorld().getEnvironment().equals(World.Environment.NORMAL))
return;
if(!(player.getWorld().getTime() < 12300 && player.getWorld().getTime() > 23850)) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -4,6 +4,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -16,23 +17,14 @@ public class Diverse extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(victim.getEquipment() == null) return;
if(!victim.getEquipment().getItemInMainHand().getType().toString().endsWith("_SWORD"))
return;
if(!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getDamager();
Player victim = (Player) event.getEntity();
if(!victim.getInventory().getItemInMainHand().getType().toString().endsWith("_SWORD"))
return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -25,29 +25,19 @@ public class Drill extends EcoEnchant {
// START OF LISTENERS
@EventHandler(priority = EventPriority.LOW)
public void drillBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
if (block.hasMetadata("from-drill") || block.hasMetadata("from-lumberjack") || block.hasMetadata("from-blastmining") || block.hasMetadata("from-vein")) {
return;
}
if (!EnchantChecks.mainhand(player, this)) return;
if (event.isCancelled())
return;
if(!AntigriefManager.canBreakBlock(player, block)) return;
if(player.isSneaking() && this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "disable-on-sneak")) return;
int level = EnchantChecks.getMainhandLevel(player, this) * this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "blocks-per-level");
int blocks = level * this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "blocks-per-level");
AnticheatManager.exemptPlayer(player);
for(int i = 1; i <= level; i++) {
for(int i = 1; i <= blocks; i++) {
Vector simplified = VectorUtils.simplifyVector(player.getLocation().getDirection().normalize()).multiply(i);
Block block1 = block.getWorld().getBlockAt(block.getLocation().clone().add(simplified));
block1.setMetadata("from-drill", new FixedMetadataValue(EcoEnchantsPlugin.getInstance(), true));

View File

@@ -22,25 +22,12 @@ public class Dullness extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -20,33 +20,14 @@ public class Electroshock extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onElectroshock(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
double damage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage");
double finalChance = (chance * level)/100;
if(NumberUtils.randFloat(0, 1) > finalChance) return;
Lightning.strike(victim, damage);
Lightning.strike(attacker, damage);
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -18,19 +19,12 @@ public class EndInfusion extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.THE_END))
return;
Player player = (Player) event.getDamager();
if(!player.getWorld().getEnvironment().equals(World.Environment.THE_END))
return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -20,26 +21,18 @@ public class EnderSlayer extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void enderSlayerHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
private static Set<EntityType> endMobs = new HashSet<EntityType>() {{
add(EntityType.ENDERMITE);
add(EntityType.ENDERMAN);
add(EntityType.ENDER_DRAGON);
add(EntityType.SHULKER);
}};
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (!endMobs.contains(victim.getType()))
return;
Set<EntityType> endMobs = new HashSet<EntityType>() {{
add(EntityType.ENDERMITE);
add(EntityType.ENDERMAN);
add(EntityType.ENDER_DRAGON);
add(EntityType.SHULKER);
}};
if (!endMobs.contains(event.getEntityType()))
return;
Player player = (Player) event.getDamager();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-level");
event.setDamage(event.getDamage() + (level * multiplier));

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -19,6 +20,17 @@ public class Enderism extends EcoEnchant {
// START OF LISTENERS
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.THE_END))
return;
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));
}
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -17,24 +18,14 @@ public class Evasion extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onEvasionHurt(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
int totalEvasionPoints = EnchantChecks.getArmorPoints(player, this, 1);
if (totalEvasionPoints == 0)
return;
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-point");
if (NumberUtils.randFloat(0, 1) > totalEvasionPoints * 0.01 * chance)
if (NumberUtils.randFloat(0, 1) > level * 0.01 * chance)
return;
event.setCancelled(true);
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -17,26 +18,15 @@ public class Extinguishing extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onExtinguishingHurt(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!event.getCause().equals(EntityDamageEvent.DamageCause.FIRE_TICK))
return;
Player player = (Player) event.getEntity();
int totalExtinguishingPoints = EnchantChecks.getArmorPoints(player, this, 0);
if (totalExtinguishingPoints == 0)
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(!event.getCause().equals(EntityDamageEvent.DamageCause.FIRE_TICK))
return;
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-point");
if (NumberUtils.randFloat(0, 1) > totalExtinguishingPoints * 0.01 * chance)
if (NumberUtils.randFloat(0, 1) > level * 0.01 * chance)
return;
player.setFireTicks(0);
victim.setFireTicks(0);
}
}

View File

@@ -22,37 +22,16 @@ public class Extract extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void extractHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(((Trident) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
if(!AntigriefManager.canInjure(player, (LivingEntity) event.getEntity())) return;
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
double amountToHeal = damage * level * multiplier;
double newHealth = player.getHealth() + amountToHeal;
if (newHealth > player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double newHealth = attacker.getHealth() + amountToHeal;
if (newHealth > attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
}
player.setHealth(newHealth);
attacker.setHealth(newHealth);
}
}

View File

@@ -22,25 +22,13 @@ public class Famine extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -20,27 +20,14 @@ public class Finality extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;
double minhealth = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "minimum-health-per-level");
if (!(((LivingEntity) event.getEntity()).getHealth() <= level * minhealth))
if (!(victim.getHealth() <= level * minhealth))
return;
event.setDamage(10000); // cba to do this properly

View File

@@ -18,25 +18,14 @@ public class Finishing extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void finishingHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;
double minhealth = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "minimum-health-per-level");
if (!(((LivingEntity) event.getEntity()).getHealth() <= level * minhealth))
if (!(victim.getHealth() <= level * minhealth))
return;
event.setDamage(10000); // cba to do this properly

View File

@@ -17,20 +17,10 @@ public class FireAffinity extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void fireAffinityHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
if (!EnchantChecks.mainhand(player, this)) return;
if(player.getFireTicks() == 0) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker.getFireTicks() == 0) return;
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-more-per-level");

View File

@@ -18,23 +18,10 @@ public class FirstStrike extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void firstStrikeHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (!(victim.getHealth() == victim.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
if (!(((LivingEntity) event.getEntity()).getHealth() == ((LivingEntity) event.getEntity()).getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
double damagemultiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
event.setDamage(event.getDamage() * ((level * damagemultiplier) + 1));

View File

@@ -21,27 +21,9 @@ public class Flinch extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onFlinch(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
int duration = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "ticks-per-level");
@@ -50,6 +32,6 @@ public class Flinch extends EcoEnchant {
int finalDuration = duration * level;
victim.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, finalDuration, 1, false, false, false));
attacker.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, finalDuration, 1, false, false, false));
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -17,19 +18,9 @@ public class Freerunner extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if(!event.getCause().equals(EntityDamageEvent.DamageCause.FALL))
return;
Player player = (Player) event.getEntity();
if(!EnchantChecks.boots(player, this)) return;
int level = EnchantChecks.getBootsLevel(player, this);
@Override
public void onFallDamage(LivingEntity faller, int level, EntityDamageEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
if (NumberUtils.randFloat(0, 1) > level * 0.01 * chance)

View File

@@ -11,6 +11,7 @@ import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class Frozen extends EcoEnchant {
@@ -22,31 +23,18 @@ public class Frozen extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHurt(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
final int points = EnchantChecks.getArmorPoints(player, this, 1);
if (points == 0)
return;
if (NumberUtils.randFloat(0, 1) > points * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-point"))
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-point"))
return;
int divisor = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "points-per-level");
final int level = (int) Math.ceil((double) points / divisor);
final int amplifier = (int) Math.ceil((double) level / divisor);
Bukkit.getScheduler().runTaskLater(EcoEnchantsPlugin.getInstance(), () -> {
victim.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, points * 5, level));
victim.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, points * 5, level));
victim.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, level * 5, amplifier));
victim.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, level * 5, amplifier));
}, 1);
}
}

View File

@@ -21,25 +21,12 @@ public class Fury extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;
@@ -56,7 +43,7 @@ public class Fury extends EcoEnchant {
((Monster) e).setTarget(victim);
Vector vector = player.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
Vector vector = attacker.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
if(VectorUtils.isFinite(vector)) {
e.setVelocity(vector);

View File

@@ -18,24 +18,13 @@ public class Goliath extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void goliathHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if (victim.getHealth() <= attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue())
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
if (victim.getHealth() <= player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue())
return;
int level = EnchantChecks.getMainhandLevel(player, this);
double timesMoreHealth = victim.getHealth() / player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double timesMoreHealth = victim.getHealth() / attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
event.setDamage(event.getDamage() * ((level * multiplier * timesMoreHealth) + 1));

View File

@@ -20,29 +20,11 @@ public class Grapple extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void grappleHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(event.isCancelled()) return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(victim.hasMetadata("NPC")) return;
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double baseMultiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "velocity-multiplier");
Vector vector = player.getLocation().toVector().clone().subtract(victim.getLocation().toVector()).normalize().multiply(level * baseMultiplier);
Vector vector = attacker.getLocation().toVector().clone().subtract(victim.getLocation().toVector()).normalize().multiply(level * baseMultiplier);
if(VectorUtils.isFinite(vector)) {
victim.setVelocity(vector);

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.nms.TridentStack;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;
@@ -21,24 +22,12 @@ public class Hellish extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if (!(((Trident) event.getDamager()).getShooter() instanceof Player))
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
assert player != null;
if(!player.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -21,31 +21,11 @@ public class Hook extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void hookHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(event.isCancelled()) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(victim.hasMetadata("NPC")) return;
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
double baseMultiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "velocity-multiplier");
Vector vector = player.getLocation().toVector().clone().subtract(victim.getLocation().toVector()).normalize().multiply(level * baseMultiplier);
Vector vector = attacker.getLocation().toVector().clone().subtract(victim.getLocation().toVector()).normalize().multiply(level * baseMultiplier);
if(VectorUtils.isFinite(vector)) {
victim.setVelocity(vector);
}

View File

@@ -17,20 +17,12 @@ public class Horde extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
Player player = (Player) event.getDamager();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double distance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "distance-per-level") * level;
int entitiesNearby = (int) player.getNearbyEntities(distance, distance, distance).stream().filter(entity -> entity instanceof LivingEntity).count();
int entitiesNearby = (int) attacker.getNearbyEntities(distance, distance, distance).stream().filter(entity -> entity instanceof LivingEntity).count();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier-per-level");
multiplier = (1 + (level * multiplier * entitiesNearby));

View File

@@ -23,27 +23,9 @@ public class IceShot extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if(event.isCancelled()) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -22,27 +22,9 @@ public class Identify extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onBlock(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
int duration = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "ticks-per-level");
@@ -51,6 +33,6 @@ public class Identify extends EcoEnchant {
int finalDuration = duration * level;
victim.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, finalDuration, 1, false, false, false));
attacker.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, finalDuration, 1, false, false, false));
}
}

View File

@@ -10,6 +10,7 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.ProjectileHitEvent;
@@ -22,28 +23,17 @@ public class Ignite extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onLand(ProjectileHitEvent event) {
if (!(event.getEntity() instanceof Arrow))
return;
if (!(event.getEntity().getShooter() instanceof Player))
@Override
public void onArrowHit(LivingEntity uncastShooter, int level, ProjectileHitEvent event) {
if(!(uncastShooter instanceof Player))
return;
if(event.getHitBlock() == null)
return;
Block block = event.getHitBlock();
Arrow arrow = (Arrow) event.getEntity();
Player player = (Player) event.getEntity().getShooter();
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
float power = (float) (0.5 + (level * 0.5));
if (!AntigriefManager.canBreakBlock(player, block))
Player shooter = (Player) uncastShooter;
if (!AntigriefManager.canBreakBlock(shooter, event.getHitBlock()))
return;
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
@@ -53,7 +43,7 @@ public class Ignite extends EcoEnchant {
assert face != null;
Block toIgnite = block.getRelative(face);
Block toIgnite = event.getHitBlock().getRelative(face);
if(toIgnite.getType().equals(Material.AIR)) {
toIgnite.setType(Material.FIRE);
}

View File

@@ -7,6 +7,7 @@ import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.integrations.antigrief.AntigriefManager;
import com.willfp.ecoenchants.nms.Cooldown;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -21,25 +22,13 @@ public class IllusionAspect extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void illusionAspectHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getDamager();
Player victim = (Player) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
if (NumberUtils.randFloat(0, 1) > level * 0.01 * chance)

View File

@@ -22,28 +22,9 @@ public class Impact extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(((Trident) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -20,35 +20,14 @@ public class Inferno extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onInfernoShoot(ProjectileLaunchEvent event) {
if (!(event.getEntity() instanceof Trident))
return;
if (!(event.getEntity().getShooter() instanceof Player))
return;
Player player = (Player) event.getEntity().getShooter();
Trident trident = (Trident) event.getEntity();
ItemStack item = TridentStack.getTridentStack(trident);
if (!EnchantChecks.item(item, this)) return;
@Override
public void onTridentLaunch(LivingEntity shooter, Trident trident, int level, ProjectileLaunchEvent event) {
trident.setFireTicks(Integer.MAX_VALUE);
}
@EventHandler
public void onInfernoShoot(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(event.getEntity() instanceof LivingEntity))
return;
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.item(item, this)) return;
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if(trident.getFireTicks() <= 0) return;
victim.setFireTicks(100);

View File

@@ -21,27 +21,9 @@ public class Infuriate extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onBlock(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
double finalChance = (chance * level)/100;
if(NumberUtils.randFloat(0, 1) > finalChance) return;
@@ -49,16 +31,16 @@ public class Infuriate extends EcoEnchant {
double distancePerLevel = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "distance-per-level");
final double distance = distancePerLevel * level;
for (Entity e : victim.getWorld().getNearbyEntities(victim.getLocation(), distance, distance, distance)) {
for (Entity e : attacker.getWorld().getNearbyEntities(attacker.getLocation(), distance, distance, distance)) {
if(!(e instanceof Monster)) continue;
if(e instanceof PigZombie) {
((PigZombie) e).setAngry(true);
}
((Monster) e).setTarget(victim);
((Monster) e).setTarget(attacker);
Vector vector = player.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
Vector vector = attacker.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
if(VectorUtils.isFinite(vector)) {
e.setVelocity(vector);

View File

@@ -5,9 +5,11 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Spider;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import sun.security.provider.ConfigFile;
public class Insecticide extends EcoEnchant {
public Insecticide() {
@@ -18,20 +20,12 @@ public class Insecticide extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Spider))
return;
if(!(event.getEntity() instanceof Spider)) return;
Arrow arrow = (Arrow) event.getDamager();
if(!EnchantChecks.arrow(arrow, this))
return;
int level = EnchantChecks.getArrowLevel(arrow, this);
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");
double bonus = (multiplier * (level + 1)) + 1;

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.integrations.anticheat.AnticheatManager;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockDamageEvent;
@@ -18,20 +19,9 @@ public class Instantaneous extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamageBlock(BlockDamageEvent event) {
Player player = event.getPlayer();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;
if(event.getBlock().getDrops(player.getInventory().getItemInMainHand()).isEmpty())
return;
@Override
public void onDamageBlock(Player player, Block block, int level, BlockDamageEvent event) {
AnticheatManager.exemptPlayer(player);
event.setInstaBreak(true);

View File

@@ -4,6 +4,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -16,19 +17,11 @@ public class Kinetic extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onKineticHurt(EntityDamageEvent event) {
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(event.getCause().equals(EntityDamageEvent.DamageCause.FLY_INTO_WALL)) return;
if(!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if(!EnchantChecks.chestplate(player, this)) return;
int level = EnchantChecks.getChestplateLevel(player, this);
double reduction = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "reduction-per-level");
double multiplier = 1 - ((reduction/100) * level);
event.setDamage(event.getDamage() * multiplier);

View File

@@ -19,32 +19,16 @@ public class Leeching extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void leechingHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) event.getDamager();
if(!AntigriefManager.canInjure(player, (LivingEntity) event.getEntity())) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
double amountToHeal = damage * level * multiplier;
double newHealth = player.getHealth() + amountToHeal;
if (newHealth > player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double newHealth = attacker.getHealth() + amountToHeal;
if (newHealth > attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
}
player.setHealth(newHealth);
attacker.setHealth(newHealth);
}
}

View File

@@ -27,27 +27,9 @@ public class Lesion extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(((Trident) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
ItemStack item = TridentStack.getTridentStack(trident);
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -23,27 +23,9 @@ public class Levitate extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if(event.isCancelled()) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -16,24 +16,12 @@ public class LiquidShot extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onLiquidShotDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow)) return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player)) return;
if (!(event.getEntity() instanceof LivingEntity)) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Blaze || victim instanceof MagmaCube || victim instanceof Enderman))
return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");
double damageMultiplier = (level * multiplier) + 1;

View File

@@ -30,22 +30,13 @@ public class Lumberjack extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onLumberjack(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
if (block.hasMetadata("from-drill") || block.hasMetadata("from-blastmining") || block.hasMetadata("from-lumberjack") || block.hasMetadata("from-vein")) {
return;
}
if (!EnchantChecks.mainhand(player, this)) return;
if (event.isCancelled())
return;
if(!AntigriefManager.canBreakBlock(player, block)) return;
if(player.isSneaking() && this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "disable-on-sneak")) return;
List<Material> materials = new ArrayList<>();
@@ -55,7 +46,6 @@ public class Lumberjack extends EcoEnchant {
return;
int blocksPerLevel = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "blocks-per-level");
int level = EnchantChecks.getMainhandLevel(player, this);
int limit = level * blocksPerLevel;
Set<Block> treeBlocks = BlockUtils.getVein(block, materials, limit);

View File

@@ -24,27 +24,9 @@ public class Marking extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
int ticksPerLevel = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "ticks-per-level");
int ticks = ticksPerLevel * level;

View File

@@ -7,8 +7,10 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.scheduler.BukkitRunnable;
public class Marksman extends EcoEnchant {
@@ -20,29 +22,18 @@ public class Marksman extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onMarksmanShoot(ProjectileLaunchEvent event) {
if (event.getEntityType() != EntityType.ARROW)
return;
if (!(event.getEntity().getShooter() instanceof Player))
return;
Player player = (Player) event.getEntity().getShooter();
if (!EnchantChecks.mainhand(player, this)) return;
if (!(event.getEntity() instanceof Arrow)) return;
Arrow a = (Arrow) event.getEntity();
a.setGravity(false);
@Override
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
arrow.setGravity(false);
int ticks = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "remove-arrow-after-ticks");
new BukkitRunnable() {
@Override
public void run() {
if (!a.isOnGround()) {
a.remove();
if (!arrow.isOnGround()) {
arrow.remove();
}
}
}.runTaskLater(EcoEnchantsPlugin.getInstance(), ticks);

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -17,19 +18,12 @@ public class NetherInfusion extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void netherInfusionHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
Player player = (Player) event.getDamager();
if(!player.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -19,23 +20,12 @@ public class Netheric extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player))
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
assert player != null;
if(!player.getWorld().getEnvironment().equals(World.Environment.NETHER))
return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.World;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -17,21 +18,15 @@ public class Nocturnal extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void nocturnalHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!attacker.getWorld().getEnvironment().equals(World.Environment.NORMAL))
return;
Player player = (Player) event.getDamager();
if(!player.getWorld().getEnvironment().equals(World.Environment.NORMAL))
if(!(attacker.getWorld().getTime() > 12300 && attacker.getWorld().getTime() < 23850))
return;
if(!(player.getWorld().getTime() > 12300 && player.getWorld().getTime() < 23850)) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "per-level-multiplier");
event.setDamage(event.getDamage() * (1 + (level * multiplier)));

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.Location;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -18,24 +19,14 @@ public class Optics extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onOpticsDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow)) return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player)) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
if (!EnchantChecks.arrow(arrow, this)) return;
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
Location land = arrow.getLocation();
Location source = player.getLocation();
Location source = attacker.getLocation();
double distance = land.distance(source);
int level = EnchantChecks.getArrowLevel(arrow, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "block-multiplier");
double damageMultiplier = (distance * level * multiplier) + 1;

View File

@@ -19,22 +19,11 @@ public class Oxygenate extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void oxygenateBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
if (!EnchantChecks.mainhand(player, this)) return;
if (event.isCancelled())
return;
if (!AntigriefManager.canBreakBlock(player, block)) return;
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
if(player.getRemainingAir() == player.getMaximumAir()) return;
int level = EnchantChecks.getMainhandLevel(player, this);
int oxygenLevel = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "oxygen-per-level");
int oxygen = level * oxygenLevel;
int newOxygen = player.getRemainingAir() + oxygen;

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.nms.TridentStack;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -20,20 +21,10 @@ public class Pacify extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(event.getEntity() instanceof Creeper)) return;
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
if(!EnchantChecks.item(item, this))
return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Creeper)) return;
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -18,22 +18,10 @@ public class Paladin extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void paladinHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
if(!(player.getVehicle() instanceof Horse)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(!(attacker.getVehicle() instanceof Horse)) return;
event.setDamage(event.getDamage() * ((level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level")) + 1));
}

View File

@@ -22,27 +22,9 @@ public class Paralyze extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onBlock(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
if (!(event.getDamager() instanceof LivingEntity))
return;
Player player = (Player) event.getEntity();
LivingEntity victim = (LivingEntity) event.getDamager();
if(!player.isBlocking()) return;
if(!AntigriefManager.canInjure(player, victim)) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
int duration = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "ticks-per-level");
@@ -51,6 +33,6 @@ public class Paralyze extends EcoEnchant {
int finalDuration = duration * level;
victim.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, finalDuration, 10, false, false, false));
attacker.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, finalDuration, 10, false, false, false));
}
}

View File

@@ -20,35 +20,16 @@ public class Parasitic extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void parasiticHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
if(!AntigriefManager.canInjure(player, (LivingEntity) event.getEntity())) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
double amountToHeal = damage * level * multiplier;
double newHealth = player.getHealth() + amountToHeal;
if (newHealth > player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double newHealth = attacker.getHealth() + amountToHeal;
if (newHealth > attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = attacker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
}
player.setHealth(newHealth);
attacker.setHealth(newHealth);
}
}

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.nms.TridentStack;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Trident;
import org.bukkit.entity.Zombie;
@@ -21,20 +22,10 @@ public class Phantasm extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(event.getEntity() instanceof Zombie || event.getEntity() instanceof Skeleton)) return;
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
if(!EnchantChecks.item(item, this))
return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Zombie || victim instanceof Skeleton)) return;
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -3,6 +3,7 @@ package com.willfp.ecoenchants.enchantments.ecoenchants.normal;
import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;
import org.bukkit.event.EventHandler;
@@ -16,19 +17,13 @@ public class Protector extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void protectorHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof Tameable))
return;
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity uncastVictim, int level, EntityDamageByEntityEvent event) {
if(!(uncastVictim instanceof Tameable)) return;
Player player = (Player) event.getDamager();
Tameable entity = (Tameable) event.getEntity();
if(entity.getOwner() == null) return;
if(!entity.getOwner().equals(player)) return;
if (!EnchantChecks.mainhand(player, this)) return;
Tameable victim = (Tameable) uncastVictim;
if(victim.getOwner() == null) return;
if(!victim.getOwner().equals(attacker)) return;
event.setCancelled(true);
}

View File

@@ -17,25 +17,13 @@ public class Proximity extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void proximityHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
double distance = player.getLocation().distance(victim.getLocation());
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double distance = attacker.getLocation().distance(victim.getLocation());
double decreaseAfter = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "when-closer-than-blocks");
int level = EnchantChecks.getMainhandLevel(player, this);
if(distance <= decreaseAfter) {
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-more-per-level");
double finalMultiplier = (multiplier/100 * level) +1;

View File

@@ -18,33 +18,12 @@ public class Puncture extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(((Trident) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Turtle || victim instanceof Shulker))
return;
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
double perLevelDamage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-more-per-level");
double totalDamagePercent = (100 + (perLevelDamage * level))/100;

View File

@@ -20,24 +20,12 @@ public class Quadrilateralism extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow)) return;
if (!(((Arrow) event.getDamager()).getShooter() instanceof Player)) return;
if (!(event.getEntity() instanceof LivingEntity)) return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Slime))
return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");
double damageMultiplier = (level * multiplier) + 1;

View File

@@ -9,6 +9,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
@@ -21,20 +22,9 @@ public class Radiance extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onLand(ProjectileHitEvent event) {
if (!(event.getEntity().getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof Arrow)) return;
Arrow arrow = (Arrow) event.getEntity();
Player player = (Player) event.getEntity().getShooter();
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
double radius = level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "radius-multiplier");
int duration = level * this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "duration-per-level");
@@ -43,7 +33,7 @@ public class Radiance extends EcoEnchant {
if (!(e instanceof LivingEntity)) continue;
LivingEntity entity = (LivingEntity) e;
if(e.equals(player)) continue;
if(e.equals(attacker)) continue;
entity.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, duration, 0, false, false, false));
}

View File

@@ -21,25 +21,9 @@ public class Rage extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;
@@ -55,7 +39,7 @@ public class Rage extends EcoEnchant {
((Monster) e).setTarget(victim);
Vector vector = player.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
Vector vector = attacker.getLocation().toVector().clone().subtract(e.getLocation().toVector()).normalize().multiply(0.23d);
if(VectorUtils.isFinite(vector)) {
e.setVelocity(vector);

View File

@@ -4,7 +4,9 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
@@ -17,20 +19,9 @@ public class Rapid extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onRapidShoot(EntityShootBowEvent event) {
if (event.getProjectile().getType() != EntityType.ARROW)
return;
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
double multiplier = 1 - ((this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-faster-per-level")/100) * level);
if(event.getForce() < multiplier)

View File

@@ -4,6 +4,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -16,19 +17,11 @@ public class Reinforcement extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onReinforcementHurt(EntityDamageEvent event) {
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(event.getCause().equals(EntityDamageEvent.DamageCause.FALL)) return;
if(!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if(!EnchantChecks.chestplate(player, this)) return;
int level = EnchantChecks.getChestplateLevel(player, this);
double reduction = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "reduction-per-level");
double multiplier = 1 - ((reduction/100) * level);
event.setDamage(event.getDamage() * multiplier);

View File

@@ -21,17 +21,11 @@ public class Replenish extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onCropBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
Material type = block.getType();
if(!EnchantChecks.mainhand(player, this)) return;
if(!AntigriefManager.canBreakBlock(player, block)) return;
if(event.isCancelled()) return;
if(!(block.getBlockData() instanceof Ageable)) return;
Ageable data = (Ageable) block.getBlockData();
@@ -39,7 +33,6 @@ public class Replenish extends EcoEnchant {
data.setAge(0);
new BukkitRunnable() {
@Override
public void run() {

View File

@@ -17,16 +17,11 @@ public class Respirator extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHurt(EntityDamageEvent event) {
@Override
public void onDamageWearingArmor(LivingEntity victim, int level, EntityDamageEvent event) {
if(!event.getCause().equals(EntityDamageEvent.DamageCause.DRAGON_BREATH)) return;
if(!(event.getEntity() instanceof LivingEntity)) return;
if(!EnchantChecks.helmet((LivingEntity) event.getEntity(), this)) return;
int level = EnchantChecks.getHelmetLevel((LivingEntity) event.getEntity(), this);
double reduction = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-less-per-level");
double multiplier = 1 - (reduction/100 * level);

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Zombie;
import org.bukkit.event.EventHandler;
@@ -19,19 +20,10 @@ public class Revenant extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(event.getEntity() instanceof Zombie || event.getEntity() instanceof Skeleton)) return;
Arrow arrow = (Arrow) event.getDamager();
if(!EnchantChecks.arrow(arrow, this))
return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Zombie || victim instanceof Skeleton)) return;
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -20,29 +20,9 @@ public class Serrated extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void serratedHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Trident))
return;
if(!(((Trident) event.getDamager()).getShooter() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) ((Trident) event.getDamager()).getShooter();
Trident trident = (Trident) event.getDamager();
ItemStack item = TridentStack.getTridentStack(trident);
if (!EnchantChecks.item(item, this)) return;
int level = EnchantChecks.getItemLevel(item, this);
@Override
public void onTridentDamage(LivingEntity attacker, LivingEntity victim, Trident trident, int level, EntityDamageByEntityEvent event) {
double baseDamage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-more-base");
double perLevelDamage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "percent-more-per-level");

View File

@@ -6,6 +6,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -18,19 +19,10 @@ public class Settle extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(!(event.getEntity() instanceof Creeper)) return;
Arrow arrow = (Arrow) event.getDamager();
if(!EnchantChecks.arrow(arrow, this))
return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(!(victim instanceof Creeper)) return;
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -24,27 +24,9 @@ public class Sickening extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(!(((Arrow) event.getDamager()).getShooter() instanceof Player))
return;
Player player = (Player) ((Arrow) event.getDamager()).getShooter();
Arrow arrow = (Arrow) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if(event.isCancelled()) return;
if (!EnchantChecks.arrow(arrow, this)) return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Monster;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -18,19 +19,10 @@ public class Slaughter extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Arrow))
return;
if(event.getEntity() instanceof Monster) return;
Arrow arrow = (Arrow) event.getDamager();
if(!EnchantChecks.arrow(arrow, this))
return;
int level = EnchantChecks.getArrowLevel(arrow, this);
@Override
public void onArrowDamage(LivingEntity attacker, LivingEntity victim, Arrow arrow, int level, EntityDamageByEntityEvent event) {
if(victim instanceof Monster) return;
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier");

View File

@@ -9,6 +9,7 @@ import com.willfp.ecoenchants.queue.DropQueue;
import com.willfp.ecoenchants.util.NumberUtils;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;

View File

@@ -17,23 +17,9 @@ public class Stab extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void stabHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if (event.isCancelled())
return;
Player player = (Player) event.getDamager();
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double baseDamage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-base");
double perLevelDamage = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-per-level");
double damage = baseDamage + (level * perLevelDamage);

View File

@@ -23,24 +23,14 @@ public class StoneSwitcher extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void stoneSwitcherBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
if (!EnchantChecks.mainhand(player, this)) return;
@Override
public void onBlockBreak(Player player, Block block, int level, BlockBreakEvent event) {
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR)
return;
if(!block.getType().equals(Material.STONE)) return;
if (event.isCancelled())
return;
if (!AntigriefManager.canBreakBlock(player, block)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
double chance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level");
if(NumberUtils.randFloat(0, 1) > level * chance * 0.01)

View File

@@ -22,25 +22,13 @@ public class StrayAspect extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void strayAspectHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -8,10 +8,7 @@ import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import com.willfp.ecoenchants.util.ItemDurability;
import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.AbstractArrow;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityShootBowEvent;
public class Succession extends EcoEnchant {
@@ -23,31 +20,24 @@ public class Succession extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onSuccessionShoot(EntityShootBowEvent event) {
if (event.getProjectile().getType() != EntityType.ARROW)
return;
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
@Override
public void onBowShoot(LivingEntity shooter, Arrow arrow, int level, EntityShootBowEvent event) {
int number = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "extra-arrows");
boolean fire = EnchantChecks.mainhand(player, Enchantment.ARROW_FIRE);
boolean fire = EnchantChecks.mainhand(shooter, Enchantment.ARROW_FIRE);
for (int i = 1; i <= number; i++) {
Bukkit.getScheduler().scheduleSyncDelayedTask(EcoEnchantsPlugin.getInstance(), () -> {
Arrow arrow = player.launchProjectile(Arrow.class, event.getProjectile().getVelocity());
arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);
if(fire) arrow.setFireTicks(Integer.MAX_VALUE);
Arrow arrow1 = shooter.launchProjectile(Arrow.class, event.getProjectile().getVelocity());
arrow1.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);
if(fire) arrow1.setFireTicks(Integer.MAX_VALUE);
if (this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "per-arrow-damage")) {
ItemDurability.damageItem(player, player.getInventory().getItemInMainHand(), 1, player.getInventory().getHeldItemSlot());
if(shooter instanceof Player) {
ItemDurability.damageItem((Player) shooter, ((Player) shooter).getInventory().getItemInMainHand(), 1, ((Player) shooter).getInventory().getHeldItemSlot());
}
}
}, i * 2);
}

View File

@@ -19,23 +19,13 @@ public class Supercritical extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void supercriticalHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -5,6 +5,7 @@ import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
import com.willfp.ecoenchants.enchantments.EcoEnchants;
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -17,27 +18,16 @@ public class Sycophant extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onBlock(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
if(!player.isBlocking()) return;
int level;
if (!EnchantChecks.offhand(player, this) && !EnchantChecks.mainhand(player, this)) return;
if(EnchantChecks.offhand(player, this)) level = EnchantChecks.getOffhandLevel(player, this);
else level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onDeflect(Player blocker, LivingEntity attacker, int level, EntityDamageByEntityEvent event) {
double damage = event.getDamage();
double multiplier = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "damage-multiplier-per-level");
double amountToHeal = damage * level * multiplier;
double newHealth = player.getHealth() + amountToHeal;
if (newHealth > player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double newHealth = blocker.getHealth() + amountToHeal;
if (newHealth > blocker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()) {
newHealth = blocker.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
}
player.setHealth(newHealth);
blocker.setHealth(newHealth);
}
}

View File

@@ -20,26 +20,20 @@ public class Tectonic extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void onTecFall(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player))
return;
Player player = (Player) event.getEntity();
@Override
public void onFallDamage(LivingEntity faller, int level, EntityDamageEvent event) {
if (!event.getCause().equals(EntityDamageEvent.DamageCause.FALL))
return;
if (!EnchantChecks.boots(player, this)) return;
int radius = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "initial-radius") + (this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "per-level-radius") * EnchantChecks.getBootsLevel(player, this) - 1);
int damage = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "initial-damage") + (this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "per-level-damage") * EnchantChecks.getBootsLevel(player, this) - 1);
int radius = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "initial-radius") + (this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "per-level-radius") * level - 1);
int damage = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "initial-damage") + (this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "per-level-damage") * level - 1);
Collection<Entity> entities = player.getWorld().getNearbyEntities(player.getLocation(), radius, 2, radius);
Collection<Entity> entities = faller.getWorld().getNearbyEntities(faller.getLocation(), radius, 2, radius);
for (Entity entity : entities) {
if (entity.equals(player))
if (entity.equals(faller))
continue;
if(!(entity instanceof LivingEntity)) continue;
entity.teleport(entity.getLocation().add(0, 0.3, 0));

View File

@@ -21,28 +21,14 @@ public class Thor extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void thorHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(event.getEntity() instanceof Player) {
if(!AntigriefManager.canInjure(player, (Player) event.getEntity())) return;
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
if(attacker instanceof Player) {
if (Cooldown.getCooldown((Player) attacker) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
}
if (!EnchantChecks.mainhand(player, this)) return;
if (Cooldown.getCooldown(player) != 1.0f && !this.getConfig().getBool(EcoEnchants.CONFIG_LOCATION + "allow-not-fully-charged"))
return;
int level = EnchantChecks.getMainhandLevel(player, this);
if (NumberUtils.randFloat(0, 1) > level * 0.01 * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))
return;

View File

@@ -21,27 +21,9 @@ public class Tornado extends EcoEnchant {
// START OF LISTENERS
@EventHandler
public void tornadoHit(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player))
return;
if (!(event.getEntity() instanceof LivingEntity))
return;
if(event.isCancelled()) return;
Player player = (Player) event.getDamager();
LivingEntity victim = (LivingEntity) event.getEntity();
if(victim.hasMetadata("NPC")) return;
if(!AntigriefManager.canInjure(player, victim)) return;
if (!EnchantChecks.mainhand(player, this)) return;
int level = EnchantChecks.getMainhandLevel(player, this);
@Override
public void onMeleeAttack(LivingEntity attacker, LivingEntity victim, int level, EntityDamageByEntityEvent event) {
double baseVelocity = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "velocity-per-level");
double yVelocity = baseVelocity * level;

Some files were not shown because too many files have changed in this diff Show More