Jump to content

forgemachine86

Members
  • Posts

    2
  • Joined

forgemachine86's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Oh whoops this should have been on the main forum instead of the sub-forum.
  2. I am attempting to get the BeehiveBlockEntity object that the player is looking at. I want to display its properties to the player on the F3 debug screen. I am using a mixin in the DebugScreenOverlay class at the getCustomSystemInformation method. In the following code, beeCount is always 0 and isFull and isEmpty are respectively always false and true. This is even when there are bees inhabiting the hives. Running /data get block <x> <y> <z> shows that the hive is occupied and shows the NBT of the hive and the bees within. But, the code does not log the NBT of any of the bees. What would be the proper way to access the BeehiveBlockEntity from the client and get its properties? Ex: @Mixin(DebugScreenOverlay.class) public class DebugScreenOverlayMixin extends GuiComponent { // Directly reference a slf4j logger private static final Logger LOGGER = LogUtils.getLogger(); /** * Add more information into the right-hand menu of the F3 debug screen * * @param cir The mixin object to return the strings we get * @param i Runtime max memory * @param j Runtime total memory * @param k Runtime free memory * @param l Runtime used memory * @param list The list of strings to render * @param entity The entity under the crosshair, null if none */ @Inject(remap = false, method = "getSystemInformation", at = @At(value = "RETURN", ordinal = 1), cancellable = true, locals = LocalCapture.CAPTURE_FAILHARD) public void getCustomSystemInformation(CallbackInfoReturnable<List<String>> cir, long i, long j, long k, long l, List<String> list, Entity entity) { Minecraft mc = Minecraft.getInstance(); HitResult hitResult = mc.hitResult; LocalPlayer player = mc.player; DebugScreenOverlay currObj = (DebugScreenOverlay)(Object)this; if (hitResult != null && hitResult.getType() != HitResult.Type.MISS) { if (currObj.block.getType() == HitResult.Type.BLOCK) { BlockPos blockPos = ((BlockHitResult) hitResult).getBlockPos(); BlockState blockState = mc.level.getBlockState(blockPos); BlockEntity blockEntity = player.level.getBlockEntity(blockPos); if (blockState.hasBlockEntity()) { if (blockEntity instanceof BeehiveBlockEntity beehiveBlockEntity) { LOGGER.info(beehiveBlockEntity.serializeNBT().toString()); int pos = list.indexOf(ChatFormatting.UNDERLINE + "Targeted Block: " + blockPos.getX() + ", " + blockPos.getY() + ", " + blockPos.getZ()); list.add(pos + 2, "bee count: " + beehiveBlockEntity.getOccupantCount()); list.add(pos + 3, "is full: " + beehiveBlockEntity.isFull()); list.add(pos + 4, "is empty: " + beehiveBlockEntity.isEmpty()); list.add(pos + 5, "is fire nearby: " + beehiveBlockEntity.isFireNearby()); list.add(pos + 6, "is sedated: " + beehiveBlockEntity.isSedated()); } } } } } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.