Merge pull request #43 from steveb05/fix/use-variant-registry

Use registry for cat and wolf variant
This commit is contained in:
Tofaa 2025-08-20 04:21:28 +04:00 committed by GitHub
commit 598d71fa30
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 49 additions and 15 deletions

View file

@ -1,5 +1,7 @@
package me.tofaa.entitylib.meta.mobs.tameable; 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 com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes;
import me.tofaa.entitylib.extras.DyeColor; import me.tofaa.entitylib.extras.DyeColor;
import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.Metadata;
@ -20,11 +22,12 @@ public class CatMeta extends TameableMeta {
@NotNull @NotNull
public CatMeta.Variant getVariant() { 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) { 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() { public boolean isLying() {
@ -51,21 +54,40 @@ public class CatMeta extends TameableMeta {
super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.INT, value.ordinal()); super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.INT, value.ordinal());
} }
public enum Variant { public enum Variant {
TABBY, ALL_BLACK(CatVariants.ALL_BLACK),
BLACK, BLACK(CatVariants.BLACK),
RED, BRITISH_SHORTHAIR(CatVariants.BRITISH_SHORTHAIR),
SIAMESE, CALICO(CatVariants.CALICO),
BRITISH_SHORTHAIR, JELLIE(CatVariants.JELLIE),
CALICO, PERSIAN(CatVariants.PERSIAN),
PERSIAN, RAGDOLL(CatVariants.RAGDOLL),
RAGDOLL, RED(CatVariants.RED),
WHITE, SIAMESE(CatVariants.SIAMESE),
JELLIE, TABBY(CatVariants.TABBY),
ALL_BLACK; WHITE(CatVariants.WHITE);
private final CatVariant catVariant;
Variant(final CatVariant catVariant) {
this.catVariant = catVariant;
}
private static final Variant[] VALUES = values(); 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;
}
} }
} }

View file

@ -1,19 +1,31 @@
package me.tofaa.entitylib.meta.mobs.tameable; package me.tofaa.entitylib.meta.mobs.tameable;
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; 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.extras.DyeColor;
import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.Metadata;
import me.tofaa.entitylib.meta.types.TameableMeta; import me.tofaa.entitylib.meta.types.TameableMeta;
import org.jetbrains.annotations.NotNull;
public class WolfMeta extends TameableMeta { public class WolfMeta extends TameableMeta {
public static final byte OFFSET = TameableMeta.MAX_OFFSET; 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) { public WolfMeta(int entityId, Metadata metadata) {
super(entityId, 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() { public boolean isBegging() {
return super.metadata.getIndex(OFFSET, false); return super.metadata.getIndex(OFFSET, false);
} }