diff --git a/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java b/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java index 527b053..fbe9158 100644 --- a/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java +++ b/src/main/java/dev/tatsi/reloadmc/smp/ReloadMC.java @@ -1,6 +1,7 @@ package dev.tatsi.reloadmc.smp; import dev.tatsi.reloadmc.smp.command.DeathStatsCommand; +import dev.tatsi.reloadmc.smp.listener.ExplosionBlockListener; import dev.tatsi.reloadmc.smp.listener.PlayerDeathListener; import dev.tatsi.reloadmc.smp.listener.PlayerJoinLeaveListener; import dev.tatsi.reloadmc.smp.listener.PrettyChatListener; @@ -21,6 +22,7 @@ public final class ReloadMC extends JavaPlugin { getServer().getPluginManager().registerEvents(new PlayerDeathListener(deathCounterManager), this); getServer().getPluginManager().registerEvents(new PlayerJoinLeaveListener(), this); getServer().getPluginManager().registerEvents(new TabPingListener(this), this); + getServer().getPluginManager().registerEvents(new ExplosionBlockListener(), this); // Register commands getCommand("deathstats").setExecutor(new DeathStatsCommand(deathCounterManager)); diff --git a/src/main/java/dev/tatsi/reloadmc/smp/listener/ExplosionBlockListener.java b/src/main/java/dev/tatsi/reloadmc/smp/listener/ExplosionBlockListener.java new file mode 100644 index 0000000..16defe2 --- /dev/null +++ b/src/main/java/dev/tatsi/reloadmc/smp/listener/ExplosionBlockListener.java @@ -0,0 +1,29 @@ +package dev.tatsi.reloadmc.smp.listener; + +import org.bukkit.entity.Creeper; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityExplodeEvent; + +/** + * @author Thatsaphorn Atchariyaphap + * @since 04.09.25 + */ +public class ExplosionBlockListener implements Listener { + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void onCreeperExplode(EntityExplodeEvent event) { + if (!(event.getEntity() instanceof Creeper)) { + event.setCancelled(true); + return; + } + + // Entfernt alle Blöcke, die sonst zerstört würden. + event.blockList().clear(); + + // Optional (je nach Geschmack): Loot/„Ertrag“ der Explosion auf 0 setzen. + // Hat bei Creepern i.d.R. keine Relevanz, schadet aber nicht. + event.setYield(0f); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fdbaa9b..26d7720 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ -name: reloadmc_smp -version: '1.0.0' +name: ReloadMCSMP +version: '1.0.1' main: dev.tatsi.reloadmc.smp.ReloadMC api-version: '1.21' prefix: CorePlugin