diff options
Diffstat (limited to 'src/main/java/cat/freya/khs/game/events/Border.java')
-rw-r--r-- | src/main/java/cat/freya/khs/game/events/Border.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/main/java/cat/freya/khs/game/events/Border.java b/src/main/java/cat/freya/khs/game/events/Border.java new file mode 100644 index 0000000..87f9845 --- /dev/null +++ b/src/main/java/cat/freya/khs/game/events/Border.java @@ -0,0 +1,72 @@ +package cat.freya.khs.game.events; + +import cat.freya.khs.Main; +import cat.freya.khs.configuration.Map; + +import static cat.freya.khs.configuration.Config.*; +import static cat.freya.khs.configuration.Localization.message; + +public class Border { + + private int delay; + private boolean running; + private final Map map; + private int currentSize; + + public Border(Map map) { + this.map = map; + this.delay = (int) (60 * map.getWorldBorderData().getY()); + this.currentSize = (int) map.getWorldBorderData().getX(); + } + + public void update() { + if (delay == 30 && !running) { + Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_WARN")); + } else if (delay == 0) { + if (running) { + delay = (int) (60 * map.getWorldBorderData().getY()); + running = false; + } + else decreaseWorldBorder(); + } + delay--; + } + + private void decreaseWorldBorder() { + if (currentSize == 100) return; + if(map.getGameSpawn().load() == null) return; + int change = (int) map.getWorldBorderData().getZ(); + if (currentSize-change < 100) { + change = currentSize-100; + } + running = true; + Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_DECREASING").addAmount(change)); + currentSize -= map.getWorldBorderData().getZ(); + org.bukkit.WorldBorder border = map.getGameSpawn().load().getWorldBorder(); + border.setSize(border.getSize()-change,30); + delay = 30; + } + + public void resetWorldBorder() { + if(map.getGameSpawn().load() == null) return; + org.bukkit.WorldBorder border = map.getGameSpawn().load().getWorldBorder(); + if (map.isWorldBorderEnabled()) { + border.setSize(map.getWorldBorderData().getX()); + border.setCenter(map.getWorldBorderPos().getX(), map.getWorldBorderPos().getY()); + currentSize = (int) map.getWorldBorderData().getX(); + } else { + border.setSize(30000000); + border.setCenter(0, 0); + } + delay = (int) (60 * map.getWorldBorderData().getY()); + } + + public int getDelay() { + return delay; + } + + public boolean isRunning() { + return running; + } + +}
\ No newline at end of file |