From 56e64cde5b11ad7942f0dd0fc261323b973ea07f Mon Sep 17 00:00:00 2001 From: huanmeng-qwq <1871735932@qq.com> Date: Sun, 20 Jul 2025 18:51:40 +0800 Subject: [PATCH 1/2] feat: Add entity meta support for WrappedBlockState. --- .../entitylib/meta/display/BlockDisplayMeta.java | 9 +++++++++ .../entitylib/meta/mobs/monster/EndermanMeta.java | 14 +++++++++++++- .../entitylib/meta/other/FallingBlockMeta.java | 10 ++++++++++ .../me/tofaa/entitylib/meta/other/TntMeta.java | 11 +++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/me/tofaa/entitylib/meta/display/BlockDisplayMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/display/BlockDisplayMeta.java index 5d1ff50..70d45c3 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/display/BlockDisplayMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/display/BlockDisplayMeta.java @@ -1,6 +1,8 @@ package me.tofaa.entitylib.meta.display; +import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState; import me.tofaa.entitylib.meta.Metadata; public class BlockDisplayMeta extends AbstractDisplayMeta { @@ -20,4 +22,11 @@ public class BlockDisplayMeta extends AbstractDisplayMeta { super.metadata.setIndex(OFFSET, EntityDataTypes.BLOCK_STATE, blockId); } + public WrappedBlockState getBlockState() { + return WrappedBlockState.getByGlobalId(PacketEvents.getAPI().getServerManager().getVersion().toClientVersion(), getBlockId()); + } + + public void setBlockState(WrappedBlockState blockState) { + setBlockId(blockState.getGlobalId()); + } } diff --git a/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java index 0ba5c73..690386b 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java @@ -1,6 +1,8 @@ package me.tofaa.entitylib.meta.mobs.monster; +import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState; import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.types.MobMeta; import org.jetbrains.annotations.Nullable; @@ -24,6 +26,16 @@ public class EndermanMeta extends MobMeta { super.metadata.setIndex(OFFSET, EntityDataTypes.OPTIONAL_INT, Optional.ofNullable(value)); } + public WrappedBlockState getCarriedBlockState() { + Integer carriedBlockID = getCarriedBlockID(); + if (carriedBlockID == null) return null; + return WrappedBlockState.getByGlobalId(PacketEvents.getAPI().getServerManager().getVersion().toClientVersion(), carriedBlockID); + } + + public void setCarriedBlockState(WrappedBlockState blockState) { + setCarriedBlockID(blockState.getGlobalId()); + } + public boolean isScreaming() { return super.metadata.getIndex(offset(OFFSET, 1), false); } @@ -33,7 +45,7 @@ public class EndermanMeta extends MobMeta { } public boolean isStaring() { - return super.metadata.getIndex(offset(OFFSET, 2), false); + return super.metadata.getIndex(offset(OFFSET, 2), false); } public void setStaring(boolean value) { diff --git a/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java index ff556ff..6c1819b 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java @@ -1,6 +1,8 @@ package me.tofaa.entitylib.meta.other; +import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState; import com.github.retrooper.packetevents.util.Vector3i; import me.tofaa.entitylib.meta.EntityMeta; import me.tofaa.entitylib.meta.Metadata; @@ -34,6 +36,14 @@ public class FallingBlockMeta extends EntityMeta implements ObjectData { this.blockStateId = blockStateId; } + public WrappedBlockState getBlockState() { + return WrappedBlockState.getByGlobalId(PacketEvents.getAPI().getServerManager().getVersion().toClientVersion(), getBlockStateId()); + } + + public void setBlockStateId(WrappedBlockState blockState) { + setBlockStateId(blockState.getGlobalId()); + } + @Override public int getObjectData() { return blockStateId; diff --git a/api/src/main/java/me/tofaa/entitylib/meta/other/TntMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/other/TntMeta.java index e79ed56..ee155aa 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/other/TntMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/other/TntMeta.java @@ -1,6 +1,8 @@ package me.tofaa.entitylib.meta.other; +import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; +import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState; import com.github.retrooper.packetevents.protocol.world.states.type.StateTypes; import me.tofaa.entitylib.meta.EntityMeta; import me.tofaa.entitylib.meta.Metadata; @@ -28,4 +30,13 @@ public class TntMeta extends EntityMeta { public void setBlockData(int blockData) { super.metadata.setIndex(offset(OFFSET, 1), EntityDataTypes.BLOCK_STATE, blockData); } + + public WrappedBlockState getBlockState() { + return WrappedBlockState.getByGlobalId(PacketEvents.getAPI().getServerManager().getVersion().toClientVersion(), getBlockData()); + } + + public void setBlockState(WrappedBlockState blockState) { + setBlockData(blockState.getGlobalId()); + } + } From 64021bb0dc109d81d04119d22756ffa81f828e88 Mon Sep 17 00:00:00 2001 From: huanmeng-qwq <1871735932@qq.com> Date: Sun, 20 Jul 2025 18:57:01 +0800 Subject: [PATCH 2/2] update --- .../me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java | 7 +++++-- .../me/tofaa/entitylib/meta/other/FallingBlockMeta.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java index 690386b..bebef25 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/mobs/monster/EndermanMeta.java @@ -5,9 +5,8 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; import com.github.retrooper.packetevents.protocol.world.states.WrappedBlockState; import me.tofaa.entitylib.meta.Metadata; import me.tofaa.entitylib.meta.types.MobMeta; -import org.jetbrains.annotations.Nullable; - import java.util.Optional; +import org.jetbrains.annotations.Nullable; public class EndermanMeta extends MobMeta { @@ -33,6 +32,10 @@ public class EndermanMeta extends MobMeta { } public void setCarriedBlockState(WrappedBlockState blockState) { + if (blockState == null) { + setCarriedBlockID(null); + return; + } setCarriedBlockID(blockState.getGlobalId()); } diff --git a/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java b/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java index 6c1819b..c7e979a 100644 --- a/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java +++ b/api/src/main/java/me/tofaa/entitylib/meta/other/FallingBlockMeta.java @@ -40,7 +40,7 @@ public class FallingBlockMeta extends EntityMeta implements ObjectData { return WrappedBlockState.getByGlobalId(PacketEvents.getAPI().getServerManager().getVersion().toClientVersion(), getBlockStateId()); } - public void setBlockStateId(WrappedBlockState blockState) { + public void setBlockState(WrappedBlockState blockState) { setBlockStateId(blockState.getGlobalId()); }