diff --git a/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java index 5dae395..3251583 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java @@ -1,5 +1,7 @@ package me.tofaa.entitylib.meta.mobs.tameable; +import com.github.retrooper.packetevents.protocol.entity.cat.CatVariant; +import com.github.retrooper.packetevents.protocol.entity.cat.CatVariants; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; import me.tofaa.entitylib.extras.DyeColor; import me.tofaa.entitylib.meta.Metadata; @@ -20,11 +22,12 @@ public class CatMeta extends TameableMeta { @NotNull public CatMeta.Variant getVariant() { - return super.metadata.getIndex(OFFSET, Variant.BLACK); + final CatVariant catVariant = super.metadata.getIndex(OFFSET, CatVariants.BLACK); + return Variant.fromCatVariant(catVariant); } public void setVariant(@NotNull CatMeta.Variant value) { - super.metadata.setIndex(OFFSET, EntityDataTypes.CAT_VARIANT, value.ordinal()); + super.metadata.setIndex(OFFSET, EntityDataTypes.TYPED_CAT_VARIANT, value.getCatVariant()); } public boolean isLying() { @@ -51,21 +54,40 @@ public class CatMeta extends TameableMeta { super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.INT, value.ordinal()); } - public enum Variant { - TABBY, - BLACK, - RED, - SIAMESE, - BRITISH_SHORTHAIR, - CALICO, - PERSIAN, - RAGDOLL, - WHITE, - JELLIE, - ALL_BLACK; + ALL_BLACK(CatVariants.ALL_BLACK), + BLACK(CatVariants.BLACK), + BRITISH_SHORTHAIR(CatVariants.BRITISH_SHORTHAIR), + CALICO(CatVariants.CALICO), + JELLIE(CatVariants.JELLIE), + PERSIAN(CatVariants.PERSIAN), + RAGDOLL(CatVariants.RAGDOLL), + RED(CatVariants.RED), + SIAMESE(CatVariants.SIAMESE), + TABBY(CatVariants.TABBY), + WHITE(CatVariants.WHITE); + + private final CatVariant catVariant; + + Variant(final CatVariant catVariant) { + this.catVariant = catVariant; + } private static final Variant[] VALUES = values(); + + public CatVariant getCatVariant() { + return catVariant; + } + + @NotNull + public static Variant fromCatVariant(@NotNull final CatVariant catVariant) { + for (final Variant variant : VALUES) { + if (variant.getCatVariant().equals(catVariant)) { + return variant; + } + } + return BLACK; + } } } diff --git a/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java index 5035476..d63e5a8 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java @@ -1,19 +1,31 @@ package me.tofaa.entitylib.meta.mobs.tameable; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.entity.wolfvariant.WolfVariant; +import com.github.retrooper.packetevents.protocol.entity.wolfvariant.WolfVariants; import me.tofaa.entitylib.extras.DyeColor; import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.types.TameableMeta; +import org.jetbrains.annotations.NotNull; public class WolfMeta extends TameableMeta { public static final byte OFFSET = TameableMeta.MAX_OFFSET; - public static final byte MAX_OFFSET = OFFSET + 3; + public static final byte MAX_OFFSET = OFFSET + 5; public WolfMeta(int entityId, Metadata metadata) { super(entityId, metadata); } + @NotNull + public WolfVariant getVariant() { + return super.metadata.getIndex(offset(OFFSET, 3), WolfVariants.PALE); + } + + public void setVariant(@NotNull WolfVariant value) { + super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.TYPED_WOLF_VARIANT, value); + } + public boolean isBegging() { return super.metadata.getIndex(OFFSET, false); }