diff --git a/api/src/main/java/me/tofaa/entitylib/meta/types/AvatarMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/types/AvatarMeta.java new file mode 100644 index 0000000..2455577 --- /dev/null +++ b/api/src/main/java/me/tofaa/entitylib/meta/types/AvatarMeta.java @@ -0,0 +1,108 @@ +package me.tofaa.entitylib.meta.types; + +import com.github.retrooper.packetevents.manager.server.ServerVersion; +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.EntityLib; +import me.tofaa.entitylib.meta.Metadata; + +public class AvatarMeta extends LivingEntityMeta { + + public static final byte OFFSET = LivingEntityMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 2; + + private static final byte CAPE_BIT = 0x01; + private static final byte JACKET_BIT = 0x02; + private static final byte LEFT_SLEEVE_BIT = 0x04; + private static final byte RIGHT_SLEEVE_BIT = 0x08; + private static final byte LEFT_LEG_BIT = 0x10; + private static final byte RIGHT_LEG_BIT = 0x20; + private static final byte HAT_BIT = 0x40; + + public AvatarMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + } + + public boolean isRightHandMain() { + if (EntityLib.getApi().getPacketEvents().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_9)) { + return true; + } + return super.metadata.getIndex(OFFSET, (byte) 1) == (byte) 1; + } + + public void setRightHandMain(boolean value) { + if (EntityLib.getApi().getPacketEvents().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_9)) { + return; + } + super.metadata.setIndex(OFFSET, EntityDataTypes.BYTE, (byte) (value ? 1 : 0)); + } + + public boolean isCapeEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), CAPE_BIT); + } + + public void setCapeEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), CAPE_BIT, value); + } + + public boolean isJacketEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), JACKET_BIT); + } + + public void setJacketEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), JACKET_BIT, value); + } + + public boolean isLeftSleeveEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), LEFT_SLEEVE_BIT); + } + + public void setLeftSleeveEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), LEFT_SLEEVE_BIT, value); + } + + public boolean isRightSleeveEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), RIGHT_SLEEVE_BIT); + } + + public void setRightSleeveEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), RIGHT_SLEEVE_BIT, value); + } + + public boolean isLeftLegEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), LEFT_LEG_BIT); + } + + public void setLeftLegEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), LEFT_LEG_BIT, value); + } + + public boolean isRightLegEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), RIGHT_LEG_BIT); + } + + public void setRightLegEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), RIGHT_LEG_BIT, value); + } + + public boolean isHatEnabled() { + isVersionNewer(ServerVersion.V_1_9); + return getMaskBit(offset(OFFSET, 1), HAT_BIT); + } + + public void setHatEnabled(boolean value) { + isVersionNewer(ServerVersion.V_1_9); + setMaskBit(offset(OFFSET, 1), HAT_BIT, value); + } +} diff --git a/api/src/main/java/me/tofaa/entitylib/meta/types/PlayerMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/types/PlayerMeta.java index 529b0a3..782f993 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/types/PlayerMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/types/PlayerMeta.java @@ -3,22 +3,13 @@ import com.github.retrooper.packetevents.manager.server.ServerVersion; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; import com.github.retrooper.packetevents.protocol.nbt.NBTCompound; -import me.tofaa.entitylib.EntityLib; import me.tofaa.entitylib.meta.Metadata; import org.jetbrains.annotations.Nullable; -public class PlayerMeta extends LivingEntityMeta { +public class PlayerMeta extends AvatarMeta { - public static final byte OFFSET = LivingEntityMeta.MAX_OFFSET; - public static final byte MAX_OFFSET = OFFSET + 1; - - private final static byte CAPE_BIT = 0x01; - private final static byte JACKET_BIT = 0x02; - private final static byte LEFT_SLEEVE_BIT = 0x04; - private final static byte RIGHT_SLEEVE_BIT = 0x08; - private final static byte LEFT_LEG_BIT = 0x10; - private final static byte RIGHT_LEG_BIT = 0x20; - private final static byte HAT_BIT = 0x40; + public static final byte OFFSET = AvatarMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 4; public PlayerMeta(int entityId, Metadata metadata) { super(entityId, metadata); @@ -33,115 +24,31 @@ public void setAdditionalHearts(float value) { } public int getScore() { - return super.metadata.getIndex(offset(OFFSET,1), 0); + return super.metadata.getIndex(offset(OFFSET, 1), 0); } public void setScore(int value) { - super.metadata.setIndex(offset(OFFSET,1), EntityDataTypes.INT, value); - } - - public boolean isCapeEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), CAPE_BIT); - } - - public void setCapeEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), CAPE_BIT, value); - } - - public boolean isJacketEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), JACKET_BIT); - } - - public void setJacketEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), JACKET_BIT, value); - } - - public boolean isLeftSleeveEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), LEFT_SLEEVE_BIT); - } - - public void setLeftSleeveEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), LEFT_SLEEVE_BIT, value); - } - - public boolean isRightSleeveEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), RIGHT_SLEEVE_BIT); - } - - public void setRightSleeveEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), RIGHT_SLEEVE_BIT, value); - } - - public boolean isLeftLegEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), LEFT_LEG_BIT); - } - - public void setLeftLegEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), LEFT_LEG_BIT, value); - } - - public boolean isRightLegEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), RIGHT_LEG_BIT); - } - - public void setRightLegEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), RIGHT_LEG_BIT, value); - } - - public boolean isHatEnabled() { - isVersionNewer(ServerVersion.V_1_9); - return getMaskBit(offset(OFFSET,2), HAT_BIT); - } - - public void setHatEnabled(boolean value) { - isVersionNewer(ServerVersion.V_1_9); - setMaskBit(offset(OFFSET,2), HAT_BIT, value); - } - - public boolean isRightHandMain() { - if (EntityLib.getApi().getPacketEvents().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_9)) { - return true; - } - return super.metadata.getIndex(offset(OFFSET,3), (byte) 1) == (byte) 1; - } - - public void setRightHandMain(boolean value) { - if (EntityLib.getApi().getPacketEvents().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_9)) { - return; - } - super.metadata.setIndex(offset(OFFSET,3), EntityDataTypes.BYTE, (byte) (value ? 1 : 0)); + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.INT, value); } public @Nullable NBTCompound getLeftShoulderData() { isVersionNewer(ServerVersion.V_1_11); - return super.metadata.getIndex(offset(OFFSET,4), null); + return super.metadata.getIndex(offset(OFFSET, 2), null); } public void setLeftShoulderData(@Nullable NBTCompound value) { - if (value == null) value = new NBTCompound(); - super.metadata.setIndex(offset(OFFSET,4), EntityDataTypes.NBT, value); + isVersionNewer(ServerVersion.V_1_11); + super.metadata.setIndex(offset(OFFSET, 2), EntityDataTypes.NBT, value); } public @Nullable NBTCompound getRightShoulderData() { isVersionNewer(ServerVersion.V_1_11); - return super.metadata.getIndex(offset(OFFSET,5), null); + return super.metadata.getIndex(offset(OFFSET, 3), null); } public void setRightShoulderData(@Nullable NBTCompound value) { + isVersionNewer(ServerVersion.V_1_11); if (value == null) value = new NBTCompound(); - super.metadata.setIndex(offset(OFFSET,5), EntityDataTypes.NBT, value); + super.metadata.setIndex(offset(OFFSET, 3), EntityDataTypes.NBT, value); } - }