Don't clear entity eye height and attachment points

This commit is contained in:
RaphiMC 2024-04-24 16:36:04 +02:00
parent e7f9188fbf
commit bc8682b010
No known key found for this signature in database
GPG Key ID: 0F6BB0657A03AC94
2 changed files with 77 additions and 31 deletions

View File

@ -49,7 +49,6 @@ import java.util.concurrent.CompletableFuture;
*
* TODO | Port
* - Readd MixinCustomPayloadS2CPacket, MixinInGameHud
* - EntityDimensionDiff: Add eye height and attachment point
* - Test bedrock transfer
* - Readd item fixes: MixinItemStack, MixinDrawContext, MixinPacketByteBuf
* - Figure out how to fix 32k enchantments with codecs (MixinEnchantmentHelper)

View File

@ -23,6 +23,8 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import de.florianmichael.viafabricplus.protocoltranslator.ProtocolTranslator;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.EntityAttachmentType;
import net.minecraft.entity.EntityAttachments;
import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityType;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
@ -42,105 +44,105 @@ public class EntityDimensionDiff {
*/
private static final Map<EntityType<?>, Map<ProtocolVersion, EntityDimensions>> ENTITY_DIMENSIONS = linkedHashMap(
EntityType.WITHER, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.9F, 4.0F),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.WITHER).withChangingDimensions(0.9F, 4.0F).build(),
ProtocolVersion.v1_8, EntityType.WITHER.getDimensions()
),
EntityType.SILVERFISH, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.3F, 0.7F),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.SILVERFISH).withChangingDimensions(0.3F, 0.7F).build(),
ProtocolVersion.v1_8, EntityType.SILVERFISH.getDimensions()
),
EntityType.SNOW_GOLEM, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.4F, 1.8F),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.SNOW_GOLEM).withChangingDimensions(0.4F, 1.8F).build(),
ProtocolVersion.v1_8, EntityType.SNOW_GOLEM.getDimensions()
),
EntityType.ZOMBIE, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.6F, 1.8F),
ProtocolVersion.v1_8, EntityDimensions.fixed(EntityType.ZOMBIE.getDimensions().width(), EntityType.ZOMBIE.getDimensions().height()),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.ZOMBIE).withChangingDimensions(0.6F, 1.8F).build(),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.ZOMBIE).withFixedDimensions(0.6F, 1.95F).build(),
ProtocolVersion.v1_9, EntityType.ZOMBIE.getDimensions()
),
EntityType.CHICKEN, linkedHashMap(
LegacyProtocolVersion.b1_7tob1_7_3, EntityDimensions.changing(0.3F, 0.4F),
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.3F, 0.7F),
LegacyProtocolVersion.b1_7tob1_7_3, EntityDimensionsBuilder.create(EntityType.CHICKEN).withChangingDimensions(0.3F, 0.4F).build(),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.CHICKEN).withChangingDimensions(0.3F, 0.7F).build(),
ProtocolVersion.v1_8, EntityType.CHICKEN.getDimensions()
),
EntityType.SHEEP, linkedHashMap(
LegacyProtocolVersion.c0_28toc0_30, EntityDimensions.changing(1.4F, 1.72F),
LegacyProtocolVersion.c0_28toc0_30, EntityDimensionsBuilder.create(EntityType.SHEEP).withChangingDimensions(1.4F, 1.72F).build(),
LegacyProtocolVersion.a1_0_15, EntityType.SHEEP.getDimensions()
),
EntityType.OCELOT, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.6F, 0.8F),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.OCELOT).withChangingDimensions(0.6F, 0.8F).build(),
ProtocolVersion.v1_8, EntityType.OCELOT.getDimensions()
),
EntityType.BOAT, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(1.5F, 0.6F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.BOAT).withChangingDimensions(1.5F, 0.6F).build(),
ProtocolVersion.v1_9, EntityType.BOAT.getDimensions()
),
EntityType.CREEPER, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.6F, 1.8F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.CREEPER).withChangingDimensions(0.6F, 1.8F).build(),
ProtocolVersion.v1_9, EntityType.CREEPER.getDimensions()
),
EntityType.IRON_GOLEM, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(1.4F, 2.9F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.IRON_GOLEM).withChangingDimensions(1.4F, 2.9F).build(),
ProtocolVersion.v1_9, EntityType.IRON_GOLEM.getDimensions()
),
EntityType.SKELETON, linkedHashMap(
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.6F, 1.8F),
ProtocolVersion.v1_8, EntityDimensions.changing(0.6F, 1.95F),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.SKELETON).withChangingDimensions(0.6F, 1.8F).build(),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.SKELETON).withChangingDimensions(0.6F, 1.95F).build(),
ProtocolVersion.v1_9, EntityType.SKELETON.getDimensions()
),
EntityType.WITHER_SKELETON, linkedHashMap(
LegacyProtocolVersion.r1_4_6tor1_4_7, EntityDimensions.changing(0.72F, 2.16F),
ProtocolVersion.v1_7_6, EntityDimensions.changing(0.72F, 2.34F),
ProtocolVersion.v1_8, EntityDimensions.changing(0.72F, 2.535F),
LegacyProtocolVersion.r1_4_6tor1_4_7, EntityDimensionsBuilder.create(EntityType.WITHER_SKELETON).withChangingDimensions(0.72F, 2.16F).build(),
ProtocolVersion.v1_7_6, EntityDimensionsBuilder.create(EntityType.WITHER_SKELETON).withChangingDimensions(0.72F, 2.34F).build(),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.WITHER_SKELETON).withChangingDimensions(0.72F, 2.535F).build(),
ProtocolVersion.v1_9, EntityType.WITHER_SKELETON.getDimensions()
),
EntityType.COW, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.9F, 1.3F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.COW).withChangingDimensions(0.9F, 1.3F).build(),
ProtocolVersion.v1_9, EntityType.COW.getDimensions()
),
EntityType.HORSE, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(1.4F, 1.6F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.HORSE).withChangingDimensions(1.4F, 1.6F).build(),
ProtocolVersion.v1_9, EntityType.HORSE.getDimensions()
),
EntityType.MOOSHROOM, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.9F, 1.3F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.MOOSHROOM).withChangingDimensions(0.9F, 1.3F).build(),
ProtocolVersion.v1_9, EntityType.MOOSHROOM.getDimensions()
),
EntityType.RABBIT, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.6F, 0.7F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.RABBIT).withChangingDimensions(0.6F, 0.7F).build(),
ProtocolVersion.v1_9, EntityType.RABBIT.getDimensions()
),
EntityType.SQUID, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.95F, 0.95F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.SQUID).withChangingDimensions(0.95F, 0.95F).build(),
ProtocolVersion.v1_9, EntityType.SQUID.getDimensions()
),
EntityType.VILLAGER, linkedHashMap(
ProtocolVersion.v1_8, EntityDimensions.changing(0.6F, 1.8F),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.VILLAGER).withChangingDimensions(0.6F, 1.8F).build(),
ProtocolVersion.v1_9, EntityType.VILLAGER.getDimensions()
),
EntityType.WOLF, linkedHashMap(
LegacyProtocolVersion.r1_1, EntityDimensions.changing(0.8F, 0.8F),
ProtocolVersion.v1_8, EntityDimensions.changing(0.6F, 0.8F),
LegacyProtocolVersion.r1_1, EntityDimensionsBuilder.create(EntityType.WOLF).withChangingDimensions(0.8F, 0.8F).build(),
ProtocolVersion.v1_8, EntityDimensionsBuilder.create(EntityType.WOLF).withChangingDimensions(0.6F, 0.8F).build(),
ProtocolVersion.v1_9, EntityType.WOLF.getDimensions()
),
EntityType.DRAGON_FIREBALL, linkedHashMap(
ProtocolVersion.v1_10, EntityDimensions.changing(0.3125F, 0.3125F),
ProtocolVersion.v1_10, EntityDimensionsBuilder.create(EntityType.DRAGON_FIREBALL).withChangingDimensions(0.3125F, 0.3125F).build(),
ProtocolVersion.v1_11, EntityType.DRAGON_FIREBALL.getDimensions()
),
EntityType.LEASH_KNOT, linkedHashMap(
ProtocolVersion.v1_16_4, EntityDimensions.changing(0.5F, 0.5F),
ProtocolVersion.v1_16_4, EntityDimensionsBuilder.create(EntityType.LEASH_KNOT).withChangingDimensions(0.5F, 0.5F).build(),
ProtocolVersion.v1_17, EntityType.LEASH_KNOT.getDimensions()
),
EntityType.SLIME, linkedHashMap(
ProtocolVersion.v1_13_2, EntityDimensions.changing(2F, 2F),
ProtocolVersion.v1_13_2, EntityDimensionsBuilder.create(EntityType.SLIME).withChangingDimensions(2F, 2F).build(),
ProtocolVersion.v1_14, EntityType.SLIME.getDimensions()
),
EntityType.MAGMA_CUBE, linkedHashMap(
ProtocolVersion.v1_13_2, EntityDimensions.changing(2F, 2F),
ProtocolVersion.v1_13_2, EntityDimensionsBuilder.create(EntityType.MAGMA_CUBE).withChangingDimensions(2F, 2F).build(),
ProtocolVersion.v1_14, EntityType.MAGMA_CUBE.getDimensions()
),
EntityType.ARROW, linkedHashMap(
LegacyProtocolVersion.c0_28toc0_30, EntityDimensions.changing(0.3F, 0.5F),
LegacyProtocolVersion.c0_28toc0_30, EntityDimensionsBuilder.create(EntityType.ARROW).withChangingDimensions(0.3F, 0.5F).build(),
LegacyProtocolVersion.a1_0_15, EntityType.ARROW.getDimensions()
)
);
@ -208,4 +210,49 @@ public class EntityDimensionDiff {
return closestDimensions;
}
private static class EntityDimensionsBuilder {
private EntityDimensions entityDimensions;
private EntityAttachments.Builder attachments = EntityAttachments.builder();
public static EntityDimensionsBuilder create() {
return new EntityDimensionsBuilder();
}
public static EntityDimensionsBuilder create(final EntityType<?> template) {
final EntityDimensionsBuilder entityDimensionsBuilder = new EntityDimensionsBuilder();
entityDimensionsBuilder.entityDimensions = template.getDimensions();
return entityDimensionsBuilder;
}
public EntityDimensionsBuilder withChangingDimensions(final float width, final float height) {
this.entityDimensions = new EntityDimensions(width, height, this.entityDimensions.eyeHeight(), this.entityDimensions.attachments(), false);
return this;
}
public EntityDimensionsBuilder withFixedDimensions(final float width, final float height) {
this.entityDimensions = new EntityDimensions(width, height, this.entityDimensions.eyeHeight(), this.entityDimensions.attachments(), true);
return this;
}
public EntityDimensionsBuilder withEyeHeight(final float eyeHeight) {
this.entityDimensions = this.entityDimensions.withEyeHeight(eyeHeight);
return this;
}
public EntityDimensionsBuilder withPassengerAttachments(final float... offsetYs) {
for (float f : offsetYs) {
this.attachments = this.attachments.add(EntityAttachmentType.PASSENGER, 0.0F, f, 0.0F);
}
this.entityDimensions = this.entityDimensions.withAttachments(this.attachments);
return this;
}
public EntityDimensions build() {
return this.entityDimensions;
}
}
}