From 2d7e949e2b67b70a1271af2127b6a6626dbe550b Mon Sep 17 00:00:00 2001 From: Igor Michalski Date: Tue, 27 Jan 2026 14:31:31 +0100 Subject: [PATCH 1/3] Add pearl stasis prevention feature Took 27 minutes --- .../fight/pearl/FightPearlController.java | 18 ++++++++++++++++++ .../combat/fight/pearl/FightPearlSettings.java | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java index bfd35700..a86b62f3 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java @@ -14,6 +14,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; public class FightPearlController implements Listener { @@ -80,6 +81,23 @@ public void onPearlDamage(EntityDamageByEntityEvent event) { event.setDamage(0.0); } + @EventHandler(priority = EventPriority.HIGHEST) + public void onPearlStasisTeleport(PlayerTeleportEvent event) { + if (event.getCause() != PlayerTeleportEvent.TeleportCause.ENDER_PEARL) { + return; + } + + if (!this.settings.preventPearlStasis) { + return; + } + + if (!this.fightManager.isInCombat(event.getPlayer().getUniqueId())) { + return; + } + + event.setCancelled(true); + } + private void handlePearlCooldown(ProjectileLaunchEvent event, Player player, UUID playerId) { if (this.settings.pearlThrowDelay.isZero()) { return; diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java index d423f495..e1a7f840 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java @@ -20,6 +20,12 @@ public class FightPearlSettings extends OkaeriConfig { @Comment("# Set true, If you want add cooldown to pearls") public boolean pearlCooldownEnabled = false; + @Comment({ + "# Prevent players from using ender pearl stasis to avoid combat.", + "# This setting prevents the player from teleporting with a statis pearl during combat." + }) + public boolean preventPearlStasis = false; + @Comment({ "# Block throwing pearls with delay?", "# If you set this to for example 3s, player will have to wait 3 seconds before throwing another pearl" From 1a03647b39689c9d1bba57fb6e84a337c425421b Mon Sep 17 00:00:00 2001 From: Igor Michalski Date: Tue, 27 Jan 2026 14:45:04 +0100 Subject: [PATCH 2/3] Add message to pearl stasis prevention feature Took 8 minutes --- .../combat/fight/pearl/FightPearlController.java | 10 +++++++++- .../combat/fight/pearl/FightPearlSettings.java | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java index a86b62f3..52bf49aa 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java @@ -91,11 +91,19 @@ public void onPearlStasisTeleport(PlayerTeleportEvent event) { return; } - if (!this.fightManager.isInCombat(event.getPlayer().getUniqueId())) { + Player player = event.getPlayer(); + UUID playerId = player.getUniqueId(); + + if (!this.fightManager.isInCombat(playerId)) { return; } event.setCancelled(true); + + this.noticeService.create() + .player(playerId) + .notice(this.settings.pearlTeleportBlockedDuringCombat) + .send(); } private void handlePearlCooldown(ProjectileLaunchEvent event, Player player, UUID playerId) { diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java index e1a7f840..bc4bf7a9 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java @@ -42,4 +42,8 @@ public class FightPearlSettings extends OkaeriConfig { .chat("You must wait {TIME} before next throw!") .build(); + @Comment("# Message sent when player tries to teleport with ender pearl, but are disabled") + public Notice pearlTeleportBlockedDuringCombat = BukkitNotice.builder() + .chat("Teleporting through ender pearls is not allowed during combat!") + .build(); } From 57ce17aa8f7068ce6bc9fe5dfd08fc665f1539a7 Mon Sep 17 00:00:00 2001 From: Rollczi Date: Sun, 7 Jun 2026 21:04:46 +0200 Subject: [PATCH 3/3] CR --- .../combat/fight/pearl/FightPearlController.java | 6 +++--- .../combat/fight/pearl/FightPearlSettings.java | 10 ---------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java index 52bf49aa..57b8b9a4 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlController.java @@ -82,12 +82,12 @@ public void onPearlDamage(EntityDamageByEntityEvent event) { } @EventHandler(priority = EventPriority.HIGHEST) - public void onPearlStasisTeleport(PlayerTeleportEvent event) { + public void onPearlTeleport(PlayerTeleportEvent event) { if (event.getCause() != PlayerTeleportEvent.TeleportCause.ENDER_PEARL) { return; } - if (!this.settings.preventPearlStasis) { + if (!this.settings.pearlThrowDisabledDuringCombat) { return; } @@ -102,7 +102,7 @@ public void onPearlStasisTeleport(PlayerTeleportEvent event) { this.noticeService.create() .player(playerId) - .notice(this.settings.pearlTeleportBlockedDuringCombat) + .notice(this.settings.pearlThrowBlockedDuringCombat) .send(); } diff --git a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java index bc4bf7a9..d423f495 100644 --- a/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java +++ b/eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/pearl/FightPearlSettings.java @@ -20,12 +20,6 @@ public class FightPearlSettings extends OkaeriConfig { @Comment("# Set true, If you want add cooldown to pearls") public boolean pearlCooldownEnabled = false; - @Comment({ - "# Prevent players from using ender pearl stasis to avoid combat.", - "# This setting prevents the player from teleporting with a statis pearl during combat." - }) - public boolean preventPearlStasis = false; - @Comment({ "# Block throwing pearls with delay?", "# If you set this to for example 3s, player will have to wait 3 seconds before throwing another pearl" @@ -42,8 +36,4 @@ public class FightPearlSettings extends OkaeriConfig { .chat("You must wait {TIME} before next throw!") .build(); - @Comment("# Message sent when player tries to teleport with ender pearl, but are disabled") - public Notice pearlTeleportBlockedDuringCombat = BukkitNotice.builder() - .chat("Teleporting through ender pearls is not allowed during combat!") - .build(); }