From de0d7d734006d26335fc128fb03eed6b384e047b Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 9 Sep 2020 20:47:50 +0200 Subject: [PATCH 01/12] Gamemode 1 packet Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/Fight.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java index 4f4d4ca..ecdf408 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java @@ -19,6 +19,9 @@ package de.steamwar.fightsystem.fight; +import com.comphenix.protocol.PacketType; +import com.comphenix.protocol.ProtocolLibrary; +import com.comphenix.protocol.events.PacketContainer; import de.steamwar.fightsystem.Config; import de.steamwar.sql.Schematic; import org.bukkit.Bukkit; @@ -27,7 +30,9 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; +import java.lang.reflect.InvocationTargetException; import java.util.List; +import java.util.logging.Level; public class Fight { private Fight(){} @@ -36,8 +41,12 @@ public class Fight { public static final FightTeam blueTeam = new FightTeam(Config.TeamBlueName, Config.TeamBluePrefix, Config.TeamBlueSpawn, Config.TeamBlueCornerX, Config.TeamBlueCornerY, Config.TeamBlueCornerZ, Config.TeamBlueRotate, true, Config.BlueLeader); private static int schemRank; + private static final PacketContainer gm_1_packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.GAME_STATE_CHANGE); + public static void init(){ IFight.init(redTeam, blueTeam); + gm_1_packet.getBytes().write(0, (byte)3); + gm_1_packet.getFloat().write(0, 1f); } public static FightTeam getPlayerTeam(Player player) { @@ -112,6 +121,11 @@ public class Fight { player.setGameMode(gameMode); if(gameMode == GameMode.SPECTATOR) { + try { + ProtocolLibrary.getProtocolManager().sendServerPacket(player, gm_1_packet); + } catch (InvocationTargetException e) { + Bukkit.getLogger().log(Level.SEVERE, "Invocation target exception", e); + } for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { if(currentPlayer.getUniqueId() != player.getUniqueId() && currentPlayer.getGameMode() == GameMode.SPECTATOR) { currentPlayer.hidePlayer(player); From 2b3f08aae242da3d62dd95cd36d53d77ae42b9a8 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 25 Sep 2020 16:35:16 +0200 Subject: [PATCH 02/12] Set spectators in halfcreative mode Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/fight/Fight.java | 45 ++++++++++++++----- .../listener/PlayerMoveListener.java | 19 ++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java index ecdf408..a570be5 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java @@ -22,7 +22,13 @@ package de.steamwar.fightsystem.fight; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.PacketContainer; +import com.comphenix.protocol.reflect.StructureModifier; +import com.comphenix.protocol.wrappers.EnumWrappers; +import com.comphenix.protocol.wrappers.PlayerInfoData; +import com.comphenix.protocol.wrappers.WrappedChatComponent; +import com.comphenix.protocol.wrappers.WrappedGameProfile; import de.steamwar.fightsystem.Config; +import de.steamwar.fightsystem.FightSystem; import de.steamwar.sql.Schematic; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -31,6 +37,7 @@ import org.bukkit.Sound; import org.bukkit.entity.Player; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -41,12 +48,20 @@ public class Fight { public static final FightTeam blueTeam = new FightTeam(Config.TeamBlueName, Config.TeamBluePrefix, Config.TeamBlueSpawn, Config.TeamBlueCornerX, Config.TeamBlueCornerY, Config.TeamBlueCornerZ, Config.TeamBlueRotate, true, Config.BlueLeader); private static int schemRank; - private static final PacketContainer gm_1_packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.GAME_STATE_CHANGE); + private static final PacketContainer flying_packet = new PacketContainer(PacketType.Play.Server.ABILITIES); + + static { + flying_packet.getBytes().write(0, (byte)0x06); + StructureModifier booleans = flying_packet.getBooleans(); + booleans.write(0, false); + booleans.write(1, true); + booleans.write(2, true); + booleans.write(3, false); + flying_packet.getFloat().writeDefaults(); + } public static void init(){ IFight.init(redTeam, blueTeam); - gm_1_packet.getBytes().write(0, (byte)3); - gm_1_packet.getFloat().write(0, 1f); } public static FightTeam getPlayerTeam(Player player) { @@ -121,20 +136,30 @@ public class Fight { player.setGameMode(gameMode); if(gameMode == GameMode.SPECTATOR) { - try { - ProtocolLibrary.getProtocolManager().sendServerPacket(player, gm_1_packet); - } catch (InvocationTargetException e) { - Bukkit.getLogger().log(Level.SEVERE, "Invocation target exception", e); - } for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { if(currentPlayer.getUniqueId() != player.getUniqueId() && currentPlayer.getGameMode() == GameMode.SPECTATOR) { currentPlayer.hidePlayer(player); player.hidePlayer(currentPlayer); } } - } - if(gameMode == GameMode.SURVIVAL) { + if(FightSystem.getEventLeiter() == player) + return; + + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> { + PacketContainer gm_1_packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.PLAYER_INFO); + gm_1_packet.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.UPDATE_GAME_MODE); + List playerInfoActions = new ArrayList<>(); + playerInfoActions.add(new PlayerInfoData(WrappedGameProfile.fromPlayer(player), 1, EnumWrappers.NativeGameMode.CREATIVE, WrappedChatComponent.fromText(player.getDisplayName()))); + gm_1_packet.getPlayerInfoDataLists().write(0, playerInfoActions); + try { + ProtocolLibrary.getProtocolManager().sendServerPacket(player, gm_1_packet); + ProtocolLibrary.getProtocolManager().sendServerPacket(player, flying_packet); + } catch (InvocationTargetException e) { + Bukkit.getLogger().log(Level.SEVERE, "Invocation target exception", e); + } + }, 2); + }else if(gameMode == GameMode.SURVIVAL) { for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { if(currentPlayer.getUniqueId() != player.getUniqueId() && currentPlayer.getGameMode() == GameMode.SPECTATOR) { currentPlayer.showPlayer(player); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java index d6b678e..54be27d 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java @@ -26,6 +26,8 @@ import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.utils.Region; import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.BanList; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -33,6 +35,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerMoveEvent; import java.util.EnumSet; +import java.util.logging.Level; public class PlayerMoveListener extends BasicListener { @@ -64,15 +67,31 @@ public class PlayerMoveListener extends BasicListener { reset(event, DENY_TEAM); else if(fightTeam == Fight.getRedTeam() && player.getGameMode() == GameMode.SPECTATOR) reset(event, DENY_ENTERN); + else + return; // Is allowed in area + checkInInnerArea(event.getPlayer(), to, Config.TeamBlueCornerX, Config.TeamBlueCornerZ); }else if(inRedArea){ if(fightTeam == null) reset(event, DENY_TEAM); else if(fightTeam == Fight.getBlueTeam() && player.getGameMode() == GameMode.SPECTATOR) reset(event, DENY_ENTERN); + else + return; // Is allowed in area + checkInInnerArea(event.getPlayer(), to, Config.TeamRedCornerX, Config.TeamRedCornerZ); }else if(fightTeam != null && player.getGameMode() != GameMode.SPECTATOR && !fightTeam.canPlayerEntern(player)) reset(event, DENY_ENTERN); } + private void checkInInnerArea(Player player, Location to, int teamCornerX, int teamCornerZ){ + boolean inArenaY = to.getY() + 1.8 <= Config.TeamBlueCornerY + Config.SchemsizeY; + boolean inArea = inArenaY && Region.isIn2DRange(to, teamCornerX, teamCornerZ, Config.SchemsizeX, Config.SchemsizeZ, 0); + if(inArea){ + player.kickPlayer(null); + Bukkit.getBanList(BanList.Type.NAME).addBan(player.getUniqueId().toString(), "§cVersuchtes Eindringen in einen Teambereich", null, null); + Bukkit.getLogger().log(Level.SEVERE, player.getName() + " ist in einen Teambereich eingedrungen."); + } + } + @EventHandler public void arenaBorder(PlayerMoveEvent event){ Player player = event.getPlayer(); From 70b90b467b13459050c9a9c621947c583e046d2d Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 27 Oct 2020 15:50:24 +0100 Subject: [PATCH 03/12] This should fix the waterlogged waterremover problem Signed-off-by: Lixfel --- .../fightsystem/utils/WaterRemover_14.java | 20 +++++++++++++++++ .../fightsystem/utils/WaterRemover_8.java | 8 +++++++ .../fightsystem/utils/WaterRemover.java | 22 ++++++++++++++++--- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/FightSystem_14/src/de/steamwar/fightsystem/utils/WaterRemover_14.java b/FightSystem_14/src/de/steamwar/fightsystem/utils/WaterRemover_14.java index 265d2e3..17260c3 100644 --- a/FightSystem_14/src/de/steamwar/fightsystem/utils/WaterRemover_14.java +++ b/FightSystem_14/src/de/steamwar/fightsystem/utils/WaterRemover_14.java @@ -37,4 +37,24 @@ class WaterRemover_14 { return ((Waterlogged) data).isWaterlogged(); } + + static boolean removeWater(Block block){ + if(block.getType() == Material.WATER){ + block.setType(Material.AIR); + return true; + } + + BlockData data = block.getBlockData(); + if(!(data instanceof Waterlogged)) + return false; + + Waterlogged waterlogged = (Waterlogged) data; + if(waterlogged.isWaterlogged()){ + waterlogged.setWaterlogged(false); + block.setBlockData(waterlogged); + return true; + } + + return false; + } } diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/WaterRemover_8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/WaterRemover_8.java index 0a544df..a510557 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/utils/WaterRemover_8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/WaterRemover_8.java @@ -29,4 +29,12 @@ public class WaterRemover_8 { Material type = block.getType(); return type == Material.WATER || type == Material.STATIONARY_WATER; } + + static boolean removeWater(Block block){ + if(isWater(block)){ + block.setType(Material.AIR); + return true; + } + return false; + } } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/utils/WaterRemover.java b/FightSystem_Main/src/de/steamwar/fightsystem/utils/WaterRemover.java index 8506394..fcff47a 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/utils/WaterRemover.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/utils/WaterRemover.java @@ -49,14 +49,15 @@ public class WaterRemover { } private static void checkBlock(Block b, int startX, int startY, int startZ) throws IsAnOcean { - if(!isWater(b)) + if(!removeWater(b)) return; // If distance to original block is greater than 20 - if(Math.abs(startX - b.getX()) + Math.abs(startY - b.getY() + Math.abs(startZ - b.getZ())) >= 20) + if(Math.abs(startX - b.getX()) + Math.abs(startY - b.getY() + Math.abs(startZ - b.getZ())) >= 20){ + b.setType(Material.WATER); throw new IsAnOcean(); + } - b.setType(Material.AIR); try{ checkBlock(b.getRelative(BlockFace.EAST), startX, startY, startZ); checkBlock(b.getRelative(BlockFace.WEST), startX, startY, startZ); @@ -84,4 +85,19 @@ public class WaterRemover { return WaterRemover_14.isWater(block); } } + + public static boolean removeWater(Block block){ + //checks for water and removes it, if present + switch(Core.getVersion()){ + case 8: + case 9: + case 10: + case 12: + return WaterRemover_8.removeWater(block); + case 14: + case 15: + default: + return WaterRemover_14.removeWater(block); + } + } } From 84fa4e8dd0481815e45e80004125098b29d0bb36 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 28 Oct 2020 10:21:13 +0100 Subject: [PATCH 04/12] Might fix #192 Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 4 ++++ .../de/steamwar/fightsystem/listener/PersonalKitCreator.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index 6bd4a93..2dc3fdd 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -25,6 +25,7 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.IFightSystem; import de.steamwar.fightsystem.kit.KitManager; +import de.steamwar.fightsystem.listener.PersonalKitCreator; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.utils.*; import de.steamwar.fightsystem.winconditions.RankedPlayerLeftWincondition; @@ -222,6 +223,9 @@ public class FightTeam implements IFightTeam{ } return; } + if (!PersonalKitCreator.notInKitCreator(leader.getPlayer())) + leader.getPlayer().closeInventory(); + this.leader = leader; if(ready) setReady(false); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PersonalKitCreator.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PersonalKitCreator.java index c593dae..104fa81 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PersonalKitCreator.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PersonalKitCreator.java @@ -78,7 +78,7 @@ public class PersonalKitCreator extends BasicListener { player.setGameMode(GameMode.CREATIVE); } - static boolean notInKitCreator(HumanEntity player){ + public static boolean notInKitCreator(HumanEntity player){ return !openKitCreators.containsKey(player); } From 192602625be20d964dea93dc3044f64173cac8c8 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 28 Oct 2020 11:16:25 +0100 Subject: [PATCH 05/12] Blocked spectator mode Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/fight/Fight.java | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java index a570be5..4d944c1 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java @@ -22,7 +22,6 @@ package de.steamwar.fightsystem.fight; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.wrappers.EnumWrappers; import com.comphenix.protocol.wrappers.PlayerInfoData; import com.comphenix.protocol.wrappers.WrappedChatComponent; @@ -48,18 +47,6 @@ public class Fight { public static final FightTeam blueTeam = new FightTeam(Config.TeamBlueName, Config.TeamBluePrefix, Config.TeamBlueSpawn, Config.TeamBlueCornerX, Config.TeamBlueCornerY, Config.TeamBlueCornerZ, Config.TeamBlueRotate, true, Config.BlueLeader); private static int schemRank; - private static final PacketContainer flying_packet = new PacketContainer(PacketType.Play.Server.ABILITIES); - - static { - flying_packet.getBytes().write(0, (byte)0x06); - StructureModifier booleans = flying_packet.getBooleans(); - booleans.write(0, false); - booleans.write(1, true); - booleans.write(2, true); - booleans.write(3, false); - flying_packet.getFloat().writeDefaults(); - } - public static void init(){ IFight.init(redTeam, blueTeam); } @@ -138,8 +125,8 @@ public class Fight { if(gameMode == GameMode.SPECTATOR) { for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { if(currentPlayer.getUniqueId() != player.getUniqueId() && currentPlayer.getGameMode() == GameMode.SPECTATOR) { - currentPlayer.hidePlayer(player); - player.hidePlayer(currentPlayer); + currentPlayer.hidePlayer(FightSystem.getPlugin(), player); + player.hidePlayer(FightSystem.getPlugin(), currentPlayer); } } @@ -147,14 +134,13 @@ public class Fight { return; Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> { - PacketContainer gm_1_packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.PLAYER_INFO); - gm_1_packet.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.UPDATE_GAME_MODE); + PacketContainer gm1packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.PLAYER_INFO); + gm1packet.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.UPDATE_GAME_MODE); List playerInfoActions = new ArrayList<>(); playerInfoActions.add(new PlayerInfoData(WrappedGameProfile.fromPlayer(player), 1, EnumWrappers.NativeGameMode.CREATIVE, WrappedChatComponent.fromText(player.getDisplayName()))); - gm_1_packet.getPlayerInfoDataLists().write(0, playerInfoActions); + gm1packet.getPlayerInfoDataLists().write(0, playerInfoActions); try { - ProtocolLibrary.getProtocolManager().sendServerPacket(player, gm_1_packet); - ProtocolLibrary.getProtocolManager().sendServerPacket(player, flying_packet); + ProtocolLibrary.getProtocolManager().sendServerPacket(player, gm1packet); } catch (InvocationTargetException e) { Bukkit.getLogger().log(Level.SEVERE, "Invocation target exception", e); } @@ -162,8 +148,8 @@ public class Fight { }else if(gameMode == GameMode.SURVIVAL) { for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { if(currentPlayer.getUniqueId() != player.getUniqueId() && currentPlayer.getGameMode() == GameMode.SPECTATOR) { - currentPlayer.showPlayer(player); - player.showPlayer(currentPlayer); + currentPlayer.showPlayer(FightSystem.getPlugin(), player); + player.showPlayer(FightSystem.getPlugin(), currentPlayer); } } } From 9b4744ae05bc230b0860c3af56acc2bb533f62ed Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 28 Oct 2020 11:18:06 +0100 Subject: [PATCH 06/12] Don't autoban Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/listener/PlayerMoveListener.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java index 54be27d..bec0121 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerMoveListener.java @@ -26,7 +26,6 @@ import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.utils.Region; import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.BanList; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -87,7 +86,6 @@ public class PlayerMoveListener extends BasicListener { boolean inArea = inArenaY && Region.isIn2DRange(to, teamCornerX, teamCornerZ, Config.SchemsizeX, Config.SchemsizeZ, 0); if(inArea){ player.kickPlayer(null); - Bukkit.getBanList(BanList.Type.NAME).addBan(player.getUniqueId().toString(), "§cVersuchtes Eindringen in einen Teambereich", null, null); Bukkit.getLogger().log(Level.SEVERE, player.getName() + " ist in einen Teambereich eingedrungen."); } } From 259ca31f2b5b4d8a54562f059186253b0830b958 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 29 Oct 2020 12:19:23 +0100 Subject: [PATCH 07/12] Tablist name impl. as comments. Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 2 ++ .../de/steamwar/fightsystem/listener/PlayerStateListener.java | 1 + 2 files changed, 3 insertions(+) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index 2dc3fdd..df53eb7 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -178,6 +178,7 @@ public class FightTeam implements IFightTeam{ if(KitManager.getKits(false).size() > 1 || Config.PersonalKits) player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAttributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build()); player.getInventory().setItem(7, new ItemBuilder(Material.BEACON).removeAllAttributs().setDisplayName("§eRespawn").build()); + //new TablistNamePacket(SteamwarUser.get(player).getId(), prefix + player.name()).send(player); TechHider.reloadChunks(player, chunksToReload); return fightPlayer; } @@ -195,6 +196,7 @@ public class FightTeam implements IFightTeam{ Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); + //new TablistNamePacket(SteamwarUser.get(player).getId(), "§7§o" + player.name()).send(player); TechHider.reloadChunks(player, chunksToReload); } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java index 8f179e6..e75d51c 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java @@ -61,6 +61,7 @@ public class PlayerStateListener extends BasicListener{ if (fightTeam == null) { Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); + //new TablistNamePacket(SteamwarUser.get(player).getId(), "§7§o" + player.name()).send(player); } else { player.teleport(fightTeam.getSpawn()); if(FightSystem.getFightState().setup()) From 886e624bacbf04de916991788b576961a1b7aeec Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 29 Oct 2020 20:51:45 +0100 Subject: [PATCH 08/12] Impl. tablist name capability Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 10 +++++++--- .../fightsystem/listener/PlayerStateListener.java | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index df53eb7..aa7e00b 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -20,6 +20,7 @@ package de.steamwar.fightsystem.fight; import com.sk89q.worldedit.EditSession; +import de.steamwar.comms.packets.TablistNamePacket; import de.steamwar.core.Core; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; @@ -27,7 +28,10 @@ import de.steamwar.fightsystem.IFightSystem; import de.steamwar.fightsystem.kit.KitManager; import de.steamwar.fightsystem.listener.PersonalKitCreator; import de.steamwar.fightsystem.states.FightState; -import de.steamwar.fightsystem.utils.*; +import de.steamwar.fightsystem.utils.ColorConverter; +import de.steamwar.fightsystem.utils.FightScoreboard; +import de.steamwar.fightsystem.utils.ItemBuilder; +import de.steamwar.fightsystem.utils.TechHider; import de.steamwar.fightsystem.winconditions.RankedPlayerLeftWincondition; import de.steamwar.inventory.SWItem; import de.steamwar.sql.NoClipboardException; @@ -178,7 +182,7 @@ public class FightTeam implements IFightTeam{ if(KitManager.getKits(false).size() > 1 || Config.PersonalKits) player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAttributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build()); player.getInventory().setItem(7, new ItemBuilder(Material.BEACON).removeAllAttributs().setDisplayName("§eRespawn").build()); - //new TablistNamePacket(SteamwarUser.get(player).getId(), prefix + player.name()).send(player); + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player); TechHider.reloadChunks(player, chunksToReload); return fightPlayer; } @@ -196,7 +200,7 @@ public class FightTeam implements IFightTeam{ Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); - //new TablistNamePacket(SteamwarUser.get(player).getId(), "§7§o" + player.name()).send(player); + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); TechHider.reloadChunks(player, chunksToReload); } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java index e75d51c..721f523 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java @@ -19,6 +19,7 @@ package de.steamwar.fightsystem.listener; +import de.steamwar.comms.packets.TablistNamePacket; import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.countdown.Countdown; @@ -27,6 +28,7 @@ import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightPlayer; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; +import de.steamwar.sql.SteamwarUser; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -61,7 +63,7 @@ public class PlayerStateListener extends BasicListener{ if (fightTeam == null) { Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); - //new TablistNamePacket(SteamwarUser.get(player).getId(), "§7§o" + player.name()).send(player); + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); } else { player.teleport(fightTeam.getSpawn()); if(FightSystem.getFightState().setup()) From 924ed3b30aabfb6ed836acd142383d9c4b20b466 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 07:31:21 +0100 Subject: [PATCH 09/12] Disable TablistPacket on test arenas Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 6 ++++-- .../steamwar/fightsystem/listener/PlayerStateListener.java | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index aa7e00b..142568e 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -182,7 +182,8 @@ public class FightTeam implements IFightTeam{ if(KitManager.getKits(false).size() > 1 || Config.PersonalKits) player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAttributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build()); player.getInventory().setItem(7, new ItemBuilder(Material.BEACON).removeAllAttributs().setDisplayName("§eRespawn").build()); - new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player); + if(!Config.test()) + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player); TechHider.reloadChunks(player, chunksToReload); return fightPlayer; } @@ -200,7 +201,8 @@ public class FightTeam implements IFightTeam{ Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); - new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); + if(!Config.test()) + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); TechHider.reloadChunks(player, chunksToReload); } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java index 721f523..56d6c93 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java @@ -63,7 +63,8 @@ public class PlayerStateListener extends BasicListener{ if (fightTeam == null) { Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); - new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); + if(!Config.test()) + new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); } else { player.teleport(fightTeam.getSpawn()); if(FightSystem.getFightState().setup()) From acb83e7fbb3c4eb5478f7bafbaf4760f40529017 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 07:52:08 +0100 Subject: [PATCH 10/12] Hotfix Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 2 +- .../de/steamwar/fightsystem/listener/PlayerStateListener.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index 142568e..9114a71 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -183,7 +183,7 @@ public class FightTeam implements IFightTeam{ player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAttributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build()); player.getInventory().setItem(7, new ItemBuilder(Material.BEACON).removeAllAttributs().setDisplayName("§eRespawn").build()); if(!Config.test()) - new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player); + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player), 1); TechHider.reloadChunks(player, chunksToReload); return fightPlayer; } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java index 56d6c93..a5b182d 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java @@ -64,7 +64,7 @@ public class PlayerStateListener extends BasicListener{ Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); if(!Config.test()) - new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7§o" + player.getName()).send(player); + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7" + player.getName()).send(player), 1); } else { player.teleport(fightTeam.getSpawn()); if(FightSystem.getFightState().setup()) From 55b27082cbf3638a3781bb4c75208fa796d5ef55 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 14:06:38 +0100 Subject: [PATCH 11/12] Kick all nonparticipants if Event with SpectateSystem Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/Config.java | 3 +++ .../fightsystem/listener/EventJoinListener.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/FightSystem_API/src/de/steamwar/fightsystem/Config.java b/FightSystem_API/src/de/steamwar/fightsystem/Config.java index 43db7ba..5510486 100644 --- a/FightSystem_API/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_API/src/de/steamwar/fightsystem/Config.java @@ -140,6 +140,7 @@ public class Config { public static final int EventTeamRedID; public static final boolean BothTeamsPublic; public static final int MaximumTeamMembers; + public static final boolean SpectateSystem; //check parameter public static final int CheckSchemID; @@ -370,6 +371,7 @@ public class Config { OnlyPublicSchematics = event.publicSchemsOnly(); MaximumTeamMembers = event.getMaximumTeamMembers(); } + SpectateSystem = event.spectateSystem(); }else{ //No event TeamRedName = config.getString("Output.TeamRedName"); @@ -379,6 +381,7 @@ public class Config { EventTeamRedID = 0; BothTeamsPublic = true; MaximumTeamMembers = Integer.MAX_VALUE; + SpectateSystem = false; } String blueLeader = System.getProperty("blueLeader", null); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/EventJoinListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/EventJoinListener.java index 23a4a31..73284cd 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/EventJoinListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/EventJoinListener.java @@ -29,6 +29,7 @@ import de.steamwar.sql.SteamwarUser; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import java.util.EnumSet; @@ -39,6 +40,21 @@ public class EventJoinListener extends BasicListener { super(Config.event() ? EnumSet.of(FightState.PRE_LEADER_SETUP, FightState.PRE_SCHEM_SETUP, FightState.POST_SCHEM_SETUP) : EnumSet.noneOf(FightState.class)); } + @EventHandler + public void playerLogin(PlayerLoginEvent event) { + if(!Config.SpectateSystem) + return; + + Player player = event.getPlayer(); + SteamwarUser user = SteamwarUser.get(player.getUniqueId()); + if(user.getTeam() == Config.EventTeamBlueID || + user.getTeam() == Config.EventTeamRedID || + user.getId() == FightSystem.getEventFight().getKampfleiter()) + return; + + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "§cDu bist kein Kampfteilnehmer"); + } + @EventHandler public void handlePlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); From 6189b7278a2c0336941ee99e4be334a4a4e21297 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 22:04:04 +0100 Subject: [PATCH 12/12] Hotfix gm 31 in testarena & tablist Signed-off-by: Lixfel --- FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java | 2 +- .../src/de/steamwar/fightsystem/fight/FightTeam.java | 2 +- .../de/steamwar/fightsystem/listener/PlayerStateListener.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java index 4d944c1..595e107 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java @@ -130,7 +130,7 @@ public class Fight { } } - if(FightSystem.getEventLeiter() == player) + if(FightSystem.getEventLeiter() == player || Config.test()) return; Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> { diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index 9114a71..cfaed39 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -183,7 +183,7 @@ public class FightTeam implements IFightTeam{ player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAttributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build()); player.getInventory().setItem(7, new ItemBuilder(Material.BEACON).removeAllAttributs().setDisplayName("§eRespawn").build()); if(!Config.test()) - Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player), 1); + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), prefix + player.getName()).send(player), 5); TechHider.reloadChunks(player, chunksToReload); return fightPlayer; } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java index a5b182d..d07ab37 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/listener/PlayerStateListener.java @@ -64,7 +64,7 @@ public class PlayerStateListener extends BasicListener{ Fight.setPlayerGamemode(player, GameMode.SPECTATOR); player.teleport(Config.SpecSpawn); if(!Config.test()) - Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7" + player.getName()).send(player), 1); + Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> new TablistNamePacket(SteamwarUser.get(player.getUniqueId()).getId(), "§7" + player.getName()).send(player), 5); } else { player.teleport(fightTeam.getSpawn()); if(FightSystem.getFightState().setup())