diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestConfig.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestConfig.java index 2c2c27684..823f69a14 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestConfig.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestConfig.java @@ -14,4 +14,7 @@ public class TeleportRequestConfig extends OkaeriConfig implements TeleportReque @Comment("# Time of teleportation time in /tpa commands") public Duration tpaTimer = Duration.ofSeconds(10); + + @Comment("# Minimum Y level required for accepting /tpa requests") + public int minimumTpaAcceptY = -1; } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestSettings.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestSettings.java index 153d929cb..da3472f17 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestSettings.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TeleportRequestSettings.java @@ -8,4 +8,6 @@ public interface TeleportRequestSettings { Duration tpaTimer(); + int minimumTpaAcceptY(); + } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TpaAcceptCommand.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TpaAcceptCommand.java index e098111ba..e6909872c 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TpaAcceptCommand.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/TpaAcceptCommand.java @@ -37,6 +37,12 @@ class TpaAcceptCommand { @Execute @DescriptionDocs(description = "Accept teleport request", arguments = "") void executeTarget(@Sender Player player, @Arg(RequesterArgument.KEY) Player target) { + if (!this.canAcceptTeleportRequest(player)) { + this.sendTooLowMessage(player); + + return; + } + this.teleportTaskService.createTeleport( target.getUniqueId(), PositionAdapter.convert(target.getLocation()), @@ -64,6 +70,12 @@ void executeTarget(@Sender Player player, @Arg(RequesterArgument.KEY) Player tar @Execute(name = "-all", aliases = "*") @DescriptionDocs(description = "Accept all teleport requests") void executeAll(@Sender Player player) { + if (!this.canAcceptTeleportRequest(player)) { + this.sendTooLowMessage(player); + + return; + } + List requests = this.requestService.findRequests(player.getUniqueId()); if (requests.isEmpty()) { @@ -97,4 +109,17 @@ void executeAll(@Sender Player player) { this.noticeService.player(player.getUniqueId(), translation -> translation.tpa().tpaAcceptAllAccepted()); } + + private boolean canAcceptTeleportRequest(Player player) { + return player.getLocation().getY() >= this.settings.minimumTpaAcceptY(); + } + + private void sendTooLowMessage(Player player) { + this.noticeService + .create() + .player(player.getUniqueId()) + .notice(translation -> translation.tpa().tpaAcceptTooLowMessage()) + .placeholder("{Y}", String.valueOf(this.settings.minimumTpaAcceptY())) + .send(); + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/ENTeleportRequestMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/ENTeleportRequestMessages.java index 8175b4a91..643332803 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/ENTeleportRequestMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/ENTeleportRequestMessages.java @@ -60,6 +60,10 @@ public class ENTeleportRequestMessages extends OkaeriConfig implements TeleportR Notice tpaAcceptMessage = Notice.chat( "You have accepted the teleportation from the player: {PLAYER}!"); + @Comment({ " ", "# {Y} - Minimum Y level required to accept /tpa requests" }) + Notice tpaAcceptTooLowMessage = Notice.chat( + "You must be at least at Y level {Y} to accept this teleport request!"); + @Comment(" ") Notice tpaAcceptNoRequestMessage = Notice.chat("This player has not sent you a teleport request!"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/PLTeleportRequestMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/PLTeleportRequestMessages.java index 7e27f80f0..9b8284d35 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/PLTeleportRequestMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/PLTeleportRequestMessages.java @@ -61,6 +61,10 @@ public class PLTeleportRequestMessages extends OkaeriConfig implements TeleportR Notice tpaAcceptMessage = Notice.chat( "Zaakceptowałeś prośbę o teleportację od gracza: {PLAYER}!"); + @Comment({ " ", "# {Y} - Minimalny poziom Y wymagany do zaakceptowania prośby /tpa" }) + Notice tpaAcceptTooLowMessage = Notice.chat( + "Musisz być co najmniej na poziomie Y {Y}, aby zaakceptować tę prośbę o teleportację!"); + @Comment(" ") Notice tpaAcceptNoRequestMessage = Notice .chat("Ten gracz nie wysłał do ciebie prośby o teleportację!"); diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/TeleportRequestMessages.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/TeleportRequestMessages.java index 3932ee493..05f7e61e9 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/TeleportRequestMessages.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/teleportrequest/messages/TeleportRequestMessages.java @@ -19,6 +19,7 @@ public interface TeleportRequestMessages { Notice tpaDenyAllDenied(); Notice tpaAcceptMessage(); + Notice tpaAcceptTooLowMessage(); Notice tpaAcceptNoRequestMessage(); Notice tpaAcceptReceivedMessage(); Notice tpaAcceptAllAccepted();