Make Techhider more robust

This commit is contained in:
2026-11-04 21:11:45 +01:00
parent a5bfc2fa44
commit 1eef62add3
7 changed files with 60 additions and 55 deletions
@@ -132,6 +132,10 @@ public class FightHullHider {
return hullHider.isBlockHidden(player, x, y, z);
}
public boolean isEntityHidden(Player player, int entityId) {
return hullHider.isEntityHidden(player, entityId);
}
private void onTick() {
Recording.iterateOverEntities(Objects::nonNull, hullHider::checkEntity);
hullHider.sendUncoveredBlocks();
@@ -39,7 +39,6 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import org.bukkit.GameMode;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -133,16 +132,9 @@ public class TechHiderWrapper extends StateDependent implements Listener {
return !isHidden(blockX, blockY, blockZ) || !obfuscation.hidesBlockState(blockState);
}
// TODO will require entity tracking on the netty thread to prevent future race conditions
@Override
public boolean canAccessEntity(int entityId) {
net.minecraft.world.entity.Entity nmsEntity = ((CraftWorld) player.getWorld()).getHandle().moonrise$getEntityLookup().get(entityId);
if (nmsEntity != null) {
return !hullHider.isBlockHidden(player, nmsEntity.getBlockX(), nmsEntity.getBlockY(), nmsEntity.getBlockZ());
} else {
return true;
}
return !hullHider.isEntityHidden(player, entityId);
}
@Override