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..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 @@ -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.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 new file mode 100644 index 000000000..3e69a7cb4 --- /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 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 new file mode 100644 index 000000000..fe3f32242 --- /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 movementCancelsTeleport(); +}