From c308a06e6b428966681e91486014e6269cf0d124 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 11 Dec 2024 14:48:32 +0100 Subject: [PATCH 1/2] Test if broadcasting apollo:json acceptance triggers ModList sending. --- .../de/steamwar/fightsystem/utils/BlockIdWrapper18.java | 7 ++----- .../src/de/steamwar/fightsystem/utils/Hull.java | 6 ------ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/FightSystem/FightSystem_18/src/de/steamwar/fightsystem/utils/BlockIdWrapper18.java b/FightSystem/FightSystem_18/src/de/steamwar/fightsystem/utils/BlockIdWrapper18.java index d1ad4197..c229353a 100644 --- a/FightSystem/FightSystem_18/src/de/steamwar/fightsystem/utils/BlockIdWrapper18.java +++ b/FightSystem/FightSystem_18/src/de/steamwar/fightsystem/utils/BlockIdWrapper18.java @@ -23,10 +23,7 @@ import com.comphenix.tinyprotocol.Reflection; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; -import java.util.Collections; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; public class BlockIdWrapper18 extends BlockIdWrapper14 { @@ -39,7 +36,7 @@ public class BlockIdWrapper18 extends BlockIdWrapper14 { @Override public void untrackEntity(Player player, Entity entity) { - hiddenEntities.get(player).put(entity.getUniqueId(), Collections.emptySet()); + hiddenEntities.get(player).put(entity.getUniqueId(), new HashSet<>(1)); super.untrackEntity(player, entity); } } diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java index 5b145c1d..2c55509d 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java @@ -51,7 +51,6 @@ public class Hull { private final BitSet occluding; private final BitSet visibility; - private final BitSet primaryVisible; private final Int2IntOpenHashMap visibilityDirections = new Int2IntOpenHashMap(); // Contains the visible directions of each occluding visible block private final Set uncoveredSurface = new HashSet<>(); @@ -65,7 +64,6 @@ public class Hull { this.primaryDirection = new IntVector(0, 0, team.isBlue() == (Config.BlueToRedZ > 0) ? -1 : 1); this.occluding = new BitSet(region.volume()); this.visibility = new BitSet(region.volume()); - this.primaryVisible = new BitSet(region.volume()); branchDirections = IntStream.range(0, 27) .mapToObj(v -> new IntVector(v%3 -1, (v/3)%3 -1, v/9 -1)) @@ -139,7 +137,6 @@ public class Hull { visibility.clear(); occluding.clear(); visibilityDirections.clear(); - primaryVisible.clear(); long start = System.currentTimeMillis(); region.forEach((x, y, z) -> { @@ -253,14 +250,11 @@ public class Hull { visibilityDirections.compute(id, (pos, v) -> (v == null ? 0 : v) | directionId(direction)); return; } - if(primaryVisible.get(id)) - return; updateBlocks(uncovered, block.add(direction), direction); if(!direction.equals(primaryDirection)) return; - primaryVisible.set(id); for(IntVector branchDirection : branchDirections) updateBlocks(uncovered, block.add(branchDirection), branchDirection); } From 429e2f86aa43a9ebae56ccc18603d7ca10fa026e Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 11 Dec 2024 15:03:32 +0100 Subject: [PATCH 2/2] Fix Hullhider. --- .../de/steamwar/fightsystem/utils/Hull.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java index 2c55509d..bb905c86 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/utils/Hull.java @@ -47,6 +47,7 @@ public class Hull { private final Region region; private final boolean groundVisible; private final IntVector primaryDirection; + private final IntVector[] directions; private final IntVector[] branchDirections; private final BitSet occluding; @@ -65,10 +66,14 @@ public class Hull { this.occluding = new BitSet(region.volume()); this.visibility = new BitSet(region.volume()); - branchDirections = IntStream.range(0, 27) + directions = IntStream.range(0, 27) .mapToObj(v -> new IntVector(v%3 -1, (v/3)%3 -1, v/9 -1)) + .filter(v -> v.sqLength() > 0) + .filter(v -> v.sqLength() <= 2) + .toArray(IntVector[]::new); + branchDirections = Arrays.stream(directions) .filter(v -> v.x*primaryDirection.x + v.y*primaryDirection.y + v.z*primaryDirection.z >= 0) // Not pointing away from primary direction - .filter(v -> v.x*v.x + v.y*v.y + v.z*v.z == 2) // Diagonal + .filter(v -> v.sqLength() == 2) // Diagonal .toArray(IntVector[]::new); } @@ -162,9 +167,9 @@ public class Hull { return; List uncovered = new ArrayList<>(); - int directions = visibilityDirections.remove(id); - for(IntVector direction : branchDirections) { - if((directionId(direction) & directions) != 0) + int visibleDirections = visibilityDirections.remove(id); + for(IntVector direction : directions) { + if((directionId(direction) & visibleDirections) != 0) updateBlocks(uncovered, root, direction); } @@ -293,6 +298,10 @@ public class Hull { return add(v.x, v.y, v.z); } + public int sqLength() { + return x*x + y*y + z*z; + } + @Override public int hashCode() { return y << 24 ^ x << 12 ^ z;