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..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 @@ -1,11 +1,12 @@ 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; - import java.util.Optional; +import org.jetbrains.annotations.Nullable; public class EndermanMeta extends MobMeta { @@ -24,6 +25,20 @@ 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) { + if (blockState == null) { + setCarriedBlockID(null); + return; + } + setCarriedBlockID(blockState.getGlobalId()); + } + public boolean isScreaming() { return super.metadata.getIndex(offset(OFFSET, 1), false); } @@ -33,7 +48,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..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 @@ -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 setBlockState(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()); + } + }