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;
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;
}
}
}

View file

@ -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);
}