June 12, 20178 yr Author When it does that, it stays in place, strangely sets the block in front of it to air, and when you right-click with a wrench it doesn't react (stays on) Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
June 12, 20178 yr Author Also, here is what I tested. if (TICKS == 20) { System.out.println("20 1/2"); if (!world.isRemote) { System.out.println("20 2/2"); EnumFacing facing_ = (EnumFacing) world.getBlockState(pos).getValue(BlockAutoMiner.FACING); int index_ = facing_.getHorizontalIndex(); int index = index_ == 0 ? index_ + 3 : index_ - 1; EnumFacing facing = EnumFacing.getHorizontal(index); int index1 = index_ == 3 ? index_ - 3 : index_ + 1; EnumFacing facing1 = EnumFacing.getHorizontal(index1); BlockPos position = pos.offset(world.getBlockState(pos).getValue(BlockAutoMiner.FACING)); BlockPos position1 = position.up(); BlockPos position2 = position.down(); BlockPos position3 = position.offset(facing); BlockPos position4 = position.offset(facing1); BlockPos position5 = position3.up(); BlockPos position6 = position4.up(); BlockPos position7 = position3.down(); BlockPos position8 = position4.down(); ItemStack stack = new ItemStack(world.getBlockState(position).getBlock()); ItemStack stack1 = new ItemStack(world.getBlockState(position1).getBlock()); ItemStack stack2 = new ItemStack(world.getBlockState(position2).getBlock()); ItemStack stack3 = new ItemStack(world.getBlockState(position3).getBlock()); ItemStack stack4 = new ItemStack(world.getBlockState(position4).getBlock()); ItemStack stack5 = new ItemStack(world.getBlockState(position5).getBlock()); ItemStack stack6 = new ItemStack(world.getBlockState(position6).getBlock()); ItemStack stack7 = new ItemStack(world.getBlockState(position7).getBlock()); ItemStack stack8 = new ItemStack(world.getBlockState(position8).getBlock()); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack1)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack2)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack3)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack4)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack5)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack6)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack7)); world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY() + 1, pos.getZ(), stack8)); world.setBlockToAir(position); world.setBlockToAir(position1); world.setBlockToAir(position2); world.setBlockToAir(position3); world.setBlockToAir(position4); world.setBlockToAir(position5); world.setBlockToAir(position6); world.setBlockToAir(position7); world.setBlockToAir(position8); } } if (TICKS == 40) { System.out.println("40 1/2"); if (!world.isRemote) { System.out.println("40 2/2"); BlockPos position = pos.offset(world.getBlockState(pos).getValue(BlockAutoMiner.FACING)); world.setBlockState(position, world.getBlockState(pos)); world.setTileEntity(position, world.getTileEntity(pos)); world.setBlockToAir(pos); } } With the output in the console being [22:39:18] [Server thread/INFO]: [STDOUT]: 20 1/2 [22:39:18] [Server thread/INFO]: [STDOUT]: 20 2/2 [22:39:18] [main/INFO]: [STDOUT]: 20 1/2 [22:39:19] [Server thread/INFO]: [STDOUT]: 40 1/2 [22:39:19] [Server thread/INFO]: [STDOUT]: 40 2/2 [22:39:19] [main/INFO]: [STDOUT]: 40 1/2 [22:39:20] [main/INFO]: [STDOUT]: 20 1/2 [22:39:21] [main/INFO]: [STDOUT]: 40 1/2 [22:39:22] [main/INFO]: [STDOUT]: 20 1/2 [22:39:23] [main/INFO]: [STDOUT]: 40 1/2 [22:39:24] [main/INFO]: [STDOUT]: 20 1/2 Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
June 12, 20178 yr Author Also, by removing the line world.setTileEntity(position, world.getTileEntity(pos)); It does work, only everything gets reset (duh). Edited June 12, 20178 yr by Kokkie Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
June 12, 20178 yr 20 minutes ago, Kokkie said: world.setTileEntity(position, world.getTileEntity(pos)); Setting the tileentity like that updates the position of that tileentity. So your next call 21 minutes ago, Kokkie said: world.setBlockToAir(pos); is already using the new pos - the one you've just set your tile to, the position local to be precise. So it sets the block in front of the original position to air as that is the position it is currenty at. You should not really "move" a tileentity like that. Either carefully invalidate/validate it manualy as you do or simply create a new one and copy all the data over
June 12, 20178 yr Also your code is a mess. There's a half dozen or more variable with names like xxx1, xxx2, xx3, etc. Not to mention constructing facing enums from their index, which is SUPER meaningless. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
June 13, 20178 yr Author 14 hours ago, Draco18s said: Also your code is a mess. There's a half dozen or more variable with names like xxx1, xxx2, xx3, etc. How'd you do it then? 14 hours ago, Draco18s said: Not to mention constructing facing enums from their index, which is SUPER meaningless Changed it to facing.rotateY() and facing.rotateYCCW(). Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
June 13, 20178 yr Author I fixed everything and it's finally working. But now, how do I get the block it should drop? I have this state.getBlock().getItemDropped(world.getBlockState(position), random, 0) but that doesn't work properly for diorite, andesite and granite, because it returns normal stone. Also for logs, the oak, spruce, birch and jungle return oak and the acacia and dark oak return acacia. The planks all return oak. Also, how do I cancel lava from being placed? Edited June 13, 20178 yr by Kokkie Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
June 13, 20178 yr 8 minutes ago, Kokkie said: getItemDropped returns an Item. Not an ItemStack. It works properly, it just doesn't do what you think it does. Block::getDrops returns a list of ItemStacks to be dropped upon block breaking. Look at how blocks are dropped as items at Block::dropBlockAsItemWithChance. 10 minutes ago, Kokkie said: Also, how do I cancel lava from being placed? Could you please explain a bit better what do you mean by that? Placed as poured from a bucket by the player? As the bucket is an item you can use forge's RightClickItem event.
June 13, 20178 yr Block#getDrops() getItemDropped() specifically returns only an item which would have to be combined with getDamageDropped() or whatever it's been renamed to. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
June 13, 20178 yr Author 27 minutes ago, Draco18s said: Block#getDrops() getItemDropped() specifically returns only an item which would have to be combined with getDamageDropped() or whatever it's been renamed to. 27 minutes ago, V0idWa1k3r said: returns an Item. Not an ItemStack. It works properly, it just doesn't do what you think it does. Block::getDrops returns a list of ItemStacks to be dropped upon block breaking. Look at how blocks are dropped as items at Block::dropBlockAsItemWithChance. Thanks, it works! EDIT: Fixed the lava myself, thanks anyway! Edited June 13, 20178 yr by Kokkie Classes: 94 Lines of code: 12173 Other files: 206 Github repo: https://github.com/KokkieBeer/DeGeweldigeMod
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.