From c8b9946709d0d3b30f875f5e4dcfc7ad3590232f Mon Sep 17 00:00:00 2001 From: Maxence Simon <32517160+Maxlego08@users.noreply.github.com> Date: Sun, 17 Aug 2025 15:32:30 +0200 Subject: [PATCH] feat: add random teleport world record --- .../teleportation/RandomTeleportWorld.java | 6 +++++ .../module/modules/TeleportationModule.java | 26 +++++++++++++------ .../modules/teleportation/config.yml | 13 +++++----- 3 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 API/src/main/java/fr/maxlego08/essentials/api/teleportation/RandomTeleportWorld.java diff --git a/API/src/main/java/fr/maxlego08/essentials/api/teleportation/RandomTeleportWorld.java b/API/src/main/java/fr/maxlego08/essentials/api/teleportation/RandomTeleportWorld.java new file mode 100644 index 00000000..b10213cc --- /dev/null +++ b/API/src/main/java/fr/maxlego08/essentials/api/teleportation/RandomTeleportWorld.java @@ -0,0 +1,6 @@ +package fr.maxlego08.essentials.api.teleportation; + +import fr.maxlego08.essentials.api.modules.Loadable; + +public record RandomTeleportWorld(String world, int centerX, int centerZ, int radiusX, int radiusZ) implements Loadable { +} diff --git a/src/main/java/fr/maxlego08/essentials/module/modules/TeleportationModule.java b/src/main/java/fr/maxlego08/essentials/module/modules/TeleportationModule.java index 14b0f24c..575f0e6d 100644 --- a/src/main/java/fr/maxlego08/essentials/module/modules/TeleportationModule.java +++ b/src/main/java/fr/maxlego08/essentials/module/modules/TeleportationModule.java @@ -1,20 +1,24 @@ package fr.maxlego08.essentials.module.modules; import fr.maxlego08.essentials.ZEssentialsPlugin; +import fr.maxlego08.essentials.api.configuration.NonLoadable; import fr.maxlego08.essentials.api.messages.Message; +import fr.maxlego08.essentials.api.teleportation.RandomTeleportWorld; import fr.maxlego08.essentials.api.teleportation.TeleportPermission; import fr.maxlego08.essentials.api.user.User; import fr.maxlego08.essentials.module.ZModule; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.Player; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Random; import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; public class TeleportationModule extends ZModule { @@ -31,11 +35,9 @@ public class TeleportationModule extends ZModule { private boolean openConfirmInventoryForTpa; private boolean openConfirmInventoryForTpaHere; private int maxRtpAttempts; - private int rtpCenterX; - private int rtpCenterZ; - private int rtpRadiusX; - private int rtpRadiusZ; - private String rtpWorld = "world"; + private final List rtpWorlds = new ArrayList<>(); + @NonLoadable + private Map rtpWorldMap = new HashMap<>(); public TeleportationModule(ZEssentialsPlugin plugin) { @@ -48,6 +50,8 @@ public void loadConfiguration() { this.loadInventory("confirm_request_inventory"); this.loadInventory("confirm_request_here_inventory"); + + this.rtpWorldMap = this.rtpWorlds.stream().collect(Collectors.toMap(RandomTeleportWorld::world, r -> r)); } public boolean isTeleportSafety() { @@ -99,8 +103,14 @@ public void openConfirmHereInventory(Player player) { } public void randomTeleport(Player player) { - World world = Bukkit.getWorld(this.rtpWorld); - this.randomTeleport(player, world, this.rtpCenterX, this.rtpCenterZ, this.rtpRadiusX, this.rtpRadiusZ); + RandomTeleportWorld configuration = this.rtpWorldMap.get(player.getWorld().getName()); + if (configuration == null) { + message(player, Message.COMMAND_RANDOM_TP_ERROR); + return; + } + + World world = player.getWorld(); + this.randomTeleport(player, world, configuration.centerX(), configuration.centerZ(), configuration.radiusX(), configuration.radiusZ()); } diff --git a/src/main/resources/modules/teleportation/config.yml b/src/main/resources/modules/teleportation/config.yml index 288a7c96..bb006b62 100644 --- a/src/main/resources/modules/teleportation/config.yml +++ b/src/main/resources/modules/teleportation/config.yml @@ -43,13 +43,12 @@ open-confirm-inventory-for-tpa: false # Opens a confirmation inventory for the /tpahere command. open-confirm-inventory-for-tpa-here: false -rtp-center-x: 0 -rtp-center-z: 0 - -rtp-radius-x: 5000 -rtp-radius-z: 5000 - -rtp-world: "world" +rtp-worlds: + - world: "world" + center-x: 0 + center-z: 0 + radius-x: 5000 + radius-z: 5000 max-rtp-attempts: 10