From 66718437d9efc3c3ea4f9b49d93c2bdc153385fd Mon Sep 17 00:00:00 2001 From: Shadows_of_Fire Date: Thu, 2 May 2019 03:32:05 -0400 Subject: [PATCH] Closes #1239 --- .../ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java | 2 +- .../mod/tile/TileEntityDirectionalBreaker.java | 2 +- .../ellpeck/actuallyadditions/mod/tile/TileEntityMiner.java | 2 +- .../java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java index a9fd40a22..3b381b2a6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityBreaker.java @@ -85,7 +85,7 @@ public class TileEntityBreaker extends TileEntityInventoryBase { if (!this.isPlacer && blockToBreak != Blocks.AIR && !(blockToBreak instanceof BlockLiquid) && !(blockToBreak instanceof IFluidBlock) && stateToBreak.getBlockHardness(this.world, breakCoords) >= 0.0F) { NonNullList drops = NonNullList.create(); blockToBreak.getDrops(drops, this.world, breakCoords, stateToBreak, 0); - float chance = WorldUtil.fireFakeHarvestEventsForDropChance(drops, this.world, breakCoords); + float chance = WorldUtil.fireFakeHarvestEventsForDropChance(this, drops, this.world, breakCoords); if (chance > 0 && this.world.rand.nextFloat() <= chance) { if (StackUtil.canAddAll(this.inv, drops, false)) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDirectionalBreaker.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDirectionalBreaker.java index b5a547a34..07734cb8c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDirectionalBreaker.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityDirectionalBreaker.java @@ -85,7 +85,7 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase { if (blockToBreak != null && !this.world.isAirBlock(coordsBlock) && this.world.getBlockState(coordsBlock).getBlockHardness(this.world, coordsBlock) > -1.0F) { NonNullList drops = NonNullList.create(); blockToBreak.getDrops(drops, this.world, coordsBlock, breakState, 0); - float chance = WorldUtil.fireFakeHarvestEventsForDropChance(drops, this.world, coordsBlock); + float chance = WorldUtil.fireFakeHarvestEventsForDropChance(this, drops, this.world, coordsBlock); if (chance > 0 && this.world.rand.nextFloat() <= chance) { if (StackUtil.canAddAll(this.inv, drops, false)) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityMiner.java b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityMiner.java index 1ebd155e7..17249b6fe 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityMiner.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/tile/TileEntityMiner.java @@ -131,7 +131,7 @@ public class TileEntityMiner extends TileEntityInventoryBase implements IButtonR if (block.getHarvestLevel(this.world.getBlockState(pos)) <= ItemDrill.HARVEST_LEVEL && state.getBlockHardness(this.world, pos) >= 0F && !(block instanceof BlockLiquid) && !(block instanceof IFluidBlock) && this.isMinable(block, stack)) { NonNullList drops = NonNullList.create(); block.getDrops(drops, this.world, pos, state, 0); - float chance = WorldUtil.fireFakeHarvestEventsForDropChance(drops, this.world, pos); + float chance = WorldUtil.fireFakeHarvestEventsForDropChance(this, drops, this.world, pos); if (chance > 0 && this.world.rand.nextFloat() <= chance) { if (StackUtil.canAddAll(this.inv, drops, false)) { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java index 55a82758f..fe1745aca 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/WorldUtil.java @@ -282,9 +282,11 @@ public final class WorldUtil { } //I think something is up with this, but I'm not entirely certain what. - public static float fireFakeHarvestEventsForDropChance(NonNullList drops, World world, BlockPos pos) { + public static float fireFakeHarvestEventsForDropChance(TileEntity caller, NonNullList drops, World world, BlockPos pos) { if (world instanceof WorldServer) { FakePlayer fake = FakePlayerFactory.getMinecraft((WorldServer) world); + BlockPos tePos = caller.getPos(); + fake.setPosition(tePos.getX() + 0.5, tePos.getY() + 0.5, tePos.getZ() + 0.5); IBlockState state = world.getBlockState(pos); BreakEvent event = new BreakEvent(world, pos, state, fake);