diff options
author | tylermurphy534 <tylermurphy534@gmail.com> | 2023-02-08 23:24:53 +0000 |
---|---|---|
committer | tylermurphy534 <tylermurphy534@gmail.com> | 2023-02-08 23:24:53 +0000 |
commit | b87174e7701863f54ab26998feaf4bdaa9a0df20 (patch) | |
tree | bf3cec7f3d0be7aa6bc26fc647a06527dfe49235 /src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java | |
parent | Merge pull request '1.7.0 - Multi Map Support' (#4) from dev into main (diff) | |
parent | update dependicies, fix worldborder, fix timer when player leaves, fix drop i... (diff) | |
download | kenshinshideandseek-b87174e7701863f54ab26998feaf4bdaa9a0df20.tar.gz kenshinshideandseek-b87174e7701863f54ab26998feaf4bdaa9a0df20.tar.bz2 kenshinshideandseek-b87174e7701863f54ab26998feaf4bdaa9a0df20.zip |
Merge pull request '1.7.1 - A few tweaks and bug squashes' (#5) from dev into main
Reviewed-on: https://g.tylerm.dev/tylermurphy534/KenshinsHideAndSeek/pulls/5
Diffstat (limited to '')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java | 80 |
1 files changed, 62 insertions, 18 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java b/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java index 3892f6f..755e89d 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/EntityHider.java @@ -2,7 +2,6 @@ package net.tylermurphy.hideAndSeek.game; import static com.comphenix.protocol.PacketType.Play.Server.*; -import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.Map; @@ -31,7 +30,7 @@ public class EntityHider implements Listener { private static final PacketType[] ENTITY_PACKETS = { ENTITY_EQUIPMENT, ANIMATION, NAMED_ENTITY_SPAWN, - COLLECT, SPAWN_ENTITY, SPAWN_ENTITY_LIVING, SPAWN_ENTITY_PAINTING, SPAWN_ENTITY_EXPERIENCE_ORB, + COLLECT, SPAWN_ENTITY, SPAWN_ENTITY_EXPERIENCE_ORB, ENTITY_VELOCITY, REL_ENTITY_MOVE, ENTITY_LOOK, ENTITY_TELEPORT, ENTITY_HEAD_ROTATION, ENTITY_STATUS, ATTACH_ENTITY, ENTITY_METADATA, ENTITY_EFFECT, REMOVE_ENTITY_EFFECT, BLOCK_BREAK_ANIMATION @@ -85,26 +84,38 @@ public class EntityHider implements Listener { /** * Add or remove the given entity and observer entry from the table. * @param observer - the player observer. - * @param entityID - ID of the entity. + * @param newEntityId - ID of the entity. * @param member - TRUE if they should be present in the table, FALSE otherwise. * @return TRUE if they already were present, FALSE otherwise. */ - protected boolean setMembership(Player observer, int entityID, boolean member) { + protected boolean setMembership(Player observer, int newEntityId, boolean member) { + int entityID; + try { + entityID = observer.getEntityId(); + } catch (Exception e) { + return member; + } if (member) { - return observerEntityMap.put(observer.getEntityId(), entityID, true) != null; + return observerEntityMap.put(newEntityId, entityID, true) != null; } else { - return observerEntityMap.remove(observer.getEntityId(), entityID) != null; + return observerEntityMap.remove(newEntityId, entityID) != null; } } /** * Determine if the given entity and observer is present in the table. * @param observer - the player observer. - * @param entityID - ID of the entity. + * @param newEntityID - ID of the entity. * @return TRUE if they are present, FALSE otherwise. */ - protected boolean getMembership(Player observer, int entityID) { - return observerEntityMap.contains(observer.getEntityId(), entityID); + protected boolean getMembership(Player observer, int newEntityID) { + int entityID; + try { + entityID = observer.getEntityId(); + } catch (Exception e) { + return false; + } + return observerEntityMap.contains(entityID, newEntityID); } /** @@ -125,7 +136,12 @@ public class EntityHider implements Listener { * @param entity - the entity to remove. */ protected void removeEntity(Entity entity) { - int entityID = entity.getEntityId(); + int entityID; + try { + entityID = entity.getEntityId(); + } catch (Exception e) { + return; + } for (Map<Integer, Boolean> maps : observerEntityMap.rowMap().values()) { maps.remove(entityID); @@ -137,8 +153,13 @@ public class EntityHider implements Listener { * @param player - the player that jused logged out. */ protected void removePlayer(Player player) { - // Cleanup - observerEntityMap.rowMap().remove(player.getEntityId()); + int entityID; + try { + entityID = player.getEntityId(); + } catch (Exception e) { + return; + } + observerEntityMap.rowMap().remove(entityID); } /** @@ -195,7 +216,13 @@ public class EntityHider implements Listener { */ @SuppressWarnings("unused") public final boolean toggleEntity(Player observer, Entity entity) { - if (isVisible(observer, entity.getEntityId())) { + int entityID; + try { + entityID = observer.getEntityId(); + } catch (Exception e) { + return true; + } + if (isVisible(observer, entityID)) { return hideEntity(observer, entity); } else { return !showEntity(observer, entity); @@ -210,7 +237,13 @@ public class EntityHider implements Listener { */ public final boolean showEntity(Player observer, Entity entity) { validate(observer, entity); - boolean hiddenBefore = !setVisibility(observer, entity.getEntityId(), true); + int entityID; + try { + entityID = entity.getEntityId(); + } catch (Exception e) { + return false; + } + boolean hiddenBefore = !setVisibility(observer, entityID, true); // Resend packets if (manager != null && hiddenBefore) { @@ -227,12 +260,18 @@ public class EntityHider implements Listener { */ public final boolean hideEntity(Player observer, Entity entity) { validate(observer, entity); - boolean visibleBefore = setVisibility(observer, entity.getEntityId(), false); + int entityID; + try { + entityID = entity.getEntityId(); + } catch (Exception e) { + return true; + } + boolean visibleBefore = setVisibility(observer, entityID, false); if (visibleBefore) { PacketContainer destroyEntity = new PacketContainer(ENTITY_DESTROY); try { - destroyEntity.getIntegerArrays().write(0, new int[]{entity.getEntityId()}); + destroyEntity.getIntegerArrays().write(0, new int[]{entityID}); } catch (Exception e){ return false; } // Make the entity disappear manager.sendServerPacket(observer, destroyEntity); @@ -253,8 +292,13 @@ public class EntityHider implements Listener { @SuppressWarnings("unused") public final boolean canSee(Player observer, Entity entity) { validate(observer, entity); - - return isVisible(observer, entity.getEntityId()); + int entityID; + try { + entityID = entity.getEntityId(); + } catch (Exception e) { + return true; + } + return isVisible(observer, entityID); } private void validate(Player observer, Entity entity) { |