From 6f99402d162416d1a79dd64d2fa4e88e444a31a9 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Tue, 11 Feb 2025 21:08:20 +0100 Subject: [PATCH] Add TURN_IN_RADIUS config and spawn particles at turn in point as well Introduced a new TURN_IN_RADIUS configuration parameter to manage flag turn-in distance. Refactored particle spawning logic to use configurable radii and adjusted related methods accordingly for better flexibility and maintainability. --- src/main/java/com/alttd/ctf/config/GameConfig.java | 2 ++ src/main/java/com/alttd/ctf/flag/Flag.java | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/alttd/ctf/config/GameConfig.java b/src/main/java/com/alttd/ctf/config/GameConfig.java index d31caf2..1886727 100644 --- a/src/main/java/com/alttd/ctf/config/GameConfig.java +++ b/src/main/java/com/alttd/ctf/config/GameConfig.java @@ -87,6 +87,7 @@ public class GameConfig extends AbstractConfig { public static double z = 0; public static double CAPTURE_RADIUS = 5; public static int CAPTURE_SCORE = 50; + public static double TURN_IN_RADIUS = 3; @SuppressWarnings("unused") private static void load() { @@ -96,6 +97,7 @@ public class GameConfig extends AbstractConfig { z = config.getDouble(prefix, "z", z); CAPTURE_RADIUS = config.getDouble(prefix, "capture-radius", CAPTURE_RADIUS); CAPTURE_SCORE = config.getInt(prefix, "capture-score", CAPTURE_SCORE); + TURN_IN_RADIUS = config.getDouble(prefix, "turn-in-radius", TURN_IN_RADIUS); } } diff --git a/src/main/java/com/alttd/ctf/flag/Flag.java b/src/main/java/com/alttd/ctf/flag/Flag.java index 34f90f7..004a114 100644 --- a/src/main/java/com/alttd/ctf/flag/Flag.java +++ b/src/main/java/com/alttd/ctf/flag/Flag.java @@ -103,7 +103,7 @@ public class Flag implements Runnable { log.warn("Tried to run Flag without a flag location, spawn it first"); return; } - spawnParticlesOnSquareBorder(flagLocation.getWorld(), flagLocation); + spawnParticlesOnSquareBorder(flagLocation, GameConfig.FLAG.CAPTURE_RADIUS); if (!updateScoreBasedOnNearbyPlayers().join()) { return; //Score didn't change } @@ -121,9 +121,9 @@ public class Flag implements Runnable { } } - private void spawnParticlesOnSquareBorder(World world, Location center) { - double size = GameConfig.FLAG.CAPTURE_RADIUS; + private void spawnParticlesOnSquareBorder(Location center, double size) { double step = 0.2; + World world = center.getWorld(); Location finalCenter = center.clone().add(0, 0.5, 0); Bukkit.getScheduler().runTask(main, () -> { // Top and Bottom (Z varies, X constant) @@ -159,11 +159,12 @@ public class Flag implements Runnable { return; } double distance = winningTeam.getFlagTurnInLocation().distance(flagCarrier.getLocation()); - if (distance > 2) { + if (distance > GameConfig.FLAG.TURN_IN_RADIUS) { Location location = flagCarrier.getLocation(); location.setY(location.getY() + 1); particleTrail.add(location); spawnTrail(); + spawnParticlesOnSquareBorder(winningTeam.getWorldBorderCenter(), GameConfig.FLAG.TURN_IN_RADIUS); return; } //TODO better message? mayb with a text thing on the screen?