From 0d709013e248efc519b3a31b4091b3358003c6e8 Mon Sep 17 00:00:00 2001 From: Tofaa <82680183+Tofaa2@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:52:12 +0300 Subject: [PATCH] more metas to add --- .../entitylib/MetaConverterRegistry.java | 18 ++++ .../tofaa/entitylib/meta/mobs/GhastMeta.java | 25 ++++++ .../entitylib/meta/mobs/PhantomMeta.java | 24 +++++ .../meta/mobs/cuboid/MagmaCubeMeta.java | 13 +++ .../entitylib/meta/mobs/cuboid/SlimeMeta.java | 23 +++++ .../meta/mobs/horse/BaseHorseMeta.java | 82 +++++++++++++++++ .../meta/mobs/horse/ChestedHorseMeta.java | 24 +++++ .../entitylib/meta/mobs/horse/DonkeyMeta.java | 14 +++ .../entitylib/meta/mobs/horse/HorseMeta.java | 87 +++++++++++++++++++ .../entitylib/meta/mobs/horse/LlamaMeta.java | 48 ++++++++++ .../entitylib/meta/mobs/horse/MuleMeta.java | 13 +++ .../meta/mobs/horse/SkeletonHorseMeta.java | 13 +++ .../meta/mobs/horse/ZombieHorseMeta.java | 13 +++ .../entitylib/meta/mobs/tameable/CatMeta.java | 42 ++++++++- .../meta/mobs/tameable/ParrotMeta.java | 38 ++++++++ .../meta/mobs/tameable/WolfMeta.java | 40 +++++++++ 16 files changed, 513 insertions(+), 4 deletions(-) create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/GhastMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/PhantomMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/MagmaCubeMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/SlimeMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/BaseHorseMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/ChestedHorseMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/DonkeyMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/HorseMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/LlamaMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/MuleMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/SkeletonHorseMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/horse/ZombieHorseMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/tameable/ParrotMeta.java create mode 100644 src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java diff --git a/src/main/java/me/tofaa/entitylib/MetaConverterRegistry.java b/src/main/java/me/tofaa/entitylib/MetaConverterRegistry.java index f648e2a..6efc07a 100644 --- a/src/main/java/me/tofaa/entitylib/MetaConverterRegistry.java +++ b/src/main/java/me/tofaa/entitylib/MetaConverterRegistry.java @@ -4,6 +4,13 @@ import com.github.retrooper.packetevents.protocol.entity.type.EntityType; import me.tofaa.entitylib.meta.EntityMeta; import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.mobs.*; +import me.tofaa.entitylib.meta.mobs.DonkeyMeta; +import me.tofaa.entitylib.meta.mobs.cuboid.MagmaCubeMeta; +import me.tofaa.entitylib.meta.mobs.cuboid.SlimeMeta; +import me.tofaa.entitylib.meta.mobs.horse.*; +import me.tofaa.entitylib.meta.mobs.tameable.CatMeta; +import me.tofaa.entitylib.meta.mobs.tameable.ParrotMeta; +import me.tofaa.entitylib.meta.mobs.tameable.WolfMeta; import me.tofaa.entitylib.meta.projectile.SmallFireballMeta; import me.tofaa.entitylib.meta.projectile.ThrownEggMeta; import me.tofaa.entitylib.meta.projectile.ThrownExpBottleMeta; @@ -44,6 +51,17 @@ final class MetaConverterRegistry { put(FROG, FrogMeta::new); put(GOAT, GoatMeta::new); put(HOGLIN, HoglinMeta::new); + put(CAT, CatMeta::new); + put(PARROT, ParrotMeta::new); + put(WOLF, WolfMeta::new); + put(DONKEY, DonkeyMeta::new); + put(HORSE, HorseMeta::new); + put(LLAMA, LlamaMeta::new); + put(MULE, MuleMeta::new); + put(SKELETON_HORSE, SkeletonHorseMeta::new); + put(ZOMBIE_HORSE, ZombieHorseMeta::new); + put(SLIME, SlimeMeta::new); + put(MAGMA_CUBE, MagmaCubeMeta::new); } private void put(EntityType entityType, BiFunction function) { diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/GhastMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/GhastMeta.java new file mode 100644 index 0000000..6dfd0c2 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/GhastMeta.java @@ -0,0 +1,25 @@ +package me.tofaa.entitylib.meta.mobs; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.MobMeta; + +public class GhastMeta extends MobMeta { + + public static final byte OFFSET = MobMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public GhastMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + + public boolean isAttacking() { + return super.metadata.getIndex(OFFSET, false); + } + + public void setAttacking(boolean value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.BOOLEAN, value); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/PhantomMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/PhantomMeta.java new file mode 100644 index 0000000..ccc7202 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/PhantomMeta.java @@ -0,0 +1,24 @@ +package me.tofaa.entitylib.meta.mobs; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.MobMeta; + +public class PhantomMeta extends MobMeta { + + public static final byte OFFSET = MobMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public PhantomMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public int getSize() { + return super.metadata.getIndex(OFFSET, 0); + } + + public void setSize(int value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.INT, value); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/MagmaCubeMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/MagmaCubeMeta.java new file mode 100644 index 0000000..f2e96d1 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/MagmaCubeMeta.java @@ -0,0 +1,13 @@ +package me.tofaa.entitylib.meta.mobs.cuboid; + +import me.tofaa.entitylib.meta.Metadata; + +public class MagmaCubeMeta extends SlimeMeta { + + public static final byte OFFSET = SlimeMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 0; + + public MagmaCubeMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/SlimeMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/SlimeMeta.java new file mode 100644 index 0000000..ff6ed74 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/cuboid/SlimeMeta.java @@ -0,0 +1,23 @@ +package me.tofaa.entitylib.meta.mobs.cuboid; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.MobMeta; + +public class SlimeMeta extends MobMeta { + public static final byte OFFSET = MobMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public SlimeMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public int getSize() { + return super.metadata.getIndex(OFFSET, 0); + } + + public void setSize(int value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.INT, value); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/BaseHorseMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/BaseHorseMeta.java new file mode 100644 index 0000000..1dd8637 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/BaseHorseMeta.java @@ -0,0 +1,82 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.MobMeta; + +import java.util.Optional; +import java.util.UUID; + +public abstract class BaseHorseMeta extends MobMeta { + + public static final byte OFFSET = MobMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 2; + + private final static byte TAMED_BIT = 0x02; + private final static byte SADDLED_BIT = 0x04; + private final static byte HAS_BRED_BIT = 0x08; + private final static byte EATING_BIT = 0x10; + private final static byte REARING_BIT = 0x20; + private final static byte MOUTH_OPEN_BIT = 0x40; + + protected BaseHorseMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public boolean isTamed() { + return getMaskBit(OFFSET, TAMED_BIT); + } + + public void setTamed(boolean value) { + setMaskBit(OFFSET, TAMED_BIT, value); + } + + public boolean isSaddled() { + return getMaskBit(OFFSET, SADDLED_BIT); + } + + public void setSaddled(boolean value) { + setMaskBit(OFFSET, SADDLED_BIT, value); + } + + public boolean isHasBred() { + return getMaskBit(OFFSET, HAS_BRED_BIT); + } + + public void setHasBred(boolean value) { + setMaskBit(OFFSET, HAS_BRED_BIT, value); + } + + public boolean isEating() { + return getMaskBit(OFFSET, EATING_BIT); + } + + public void setEating(boolean value) { + setMaskBit(OFFSET, EATING_BIT, value); + } + + public boolean isRearing() { + return getMaskBit(OFFSET, REARING_BIT); + } + + public void setRearing(boolean value) { + setMaskBit(OFFSET, REARING_BIT, value); + } + + public boolean isMouthOpen() { + return getMaskBit(OFFSET, MOUTH_OPEN_BIT); + } + + public void setMouthOpen(boolean value) { + setMaskBit(OFFSET, MOUTH_OPEN_BIT, value); + } + + public Optional getOwner() { + return super.metadata.getIndex(offset(OFFSET, 1), Optional.empty()); + } + + public void setOwner(UUID value) { + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.OPTIONAL_UUID, Optional.of(value)); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ChestedHorseMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ChestedHorseMeta.java new file mode 100644 index 0000000..596d443 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ChestedHorseMeta.java @@ -0,0 +1,24 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; + +public class ChestedHorseMeta extends BaseHorseMeta { + + public static final byte OFFSET = BaseHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public ChestedHorseMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public boolean isHasChest() { + return super.metadata.getIndex(OFFSET, false); + } + + public void setHasChest(boolean value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.BOOLEAN, value); + } + + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/DonkeyMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/DonkeyMeta.java new file mode 100644 index 0000000..d398ced --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/DonkeyMeta.java @@ -0,0 +1,14 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.MobMeta; + +public class DonkeyMeta extends ChestedHorseMeta{ + + public static final byte OFFSET = MobMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 0; + + public DonkeyMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/HorseMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/HorseMeta.java new file mode 100644 index 0000000..246aeb7 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/HorseMeta.java @@ -0,0 +1,87 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import org.jetbrains.annotations.NotNull; + +public class HorseMeta extends BaseHorseMeta { + + public static final byte OFFSET = BaseHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public HorseMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public Variant getVariant() { + return getVariantFromID(super.metadata.getIndex(OFFSET, 0)); + } + + public void setVariant(Variant variant) { + super.metadata.setIndex(OFFSET, EntityDataTypes.INT, getVariantID(variant.marking, variant.color)); + } + + public static int getVariantID(@NotNull Marking marking, @NotNull Color color) { + return (marking.ordinal() << 8) + color.ordinal(); + } + + public static Variant getVariantFromID(int variantID) { + return new Variant( + Marking.VALUES[variantID >> 8], + Color.VALUES[variantID & 0xFF] + ); + } + + public static class Variant { + + private Marking marking; + private Color color; + + public Variant(@NotNull Marking marking, @NotNull Color color) { + this.marking = marking; + this.color = color; + } + + @NotNull + public Marking getMarking() { + return this.marking; + } + + public void setMarking(@NotNull Marking marking) { + this.marking = marking; + } + + @NotNull + public Color getColor() { + return this.color; + } + + public void setColor(@NotNull Color color) { + this.color = color; + } + + } + + public enum Marking { + NONE, + WHITE, + WHITE_FIELD, + WHITE_DOTS, + BLACK_DOTS; + + private final static Marking[] VALUES = values(); + } + + public enum Color { + WHITE, + CREAMY, + CHESTNUT, + BROWN, + BLACK, + GRAY, + DARK_BROWN; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/LlamaMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/LlamaMeta.java new file mode 100644 index 0000000..053848e --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/LlamaMeta.java @@ -0,0 +1,48 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; + +public class LlamaMeta extends ChestedHorseMeta{ + + public static final byte OFFSET = ChestedHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 3; + + public LlamaMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public int getStrength() { + return super.metadata.getIndex(OFFSET, 0); + } + + public void setStrength(int value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.INT, value); + } + + public int getCarpetColor() { + return super.metadata.getIndex(offset(OFFSET, 1), -1); + } + + public void setCarpetColor(int value) { + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.INT, value); + } + + public Variant getVariant() { + return Variant.VALUES[super.metadata.getIndex(offset(OFFSET, 2), 0)]; + } + + public void setVariant(Variant value) { + super.metadata.setIndex(offset(OFFSET, 2), EntityDataTypes.INT, value.ordinal()); + } + + public enum Variant { + CREAMY, + WHITE, + BROWN, + GRAY; + + private final static Variant[] VALUES = values(); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/MuleMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/MuleMeta.java new file mode 100644 index 0000000..f5c6b4e --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/MuleMeta.java @@ -0,0 +1,13 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import me.tofaa.entitylib.meta.Metadata; + +public class MuleMeta extends ChestedHorseMeta{ + + public static final byte OFFSET = ChestedHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 0; + + public MuleMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/SkeletonHorseMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/SkeletonHorseMeta.java new file mode 100644 index 0000000..fb4d1c4 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/SkeletonHorseMeta.java @@ -0,0 +1,13 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import me.tofaa.entitylib.meta.Metadata; + +public class SkeletonHorseMeta extends BaseHorseMeta { + + public static final byte OFFSET = BaseHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 0; + + public SkeletonHorseMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ZombieHorseMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ZombieHorseMeta.java new file mode 100644 index 0000000..b0c42f1 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/horse/ZombieHorseMeta.java @@ -0,0 +1,13 @@ +package me.tofaa.entitylib.meta.mobs.horse; + +import me.tofaa.entitylib.meta.Metadata; + +public class ZombieHorseMeta extends BaseHorseMeta { + + public static final byte OFFSET = BaseHorseMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 0; + + public ZombieHorseMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java index 80e1181..2dde774 100644 --- a/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/CatMeta.java @@ -1,23 +1,57 @@ package me.tofaa.entitylib.meta.mobs.tameable; +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; +import me.tofaa.entitylib.extras.DyeColor; import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.types.TameableMeta; import net.kyori.adventure.text.format.NamedTextColor; +import org.jetbrains.annotations.NotNull; public class CatMeta extends TameableMeta { public static final byte OFFSET = TameableMeta.MAX_OFFSET; public static final byte MAX_OFFSET = OFFSET + 4; - private static final NamedTextColor[] COLORS = new NamedTextColor[] { - NamedTextColor.BLACK, NamedTextColor.RED, NamedTextColor.WHITE, NamedTextColor.YELLOW, NamedTextColor.GRAY, - NamedTextColor.WHITE, - }; + private static final DyeColor[] COLORS = DyeColor.values(); public CatMeta(int entityId, Metadata metadata) { super(entityId, metadata); } + @NotNull + public CatMeta.Variant getVariant() { + return super.metadata.getIndex(OFFSET, Variant.BLACK); + } + + public void setVariant(@NotNull CatMeta.Variant value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.CAT_VARIANT, value.ordinal()); + } + + public boolean isLying() { + return super.metadata.getIndex(offset(OFFSET, 1), false); + } + + public void setLying(boolean value) { + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.BOOLEAN, value); + } + + public boolean isRelaxed() { + return super.metadata.getIndex(offset(OFFSET, 2), false); + } + + public void setRelaxed(boolean value) { + super.metadata.setIndex(offset(OFFSET, 2), EntityDataTypes.BOOLEAN, value); + } + + public @NotNull DyeColor getCollarColor() { + return COLORS[super.metadata.getIndex(offset(OFFSET, 3), DyeColor.RED.ordinal())]; + } + + public void setCollarColor(@NotNull DyeColor value) { + super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.INT, value.ordinal()); + } + public enum Variant { TABBY, diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/ParrotMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/ParrotMeta.java new file mode 100644 index 0000000..6e62668 --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/ParrotMeta.java @@ -0,0 +1,38 @@ +package me.tofaa.entitylib.meta.mobs.tameable; + +import com.github.retrooper.packetevents.manager.server.ServerVersion; +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.TameableMeta; +import org.jetbrains.annotations.NotNull; + +public class ParrotMeta extends TameableMeta { + + public static final byte OFFSET = TameableMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 1; + + public ParrotMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + isVersionNewer(ServerVersion.V_1_14); + } + + @NotNull + public Color getColor() { + return Color.VALUES[super.metadata.getIndex(OFFSET, 0)]; + } + + public void setColor(@NotNull Color value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.INT, value.ordinal()); + } + + public enum Color { + RED_BLUE, + BLUE, + GREEN, + YELLOW_BLUE, + GREY; + + private final static Color[] VALUES = values(); + } + +} diff --git a/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java new file mode 100644 index 0000000..e051e6f --- /dev/null +++ b/src/main/java/me/tofaa/entitylib/meta/mobs/tameable/WolfMeta.java @@ -0,0 +1,40 @@ +package me.tofaa.entitylib.meta.mobs.tameable; + +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import me.tofaa.entitylib.meta.types.TameableMeta; + +public class WolfMeta extends TameableMeta { + + public static final byte OFFSET = TameableMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 3; + + public WolfMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public boolean isBegging() { + return super.metadata.getIndex(OFFSET, false); + } + + public void setBegging(boolean value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.BOOLEAN, value); + } + + public int getCollarColor() { + return super.metadata.getIndex(offset(OFFSET, 1), 14); + } + + public void setCollarColor(int value) { + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.INT, value); + } + + public int getAngerTime() { + return super.metadata.getIndex(offset(OFFSET, 2), 0); + } + + public void setAngerTime(int value) { + super.metadata.setIndex(offset(OFFSET, 2), EntityDataTypes.INT, value); + } + +}