From 238df2feffcf8bea00f130e44e78cfc8c095217f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 20 Sep 2025 13:01:41 +0200 Subject: [PATCH] added armadilloExpFarm tweaks --- .../ArmadilloInfectionReducer.java | 16 ++++++++++++++++ .../InfectionSpawnListener.java | 17 +++++++++++++++++ .../SilverfishDeathListener.java | 14 ++++++++++++++ .../SilverfishExpReducer.java | 16 ++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/ArmadilloInfectionReducer.java create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/armadilloInfectionReducer/InfectionSpawnListener.java create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishDeathListener.java create mode 100644 craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/appliances/tweaks/silverfishExpReducer/SilverfishExpReducer.java 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() + ); + } +}