diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/ArmadilloInfectionReducer.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/ArmadilloInfectionReducer.java new file mode 100644 index 0000000..4f64e2b --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/ArmadilloInfectionReducer.java @@ -0,0 +1,16 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.armadilloInfectionReducer; + +import eu.mhsl.craftattack.spawn.core.appliance.Appliance; +import org.bukkit.event.Listener; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class ArmadilloInfectionReducer extends Appliance { + @Override + protected @NotNull List listeners() { + return List.of( + new InfectionSpawnListener() + ); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/InfectionSpawnListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/InfectionSpawnListener.java new file mode 100644 index 0000000..7f8bc40 --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/InfectionSpawnListener.java @@ -0,0 +1,17 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.armadilloInfectionReducer; + +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.CreatureSpawnEvent; + +import java.util.concurrent.ThreadLocalRandom; + +class InfectionSpawnListener extends ApplianceListener { + @EventHandler + public void onSpawn(CreatureSpawnEvent event) { + if(!event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.POTION_EFFECT)) return; + if(!event.getEntity().getType().equals(EntityType.SILVERFISH)) return; + if(ThreadLocalRandom.current().nextDouble() > 0.7) event.setCancelled(true); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishDeathListener.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishDeathListener.java new file mode 100644 index 0000000..a3da309 --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishDeathListener.java @@ -0,0 +1,14 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.silverfishExpReducer; + +import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDeathEvent; + +class SilverfishDeathListener extends ApplianceListener { + @EventHandler + public void onDeath(EntityDeathEvent event) { + if(!event.getEntity().getType().equals(EntityType.SILVERFISH)) return; + event.setDroppedExp(event.getDroppedExp() / 3); + } +} diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishExpReducer.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishExpReducer.java new file mode 100644 index 0000000..b1aeeb2 --- /dev/null +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishExpReducer.java @@ -0,0 +1,16 @@ +package eu.mhsl.craftattack.spawn.craftattack.appliances.tweaks.silverfishExpReducer; + +import eu.mhsl.craftattack.spawn.core.appliance.Appliance; +import org.bukkit.event.Listener; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class SilverfishExpReducer extends Appliance { + @Override + public @NotNull List listeners() { + return List.of( + new SilverfishDeathListener() + ); + } +}