diff --git a/connector/pom.xml b/connector/pom.xml index 8b1bfe510..33ad39db3 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -12,6 +12,8 @@ 4.1.59.Final + 8.5.2 + 4.5.0 @@ -28,15 +30,11 @@ compile - com.github.CloudburstMC.Protocol + com.nukkitx.protocol bedrock-v422 - 294e7e5 + 2.6.2-20210228.150048-4 compile - - net.sf.trove4j - trove - com.nukkitx.network raknet @@ -44,9 +42,9 @@ - com.github.CloudburstMC.Network + com.nukkitx.network raknet - a94d2dd + 1.6.26-20210217.205834-2 compile @@ -58,61 +56,61 @@ com.nukkitx.fastutil fastutil-int-int-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-int-float-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-long-long-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-object-long-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-int-byte-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-int-double-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-int-boolean-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-object-int-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-object-byte-maps - 8.3.1 + ${fastutil.version} compile com.nukkitx.fastutil fastutil-object-object-maps - 8.3.1 + ${fastutil.version} compile @@ -214,25 +212,25 @@ net.kyori adventure-api - 4.5.0 + ${adventure.version} compile net.kyori adventure-text-serializer-gson - 4.5.0 + ${adventure.version} compile net.kyori adventure-text-serializer-legacy - 4.5.0 + ${adventure.version} compile net.kyori adventure-text-serializer-gson-legacy-impl - 4.5.0 + ${adventure.version} compile diff --git a/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java b/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java index 5543c3d5d..3d1005510 100644 --- a/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java +++ b/connector/src/main/java/org/geysermc/connector/entity/living/ArmorStandEntity.java @@ -123,43 +123,38 @@ public class ArmorStandEntity extends LivingEntity { isInvisible = (xd & 0x20) == 0x20; updateSecondEntityStatus(false); } - } else if (entityMetadata.getId() == 2 || entityMetadata.getId() == 3) { + } else if (entityMetadata.getId() == 2) { updateSecondEntityStatus(false); } else if (entityMetadata.getId() == 14 && entityMetadata.getType() == MetadataType.BYTE) { byte xd = (byte) entityMetadata.getValue(); // isSmall boolean newIsSmall = (xd & 0x01) == 0x01; - if ((newIsSmall != isSmall) && positionRequiresOffset) { - // Fix new inconsistency with offset - this.position = fixOffsetForSize(position, newIsSmall); - positionUpdateRequired = true; - } - isSmall = newIsSmall; - if (isSmall) { - - float scale = metadata.getFloat(EntityData.SCALE); - if (scale != 0.55f && scale != 0.0f) { - metadata.put(EntityData.SCALE, 0.55f); + if (newIsSmall != isSmall) { + if (positionRequiresOffset) { + // Fix new inconsistency with offset + this.position = fixOffsetForSize(position, newIsSmall); + positionUpdateRequired = true; } - if (metadata.getFloat(EntityData.BOUNDING_BOX_WIDTH) == 0.5f) { - metadata.put(EntityData.BOUNDING_BOX_WIDTH, 0.25f); - metadata.put(EntityData.BOUNDING_BOX_HEIGHT, 0.9875f); + isSmall = newIsSmall; + if (!isMarker) { + toggleSmallStatus(); } - } else if (metadata.getFloat(EntityData.BOUNDING_BOX_WIDTH) == 0.25f) { - metadata.put(EntityData.BOUNDING_BOX_WIDTH, entityType.getWidth()); - metadata.put(EntityData.BOUNDING_BOX_HEIGHT, entityType.getHeight()); } // setMarker boolean oldIsMarker = isMarker; isMarker = (xd & 0x10) == 0x10; - if (isMarker) { - metadata.put(EntityData.BOUNDING_BOX_WIDTH, 0.0f); - metadata.put(EntityData.BOUNDING_BOX_HEIGHT, 0.0f); - } if (oldIsMarker != isMarker) { + if (isMarker) { + metadata.put(EntityData.BOUNDING_BOX_WIDTH, 0.0f); + metadata.put(EntityData.BOUNDING_BOX_HEIGHT, 0.0f); + metadata.put(EntityData.SCALE, 0f); + } else { + toggleSmallStatus(); + } + updateSecondEntityStatus(false); } } @@ -226,6 +221,7 @@ public class ArmorStandEntity extends LivingEntity { if (!primaryEntity) return; if (!isInvisible || isMarker) { // It is either impossible to show armor, or the armor stand isn't invisible. We good. + metadata.getFlags().setFlag(EntityFlag.INVISIBLE, false); updateOffsetRequirement(false); if (positionUpdateRequired) { positionUpdateRequired = false; @@ -306,6 +302,15 @@ public class ArmorStandEntity extends LivingEntity { } } + /** + * If this armor stand is not a marker, set its bounding box size and scale. + */ + private void toggleSmallStatus() { + metadata.put(EntityData.BOUNDING_BOX_WIDTH, isSmall ? 0.25f : entityType.getWidth()); + metadata.put(EntityData.BOUNDING_BOX_HEIGHT, isSmall ? 0.9875f : entityType.getHeight()); + metadata.put(EntityData.SCALE, isSmall ? 0.55f : 1f); + } + /** * @return the selected position with the position offset applied. */