Jump to content

MSpace-Dev

Members
  • Posts

    180
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by MSpace-Dev

  1. Do not make your classes implement IHasBlockModel.Refer here. (Code-Style, #3) Register your items/blocks like this instead. @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> event) { event.getRegistry().registerAll(ModBlocks.BLOCKS); Utils.getLogger().info("Blocks Registered"); } @SubscribeEvent public static void registerItems(RegistryEvent.Register<Item> event) { event.getRegistry().registerAll(ModItems.ITEMS); for (Block block : ModBlocks.BLOCKS) { event.getRegistry().register(new ItemBlock(block).setRegistryName(block.getRegistryName()).setUnlocalizedName(block.getUnlocalizedName())); } Utils.getLogger().info("Items Registered"); } @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { for (Block block : ModBlocks.BLOCKS) { ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory")); } for (Item item : ModItems.ITEMS) { ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory")); } Utils.getLogger().info("Models Registered"); }
  2. Do you have the project on Github for further inspection?
  3. I might be wrong, but mustn't shrink(int) be called on both the server and client? I think your client is not updating the values, but it has actually happened server-side. Looks like you may have to use a packet to notify the client.
  4. Oh, never knew that class existed! That simplifies things so much more. I was detecting right-click on the server -> sending a packet to client to get translated -> constructed ITextComponent -> to display to the player. This is a much simpler option, thanks.
  5. That's because you just copy-pasted what I put there.. Caused by: java.io.FileNotFoundException: modid:models/block.json You have to put YOUR modid where modid is, and YOUR block name where block is. { "parent": "ffactory:block/copper_chest" } for example... ^
  6. I'm not sending IComponentText in my first packet, that gets constructed in the onMessage() function. I send my TileEntity in the first packet. Am I missing something here? Not sure what a Chat Packet is exactly
  7. When a player right clicks a block, they get information about it outputted to the chat. I want that to accept all translations my mod supports. I've tried to send a packet back, but I can not figure out for the life of me how to send it back to the same player that activated the block.
  8. Looks like an asset problem. https://github.com/Gamerstone/FFactory/blob/master/resources/assets/ffactory/models/item/copper_chest.json#L1-L6 https://github.com/Gamerstone/FFactory/blob/master/resources/assets/ffactory/models/item/iron_chest.json#L1-L6 Your item model JSON can simply be: (For blocks!) { "parent": "modid:block" } If it's an item texture, then your current method is just fine.
  9. Hey all, I am trying to return an ITextComponent from the client to the server again. The reason I need to do this is so that I can use the i18n class to do some translations client side, and then send that message to the player server side. I have the bulk of it working, just need to figure out how to get a return from a packet. My onMessage function @Override public IMessage onMessage(PacketRetrieveTileData message, MessageContext ctx) { TileEntityBlockBase tile = message.tile; ITextComponent component = new TextComponentString(""); component.appendText("\n" + I18n.format("translate.key.here")); // RETURN CHAT COMPONENT BACK TO PLAYER THAT SENT INITIAL PACKET return null; } How I send the packet: @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if (!world.isRemote) { TileEntityBlockBase tile = world.getTileEntity(pos); // Tile entity null checks, etc, etc... PacketDispatcher.sendTileData(tile, (EntityPlayerMP) player); // <- Packet is sent here } return true; } I want to do something like this: ITextComponent component = PacketDispatcher.sendTileData(tile, (EntityPlayerMP) player); Is that possible? ^^
  10. I've come up with a way to optimise this heavily. I will completely remove the search for tile entities, and instead store the TE's location (when it's placed) that can simply be referenced/compared to later. Hope this very specific solution comes in handy for others.
  11. Hey all, This code of mine is causing cascading worldgen. I'm lead to believe that the getTileEntityMap() call is what's causing the cascading worldgen. Can anyone suggest optimisations to reduce the amount of calls to getTileEntityMap()? OR even if there is any other way of finding tile entities in a large area Here is the function: private static void findTileEntity(LivingSpawnEvent.CheckSpawn event, int radius) { BlockPos pos = event.getEntity().getPosition(); int chunkPosX = pos.getX() >> 4; int chunkPosZ = pos.getZ() >> 4; if (!event.getWorld().isRemote) { for (int x = chunkPosX - radius; x < chunkPosX + radius; x++) { for (int z = chunkPosZ - radius; z < chunkPosZ + radius; z++) { Map<BlockPos, TileEntity> currentChunkTE = event.getWorld().getChunkFromChunkCoords(x, z).getTileEntityMap(); for (TileEntity te : currentChunkTE.values()) { if (te != null) { if (te instanceof TileEntityBlockBase && radius == 8) { doSomething(); } } } } } } } Thanks in advance.
  12. I understand 1.11 is old. I will update when my mod is complete.
  13. As the title says. Both LivingSpawnEvent.SpecialSpawn/CheckSpawn do not get called when a silverfish exits a block.
  14. However, why on earth does it only happen in the Nether? That doesn't make sense. Overworld and End do not produce this warning.
  15. Yeah, no. I can make it a fair bit smaller. Will give that a shot.
  16. Yeah, figured. How would the offset work though?
  17. So, I've researched further, reading that post, and a couple others. The most I can get from them is having to offset by 8. It also seems to only affect those who are actually populating chunks. My code is doing nothing of the sort. Where would I offset by 8 in my code?
  18. Hey all, So, I am getting this in my log when I go to the nether while running my mod. Pretty sure this code here is the culprit. It runs whenever a mob spawns. How would I go about solving this issue? LOG: [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 6 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 7 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 8 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 16 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 14 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:13] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 12 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:14] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 22 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:14] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 21 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:14] [Server thread/WARN] [FML]: Mod loaded a new chunk (-34, -1 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:42] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, 26 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:41:42] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, 27 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:00] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, 4 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:00] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, -2 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:00] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, 2 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:00] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, 0 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:00] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, -2 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:29] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, -5 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:29] [Server thread/WARN] [FML]: Mod loaded a new chunk (-35, -5 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:29] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, -6 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:30] [Server thread/WARN] [FML]: Mod loaded a new chunk (-37, -6 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:30] [Server thread/WARN] [FML]: Mod loaded a new chunk (-34, -5 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:30] [Server thread/WARN] [FML]: Mod loaded a new chunk (-35, -6 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. [18:42:30] [Server thread/WARN] [FML]: Mod loaded a new chunk (-36, -7 Dimension: -1) during chunk population, causing cascading worldgen lag. Please report this to the mod's issue tracker. This log can be disabled in the Forge config. CODE: private static void findTileEntity(LivingSpawnEvent.CheckSpawn event, int radius) { BlockPos pos = event.getEntity().getPosition(); int chunkPosX = pos.getX() >> 4; int chunkPosZ = pos.getZ() >> 4; if (!event.getWorld().isRemote) { for (int x = chunkPosX - radius; x < chunkPosX + radius; x++) { for (int z = chunkPosZ - radius; z < chunkPosZ + radius; z++) { Map<BlockPos, TileEntity> currentChunkTE = event.getWorld().getChunkFromChunkCoords(x, z).getTileEntityMap(); for (TileEntity te : currentChunkTE.values()) { if (te != null) { if (te instanceof TileEntityBlockBase && radius == 12) { denySpawning(event, (TileEntityBlockBase) te); } } } } } } } Edit: This seems to only happen in The Nether. It DOES NOT happen in either the Overworld or The End. It also seems to happen in chunks just outside my render distance. (Lazy Chunks?) This fact is only crudely tested though.
  19. Oh, sorry about that. That has got it to work!! Thanks for all the help.
  20. Yes they are. I offset them in my EventHandler class.
  21. Alright, it is empty. So, I initialised it in another class. However, apparently it did not save. They were all typed there, the file just was not saved. I was 100% convinced that list was not empty, which is why I never considered it. Thanks Anyways, I've been tinkering for a while now, still cannot get these lines to render. here's some info: My block is at -1071 4 1181 When I hover over the block, this is what I get in the log: [20:46:08] [Client thread/INFO] [monstertotems]: ================== START ================== [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.2574190866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.5625 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.4375 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.2574190866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.5625 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.4375 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.2261690866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.5625 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0699190866621 -2.4375 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.2261690866621 -2.90625 -1180.9389562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.8125 -1181.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.6875 -1181.1264562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1011690866621 -2.5625 -1181.1264562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.4375 -1181.0952062051979 [20:46:08] [Client thread/INFO] [monstertotems]: ================== END ================== [20:46:08] [Client thread/INFO] [monstertotems]: ================== START ================== [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.2574190866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.5625 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.4375 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.2574190866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1949190866621 -2.5625 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1071.1324190866621 -2.4375 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.2261690866621 -2.90625 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.8125 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.6875 -1179.9077062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.5625 -1179.9702062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0699190866621 -2.4375 -1180.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.2261690866621 -2.90625 -1180.9389562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.8125 -1181.0327062051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.0386690866621 -2.6875 -1181.1264562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1011690866621 -2.5625 -1181.1264562051979 [20:46:08] [Client thread/INFO] [monstertotems]: XYZ: 1070.1324190866621 -2.4375 -1181.0952062051979 [20:46:08] [Client thread/INFO] [monstertotems]: ================== END ================== And this is my code in the EventHandler: @Mod.EventBusSubscriber public class DrawBlockHighlightEventHandler { @SubscribeEvent public static void onDrawBlockHighlight(DrawBlockHighlightEvent event) { BlockPos pos = event.getTarget().getBlockPos(); World world = event.getPlayer().world; if (event.getTarget().typeOfHit == RayTraceResult.Type.BLOCK) { if (world.getBlockState(pos).getBlock() instanceof BlockMod) { Utils.getLogger().info("================== START =================="); for (AxisAlignedBB axisAlignedBB : Reference.BOUNDING_BOXES) { drawSelectionBox(event.getPlayer(), axisAlignedBB, (double) event.getPartialTicks()); } Utils.getLogger().info("================== END =================="); } } } private static void drawSelectionBox(EntityPlayer player, AxisAlignedBB axisAlignedBB, double partialTicks) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.glLineWidth(2.0F); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; RenderGlobal.drawSelectionBoundingBox(axisAlignedBB.offset(-d0, -d1, -d2), 0.0F, 0.0F, 0.0F, 0.4F); AxisAlignedBB newBB = axisAlignedBB.offset(-d0, -d1, -d2); Utils.getLogger().info("XYZ: " + newBB.maxX + " " + newBB.maxY + " " + newBB.maxZ); GlStateManager.depthMask(true); GlStateManager.enableTexture2D(); GlStateManager.disableBlend(); } } This is the BOUNDING_BOXES initialisation: public static final AxisAlignedBB[] BOUNDING_BOXES = { new AxisAlignedBB(0.875D, 0.0D, 0.875D, 1.03125D, 1.09375D, 1.03125D), new AxisAlignedBB(0.96875D, 1.0625D, 0.96875D, 1.09375D, 1.1875D, 1.09375D), new AxisAlignedBB(1.0625D, 1.125D, 1.0625D, 1.15625D, 1.3125D, 1.15625D), new AxisAlignedBB(1.0D, 1.28125D, 1.0625D, 1.09375D, 1.4375D, 1.15625D), new AxisAlignedBB(0.96875D, 1.40625D, 1.03125D, 1.03125D, 1.5625D, 1.09375D), new AxisAlignedBB(0.875D, 0.0D, 0.875D, 1.03125D, 1.09375D, 1.03125D), new AxisAlignedBB(0.96875D, 1.0625D, 0.96875D, 1.09375D, 1.1875D, 1.09375D), new AxisAlignedBB(1.0625D, 1.125D, 1.0625D, 1.15625D, 1.3125D, 1.15625D), new AxisAlignedBB(1.0D, 1.28125D, 1.0625D, 1.09375D, 1.4375D, 1.15625D), new AxisAlignedBB(0.96875D, 1.40625D, 1.03125D, 1.03125D, 1.5625D, 1.09375D), new AxisAlignedBB(-0.03125D, 0.0D, 0.875D, 0.125D, 1.09375D, 1.03125D), new AxisAlignedBB(-0.09375D, 1.0625D, 0.96875D, 0.03125D, 1.1875D, 1.09375D), new AxisAlignedBB(-0.15625D, 1.125D, 1.0625D, -0.0625D, 1.3125D, 1.15625D), new AxisAlignedBB(-0.15625D, 1.28125D, 1.0D, -0.0625D, 1.4375D, 1.09375D), new AxisAlignedBB(-0.09375D, 1.40625D, 0.96875D, -0.03125D, 1.5625D, 1.03125D), new AxisAlignedBB(-0.03125D, 0.0D, -0.03125D, 0.125D, 1.09375D, 0.125D), new AxisAlignedBB(-0.09375D, 1.0625D, -0.09375D, 0.03125D, 1.1875D, 0.03125D), new AxisAlignedBB(-0.15625D, 1.125D, -0.15625D, -0.0625D, 1.3125D, -0.0625D), new AxisAlignedBB(-0.09375D, 1.28125D, -0.15625D, 0.0D, 1.4375D, -0.0625D), new AxisAlignedBB(-0.03125D, 1.40625D, -0.09375D, 0.03125D, 1.5625D, -0.03125D) }; Can clearly see that the coordinates are incorrect. However, I took this code straight from the RenderGlobal class. Not sure what's going wrong.
  22. Ok, I'm really close now. But something really odd is happening. In this code: "Before loop" gets called every tick. "In loop" never gets called at all, which is bizarre. if (world.getBlockState(pos).getBlock() instanceof BlockMod) { Utils.getLogger().info("Before loop"); for (AxisAlignedBB axisAlignedBB : Reference.BOUNDING_BOXES) { Utils.getLogger().info("In loop"); drawSelectionBox(event.getPlayer(), event.getTarget(), world, axisAlignedBB, (double) event.getPartialTicks()); } }
  23. Looked through how drawSelectionBox() works. It looks like it automatically takes the collision you set, and draws the bounding box for you. drawSelectionBoundingBox(iblockstate.getSelectedBoundingBox(this.world, blockpos).grow(0.0020000000949949026D).offset(-d0, -d1, -d2), 0.0F, 0.0F, 0.0F, 0.4F); However, it only does this once. Anyway I can call drawSelectionBoundingBox() myself. I can't call it from event.getContext()
  24. Alright, so this is what I have so far. Not sure what method to use to specify coordinates. This drawSelectionBox does not take in min/max coords. @SubscribeEvent public static void drawBlockHighlight(DrawBlockHighlightEvent event) { BlockPos pos = event.getTarget().getBlockPos(); World world = event.getPlayer().world; if (world.isRemote) { if (event.getTarget().typeOfHit == RayTraceResult.Type.BLOCK) { if (world.getBlockState(pos).getBlock() instanceof BlockMod) { BlockMod block = (BlockMod) world.getBlockState(pos).getBlock(); for (AxisAlignedBB axisAlignedBB : Reference.BOUNDING_BOXES) { event.getContext().drawSelectionBox(event.getPlayer(), event.getTarget(), 0, event.getPartialTicks()); // How do I draw the box from my list? } } } } }
×
×
  • Create New...

Important Information

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