From 85d8675b4ca775753032fdebeb5a5087389a0281 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 21 Nov 2021 10:37:44 +0100 Subject: [PATCH 01/32] Changing to SchematicNodes (Requires SchematicSystem) --- .../fightsystem/utils/WorldeditWrapper14.java | 4 ++-- .../fightsystem/utils/WorldeditWrapper8.java | 4 ++-- .../de/steamwar/fightsystem/FightSystem.java | 6 ++--- .../de/steamwar/fightsystem/commands/GUI.java | 23 ++++++------------- .../commands/LockschemCommand.java | 4 ++-- .../fightsystem/fight/FightSchematic.java | 10 ++++---- .../steamwar/fightsystem/fight/FightTeam.java | 11 +++++---- .../steamwar/fightsystem/listener/Check.java | 6 ++--- .../fightsystem/listener/PrepareSchem.java | 8 +++---- .../fightsystem/record/PacketProcessor.java | 6 ++--- .../steamwar/fightsystem/record/Recorder.java | 4 ++-- .../fightsystem/utils/FightStatistics.java | 6 ++--- .../fightsystem/utils/WorldeditWrapper.java | 4 ++-- pom.xml | 7 ++++++ 14 files changed, 51 insertions(+), 52 deletions(-) diff --git a/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java b/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java index fe5bc06..402c587 100644 --- a/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java +++ b/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java @@ -41,7 +41,7 @@ import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockTypes; import de.steamwar.fightsystem.FightSystem; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.Bukkit; import org.bukkit.DyeColor; import org.bukkit.Location; @@ -122,7 +122,7 @@ public class WorldeditWrapper14 implements WorldeditWrapper.IWorldeditWrapper { } @Override - public void saveSchem(Schematic schem, Region region, int minY) throws WorldEditException { + public void saveSchem(SchematicNode schem, Region region, int minY) throws WorldEditException { World w = new BukkitWorld(Bukkit.getWorlds().get(0)); BlockVector3 min = BlockVector3.at(region.getMinX(), minY, region.getMinZ()); CuboidRegion cuboidRegion = new CuboidRegion(w, min, BlockVector3.at(region.getMaxX(), region.getMaxY(), region.getMaxZ()).subtract(BlockVector3.ONE)); diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java index a4856bb..3d7fb2a 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java @@ -38,7 +38,7 @@ import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.world.World; import de.steamwar.fightsystem.FightSystem; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.Bukkit; import org.bukkit.DyeColor; import org.bukkit.Location; @@ -121,7 +121,7 @@ public class WorldeditWrapper8 implements WorldeditWrapper.IWorldeditWrapper { } @Override - public void saveSchem(Schematic schem, Region region, int minY) throws WorldEditException { + public void saveSchem(SchematicNode schem, Region region, int minY) throws WorldEditException { World w = new BukkitWorld(Bukkit.getWorlds().get(0)); Vector min = new Vector(region.getMinX(), minY, region.getMinZ()); CuboidRegion cuboidRegion = new CuboidRegion(w, min, new Vector(region.getMaxX(), region.getMaxY(), region.getMaxZ()).subtract(Vector.ONE)); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 1ef5115..254a67e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -33,7 +33,7 @@ import de.steamwar.fightsystem.utils.*; import de.steamwar.fightsystem.winconditions.*; import de.steamwar.message.Message; import de.steamwar.sql.EventFight; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -140,9 +140,9 @@ public class FightSystem extends JavaPlugin { if(Config.mode == ArenaMode.EVENT) { setPreSchemState(); }else if(Config.mode == ArenaMode.CHECK){ - Fight.getBlueTeam().setSchem(Schematic.getSchemFromDB(Config.CheckSchemID)); + Fight.getBlueTeam().setSchem(SchematicNode.getSchematicNode(Config.CheckSchemID)); }else if(Config.mode == ArenaMode.PREPARE) { - Fight.getUnrotated().setSchem(Schematic.getSchemFromDB(Config.PrepareSchemID)); + 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/commands/GUI.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java index bd9794e..1d1713a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java @@ -32,8 +32,9 @@ import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; import de.steamwar.message.Message; +import de.steamwar.schematicsystem.util.SchematicSelector; import de.steamwar.sql.PersonalKit; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Bukkit; @@ -173,7 +174,7 @@ public class GUI { }); if(Fight.getMaxRank() == 0){ inv.setItem(0, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_PRIVATE_FORBIDDEN", p, Config.GameName), (ClickType click)->{}); - }else if(Schematic.getSchemsOfType(p.getUniqueId(), Config.SchematicType).isEmpty() && !Config.test()){ + }else if(SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(p.getUniqueId()).getId(), Config.SchematicType.toDB()).isEmpty() && !Config.test()){ inv.setItem(0, SWItem.getDye(8), (byte)8, msg.parse("SCHEM_NO_PRIVATE", p, Config.GameName), (ClickType click)->{}); }else{ inv.setItem(0, SWItem.getMaterial("CAULDRON_ITEM"), msg.parse("SCHEM_PRIVATE", p, Config.GameName), (ClickType click) -> { @@ -186,25 +187,15 @@ public class GUI { } private static void schemDialog(Player p, boolean publicSchems){ - List> schems; - if(publicSchems) - schems = SWListInv.getSchemList(Config.SchematicType, 0); - else if(Config.test()) - schems = SWListInv.getSchemList(null, SteamwarUser.get(p.getUniqueId()).getId()); - else{ - schems = SWListInv.getSchemList(Config.SchematicType, SteamwarUser.get(p.getUniqueId()).getId()); - schems.removeIf(schem -> schem.getObject().getRank() > Fight.getMaxRank()); - } - - SWListInv inv = new SWListInv<>(p, msg.parse("SCHEM_TITLE", p, Config.GameName), schems, (ClickType click, Schematic s) -> { + SchematicSelector selector = new SchematicSelector(p, SchematicSelector.selectSchematicType(Config.SchematicType), node -> { FightTeam fightTeam = Fight.getPlayerTeam(p); if(fightTeam == null) return; if(Config.test() || FightState.getFightState() != FightState.POST_SCHEM_SETUP) - fightTeam.pasteSchem(s); + fightTeam.pasteSchem(node); p.closeInventory(); }); - inv.setCallback(-999, (ClickType click) -> p.closeInventory()); - inv.open(); + selector.setPublicMode(publicSchems?SchematicSelector.PublicMode.PUBLIC_ONLY:SchematicSelector.PublicMode.PRIVATE_ONLY); + selector.open(); } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java index 9e7fff3..1780470 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java @@ -25,7 +25,7 @@ import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentCommand; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SchematicType; import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.UserGroup; @@ -67,7 +67,7 @@ public class LockschemCommand implements CommandExecutor { return false; } - Schematic.getSchemFromDB(fightTeam.getSchematic()).setSchemType(SchematicType.Normal); + SchematicNode.getSchematicNode(fightTeam.getSchematic()).setType(SchematicType.Normal.toDB()); FightSystem.getMessage().sendPrefixless("LOCKSCHEM_LOCKED", player, ChatMessageType.ACTION_BAR); fightTeam.broadcastSystem("LOCKSCHEM_LOCKED_BY", player.getName()); return false; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java index 0d7643d..ce4dc0e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java @@ -31,7 +31,7 @@ import de.steamwar.fightsystem.states.StateDependent; import de.steamwar.fightsystem.utils.ColorConverter; import de.steamwar.fightsystem.utils.Region; import de.steamwar.fightsystem.utils.WorldeditWrapper; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.event.HandlerList; @@ -67,13 +67,13 @@ public class FightSchematic extends StateDependent { return schematic; } - public void setSchematic(Schematic schem) { - schematic = schem.getSchemID(); + public void setSchematic(SchematicNode schem) { + schematic = schem.getId(); try { clipboard = schem.load(); } catch (IOException e) { team.broadcastSystem("SCHEMATIC_UNLOADABLE"); - Bukkit.getLogger().log(Level.SEVERE, e, () -> "Couldn't load Schematic " + schem.getSchemName()); + Bukkit.getLogger().log(Level.SEVERE, e, () -> "Couldn't load Schematic " + schem.getName()); } } @@ -93,7 +93,7 @@ public class FightSchematic extends StateDependent { return; if(clipboard == null){ - List publics = Schematic.getSchemsOfType(0, Config.SchematicType); + List publics = SchematicNode.getAllSchematicsOfType(0, Config.SchematicType.toDB()); if(publics.isEmpty()) return; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java index 83bcffa..f88a616 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -32,7 +32,8 @@ import de.steamwar.fightsystem.states.OneShotStateDependent; import de.steamwar.fightsystem.states.StateDependent; import de.steamwar.fightsystem.utils.*; import de.steamwar.inventory.SWItem; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; +import de.steamwar.sql.SteamwarUser; import net.md_5.bungee.api.ChatMessageType; import org.bukkit.*; import org.bukkit.enchantments.Enchantment; @@ -281,7 +282,7 @@ public class FightTeam { if(!silent) FightUI.addSubtitle("UI_LEADER_JOINS", prefix, leader.getPlayer().getName()); - Optional maxRank = Schematic.getSchemsOfType(leader.getPlayer().getUniqueId(), Config.SchematicType).stream().map(Schematic::getRank).max(Integer::compare); + Optional maxRank = SchematicNode.getAllAccessibleSchematicsOfType(SteamwarUser.get(leader.getPlayer().getUniqueId()).getId(), Config.SchematicType.toDB()).stream().map(SchematicNode::getRank).max(Integer::compare); if(Config.RanksEnabled) schemRank = maxRank.orElse(1); else @@ -320,7 +321,7 @@ public class FightTeam { return ready; } - public void pasteSchem(Schematic schematic){ + public void pasteSchem(SchematicNode schematic){ setSchem(schematic); testPasteAction(); } @@ -342,9 +343,9 @@ public class FightTeam { schematic.pasteTeamName(); } - public void setSchem(Schematic schematic){ + public void setSchem(SchematicNode schematic){ this.schematic.setSchematic(schematic); - broadcast("SCHEMATIC_CHOSEN", Config.GameName, schematic.getSchemName()); + broadcast("SCHEMATIC_CHOSEN", Config.GameName, schematic.getName()); } public void setReady(boolean ready) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Check.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Check.java index a12b187..a33d52c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Check.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Check.java @@ -24,7 +24,7 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.UserGroup; import org.bukkit.Bukkit; @@ -50,8 +50,8 @@ public class Check implements Listener { if(allowedToCheck(user)) return; - Schematic schem = Schematic.getSchemFromDB(Config.CheckSchemID); - if(user.getId() == schem.getSchemOwner()) + SchematicNode schem = SchematicNode.getSchematicNode(Config.CheckSchemID); + if(user.getId() == schem.getOwner()) return; FightSystem.getMessage().send("CHECK_JOIN_DENIED", player); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java index 8efd4ad..e90d823 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java @@ -30,7 +30,7 @@ import de.steamwar.fightsystem.states.StateDependentListener; import de.steamwar.fightsystem.utils.FlatteningWrapper; import de.steamwar.fightsystem.utils.Region; import de.steamwar.fightsystem.utils.WorldeditWrapper; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; @@ -49,9 +49,9 @@ public class PrepareSchem implements Listener { Region region = Fight.getUnrotated().getExtendRegion(); int minY = Fight.getUnrotated().getSchemRegion().getMinY(); - Schematic schem; + SchematicNode schem; try{ - schem = Schematic.getSchemFromDB(Config.PrepareSchemID); + schem = SchematicNode.getSchematicNode(Config.PrepareSchemID); }catch(SecurityException e){ FightSystem.getMessage().broadcast("PREPARE_SCHEM_DELETED"); Bukkit.shutdown(); @@ -78,7 +78,7 @@ public class PrepareSchem implements Listener { throw new SecurityException("Could not save schem", e); } - schem.setSchemType(Config.SchematicType.checkType()); + schem.setType(Config.SchematicType.checkType().toDB()); FightSystem.getMessage().broadcast("PREPARE_SENT_IN"); Bukkit.shutdown(); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 23e937a..73be48d 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -32,7 +32,7 @@ import de.steamwar.fightsystem.fight.FreezeWorld; import de.steamwar.fightsystem.listener.FightScoreboard; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.utils.*; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.Team; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.BaseComponent; @@ -374,12 +374,12 @@ public class PacketProcessor { private void pasteSchem(FightTeam team) throws IOException { int schemId = source.readInt(); - execSync(() -> team.pasteSchem(Schematic.getSchemFromDB(schemId))); + execSync(() -> team.pasteSchem(SchematicNode.getSchematicNode(schemId))); } private void pasteEmbeddedSchem(FightTeam team) throws IOException { int schemId = source.readInt(); - Clipboard clipboard = Schematic.clipboardFromStream(source, Core.getVersion() > 12); + Clipboard clipboard = SchematicNode.clipboardFromStream(source, Core.getVersion() > 12); execSync(() -> team.pasteSchem(schemId, clipboard)); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java index e4e4ee0..a654108 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java @@ -29,7 +29,7 @@ import de.steamwar.fightsystem.utils.BlockIdWrapper; import de.steamwar.fightsystem.utils.CraftbukkitWrapper; import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -275,7 +275,7 @@ public interface Recorder { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try{ - copy(Schematic.getSchemFromDB(schemId).schemData(), buffer); + copy(SchematicNode.getSchematicNode(schemId).schemData(), buffer); }catch (EOFException e) { Bukkit.getLogger().log(Level.INFO, "EOFException ignored"); } catch (IOException e) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java index 25bef85..09ef089 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java @@ -31,7 +31,7 @@ import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.OneShotStateDependent; import de.steamwar.fightsystem.winconditions.Wincondition; import de.steamwar.sql.Elo; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; @@ -91,12 +91,12 @@ public class FightStatistics { Integer blueSchem; Integer redSchem; try{ - blueSchem = Schematic.getSchemFromDB(Fight.getBlueTeam().getSchematic()).getSchemID(); + blueSchem = SchematicNode.getSchematicNode(Fight.getBlueTeam().getSchematic()).getId(); }catch(SecurityException e){ blueSchem = null; } try{ - redSchem = Schematic.getSchemFromDB(Fight.getRedTeam().getSchematic()).getSchemID(); + redSchem = SchematicNode.getSchematicNode(Fight.getRedTeam().getSchematic()).getId(); }catch(SecurityException e){ redSchem = null; } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java index 35f3d37..4f19e69 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java @@ -24,7 +24,7 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.math.transform.AffineTransform; import de.steamwar.core.VersionDependent; import de.steamwar.fightsystem.FightSystem; -import de.steamwar.sql.Schematic; +import de.steamwar.sql.SchematicNode; import org.bukkit.DyeColor; import org.bukkit.Location; import org.bukkit.util.Vector; @@ -42,6 +42,6 @@ public class WorldeditWrapper { void pasteClipboard(Clipboard clipboard, Location position, Vector offset, AffineTransform aT); Vector getDimensions(Clipboard clipboard); Clipboard loadChar(String charName) throws IOException; - void saveSchem(Schematic schem, Region region, int minY) throws WorldEditException; + void saveSchem(SchematicNode schem, Region region, int minY) throws WorldEditException; } } diff --git a/pom.xml b/pom.xml index 35a72ae..4056ded 100644 --- a/pom.xml +++ b/pom.xml @@ -69,6 +69,13 @@ system ${main.basedir}/lib/SpigotCore.jar + + steamwar + SchematicSystem + 1.0 + system + ${main.basedir}/lib/SchematicSystem.jar + From ab7602879ca32e124e82c5755aa34ff3be115b74 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 21 Nov 2021 10:58:47 +0100 Subject: [PATCH 02/32] Yeeeeeeeeeeeeeeeeeet --- .../src/de/steamwar/fightsystem/commands/GUI.java | 4 ++-- pom.xml | 7 ------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java index 1d1713a..3b9c90d 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java @@ -32,10 +32,10 @@ import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; import de.steamwar.message.Message; -import de.steamwar.schematicsystem.util.SchematicSelector; import de.steamwar.sql.PersonalKit; import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; +import de.steamwar.util.SchematicSelector; import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -187,7 +187,7 @@ public class GUI { } private static void schemDialog(Player p, boolean publicSchems){ - SchematicSelector selector = new SchematicSelector(p, SchematicSelector.selectSchematicType(Config.SchematicType), node -> { + SchematicSelector selector = new SchematicSelector(p, Config.test()?SchematicSelector.selectSchematic():SchematicSelector.selectSchematicTypeWithRank(Config.SchematicType, Fight.getMaxRank()), node -> { FightTeam fightTeam = Fight.getPlayerTeam(p); if(fightTeam == null) return; diff --git a/pom.xml b/pom.xml index 4056ded..35a72ae 100644 --- a/pom.xml +++ b/pom.xml @@ -69,13 +69,6 @@ system ${main.basedir}/lib/SpigotCore.jar - - steamwar - SchematicSystem - 1.0 - system - ${main.basedir}/lib/SchematicSystem.jar - From a8a15c68287aed99e4290dbc024ff868054c0817 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sat, 27 Nov 2021 10:19:52 +0100 Subject: [PATCH 03/32] Update from Depricated Methods --- .../src/de/steamwar/fightsystem/commands/LockschemCommand.java | 2 +- .../src/de/steamwar/fightsystem/listener/PrepareSchem.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java index 1780470..2880acd 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockschemCommand.java @@ -67,7 +67,7 @@ public class LockschemCommand implements CommandExecutor { return false; } - SchematicNode.getSchematicNode(fightTeam.getSchematic()).setType(SchematicType.Normal.toDB()); + SchematicNode.getSchematicNode(fightTeam.getSchematic()).setSchemtype(SchematicType.Normal); FightSystem.getMessage().sendPrefixless("LOCKSCHEM_LOCKED", player, ChatMessageType.ACTION_BAR); fightTeam.broadcastSystem("LOCKSCHEM_LOCKED_BY", player.getName()); return false; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java index e90d823..1eff083 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java @@ -78,7 +78,7 @@ public class PrepareSchem implements Listener { throw new SecurityException("Could not save schem", e); } - schem.setType(Config.SchematicType.checkType().toDB()); + schem.setSchemtype(Config.SchematicType.checkType()); FightSystem.getMessage().broadcast("PREPARE_SENT_IN"); Bukkit.shutdown(); } From 796c58a3d214321e49b8751b47c8e02a6b8b789d Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Fri, 3 Dec 2021 14:15:33 +0100 Subject: [PATCH 04/32] Fix Inventory Location --- .../src/de/steamwar/fightsystem/commands/GUI.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java index 3b9c90d..0f56b0a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/GUI.java @@ -27,15 +27,11 @@ import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.Kit; import de.steamwar.fightsystem.listener.PersonalKitCreator; import de.steamwar.fightsystem.states.FightState; -import de.steamwar.inventory.SWAnvilInv; -import de.steamwar.inventory.SWInventory; -import de.steamwar.inventory.SWItem; -import de.steamwar.inventory.SWListInv; +import de.steamwar.inventory.*; import de.steamwar.message.Message; import de.steamwar.sql.PersonalKit; import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; -import de.steamwar.util.SchematicSelector; import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Bukkit; import org.bukkit.Material; From 0c6cfba029f61b55340c7760834a0a4fe8160c42 Mon Sep 17 00:00:00 2001 From: zOnlyKroks Date: Sun, 19 Dec 2021 14:45:19 +0100 Subject: [PATCH 05/32] Anti Ice and Snow Melt --- .../de/steamwar/fightsystem/FightSystem.java | 1 + .../listener/BlockFadeListener.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 1ef5115..02473ff 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -84,6 +84,7 @@ public class FightSystem extends JavaPlugin { new PersonalKitCreator(); new ArrowStopper(); new ArrowPickup(); + new BlockFadeListener(); new EnterHandler(); new TechHider(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java new file mode 100644 index 0000000..704ec6b --- /dev/null +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java @@ -0,0 +1,24 @@ +package de.steamwar.fightsystem.listener; + +import de.steamwar.fightsystem.ArenaMode; +import de.steamwar.fightsystem.states.FightState; +import de.steamwar.fightsystem.states.StateDependentListener; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockFadeEvent; + +public class BlockFadeListener implements Listener { + + public BlockFadeListener() { + new StateDependentListener(ArenaMode.Check, FightState.All, this); + } + + @EventHandler + public void onBlockFade(BlockFadeEvent event) { + if (event.getBlock().getType() == Material.SNOW_BLOCK || event.getBlock().getType() == Material.SNOW || event.getBlock().getType() == Material.ICE) { + event.setCancelled(true); + } + } + +} From 9beb9f5aad2d7f4ca0af37637b3fc338805e7251 Mon Sep 17 00:00:00 2001 From: zOnlyKroks Date: Sun, 19 Dec 2021 14:47:17 +0100 Subject: [PATCH 06/32] Little Typo --- .../src/de/steamwar/fightsystem/listener/BlockFadeListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java index 704ec6b..5a80166 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java @@ -11,7 +11,7 @@ import org.bukkit.event.block.BlockFadeEvent; public class BlockFadeListener implements Listener { public BlockFadeListener() { - new StateDependentListener(ArenaMode.Check, FightState.All, this); + new StateDependentListener(ArenaMode.All, FightState.All, this); } @EventHandler From d9d154f4eb462cf7a0de84f4b39b1b52d91559a2 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 21 Dec 2021 21:08:11 +0100 Subject: [PATCH 07/32] Fix piston boundary Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/listener/PistonListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java index 8235216..f49257c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java @@ -24,6 +24,7 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPistonExtendEvent; @@ -41,8 +42,9 @@ public class PistonListener implements Listener { @EventHandler public void handlePistonExtend(BlockPistonExtendEvent e){ + BlockFace face = e.getDirection(); for(Block block : e.getBlocks()){ - if(!Config.BlueExtendRegion.inRegion(block) && !Config.RedExtendRegion.inRegion(block)){ + if(!Config.BlueExtendRegion.inRegion(block.getRelative(face)) && !Config.RedExtendRegion.inRegion(block.getRelative(face))){ e.setCancelled(true); return; } From 50995bca82d371c86d94ba08a23b3e22dcb39915 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 21 Dec 2021 21:15:36 +0100 Subject: [PATCH 08/32] Use SpigotCore TinyProtocol instance Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/FightSystem.java | 1 - .../de/steamwar/fightsystem/fight/Fight.java | 4 ++-- .../steamwar/fightsystem/record/REntity.java | 17 +++++++++-------- .../fightsystem/utils/ProtocolAPI.java | 19 +++++++------------ 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 1ef5115..ee08281 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -151,7 +151,6 @@ public class FightSystem extends JavaPlugin { @Override public void onDisable() { - ProtocolAPI.tinyProtocol.close(); GlobalRecorder.getInstance().close(); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/Fight.java index 80129fb..6a1a3c6 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/Fight.java @@ -20,13 +20,13 @@ package de.steamwar.fightsystem.fight; import com.comphenix.tinyprotocol.Reflection; +import com.comphenix.tinyprotocol.TinyProtocol; import com.mojang.authlib.GameProfile; import de.steamwar.core.Core; import de.steamwar.fightsystem.ArenaMode; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.record.GlobalRecorder; -import de.steamwar.fightsystem.utils.ProtocolAPI; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Sound; @@ -146,7 +146,7 @@ public class Fight { private static final Reflection.ConstructorInvoker playerInfoDataConstructor = Reflection.getConstructor(playerInfoDataClass, playerInfoPacket, GameProfile.class, int.class, enumGamemode, iChatBaseComponent); public static void pseudoSpectator(Player player, boolean enable) { - ProtocolAPI.tinyProtocol.sendPacket(player, playerInfoPacket(updateGamemode, new GameProfile(player.getUniqueId(), player.getName()), enable ? creative : spectator)); + TinyProtocol.instance.sendPacket(player, playerInfoPacket(updateGamemode, new GameProfile(player.getUniqueId(), player.getName()), enable ? creative : spectator)); } public static Object playerInfoPacket(Object action, GameProfile profile, Object mode) { diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java index c0e70e1..8466333 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java @@ -20,6 +20,7 @@ package de.steamwar.fightsystem.record; import com.comphenix.tinyprotocol.Reflection; +import com.comphenix.tinyprotocol.TinyProtocol; import com.mojang.authlib.GameProfile; import de.steamwar.core.Core; import de.steamwar.fightsystem.fight.Fight; @@ -72,22 +73,22 @@ public class REntity { public static void playerJoins(Player player) { for(REntity entity : entities.values()){ if(entity.entityType == EntityType.PLAYER){ - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getPlayerInfoPacket()); - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getNamedSpawnPacket()); + TinyProtocol.instance.sendPacket(player, entity.getPlayerInfoPacket()); + TinyProtocol.instance.sendPacket(player, entity.getNamedSpawnPacket()); for (Map.Entry entry : entity.itemSlots.entrySet()) { - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getEquipmentPacket(entry.getKey(), entry.getValue())); + TinyProtocol.instance.sendPacket(player, entity.getEquipmentPacket(entry.getKey(), entry.getValue())); } }else{ - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getSpawnEntityPacket()); + TinyProtocol.instance.sendPacket(player, entity.getSpawnEntityPacket()); } - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getTeleportPacket()); - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getHeadRotationPacket()); + TinyProtocol.instance.sendPacket(player, entity.getTeleportPacket()); + TinyProtocol.instance.sendPacket(player, entity.getHeadRotationPacket()); if(entity.fireTick != 0) { - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getDataWatcherPacket(entityStatusWatcher, (byte) 1)); + TinyProtocol.instance.sendPacket(player, entity.getDataWatcherPacket(entityStatusWatcher, (byte) 1)); } if(entity.sneaks) { - ProtocolAPI.tinyProtocol.sendPacket(player, entity.getDataWatcherPacket(sneakingDataWatcher, BlockIdWrapper.impl.getPose(true))); + TinyProtocol.instance.sendPacket(player, entity.getDataWatcherPacket(sneakingDataWatcher, BlockIdWrapper.impl.getPose(true))); } } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/ProtocolAPI.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/ProtocolAPI.java index 05c5f3f..28ad17a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/ProtocolAPI.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/ProtocolAPI.java @@ -20,8 +20,6 @@ package de.steamwar.fightsystem.utils; import com.comphenix.tinyprotocol.TinyProtocol; -import de.steamwar.fightsystem.FightSystem; -import io.netty.channel.Channel; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -42,23 +40,20 @@ public class ProtocolAPI { private static final Map, BiFunction> outgoingHandler = new HashMap<>(); private static final Map, BiFunction> incomingHandler = new HashMap<>(); - public static final TinyProtocol tinyProtocol = new TinyProtocol(FightSystem.getPlugin()) { - @Override - public Object onPacketOutAsync(Player receiver, Channel channel, Object packet) { + static { + TinyProtocol.instance.setOutFilter((receiver, channel, packet) -> { BiFunction handler = outgoingHandler.get(packet.getClass()); if(handler == null) return packet; return handler.apply(receiver, packet); - } - - @Override - public Object onPacketInAsync(Player sender, Channel channel, Object packet) { + }); + TinyProtocol.instance.setInFilter((sender, channel, packet) -> { BiFunction handler = incomingHandler.get(packet.getClass()); if(handler == null) return packet; return handler.apply(sender, packet); - } - }; + }); + } public static void setOutgoingHandler(Class packetClass, BiFunction handler) { outgoingHandler.put(packetClass, handler); @@ -77,7 +72,7 @@ public class ProtocolAPI { } public static void broadcastPacket(Object packet) { - Bukkit.getOnlinePlayers().stream().map(tinyProtocol::getChannel).filter(tinyProtocol::hasInjected).forEach(channel -> tinyProtocol.sendPacket(channel, packet)); + Bukkit.getOnlinePlayers().stream().map(TinyProtocol.instance::getChannel).filter(TinyProtocol.instance::hasInjected).forEach(channel -> TinyProtocol.instance.sendPacket(channel, packet)); } public static BiFunction, Object> arrayCloneGenerator(Class elementClass) { From acb439e3d9d9e3098181328a983e4d4a119e46e7 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 21 Dec 2021 22:01:59 +0100 Subject: [PATCH 09/32] Limit block breaking to team area Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/listener/TeamArea.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java index 75a1fd8..383acf2 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java @@ -34,6 +34,7 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -77,6 +78,16 @@ public class TeamArea implements Listener { FightSystem.getMessage().sendPrefixless("NO_BLOCK_PLACE", player, ChatMessageType.ACTION_BAR); } + @EventHandler + public void blockBreak(BlockBreakEvent event) { + Block block = event.getBlock(); + if(Config.BlueExtendRegion.inRegion(block) || Config.RedExtendRegion.inRegion(block)) + return; + + event.setCancelled(true); + FightSystem.getMessage().sendPrefixless("NO_BLOCK_BREAK", event.getPlayer(), ChatMessageType.ACTION_BAR); + } + private void checkInTeamRegion(PlayerMoveEvent event, FightTeam team, Player player, FightTeam playerTeam) { boolean spectator = player.getGameMode() == GameMode.SPECTATOR; if(!spectator && playerTeam != null && playerTeam.canPlayerEntern(player)) From 27056e4842f5ff0f1a91eb007d57fa016635e154 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 22 Dec 2021 12:17:33 +0100 Subject: [PATCH 10/32] Limit block breaking below ground Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/listener/TeamArea.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java index 383acf2..5dfa2a4 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java @@ -81,7 +81,7 @@ public class TeamArea implements Listener { @EventHandler public void blockBreak(BlockBreakEvent event) { Block block = event.getBlock(); - if(Config.BlueExtendRegion.inRegion(block) || Config.RedExtendRegion.inRegion(block)) + if(Config.BluePasteRegion.getMinY() >= block.getY()) return; event.setCancelled(true); From 2086366debd2fae1ed99fb645608f7354ff58c07 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 22 Dec 2021 12:40:41 +0100 Subject: [PATCH 11/32] Allow stationary moving pistons during preparation Signed-off-by: Lixfel --- .../fightsystem/listener/PrepareSchem.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java index 8efd4ad..550394b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PrepareSchem.java @@ -26,6 +26,7 @@ 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.OneShotStateDependent; import de.steamwar.fightsystem.states.StateDependentListener; import de.steamwar.fightsystem.utils.FlatteningWrapper; import de.steamwar.fightsystem.utils.Region; @@ -37,10 +38,25 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.util.Vector; + +import java.util.HashSet; +import java.util.Set; public class PrepareSchem implements Listener { + private final Set stationaryMovingPistons = new HashSet<>(); + public PrepareSchem() { + new OneShotStateDependent(ArenaMode.Prepare, FightState.PostSchemSetup, () -> Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> { + stationaryMovingPistons.clear(); + World world = Bukkit.getWorlds().get(0); + Fight.getUnrotated().getSchemRegion().forEach((x, y, z) -> { + if(FlatteningWrapper.impl.checkPistonMoving(world.getBlockAt(x, y, z))) + stationaryMovingPistons.add(new Vector(x, y, z)); + }); + }, 1)); + new StateDependentListener(ArenaMode.Prepare, FightState.Setup, this){ @Override public void disable() { @@ -60,7 +76,7 @@ public class PrepareSchem implements Listener { try{ region.forEach((x, y, z) -> { - if(FlatteningWrapper.impl.checkPistonMoving(world.getBlockAt(x, y, z))){ + if(FlatteningWrapper.impl.checkPistonMoving(world.getBlockAt(x, y, z)) && !stationaryMovingPistons.contains(new Vector(x, y, z))){ FightSystem.getMessage().broadcast("PREPARE_ACTIVE_PISTON"); Bukkit.shutdown(); throw new IllegalStateException(); From 96f1da0aefb5cc2c5ab952f65edfc5a3fbad8b7e Mon Sep 17 00:00:00 2001 From: zOnlyKroks Date: Wed, 22 Dec 2021 19:21:17 +0100 Subject: [PATCH 12/32] Config Options --- FightSystem_Core/src/config.yml | 3 ++- FightSystem_Core/src/de/steamwar/fightsystem/Config.java | 2 ++ .../de/steamwar/fightsystem/listener/BlockFadeListener.java | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index 119f225..d64ac04 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -41,7 +41,8 @@ Arena: BorderFromSchematic: 12 # defaults to 12 if missing # If ground walkable, teams can walk below the lower arena border during setup GroundWalkable: true # defaults to true if missing - + # Disable snow melt + SnowMelt: false Schematic: # The size of the schematics Size: diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java index 7e04187..8e00233 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java @@ -69,6 +69,7 @@ public class Config { public static final int PreperationArea; public static final int WaterDepth; public static final boolean GroundWalkable; + public static final boolean SnowMelt; //schematic parameter public static final boolean RanksEnabled; @@ -164,6 +165,7 @@ public class Config { int schem2BorderZ = config.getInt("Arena.Schem2Border.z", 24); PreperationArea = config.getInt("Arena.BorderFromSchematic", 12); GroundWalkable = config.getBoolean("Arena.GroundWalkable", true); + SnowMelt = config.getBoolean("Arena.SnowMelt", false); int schemsizeX = config.getInt("Schematic.Size.x"); int schemsizeY = config.getInt("Schematic.Size.y"); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java index 5a80166..ab16f99 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java @@ -1,6 +1,7 @@ package de.steamwar.fightsystem.listener; import de.steamwar.fightsystem.ArenaMode; +import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; import org.bukkit.Material; @@ -16,6 +17,7 @@ public class BlockFadeListener implements Listener { @EventHandler public void onBlockFade(BlockFadeEvent event) { + if(!Config.SnowMelt) return; if (event.getBlock().getType() == Material.SNOW_BLOCK || event.getBlock().getType() == Material.SNOW || event.getBlock().getType() == Material.ICE) { event.setCancelled(true); } From e060e2e7a6d779f75cfffe6a879edfc4f338c38a Mon Sep 17 00:00:00 2001 From: zOnlyKroks Date: Wed, 22 Dec 2021 19:22:13 +0100 Subject: [PATCH 13/32] Better naming --- FightSystem_Core/src/config.yml | 2 +- FightSystem_Core/src/de/steamwar/fightsystem/Config.java | 4 ++-- .../de/steamwar/fightsystem/listener/BlockFadeListener.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index d64ac04..26bc9b3 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -42,7 +42,7 @@ Arena: # If ground walkable, teams can walk below the lower arena border during setup GroundWalkable: true # defaults to true if missing # Disable snow melt - SnowMelt: false + DisableSnowMelt: false Schematic: # The size of the schematics Size: diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java index 8e00233..1292a70 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java @@ -69,7 +69,7 @@ public class Config { public static final int PreperationArea; public static final int WaterDepth; public static final boolean GroundWalkable; - public static final boolean SnowMelt; + public static final boolean DisableSnowMelt; //schematic parameter public static final boolean RanksEnabled; @@ -165,7 +165,7 @@ public class Config { int schem2BorderZ = config.getInt("Arena.Schem2Border.z", 24); PreperationArea = config.getInt("Arena.BorderFromSchematic", 12); GroundWalkable = config.getBoolean("Arena.GroundWalkable", true); - SnowMelt = config.getBoolean("Arena.SnowMelt", false); + DisableSnowMelt = config.getBoolean("Arena.DisableSnowMelt", false); int schemsizeX = config.getInt("Schematic.Size.x"); int schemsizeY = config.getInt("Schematic.Size.y"); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java index ab16f99..a2ce7f5 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java @@ -17,7 +17,7 @@ public class BlockFadeListener implements Listener { @EventHandler public void onBlockFade(BlockFadeEvent event) { - if(!Config.SnowMelt) return; + if(!Config.DisableSnowMelt) return; if (event.getBlock().getType() == Material.SNOW_BLOCK || event.getBlock().getType() == Material.SNOW || event.getBlock().getType() == Material.ICE) { event.setCancelled(true); } From bb3114ba6165863caa17af76ad930b1a46bdd1ca Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 23 Dec 2021 12:09:27 +0100 Subject: [PATCH 14/32] Fix direction Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/listener/TeamArea.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java index 5dfa2a4..2dfaf34 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java @@ -81,7 +81,7 @@ public class TeamArea implements Listener { @EventHandler public void blockBreak(BlockBreakEvent event) { Block block = event.getBlock(); - if(Config.BluePasteRegion.getMinY() >= block.getY()) + if(Config.BluePasteRegion.getMinY() <= block.getY()) return; event.setCancelled(true); From cd8a3d3eb56f0b088f0661894688adfa4f9d5605 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 23 Dec 2021 16:19:58 +0100 Subject: [PATCH 15/32] Fix pistons destroying blocks Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/listener/PistonListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java index f49257c..1587f24 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java @@ -25,6 +25,7 @@ import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.block.PistonMoveReaction; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPistonExtendEvent; @@ -44,7 +45,8 @@ public class PistonListener implements Listener { public void handlePistonExtend(BlockPistonExtendEvent e){ BlockFace face = e.getDirection(); for(Block block : e.getBlocks()){ - if(!Config.BlueExtendRegion.inRegion(block.getRelative(face)) && !Config.RedExtendRegion.inRegion(block.getRelative(face))){ + Block target = block.getRelative(face); + if(!Config.BlueExtendRegion.inRegion(target) && !Config.RedExtendRegion.inRegion(target) && block.getPistonMoveReaction() != PistonMoveReaction.BREAK) { e.setCancelled(true); return; } From 2baacdb00f2885ef0b1360df4155c102fb683016 Mon Sep 17 00:00:00 2001 From: zOnlyKroks Date: Thu, 23 Dec 2021 16:58:50 +0100 Subject: [PATCH 16/32] Performance --- .../de/steamwar/fightsystem/listener/BlockFadeListener.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java index a2ce7f5..5edd1c2 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFadeListener.java @@ -12,12 +12,11 @@ import org.bukkit.event.block.BlockFadeEvent; public class BlockFadeListener implements Listener { public BlockFadeListener() { - new StateDependentListener(ArenaMode.All, FightState.All, this); + new StateDependentListener(Config.DisableSnowMelt, FightState.All, this); } @EventHandler public void onBlockFade(BlockFadeEvent event) { - if(!Config.DisableSnowMelt) return; if (event.getBlock().getType() == Material.SNOW_BLOCK || event.getBlock().getType() == Material.SNOW || event.getBlock().getType() == Material.ICE) { event.setCancelled(true); } From 775b24e6fc362afbe7951c28cbf2a109dd7b6792 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 27 Dec 2021 13:10:41 +0100 Subject: [PATCH 17/32] Lock replay functionality Signed-off-by: Lixfel --- FightSystem_Core/src/config.yml | 7 +++- .../de/steamwar/fightsystem/FightSystem.java | 2 +- .../fightsystem/FightSystem.properties | 2 +- .../fightsystem/commands/Commands.java | 4 +- ...layCommand.java => LockReplayCommand.java} | 37 ++++--------------- .../fightsystem/utils/FightStatistics.java | 9 ++++- FightSystem_Core/src/plugin.yml | 2 +- 7 files changed, 26 insertions(+), 37 deletions(-) rename FightSystem_Core/src/de/steamwar/fightsystem/commands/{ReplayCommand.java => LockReplayCommand.java} (52%) diff --git a/FightSystem_Core/src/config.yml b/FightSystem_Core/src/config.yml index 26bc9b3..65406e2 100644 --- a/FightSystem_Core/src/config.yml +++ b/FightSystem_Core/src/config.yml @@ -41,8 +41,9 @@ Arena: BorderFromSchematic: 12 # defaults to 12 if missing # If ground walkable, teams can walk below the lower arena border during setup GroundWalkable: true # defaults to true if missing - # Disable snow melt - DisableSnowMelt: false + # Disable snow and ice melting + DisableSnowMelt: false # defaults to false if missing + Schematic: # The size of the schematics Size: @@ -53,6 +54,8 @@ Schematic: Type: Normal # defaults to Normal if missing # Shortcut of the schematic type Shortcut: "" # defaults to "" if missing + # Spigot (1.8) material for GUIs + Material: STONE_BUTTON # defaults to STONE_BUTTON if missing # If the schematics should be rotated during pasting Rotate: true # defaults to true if missing # If the schematics should be pasted aligned to the borders instead of centered diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 3abc6d6..504b5ca 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -128,7 +128,7 @@ public class FightSystem extends JavaPlugin { new AkCommand(); new LeaderCommand(); new LockschemCommand(); - new ReplayCommand(); + new LockReplayCommand(); new StateCommand(); new SkipCommand(); new WinCommand(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index b165506..1bc5a62 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -53,7 +53,7 @@ LOCKSCHEM_LOCKED_BY= REMOVE_HELP=§8/§eremove §8[§eSpieler§8] -REPLAY_UNAVAILABLE=§cReplay derzeit nicht verfügbar +REPLAY_LOCKED=§7Replaywiedergabe für 1 Monat gesperrt NOT_FIGHTLEADER=§cDu bist nicht Kampfleiter WIN_HELP=§8/§7win §8[§eTeam §8or §etie§8] diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/Commands.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/Commands.java index e4189c7..5ff08b0 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/Commands.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/Commands.java @@ -63,7 +63,7 @@ public class Commands { return fightPlayer; } - private static FightPlayer checkGetLeader(Player p){ + public static FightPlayer checkGetLeader(Player p){ FightPlayer fightPlayer = checkGetPlayer(p); if(fightPlayer != null && !fightPlayer.isLeader()){ FightSystem.getMessage().sendPrefixless("NOT_LEADER", p, ChatMessageType.ACTION_BAR); @@ -72,7 +72,7 @@ public class Commands { return fightPlayer; } - private static FightTeam checkGetTeam(Player p){ + public static FightTeam checkGetTeam(Player p){ FightTeam fightTeam = Fight.getPlayerTeam(p); if(fightTeam == null){ errNoTeam(p); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/commands/ReplayCommand.java b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockReplayCommand.java similarity index 52% rename from FightSystem_Core/src/de/steamwar/fightsystem/commands/ReplayCommand.java rename to FightSystem_Core/src/de/steamwar/fightsystem/commands/LockReplayCommand.java index cc81995..72bdee6 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/commands/ReplayCommand.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/commands/LockReplayCommand.java @@ -20,26 +20,19 @@ package de.steamwar.fightsystem.commands; import de.steamwar.fightsystem.ArenaMode; -import de.steamwar.fightsystem.Config; -import de.steamwar.fightsystem.FightSystem; -import de.steamwar.fightsystem.record.FileRecorder; -import de.steamwar.fightsystem.record.FileSource; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentCommand; -import de.steamwar.sql.SteamwarUser; -import net.md_5.bungee.api.ChatMessageType; +import de.steamwar.fightsystem.utils.FightStatistics; +import de.steamwar.fightsystem.utils.FightUI; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.io.IOException; -import java.util.logging.Level; +public class LockReplayCommand implements CommandExecutor { -public class ReplayCommand implements CommandExecutor { - - public ReplayCommand() { - new StateDependentCommand(ArenaMode.Replayable, FightState.All, "replay", this); + public LockReplayCommand() { + new StateDependentCommand(ArenaMode.AntiReplay, FightState.Schem, "lockreplay", this); } @Override @@ -49,25 +42,11 @@ public class ReplayCommand implements CommandExecutor { } Player player = (Player) sender; - if(!Config.test()){ - SteamwarUser user = SteamwarUser.get(player.getUniqueId()); - if(!user.getUserGroup().isTeamGroup()){ - FightSystem.getMessage().sendPrefixless("REPLAY_UNAVAILABLE", sender, ChatMessageType.ACTION_BAR); - return false; - } - } - - if(!FileRecorder.getFile().exists()){ - FightSystem.getMessage().sendPrefixless("REPLAY_UNAVAILABLE", sender, ChatMessageType.ACTION_BAR); + if(Commands.checkGetLeader(player) == null) return false; - } - try { - new FileSource(FileRecorder.getFile()); - } catch (IOException e) { - FightSystem.getMessage().sendPrefixless("REPLAY_UNAVAILABLE", sender, ChatMessageType.ACTION_BAR); - FightSystem.getPlugin().getLogger().log(Level.SEVERE, "Replay could not be started", e); - } + FightStatistics.lockReplay(); + FightUI.addSubtitle("REPLAY_LOCKED"); return false; } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java index 25bef85..7858d6e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java @@ -38,6 +38,7 @@ import org.bukkit.Bukkit; import java.io.FileInputStream; import java.sql.Timestamp; import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.logging.Level; import static de.steamwar.sql.Fight.create; @@ -46,9 +47,14 @@ import static de.steamwar.sql.Fight.setReplay; public class FightStatistics { private static final int K = 20; + private static boolean replayLock = false; private Timestamp starttime = Timestamp.from(Instant.now()); + public static void lockReplay() { + replayLock = true; + } + public FightStatistics() { new OneShotStateDependent(ArenaMode.SeriousFight, FightState.Running, this::enable); new OneShotStateDependent(ArenaMode.Event, FightState.Spectate, this::setEventResult); @@ -109,7 +115,7 @@ public class FightStatistics { try { int fightId = create(gameMode, Bukkit.getWorlds().get(0).getName(), starttime, remainingTime, - blueLeader, redLeader, blueSchem, redSchem, win, windescription); + blueLeader, redLeader, blueSchem, redSchem, win, windescription, Timestamp.from(Instant.now().plus(replayLock ? 1 : 0, ChronoUnit.MONTHS))); for (FightPlayer fp : Fight.getBlueTeam().getPlayers()) savePlayerStats(fp, fightId); @@ -124,6 +130,7 @@ public class FightStatistics { }catch(Exception e){ Bukkit.getLogger().log(Level.SEVERE, "Failed to save statistics", e); } + replayLock = false; if(Config.Ranked){ int blueElo = Elo.getElo(blueLeader, gameMode); diff --git a/FightSystem_Core/src/plugin.yml b/FightSystem_Core/src/plugin.yml index 066b5aa..0013293 100644 --- a/FightSystem_Core/src/plugin.yml +++ b/FightSystem_Core/src/plugin.yml @@ -18,7 +18,7 @@ commands: remove: leader: lockschem: - replay: + lockreplay: state: skip: win: \ No newline at end of file From 55d3969c03df791268013538e06c8d284cf66319 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 27 Dec 2021 16:46:52 +0100 Subject: [PATCH 18/32] Fix statistics Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/utils/FightStatistics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java index cb58984..eba811d 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java @@ -115,7 +115,7 @@ public class FightStatistics { try { int fightId = create(gameMode, Bukkit.getWorlds().get(0).getName(), starttime, remainingTime, - blueLeader, redLeader, blueSchem, redSchem, win, windescription, Timestamp.from(Instant.now().plus(replayLock ? 1 : 0, ChronoUnit.MONTHS))); + blueLeader, redLeader, blueSchem, redSchem, win, windescription, Timestamp.from(Instant.now().plus(replayLock ? 30 : 0, ChronoUnit.DAYS))); for (FightPlayer fp : Fight.getBlueTeam().getPlayers()) savePlayerStats(fp, fightId); From c39972e4357c28cce4549a1930f322f61c547ba9 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 27 Dec 2021 18:52:42 +0100 Subject: [PATCH 19/32] Fix replay server termination Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/ArenaMode.java | 2 +- .../fightsystem/countdown/EventSpectateCountdown.java | 2 +- .../de/steamwar/fightsystem/record/PacketProcessor.java | 7 +------ .../fightsystem/states/StateDependentCountdown.java | 6 +++++- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java index fff8a95..b48cc55 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java @@ -43,13 +43,13 @@ public enum ArenaMode { public static final Set Replay = Collections.unmodifiableSet(EnumSet.of(REPLAY)); public static final Set AntiReplay = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(REPLAY))); - public static final Set Replayable = Collections.unmodifiableSet(EnumSet.of(REPLAY, TEST)); public static final Set AntiTest = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK))); public static final Set AntiEvent = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(EVENT))); public static final Set AntiPrepare = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(PREPARE))); public static final Set VariableTeams = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(RANKED, EVENT, REPLAY))); public static final Set RankedEvent = Collections.unmodifiableSet(EnumSet.of(RANKED, EVENT, REPLAY)); public static final Set Restartable = Collections.unmodifiableSet(EnumSet.of(NORMAL, RANKED, REPLAY)); + public static final Set NotRestartable = Collections.unmodifiableSet(EnumSet.of(EVENT, REPLAY)); public static final Set SoloLeader = Collections.unmodifiableSet(EnumSet.of(TEST, CHECK, PREPARE)); public static final Set NotOnBau = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, PREPARE, REPLAY))); public static final Set SeriousFight = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, REPLAY))); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EventSpectateCountdown.java b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EventSpectateCountdown.java index 03342fc..e877239 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EventSpectateCountdown.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EventSpectateCountdown.java @@ -31,7 +31,7 @@ public class EventSpectateCountdown extends Countdown { public EventSpectateCountdown() { super(Config.SpectatorDuration, new Message("SHUTDOWN_COUNTDOWN"), SWSound.BLOCK_NOTE_PLING, false); - new StateDependentCountdown(ArenaMode.Event, FightState.Spectate, this); + new StateDependentCountdown(ArenaMode.NotRestartable.contains(Config.mode) && !Config.replayserver(), FightState.Spectate, this); } @Override diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 73be48d..0914c2e 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -142,12 +142,7 @@ public class PacketProcessor { else if(team == 0x02) winner = Fight.getRedTeam(); - if(Config.replayserver() || ArenaMode.AntiReplay.contains(Config.mode)) { - FightSystem.setSpectateState(winner, "Replay ends", message.getMsg(), message.getParams()); - }else{ - FightUI.printWin(winner, message.getMsg(), message.getParams()); - new EventSpectateCountdown().enable(); - } + FightSystem.setSpectateState(winner, "Replay ends", message.getMsg(), message.getParams()); }); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/states/StateDependentCountdown.java b/FightSystem_Core/src/de/steamwar/fightsystem/states/StateDependentCountdown.java index d955e5e..4bdbc09 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/states/StateDependentCountdown.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/states/StateDependentCountdown.java @@ -43,7 +43,11 @@ public class StateDependentCountdown extends StateDependent { } public StateDependentCountdown(Winconditions wincondition, Set states, Countdown countdown) { - super(Config.ActiveWinconditions.contains(wincondition), states); + this(Config.ActiveWinconditions.contains(wincondition), states, countdown); + } + + public StateDependentCountdown(boolean active, Set states, Countdown countdown) { + super(active, states); this.countdown = countdown; register(); } From e6dba7118fff41688e834c863f6586c3611f6aa4 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 14:25:40 +0100 Subject: [PATCH 20/32] Hotfix replay Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/fight/FightSchematic.java | 10 ++++++---- .../steamwar/fightsystem/record/PacketProcessor.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java index ce4dc0e..7884f21 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java @@ -106,10 +106,12 @@ public class FightSchematic extends StateDependent { leader.getPlayer().getInventory().clear(0); } - if(team.isBlue()) - GlobalRecorder.getInstance().blueSchem(schematic); - else - GlobalRecorder.getInstance().redSchem(schematic); + if(ArenaMode.AntiReplay.contains(Config.mode)) { + if(team.isBlue()) + GlobalRecorder.getInstance().blueSchem(schematic); + else + GlobalRecorder.getInstance().redSchem(schematic); + } Bukkit.getScheduler().runTask(FightSystem.getPlugin(), this::paste); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 0914c2e..155605c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -497,7 +497,7 @@ public class PacketProcessor { } catch (EOFException e) { Bukkit.getLogger().log(Level.INFO, "The FightServer is offline"); source.close(); - } catch(IOException e) { + } catch(Exception e) { Bukkit.getLogger().log(Level.WARNING, "Could not recieve packet", e); source.close(); } From 3a95a7bd27ffb93db7c1c372cb91e761d1edd633 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 21:53:52 +0100 Subject: [PATCH 21/32] Fix locations Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/record/PacketProcessor.java | 8 ++++---- .../de/steamwar/fightsystem/utils/FightStatistics.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 155605c..13638dd 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -201,7 +201,7 @@ public class PacketProcessor { z = Config.ArenaRegion.getSizeZ() - z; double locZ = z + Config.ArenaRegion.getMinZ(); float pitch = source.readFloat(); - float yaw = source.readFloat() + (rotateZ ? 360 : 0); + float yaw = source.readFloat() + (rotateZ ? 180 : 0); byte headYaw = (byte)((source.readByte() + (rotateZ ? 128 : 0)) % 256); execSync(() -> REntity.getEntity(entityId).move(locX, locY, locZ, pitch, yaw, headYaw)); @@ -340,9 +340,9 @@ public class PacketProcessor { } private void sound() throws IOException { - int x = source.readInt(); - int y = source.readInt(); - int z = source.readInt(); + int x = source.readInt() - arenaMinX + Config.ArenaRegion.getMinX(); + int y = source.readInt() - arenaMinY + Config.BluePasteRegion.getMinY(); + int z = source.readInt() - arenaMinZ + Config.ArenaRegion.getMinZ(); String soundName = source.readUTF(); String soundCategory = source.readUTF(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java index eba811d..2d300ab 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java @@ -122,11 +122,11 @@ public class FightStatistics { for (FightPlayer fp : Fight.getRedTeam().getPlayers()) savePlayerStats(fp, fightId); - setReplay(fightId, new FileInputStream(FileRecorder.getFile())); - if(ArenaMode.Event.contains(Config.mode)) { FightSystem.getEventFight().setFight(fightId); } + + setReplay(fightId, new FileInputStream(FileRecorder.getFile())); }catch(Exception e){ Bukkit.getLogger().log(Level.SEVERE, "Failed to save statistics", e); } From 7851d560addcf388f99b801adc102f4b9651b798 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 22:19:13 +0100 Subject: [PATCH 22/32] Fix rotation Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/PacketProcessor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 13638dd..973bded 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -342,7 +342,10 @@ public class PacketProcessor { private void sound() throws IOException { int x = source.readInt() - arenaMinX + Config.ArenaRegion.getMinX(); int y = source.readInt() - arenaMinY + Config.BluePasteRegion.getMinY(); - int z = source.readInt() - arenaMinZ + Config.ArenaRegion.getMinZ(); + int rawZ = source.readInt() - arenaMinZ; + if(rotateZ) + rawZ = Config.ArenaRegion.getSizeZ() - rawZ; + int z = rawZ + Config.ArenaRegion.getMinZ(); String soundName = source.readUTF(); String soundCategory = source.readUTF(); From 55b23cad2c5baed10438cadcd4dad9cc327d414f Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 22:29:56 +0100 Subject: [PATCH 23/32] rebuild Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/PacketProcessor.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 973bded..5a86b82 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -343,8 +343,10 @@ public class PacketProcessor { int x = source.readInt() - arenaMinX + Config.ArenaRegion.getMinX(); int y = source.readInt() - arenaMinY + Config.BluePasteRegion.getMinY(); int rawZ = source.readInt() - arenaMinZ; + if(rotateZ) rawZ = Config.ArenaRegion.getSizeZ() - rawZ; + int z = rawZ + Config.ArenaRegion.getMinZ(); String soundName = source.readUTF(); From de2ffa57070942ce73e9a9730981947f4127d218 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 22:43:07 +0100 Subject: [PATCH 24/32] rebuild Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/PacketProcessor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 5a86b82..0a9aad1 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -54,6 +54,7 @@ import java.util.logging.Level; public class PacketProcessor { + static boolean replaying = false; public static boolean isReplaying(){ From 6b0300aa8989cbe9bed01b1373fc5305acca91f2 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 22:47:56 +0100 Subject: [PATCH 25/32] test build Signed-off-by: Lixfel --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 35a72ae..10a0e47 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,7 @@ UTF-8 ${project.basedir} + true From 95c96d256a021b3046c7e839c4c7b43c164762f0 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 30 Dec 2021 22:52:17 +0100 Subject: [PATCH 26/32] test build Signed-off-by: Lixfel --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 10a0e47..35a72ae 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,6 @@ UTF-8 ${project.basedir} - true From 98af118dabb2920bcf36058fa6db740f325d5cdb Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 31 Dec 2021 08:50:38 +0100 Subject: [PATCH 27/32] test build Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/PacketProcessor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 0a9aad1..5a86b82 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -54,7 +54,6 @@ import java.util.logging.Level; public class PacketProcessor { - static boolean replaying = false; public static boolean isReplaying(){ From eb824135de59eb4bbeb68922d2b46415c91762dd Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 31 Dec 2021 08:59:54 +0100 Subject: [PATCH 28/32] test build Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/PacketProcessor.java | 1 + 1 file changed, 1 insertion(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 5a86b82..0a9aad1 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -54,6 +54,7 @@ import java.util.logging.Level; public class PacketProcessor { + static boolean replaying = false; public static boolean isReplaying(){ From e7851b7a89b8d48b3b7dd333bde2afea5d0b4fe2 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 6 Jan 2022 07:11:20 +0100 Subject: [PATCH 29/32] Fix replay rotation Signed-off-by: Lixfel --- .../fightsystem/record/PacketProcessor.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 0a9aad1..84e07fb 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -195,11 +195,14 @@ public class PacketProcessor { private void entityMoves() throws IOException { int entityId = source.readInt(); - double locX = source.readDouble() - arenaMinX + Config.ArenaRegion.getMinX(); + double x = source.readDouble() - arenaMinX; double locY = source.readDouble() - arenaMinY + Config.BluePasteRegion.getMinY(); double z = source.readDouble() - arenaMinZ; - if(rotateZ) + if(rotateZ) { + x = Config.ArenaRegion.getSizeX() - x; z = Config.ArenaRegion.getSizeZ() - z; + } + double locX = x + Config.ArenaRegion.getMinX(); double locZ = z + Config.ArenaRegion.getMinZ(); float pitch = source.readFloat(); float yaw = source.readFloat() + (rotateZ ? 180 : 0); @@ -237,7 +240,7 @@ public class PacketProcessor { private void entityVelocity() throws IOException { int entityId = source.readInt(); - double dX = source.readDouble(); + double dX = rotateZ ? -source.readDouble() : source.readDouble(); double dY = source.readDouble(); double dZ = rotateZ ? -source.readDouble() : source.readDouble(); @@ -306,8 +309,10 @@ public class PacketProcessor { int z = Byte.toUnsignedInt(source.readByte()); int blockState = source.readShort(); - if(rotateZ) + if(rotateZ) { + x = Config.ArenaRegion.getSizeX() - x; z = Config.ArenaRegion.getSizeZ() - z; + } setBlock(x + Config.ArenaRegion.getMinX(), y + Config.BluePasteRegion.getMinY(), z + Config.ArenaRegion.getMinZ(), blockState); } @@ -318,8 +323,10 @@ public class PacketProcessor { int z = source.readInt() - arenaMinZ; int blockState = source.readInt(); - if(rotateZ) + if(rotateZ) { + x = Config.ArenaRegion.getSizeX() - x; z = Config.ArenaRegion.getSizeZ() - z; + } setBlock(x + Config.ArenaRegion.getMinX(), y + Config.BluePasteRegion.getMinY(), z + Config.ArenaRegion.getMinZ(), blockState); } @@ -332,22 +339,32 @@ public class PacketProcessor { } private void particle() throws IOException { - double x = source.readDouble(); - double y = source.readDouble(); - double z = source.readDouble(); + double x = source.readDouble() - arenaMinX; + double y = source.readDouble() - arenaMinY; + double z = source.readDouble() - arenaMinZ; String particleName = source.readUTF(); - execSync(() -> BountifulWrapper.impl.spawnParticle(world, particleName, x, y, z)); + if(rotateZ) { + x = Config.ArenaRegion.getSizeX() - x; + z = Config.ArenaRegion.getSizeZ() - z; + } + + double finalX = x; + double finalZ = z; + execSync(() -> BountifulWrapper.impl.spawnParticle(world, particleName, finalX + Config.ArenaRegion.getMinX(), y + Config.BluePasteRegion.getMinY(), finalZ + Config.ArenaRegion.getMinZ())); } private void sound() throws IOException { - int x = source.readInt() - arenaMinX + Config.ArenaRegion.getMinX(); + int rawX = source.readInt() - arenaMinX + Config.ArenaRegion.getMinX(); int y = source.readInt() - arenaMinY + Config.BluePasteRegion.getMinY(); int rawZ = source.readInt() - arenaMinZ; - if(rotateZ) + if(rotateZ) { + rawX = Config.ArenaRegion.getSizeX() - rawX; rawZ = Config.ArenaRegion.getSizeZ() - rawZ; + } + int x = rawX + Config.ArenaRegion.getMinX(); int z = rawZ + Config.ArenaRegion.getMinZ(); String soundName = source.readUTF(); From 312eff810d6b2757f55610ae5c5e46bd21a47850 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 6 Jan 2022 07:13:59 +0100 Subject: [PATCH 30/32] Silent replay saving failure Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/utils/FightStatistics.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java index 2d300ab..bd530bd 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/FightStatistics.java @@ -126,7 +126,11 @@ public class FightStatistics { FightSystem.getEventFight().setFight(fightId); } - setReplay(fightId, new FileInputStream(FileRecorder.getFile())); + try { + setReplay(fightId, new FileInputStream(FileRecorder.getFile())); + }catch(Exception e){ + Bukkit.getLogger().log(Level.INFO, "Failed to save replay", e); + } }catch(Exception e){ Bukkit.getLogger().log(Level.SEVERE, "Failed to save statistics", e); } From 4635772b231e77cfdbeeaf44a7414f4f32e8dcaa Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 8 Jan 2022 12:20:47 +0100 Subject: [PATCH 31/32] Fix usage of deprecated api Signed-off-by: Lixfel --- .../steamwar/fightsystem/utils/CraftbukkitWrapper10.java | 5 ----- .../steamwar/fightsystem/utils/CraftbukkitWrapper12.java | 5 ----- .../steamwar/fightsystem/utils/CraftbukkitWrapper14.java | 5 ----- .../steamwar/fightsystem/utils/CraftbukkitWrapper15.java | 5 ----- .../steamwar/fightsystem/utils/CraftbukkitWrapper8.java | 5 ----- .../steamwar/fightsystem/utils/CraftbukkitWrapper9.java | 5 ----- .../src/de/steamwar/fightsystem/fight/FightWorld.java | 8 +++++++- .../src/de/steamwar/fightsystem/utils/TechHider.java | 4 ++-- 8 files changed, 9 insertions(+), 33 deletions(-) diff --git a/FightSystem_10/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper10.java b/FightSystem_10/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper10.java index 3e20fe9..722eba4 100644 --- a/FightSystem_10/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper10.java +++ b/FightSystem_10/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper10.java @@ -19,10 +19,8 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.fight.FightWorld; import net.minecraft.server.v1_10_R1.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_10_R1.CraftWorld; import org.bukkit.craftbukkit.v1_10_R1.entity.CraftEntity; @@ -50,9 +48,6 @@ public class CraftbukkitWrapper10 implements CraftbukkitWrapper.ICraftbukkitWrap } chunk.tileEntities.clear(); chunk.tileEntities.putAll(backupChunk.tileEntities); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_12/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper12.java b/FightSystem_12/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper12.java index 1c03c20..37b70a5 100644 --- a/FightSystem_12/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper12.java +++ b/FightSystem_12/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper12.java @@ -19,10 +19,8 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.fight.FightWorld; import net.minecraft.server.v1_12_R1.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_12_R1.CraftWorld; import org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity; @@ -50,9 +48,6 @@ public class CraftbukkitWrapper12 implements CraftbukkitWrapper.ICraftbukkitWrap } chunk.tileEntities.clear(); chunk.tileEntities.putAll(backupChunk.tileEntities); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_14/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper14.java b/FightSystem_14/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper14.java index 14c5989..5c74382 100644 --- a/FightSystem_14/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper14.java +++ b/FightSystem_14/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper14.java @@ -19,10 +19,8 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.fight.FightWorld; import net.minecraft.server.v1_14_R1.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_14_R1.CraftWorld; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity; @@ -51,9 +49,6 @@ public class CraftbukkitWrapper14 implements CraftbukkitWrapper.ICraftbukkitWrap chunk.tileEntities.putAll(backupChunk.tileEntities); chunk.heightMap.clear(); chunk.heightMap.putAll(backupChunk.heightMap); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_15/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper15.java b/FightSystem_15/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper15.java index 8d55c47..03f40d6 100644 --- a/FightSystem_15/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper15.java +++ b/FightSystem_15/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper15.java @@ -19,10 +19,8 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.fight.FightWorld; import net.minecraft.server.v1_15_R1.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; import org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity; @@ -51,9 +49,6 @@ public class CraftbukkitWrapper15 implements CraftbukkitWrapper.ICraftbukkitWrap chunk.tileEntities.putAll(backupChunk.tileEntities); chunk.heightMap.clear(); chunk.heightMap.putAll(backupChunk.heightMap); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper8.java index 3eb750e..f79dc0e 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper8.java @@ -19,9 +19,7 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import net.minecraft.server.v1_8_R3.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; @@ -47,9 +45,6 @@ public class CraftbukkitWrapper8 implements CraftbukkitWrapper.ICraftbukkitWrapp w.tileEntityList.removeAll(chunk.tileEntities.values()); chunk.tileEntities.clear(); chunk.tileEntities.putAll(backupChunk.tileEntities); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_9/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper9.java b/FightSystem_9/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper9.java index bb13e18..4a2cc0b 100644 --- a/FightSystem_9/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper9.java +++ b/FightSystem_9/src/de/steamwar/fightsystem/utils/CraftbukkitWrapper9.java @@ -19,10 +19,8 @@ package de.steamwar.fightsystem.utils; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.fight.FightWorld; import net.minecraft.server.v1_9_R2.Chunk; -import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_9_R2.CraftWorld; import org.bukkit.craftbukkit.v1_9_R2.entity.CraftEntity; @@ -50,9 +48,6 @@ public class CraftbukkitWrapper9 implements CraftbukkitWrapper.ICraftbukkitWrapp } chunk.tileEntities.clear(); chunk.tileEntities.putAll(backupChunk.tileEntities); - for(Player p : Bukkit.getOnlinePlayers()){ - ChunkListener.sendChunk(p, x, z); - } } @Override diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java index b3cacb5..3914143 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightWorld.java @@ -30,6 +30,7 @@ import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; public class FightWorld extends StateDependent { @@ -72,7 +73,12 @@ public class FightWorld extends StateDependent { World backup = new WorldCreator(world.getName() + "/backup").createWorld(); assert backup != null; - Config.ArenaRegion.forEachChunk((x, z) -> CraftbukkitWrapper.impl.resetChunk(world, backup, x, z)); + Config.ArenaRegion.forEachChunk((x, z) -> { + CraftbukkitWrapper.impl.resetChunk(world, backup, x, z); + for(Player p : Bukkit.getOnlinePlayers()) { + de.steamwar.core.CraftbukkitWrapper.impl.sendChunk(p, x, z); + } + }); Bukkit.unloadWorld(backup, false); } } \ No newline at end of file diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHider.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHider.java index 61d9085..5427fc5 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHider.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/TechHider.java @@ -22,8 +22,8 @@ package de.steamwar.fightsystem.utils; import com.comphenix.tinyprotocol.Reflection; import com.google.common.primitives.Bytes; import de.steamwar.core.Core; +import de.steamwar.core.CraftbukkitWrapper; import de.steamwar.core.VersionDependent; -import de.steamwar.core.events.ChunkListener; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.fight.Fight; @@ -234,7 +234,7 @@ public class TechHider extends StateDependent { Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> { for(ChunkPos chunk : chunksToReload){ if(bypass(p, chunk.x(), chunk.z()) != hide) - ChunkListener.sendChunk(p, chunk.x(), chunk.z()); + CraftbukkitWrapper.impl.sendChunk(p, chunk.x(), chunk.z()); } }, 40); } From e9e01febd101a754fd0f3fe1160f6f0fb323cc7d Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 14 Jan 2022 18:08:59 +0100 Subject: [PATCH 32/32] Fix some replay bugs Signed-off-by: Lixfel --- .../fightsystem/countdown/SpectateOverCountdown.java | 2 +- .../steamwar/fightsystem/record/PacketProcessor.java | 8 +------- .../src/de/steamwar/fightsystem/record/REntity.java | 11 ++++++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/SpectateOverCountdown.java b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/SpectateOverCountdown.java index 67bcfb3..0290647 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/SpectateOverCountdown.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/SpectateOverCountdown.java @@ -31,7 +31,7 @@ public class SpectateOverCountdown extends Countdown { public SpectateOverCountdown() { super(Config.SpectatorDuration, new Message("SPECTATE_COUNTDOWN"), SWSound.BLOCK_NOTE_PLING, false); - new StateDependentCountdown(ArenaMode.Restartable, FightState.Spectate, this); + new StateDependentCountdown(ArenaMode.Restartable.contains(Config.mode) || Config.replayserver(), FightState.Spectate, this); } @Override diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java index 84e07fb..a4aad6b 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/PacketProcessor.java @@ -21,11 +21,9 @@ package de.steamwar.fightsystem.record; import com.sk89q.worldedit.extent.clipboard.Clipboard; import de.steamwar.core.Core; -import de.steamwar.fightsystem.ArenaMode; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; -import de.steamwar.fightsystem.countdown.EventSpectateCountdown; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.fight.FreezeWorld; @@ -463,17 +461,13 @@ public class PacketProcessor { p.resetTitle(); WorldOfColorWrapper.impl.sendTitle(p, title, subtitle, 5, 40, 5); }); - if(Config.replayserver() || ArenaMode.AntiReplay.contains(Config.mode)) { - FightState.setFightState(FightState.SPECTATE); - }else{ - new EventSpectateCountdown().enable(); - } } private void endReplay() { REntity.dieAll(); freezer.disable(); FightSystem.getMessage().broadcast("REPLAY_ENDS"); + FightState.setFightState(FightState.SPECTATE); replaying = false; } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java index 8466333..2523cf0 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/REntity.java @@ -23,6 +23,7 @@ import com.comphenix.tinyprotocol.Reflection; import com.comphenix.tinyprotocol.TinyProtocol; import com.mojang.authlib.GameProfile; import de.steamwar.core.Core; +import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.listener.FightScoreboard; import de.steamwar.fightsystem.utils.BlockIdWrapper; @@ -39,6 +40,7 @@ import org.bukkit.scoreboard.NameTagVisibility; import org.bukkit.scoreboard.Team; import java.util.*; +import java.util.logging.Level; public class REntity { @@ -133,7 +135,14 @@ public class REntity { this.entityType = EntityType.PLAYER; this.entityId = entityCount--; - SteamwarUser user = SteamwarUser.get(userId); + SteamwarUser user; + try { + user = SteamwarUser.get(userId); + } catch (SecurityException e) { + FightSystem.getPlugin().getLogger().log(Level.SEVERE, "Could not load user " + userId); + throw e; + } + this.uuid = user.getUUID(); this.name = user.getUserName(); entities.put(internalId, this);