diff --git a/api/src/main/java/me/tofaa/entitylib/meta/MetaConverterRegistry.java b/api/src/main/java/me/tofaa/entitylib/meta/MetaConverterRegistry.java index 23a872b..2e9f11d 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/MetaConverterRegistry.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/MetaConverterRegistry.java @@ -32,6 +32,7 @@ import me.tofaa.entitylib.meta.other.*; import me.tofaa.entitylib.meta.projectile.*; import me.tofaa.entitylib.meta.types.LivingEntityMeta; +import me.tofaa.entitylib.meta.types.MannequinMeta; import me.tofaa.entitylib.meta.types.PlayerMeta; import org.jetbrains.annotations.NotNull; @@ -114,6 +115,7 @@ final class MetaConverterRegistry { put(LLAMA, LlamaMeta.class, LlamaMeta::new); put(LLAMA_SPIT, LlamaSpitMeta.class, LlamaSpitMeta::new); put(MAGMA_CUBE, MagmaCubeMeta.class, MagmaCubeMeta::new); + put(MANNEQUIN, MannequinMeta.class, MannequinMeta::new); put(MARKER, MarkerMeta.class, MarkerMeta::new); put(MOOSHROOM, MooshroomMeta.class, MooshroomMeta::new); put(MULE, MuleMeta.class, MuleMeta::new); diff --git a/api/src/main/java/me/tofaa/entitylib/meta/types/MannequinMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/types/MannequinMeta.java new file mode 100644 index 0000000..3076649 --- /dev/null +++ b/api/src/main/java/me/tofaa/entitylib/meta/types/MannequinMeta.java @@ -0,0 +1,46 @@ +package me.tofaa.entitylib.meta.types; + +import com.github.retrooper.packetevents.manager.server.ServerVersion; +import com.github.retrooper.packetevents.protocol.component.builtin.item.ItemProfile; +import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import me.tofaa.entitylib.meta.Metadata; +import net.kyori.adventure.text.Component; + +import java.util.Collections; +import java.util.Optional; + +public class MannequinMeta extends AvatarMeta { + + public static final byte OFFSET = AvatarMeta.MAX_OFFSET; + public static final byte MAX_OFFSET = OFFSET + 3; + + public MannequinMeta(int entityId, Metadata metadata) { + super(entityId, metadata); + isVersionNewer(ServerVersion.V_1_21_8); + } + + public ItemProfile getProfile() { + return super.metadata.getIndex(OFFSET, new ItemProfile(null, null, Collections.emptyList())); + } + + public void setProfile(ItemProfile value) { + super.metadata.setIndex(OFFSET, EntityDataTypes.RESOLVABLE_PROFILE, value); + } + + public boolean getImmovable() { + return super.metadata.getIndex(offset(OFFSET, 1), false); + } + + public void setImmovable(boolean value) { + super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.BOOLEAN, value); + } + + public Optional getDescription() { + return super.metadata.getIndex(offset(OFFSET, 2), Optional.empty()); + } + + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public void setDescription(Optional value) { + super.metadata.setIndex(offset(OFFSET, 2), EntityDataTypes.OPTIONAL_ADV_COMPONENT, value); + } +}