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.
*/