From d1308b81127e02f9e87b487036fceeb183bd400e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Sat, 18 Apr 2026 21:22:02 +0200 Subject: [PATCH 1/3] feat: Add teleport configuration and settings to manage player movement during teleportation --- .../implementation/PluginConfiguration.java | 8 ++++++++ .../core/feature/teleport/TeleportTask.java | 6 +++++- .../teleport/settings/TeleportConfig.java | 16 ++++++++++++++++ .../teleport/settings/TeleportSettings.java | 5 +++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java index b4c6eeabe..a9dc88b2b 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/configuration/implementation/PluginConfiguration.java @@ -3,6 +3,8 @@ import com.eternalcode.core.configuration.AbstractConfigurationFile; import com.eternalcode.core.database.DatabaseConfig; import com.eternalcode.core.database.DatabaseSettings; +import com.eternalcode.core.feature.teleport.settings.TeleportConfig; +import com.eternalcode.core.feature.teleport.settings.TeleportSettings; import com.eternalcode.core.util.date.DateConfig; import com.eternalcode.core.util.date.DateSettings; import com.eternalcode.core.feature.afk.AfkConfig; @@ -137,6 +139,12 @@ public class PluginConfiguration extends AbstractConfigurationFile { @Comment("# Settings for player home management") HomesConfig homes = new HomesConfig(); + @Bean(proxied = TeleportSettings.class) + @Comment("") + @Comment("# Teleport configuration") + @Comment("# Settings for teleportation task") + TeleportConfig teleport = new TeleportConfig(); + @Bean(proxied = ChatSettings.class) @Comment("") @Comment("# Chat Configuration") diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java index 3e94790e1..21a336238 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java @@ -1,6 +1,7 @@ package com.eternalcode.core.feature.teleport; import com.eternalcode.commons.bukkit.position.PositionAdapter; +import com.eternalcode.core.feature.teleport.settings.TeleportSettings; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Task; import com.eternalcode.core.notice.NoticeService; @@ -25,6 +26,7 @@ class TeleportTask implements Runnable { private final NoticeService noticeService; private final TeleportTaskService teleportTaskService; private final TeleportService teleportService; + private final TeleportSettings teleportSettings; private final Server server; @Inject @@ -32,11 +34,13 @@ class TeleportTask implements Runnable { NoticeService noticeService, TeleportTaskService teleportTaskService, TeleportService teleportService, + TeleportSettings teleportSettings, Server server ) { this.noticeService = noticeService; this.teleportTaskService = teleportTaskService; this.teleportService = teleportService; + this.teleportSettings = teleportSettings; this.server = server; } @@ -54,7 +58,7 @@ public void run() { continue; } - if (this.hasPlayerMovedDuringTeleport(player, teleport)) { + if (this.hasPlayerMovedDuringTeleport(player, teleport) && this.teleportSettings.shouldMovementCancelTask()) { this.teleportTaskService.removeTeleport(uuid); teleport.completeResult(TeleportResult.MOVED_DURING_TELEPORT); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java new file mode 100644 index 000000000..a3892dda1 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java @@ -0,0 +1,16 @@ +package com.eternalcode.core.feature.teleport.settings; + +import eu.okaeri.configs.OkaeriConfig; +import eu.okaeri.configs.annotation.Comment; +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +public class TeleportConfig extends OkaeriConfig implements TeleportSettings { + + @Comment({ + "# If true, the teleportation will be cancelled if the player moves during the teleportation process." + }) + public boolean shouldMovementCancelTask = true; +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java new file mode 100644 index 000000000..abf44b614 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java @@ -0,0 +1,5 @@ +package com.eternalcode.core.feature.teleport.settings; + +public interface TeleportSettings { + boolean shouldMovementCancelTask(); +} From a2ec821fbb3edafd72a20386a99451edeab7def7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= <80779749+CitralFlo@users.noreply.github.com> Date: Sat, 18 Apr 2026 21:31:18 +0200 Subject: [PATCH 2/3] Update eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../com/eternalcode/core/feature/teleport/TeleportTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java index 21a336238..60130ecc1 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java @@ -58,7 +58,7 @@ public void run() { continue; } - if (this.hasPlayerMovedDuringTeleport(player, teleport) && this.teleportSettings.shouldMovementCancelTask()) { + if (this.teleportSettings.shouldMovementCancelTask() && this.hasPlayerMovedDuringTeleport(player, teleport)) { this.teleportTaskService.removeTeleport(uuid); teleport.completeResult(TeleportResult.MOVED_DURING_TELEPORT); From 34b360bba3984e98f6ed2de9200aca476d15455b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Wojtas?= Date: Tue, 21 Apr 2026 17:54:45 +0200 Subject: [PATCH 3/3] Follow Jakubek naming review --- .../com/eternalcode/core/feature/teleport/TeleportTask.java | 2 +- .../core/feature/teleport/settings/TeleportConfig.java | 2 +- .../core/feature/teleport/settings/TeleportSettings.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java index 60130ecc1..5dfefc629 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/TeleportTask.java @@ -58,7 +58,7 @@ public void run() { continue; } - if (this.teleportSettings.shouldMovementCancelTask() && this.hasPlayerMovedDuringTeleport(player, teleport)) { + if (this.teleportSettings.movementCancelsTeleport() && this.hasPlayerMovedDuringTeleport(player, teleport)) { this.teleportTaskService.removeTeleport(uuid); teleport.completeResult(TeleportResult.MOVED_DURING_TELEPORT); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java index a3892dda1..3e69a7cb4 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportConfig.java @@ -12,5 +12,5 @@ public class TeleportConfig extends OkaeriConfig implements TeleportSettings { @Comment({ "# If true, the teleportation will be cancelled if the player moves during the teleportation process." }) - public boolean shouldMovementCancelTask = true; + public boolean movementCancelsTeleport = true; } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java index abf44b614..fe3f32242 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleport/settings/TeleportSettings.java @@ -1,5 +1,5 @@ package com.eternalcode.core.feature.teleport.settings; public interface TeleportSettings { - boolean shouldMovementCancelTask(); + boolean movementCancelsTeleport(); }