Jump to content

Recommended Posts

Posted

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

Posted
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

Posted

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.

Posted
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

Posted (edited)

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 by Kokkie

Classes: 94

Lines of code: 12173

Other files: 206

Github repo: https://github.com/KokkieBeer/DeGeweldigeMod

Posted
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. 

Posted

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.

Posted (edited)
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 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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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