This commit is contained in:
Shadows_of_Fire 2019-05-02 03:32:05 -04:00
parent 785dccbed8
commit 66718437d9
4 changed files with 6 additions and 4 deletions

View file

@ -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) { if (!this.isPlacer && blockToBreak != Blocks.AIR && !(blockToBreak instanceof BlockLiquid) && !(blockToBreak instanceof IFluidBlock) && stateToBreak.getBlockHardness(this.world, breakCoords) >= 0.0F) {
NonNullList<ItemStack> drops = NonNullList.create(); NonNullList<ItemStack> drops = NonNullList.create();
blockToBreak.getDrops(drops, this.world, breakCoords, stateToBreak, 0); 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 (chance > 0 && this.world.rand.nextFloat() <= chance) {
if (StackUtil.canAddAll(this.inv, drops, false)) { if (StackUtil.canAddAll(this.inv, drops, false)) {

View file

@ -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) { if (blockToBreak != null && !this.world.isAirBlock(coordsBlock) && this.world.getBlockState(coordsBlock).getBlockHardness(this.world, coordsBlock) > -1.0F) {
NonNullList<ItemStack> drops = NonNullList.create(); NonNullList<ItemStack> drops = NonNullList.create();
blockToBreak.getDrops(drops, this.world, coordsBlock, breakState, 0); 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 (chance > 0 && this.world.rand.nextFloat() <= chance) {
if (StackUtil.canAddAll(this.inv, drops, false)) { if (StackUtil.canAddAll(this.inv, drops, false)) {

View file

@ -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)) { 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<ItemStack> drops = NonNullList.create(); NonNullList<ItemStack> drops = NonNullList.create();
block.getDrops(drops, this.world, pos, state, 0); 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 (chance > 0 && this.world.rand.nextFloat() <= chance) {
if (StackUtil.canAddAll(this.inv, drops, false)) { if (StackUtil.canAddAll(this.inv, drops, false)) {

View file

@ -282,9 +282,11 @@ public final class WorldUtil {
} }
//I think something is up with this, but I'm not entirely certain what. //I think something is up with this, but I'm not entirely certain what.
public static float fireFakeHarvestEventsForDropChance(NonNullList<ItemStack> drops, World world, BlockPos pos) { public static float fireFakeHarvestEventsForDropChance(TileEntity caller, NonNullList<ItemStack> drops, World world, BlockPos pos) {
if (world instanceof WorldServer) { if (world instanceof WorldServer) {
FakePlayer fake = FakePlayerFactory.getMinecraft((WorldServer) world); 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); IBlockState state = world.getBlockState(pos);
BreakEvent event = new BreakEvent(world, pos, state, fake); BreakEvent event = new BreakEvent(world, pos, state, fake);