From de0d7d734006d26335fc128fb03eed6b384e047b Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 9 Sep 2020 20:47:50 +0200 Subject: [PATCH 1/4] 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); -- 2.39.2 From 2b3f08aae242da3d62dd95cd36d53d77ae42b9a8 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 25 Sep 2020 16:35:16 +0200 Subject: [PATCH 2/4] 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(); -- 2.39.2 From 192602625be20d964dea93dc3044f64173cac8c8 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 28 Oct 2020 11:16:25 +0100 Subject: [PATCH 3/4] 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); } } } -- 2.39.2 From 9b4744ae05bc230b0860c3af56acc2bb533f62ed Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 28 Oct 2020 11:18:06 +0100 Subject: [PATCH 4/4] 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."); } } -- 2.39.2