diff --git a/API/src/main/java/dev/lrxh/api/arena/IArena.java b/API/src/main/java/dev/lrxh/api/arena/IArena.java index 549212b2..1d7bb34a 100644 --- a/API/src/main/java/dev/lrxh/api/arena/IArena.java +++ b/API/src/main/java/dev/lrxh/api/arena/IArena.java @@ -43,4 +43,6 @@ public interface IArena { void delete(boolean save); boolean equals(Object o); + + long getTime(); } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/Arena.java b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/Arena.java index be1876fb..c2c51f4a 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/Arena.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/Arena.java @@ -6,7 +6,6 @@ import dev.lrxh.blockChanger.snapshot.CuboidSnapshot; import dev.lrxh.neptune.Neptune; import dev.lrxh.neptune.game.kit.KitService; -import dev.lrxh.neptune.utils.tasks.NeptuneRunnable; import lombok.Getter; import lombok.Setter; import org.bukkit.*; @@ -34,18 +33,20 @@ public class Arena implements IArena { private Location min; private Location max; private double buildLimit; + private long time; private List whitelistedBlocks; private CuboidSnapshot snapshot; private Arena owner; private boolean doneLoading; - public Arena(String name, String displayName, Location redSpawn, Location blueSpawn, boolean enabled, int deathY) { + public Arena(String name, String displayName, Location redSpawn, Location blueSpawn, boolean enabled, int deathY, long time) { this.name = name; this.displayName = displayName; this.redSpawn = redSpawn; this.blueSpawn = blueSpawn; this.enabled = enabled; this.deathY = deathY; + this.time = time; this.buildLimit = 0; this.whitelistedBlocks = new ArrayList<>(); @@ -54,9 +55,9 @@ public Arena(String name, String displayName, Location redSpawn, Location blueSp public Arena(String name, String displayName, Location redSpawn, Location blueSpawn, Location min, Location max, double buildLimit, boolean enabled, - List whitelistedBlocks, int deathY) { + List whitelistedBlocks, int deathY, long time) { - this(name, displayName, redSpawn, blueSpawn, enabled, deathY); + this(name, displayName, redSpawn, blueSpawn, enabled, deathY, time); this.min = min; this.max = max; this.buildLimit = buildLimit; @@ -74,16 +75,16 @@ public Arena(String name, String displayName, Location redSpawn, Location blueSp public Arena(String name, String displayName, Location redSpawn, Location blueSpawn, Location min, Location max, double buildLimit, boolean enabled, - List whitelistedBlocks, int deathY, CuboidSnapshot snapshot, Arena owner) { + List whitelistedBlocks, int deathY, long time, CuboidSnapshot snapshot, Arena owner) { - this(name, displayName, redSpawn, blueSpawn, min, max, buildLimit, enabled, whitelistedBlocks, deathY); + this(name, displayName, redSpawn, blueSpawn, min, max, buildLimit, enabled, whitelistedBlocks, deathY, time); this.snapshot = snapshot; this.owner = owner; this.doneLoading = (snapshot != null); } - public Arena(String name) { - this(name, name, null, null, false, -68321); + public Arena(String name, long time) { + this(name, name, null, null, false, -68321, time); this.min = null; this.max = null; this.buildLimit = 68321; @@ -168,6 +169,7 @@ public boolean shouldGenerateStructures(@NotNull WorldInfo worldInfo, @NotNull R world.setGameRule(GameRules.SHOW_ADVANCEMENT_MESSAGES, false); world.setGameRule(GameRules.IMMEDIATE_RESPAWN, true); world.setDifficulty(Difficulty.HARD); + world.setTime(time); }); Location min = this.min.clone(); @@ -195,6 +197,7 @@ public boolean shouldGenerateStructures(@NotNull WorldInfo worldInfo, @NotNull R this.enabled, new ArrayList<>(this.whitelistedBlocks), this.deathY, + this.time, this, virtualWorld ); diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/ArenaService.java b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/ArenaService.java index da91771d..668a9054 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/ArenaService.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/ArenaService.java @@ -54,7 +54,7 @@ public Arena loadArena(String arenaName) { Location blueSpawn = LocationUtil.deserialize(config.getString(path + "blueSpawn")); boolean enabled = config.getBoolean(path + "enabled"); int deathY = config.getInt(path + "deathY", -68321); - + long time = config.contains(path + "time") ? config.getLong(path + "time") : 0; Location edge1 = LocationUtil.deserialize(config.getString(path + "min")); Location edge2 = LocationUtil.deserialize(config.getString(path + "max")); @@ -66,7 +66,7 @@ public Arena loadArena(String arenaName) { whitelistedBlocks.add(Material.getMaterial(name)); } - return new Arena(arenaName, displayName, redSpawn, blueSpawn, edge1, edge2, limit, enabled, whitelistedBlocks, deathY); + return new Arena(arenaName, displayName, redSpawn, blueSpawn, edge1, edge2, limit, enabled, whitelistedBlocks, deathY, time); } @@ -84,6 +84,7 @@ public void save() { new Value("blueSpawn", LocationUtil.serialize(arena.getBlueSpawn())), new Value("enabled", arena.isEnabled()), new Value("deathY", arena.getDeathY()), + new Value("time", arena.getTime()), new Value("limit", arena.getBuildLimit()), new Value("whitelistedBlocks", arena.getWhitelistedBlocksAsString()) )); @@ -110,7 +111,7 @@ public Arena getArenaByName(String arenaName) { } public Arena copyFrom(IArena arena) { - return new Arena(arena.getName(), arena.getDisplayName(), arena.getRedSpawn(), arena.getBlueSpawn(), arena.getMin(), arena.getMax(), arena.getBuildLimit(), arena.isEnabled(), arena.getWhitelistedBlocks(), arena.getDeathY()); + return new Arena(arena.getName(), arena.getDisplayName(), arena.getRedSpawn(), arena.getBlueSpawn(), arena.getMin(), arena.getMax(), arena.getBuildLimit(), arena.isEnabled(), arena.getWhitelistedBlocks(), arena.getDeathY(), arena.getTime()); } @Override diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/VirtualArena.java b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/VirtualArena.java index d0154dae..59dcd79f 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/VirtualArena.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/VirtualArena.java @@ -16,6 +16,7 @@ public class VirtualArena implements IArena { private final String displayName; private final boolean enabled; private final int deathY; + private final long time; private final double buildLimit; private final List whitelistedBlocks; private final IArena owner; @@ -39,6 +40,7 @@ public VirtualArena(String name, boolean enabled, List whitelistedBlocks, int deathY, + long time, IArena owner, VirtualWorld virtualWorld) { this.name = name; @@ -51,6 +53,7 @@ public VirtualArena(String name, this.enabled = enabled; this.whitelistedBlocks = whitelistedBlocks; this.deathY = deathY; + this.time = time; this.owner = owner; this.virtualWorld = virtualWorld; } diff --git a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/menu/ArenaManagementMenu.java b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/menu/ArenaManagementMenu.java index fc163250..3c244549 100644 --- a/Plugin/src/main/java/dev/lrxh/neptune/game/arena/menu/ArenaManagementMenu.java +++ b/Plugin/src/main/java/dev/lrxh/neptune/game/arena/menu/ArenaManagementMenu.java @@ -45,7 +45,7 @@ public List