From ed6b24bd7919c043c645809f3809d0783d83fc66 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 3 Mar 2022 10:01:05 +0100 Subject: [PATCH] Allow administration replays without restrictions Signed-off-by: Lixfel --- .../fightsystem/utils/FlatteningWrapper8.java | 2 +- .../de/steamwar/fightsystem/ArenaMode.java | 2 +- .../de/steamwar/fightsystem/FightSystem.java | 4 +--- .../fightsystem/fight/FightWorld.java | 1 - .../fightsystem/listener/TestJoin.java | 8 +++++++ .../fightsystem/record/FileSource.java | 24 ++++++++++--------- .../fightsystem/record/PacketProcessor.java | 3 +++ 7 files changed, 27 insertions(+), 17 deletions(-) diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/FlatteningWrapper8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/FlatteningWrapper8.java index 95fd263..5b6ed8d 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/utils/FlatteningWrapper8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/FlatteningWrapper8.java @@ -72,7 +72,7 @@ public class FlatteningWrapper8 implements FlatteningWrapper.IFlatteningWrapper @Override public void forceLoadChunk(World world, int cX, int cZ) { - // not possible in 1.8 + world.setKeepSpawnInMemory(true); } @Override diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java index a25ca27..94d3d2b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java @@ -40,7 +40,7 @@ public enum ArenaMode { public static final Set Test = Collections.unmodifiableSet(EnumSet.of(TEST, CHECK)); public static final Set Ranked = Collections.unmodifiableSet(EnumSet.of(RANKED)); public static final Set Prepare = Collections.unmodifiableSet(EnumSet.of(PREPARE)); - public static final Set Replay = Collections.unmodifiableSet(EnumSet.of(REPLAY)); + public static final Set Replay = Collections.unmodifiableSet(EnumSet.of(REPLAY, TEST)); public static final Set AntiReplay = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(REPLAY))); public static final Set AntiTest = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK))); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 9431174..f99b59a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -141,6 +141,7 @@ public class FightSystem extends JavaPlugin { new FileRecorder(); REntity.initWatchers(); + FileSource.startReplay(); if(Config.mode == ArenaMode.EVENT) { setPreSchemState(); @@ -148,9 +149,6 @@ public class FightSystem extends JavaPlugin { Fight.getBlueTeam().setSchem(SchematicNode.getSchematicNode(Config.CheckSchemID)); }else if(Config.mode == ArenaMode.PREPARE) { Fight.getUnrotated().setSchem(SchematicNode.getSchematicNode(Config.PrepareSchemID)); - }else if(Config.mode == ArenaMode.REPLAY) { - FightWorld.forceLoad(); - FileSource.startReplay(); } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java index 82187fa..43cad3f 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java @@ -61,7 +61,6 @@ public class FightWorld extends StateDependent { world.loadChunk(cX, cZ); FlatteningWrapper.impl.forceLoadChunk(world, cX, cZ); }); - world.setKeepSpawnInMemory(true); } public static void resetWorld(){ diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TestJoin.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TestJoin.java index 8099c24..faa7109 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TestJoin.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TestJoin.java @@ -20,11 +20,13 @@ package de.steamwar.fightsystem.listener; import de.steamwar.fightsystem.ArenaMode; +import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; +import de.steamwar.sql.SteamwarUser; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -41,6 +43,12 @@ public class TestJoin implements Listener { Player player = event.getPlayer(); FightTeam fightTeam = Fight.getPlayerTeam(player); + if(Config.ReplayID != 0 && !SteamwarUser.get(player.getUniqueId()).getUserGroup().isAdminGroup()) { + FightSystem.getMessage().send("CHECK_JOIN_DENIED", player); + player.kickPlayer(""); + return; + } + if (fightTeam == null && (Fight.getRedTeam().isLeaderless() || Fight.getBlueTeam().isLeaderless())) { FightSystem.getMessage().send("TEST_BECOME_LEADER", player); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/FileSource.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/FileSource.java index fc3c981..6d75d2b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/FileSource.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/FileSource.java @@ -38,21 +38,23 @@ public class FileSource extends PacketSource { return; } - de.steamwar.sql.Fight.getReplay(Config.ReplayID, input -> { + if(Config.ReplayID > 0) { + de.steamwar.sql.Fight.getReplay(Config.ReplayID, input -> { + try { + Files.copy( + input, + FileRecorder.getFile().toPath(), + StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + throw new SecurityException("Could not start replay", e); + } + }); + try { - Files.copy( - input, - FileRecorder.getFile().toPath(), - StandardCopyOption.REPLACE_EXISTING); + new FileSource(FileRecorder.getFile()); } catch (IOException e) { throw new SecurityException("Could not start replay", e); } - }); - - try { - new FileSource(FileRecorder.getFile()); - } catch (IOException e) { - throw new SecurityException("Could not start replay", e); } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index a85c015..33d4e63 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -26,6 +26,7 @@ import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; +import de.steamwar.fightsystem.fight.FightWorld; import de.steamwar.fightsystem.fight.FreezeWorld; import de.steamwar.fightsystem.listener.FightScoreboard; import de.steamwar.fightsystem.states.FightState; @@ -124,6 +125,8 @@ public class PacketProcessor { packetDecoder[0xef] = source::readUTF; packetDecoder[0xff] = this::tick; + FightWorld.forceLoad(); + if(source.async()) { Bukkit.getScheduler().runTaskAsynchronously(FightSystem.getPlugin(), this::process); task = Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), this::runSync, 1, 1); -- 2.39.2