January 7, 201312 yr because the iterator of the list its not playerEntities, if u wanna get the player object just do Minecraft.getMinecraft().thePlayer, but if u wanna the player iterator you must do Iterator iterator = Minecraft.getMinecraft().theWorld.playerEntities.iterator(); while (iterator.hasNext()){ Object obj = iterator.next(); if ((obj instanceof EntityPlayer) && !((EntityPlayerMP)obj).username.isEmpty()) { // Do Stuff! } }
January 7, 201312 yr Author yeah saw it a moment ago^^ so this works: AxisAlignedBB var4 = AxisAlignedBB.getBoundingBox(plX, plY, plZ, plX + 1.0D, plY + 1.0D, plZ + 1.0D).expand(4D, 2D, 4D); List list = Minecraft.getMinecraft().theWorld.getAllCollidingBoundingBoxes(var4); Iterator var6 = list.iterator(); AxisAlignedBB var7; if(list != null) while (var6.hasNext()) { var7 = (AxisAlignedBB)var6.next(); } i get these boxes: box[-295.0, 68.0, 277.0 -> -294.0, 69.0, 278.0], box[-295.0, 69.0, 277.0 -> -294.0, 70.0, 278.0],... now i have to find out if there is a torch under it do you know a easy way?
January 7, 201312 yr found another way EntityPlayer pl = Minecraft.getMinecraft().thePlayer; if(Minecraft.getMinecraft().theWorld.getBlockId(pl.posX, pl.posY, pl.posZ) == Block.torchWood.blockID){ //do stuff }
January 7, 201312 yr Author yeah but the problem is i need an area / radius around the player... so only if the player is near the torch... do stuff... btw thanks for your dedicated help!
January 7, 201312 yr EntityPlayer pl = Minecraft.getMinecraft().thePlayer; if(Minecraft.getMinecraft().theWorld.getBlockId(pl.posX, pl.posY, pl.posZ) == Block.torchWood.blockID){ //do stuff } if(Minecraft.getMinecraft().theWorld.getBlockId(pl.posX++, pl.posY, pl.posZ++) == Block.torchWood.blockID){ //do stuff }
January 7, 201312 yr Author EntityPlayer pl = Minecraft.getMinecraft().thePlayer; if(Minecraft.getMinecraft().theWorld.getBlockId(pl.posX, pl.posY, pl.posZ) == Block.torchWood.blockID){ //do stuff } if(Minecraft.getMinecraft().theWorld.getBlockId(pl.posX++, pl.posY, pl.posZ++) == Block.torchWood.blockID){ //do stuff } this should work thanks alot!!! havent thought about this way even its an easy one
January 7, 201312 yr im on my tablet, i dont now if works, but please tell if it works, i need to my mod too.
January 7, 201312 yr Author im on my tablet, i dont now if works, but please tell if it works, i need to my mod too. i'll try that tomorrow and write if it works... have to go to sleep...^^
January 8, 201312 yr Author ok got it working i think many people could use this so i'll write this short tutorial plz give me a Thank you if my code was helpful and maybe write me into your credits if you just copy my code This following code is used inside a clientSide TickHandler class: inside of the tick: AxisAlignedBB var4 = AxisAlignedBB.getBoundingBox(plX, plY, plZ, plX + 1.0D, plY + 1.0D, plZ + 1.0D).expand(heatRadius, heatRadius, heatRadius); List list = Minecraft.getMinecraft().theWorld.getAllCollidingBoundingBoxes(var4); Iterator var6 = list.iterator(); AxisAlignedBB var7; int i = 0; if(list != null) { for(int j = 0; j < list.size(); j++) { if(StringToBlockID(list.get(j).toString(),"first") == Block.torchWood.blockID) System.out.println("FOUND TORCH!"); if(StringToBlockID(list.get(j).toString(),"second") == Block.torchWood.blockID) System.out.println("FOUND TORCH!"); }
January 8, 201312 yr Author i got it workin ,i think many people could need this code so i'll share it here... i don't know if there is an easyer way but this works plz give me a "Thank You" if my code was usefull the code compares if certain blocks are near the player... The following code is in an clientSide TickHandler class: in the onTick method: //player coordinates int plX = (int)Minecraft.getMinecraft().thePlayer.posX; int plY = (int)Minecraft.getMinecraft().thePlayer.posY; int plZ = (int)Minecraft.getMinecraft().thePlayer.posZ; //the radius of your player->Block detection double boundingBoxRadius = 3; //that it'll work only if the player is there if(Minecraft.getMinecraft().thePlayer != null) { //set the box for collision detection with other boxes AxisAlignedBB var4 = AxisAlignedBB.getBoundingBox(plX, plY, plZ, plX + 1.0D, plY + 1.0D, plZ + 1.0D).expand(boundingBoxRadius , boundingBoxRadius , boundingBoxRadius); //get all colliding boundingBoxes with our var4 box List list = Minecraft.getMinecraft().theWorld.getAllCollidingBoundingBoxes(var4); //only work if theres something in the list if(list != null) { //go through the list for(int j = 0; j < list.size(); j++) { //send the current colliding box to get the blockID and compare it if(StringToBlockID(list.get(j).toString(),"first") == Block.torchWood.blockID || StringToBlockID(list.get(j).toString(),"second") == Block.torchWood.blockID) System.out.println("FOUND TORCH!"); //this does someting for each block that matches the compared block } } } and this is my created method (also in the same class) to get the specific Block id: public static int StringToBlockID(String line, String whichOne) { //MADE BY Ghoul159 int posStart = line.indexOf("["); int commaFirst = line.indexOf(","); int commaSecond = line.indexOf(",",commaFirst+1); int posEnd = line.indexOf("->"); if(whichOne == "second") { posStart = line.indexOf("->")+1; commaFirst = line.indexOf(",",posStart); commaSecond = line.indexOf(",",commaFirst+1); posEnd = line.indexOf("]"); } String BlockX = line.substring(posStart + 1, commaFirst); String BlockY = line.substring(commaFirst + 2, commaSecond); String BlockZ = line.substring(commaSecond + 2, posEnd); int BlockPosX = (int)Double.parseDouble(BlockX); int BlockPosY = (int)Double.parseDouble(BlockY); int BlockPosZ = (int)Double.parseDouble(BlockZ); int blockId = Minecraft.getMinecraft().theWorld.getBlockId(BlockPosX,BlockPosY,BlockPosZ); return blockId; }
January 28, 201312 yr instead of creating strings and stuff, just create an object of the list, and then you check if the obj instanceof Block.torchWood like //player coordinates int plX = (int)Minecraft.getMinecraft().thePlayer.posX; int plY = (int)Minecraft.getMinecraft().thePlayer.posY; int plZ = (int)Minecraft.getMinecraft().thePlayer.posZ; //the radius of your player->Block detection double boundingBoxRadius = 3; //that it'll work only if the player is there if(Minecraft.getMinecraft().thePlayer != null) { //set the box for collision detection with other boxes AxisAlignedBB var4 = AxisAlignedBB.getBoundingBox(plX, plY, plZ, plX + 1.0D, plY + 1.0D, plZ + 1.0D).expand(boundingBoxRadius , boundingBoxRadius , boundingBoxRadius); //get all colliding boundingBoxes with our var4 box List list = Minecraft.getMinecraft().theWorld.getAllCollidingBoundingBoxes(var4); //only work if theres something in the list if(list != null) { Object obj = list;//or list.iterator; or list.iterator.hasNext(); if(obj instanceof BlockTorch){ System.out.println("FOUND TORCH!"); } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.