From 65028799b03c3c02c1aee074054f762afc1d967b Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 19 Dec 2023 22:18:16 +0100 Subject: [PATCH] Correct HullHider behaviour for boarding Signed-off-by: Lixfel --- .../countdown/EnternCountdown.java | 5 ++- .../steamwar/fightsystem/fight/FightTeam.java | 4 +-- .../de/steamwar/fightsystem/utils/Hull.java | 4 +-- .../steamwar/fightsystem/utils/HullHider.java | 36 ++++++++----------- 4 files changed, 22 insertions(+), 27 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EnternCountdown.java b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EnternCountdown.java index d8c78d9..157c296 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EnternCountdown.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/countdown/EnternCountdown.java @@ -56,7 +56,10 @@ public class EnternCountdown extends Countdown { @Override public void countdownFinished() { FightSystem.getMessage().sendPrefixless("ENTERN_ALLOWED", fightPlayer.getEntity(), ChatMessageType.ACTION_BAR); - fightPlayer.ifPlayer(player -> FightSystem.getTechHider().reloadChunks(player, chunkPos, false)); + fightPlayer.ifPlayer(player -> { + FightSystem.getHullHider().updatePlayer(player); + FightSystem.getTechHider().reloadChunks(player, chunkPos, false); + }); } @Override diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java index 6efb3fd..7aad62d 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -275,7 +275,7 @@ public class FightTeam { BountifulWrapper.impl.setAttackSpeed(player); player.setFoodLevel(20); player.getInventory().clear(); - FightSystem.getHullHider().removePlayer(this, player); + FightSystem.getHullHider().updatePlayer(player); if(FightState.Spectate.contains(FightState.getFightState())) { Fight.setPlayerGamemode(player, GameMode.SPECTATOR); @@ -319,7 +319,7 @@ public class FightTeam { player.getInventory().clear(); if(player.isOnline()){ - FightSystem.getHullHider().addPlayer(this, player); + FightSystem.getHullHider().updatePlayer(player); FightSystem.getTechHider().reloadChunks(player, chunksToReload, true); if(ArenaMode.VariableTeams.contains(Config.mode)) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java index c9f4d72..3f168a3 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java @@ -89,8 +89,8 @@ public class Hull { } @SuppressWarnings("deprecation") - public void addPlayer(Player player, boolean activeHiding) { - if(players.add(player) && activeHiding) { + public void addPlayer(Player player) { + if(players.add(player)) { for(Entity entity : entities) player.hideEntity(FightSystem.getPlugin(), entity); //TODO 1.15- } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/HullHider.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/HullHider.java index c7f8e0d..423f8cc 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/HullHider.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/HullHider.java @@ -21,6 +21,7 @@ package de.steamwar.fightsystem.utils; import de.steamwar.core.Core; import de.steamwar.fightsystem.fight.Fight; +import de.steamwar.fightsystem.fight.FightPlayer; import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.listener.Recording; import de.steamwar.fightsystem.states.FightState; @@ -62,7 +63,7 @@ public class HullHider implements Listener { new StateDependent(ENABLED, FightState.Schem) { @Override public void enable() { - Bukkit.getOnlinePlayers().forEach(player -> addPlayer(player, true)); + Bukkit.getOnlinePlayers().forEach(player -> updatePlayer(player)); } @Override @@ -81,23 +82,9 @@ public class HullHider implements Listener { } - public void addPlayer(FightTeam team, Player player) { - if(!ENABLED) - return; - - hulls.get(team).addPlayer(player, true); - } - - public void removePlayer(FightTeam team, Player player) { - if(!ENABLED) - return; - - hulls.get(team).removePlayer(player, true); - } - @EventHandler(priority = EventPriority.HIGH) public void onJoin(PlayerJoinEvent e) { - addPlayer(e.getPlayer(), false); + updatePlayer(e.getPlayer()); } @EventHandler @@ -105,13 +92,18 @@ public class HullHider implements Listener { removePlayer(e.getPlayer(), false); } - private void addPlayer(Player player, boolean activeHiding) { - FightTeam team = Fight.getPlayerTeam(player); - for(Map.Entry hull : hulls.entrySet()) { - if(hull.getKey() == team) - continue; + public void updatePlayer(Player player) { + if(!ENABLED) + return; - hull.getValue().addPlayer(player, activeHiding); + FightTeam team = Fight.getPlayerTeam(player); + FightPlayer fp = Fight.getFightPlayer(player); + for(Map.Entry hull : hulls.entrySet()) { + if(hull.getKey() == team || (fp != null && fp.canEntern())) { + hull.getValue().removePlayer(player, true); + } else { + hull.getValue().addPlayer(player); + } } }