Fixed the drill sometimes acting up on redstone or glowstone

This commit is contained in:
Ellpeck 2016-07-07 20:17:09 +02:00
parent 346dbf2ccd
commit bdc6f179cf
2 changed files with 2 additions and 13 deletions

View file

@ -268,9 +268,8 @@ public class ItemDrill extends ItemEnergy{
@Override @Override
public boolean canHarvestBlock(IBlockState state, ItemStack stack){ public boolean canHarvestBlock(IBlockState state, ItemStack stack){
int harvestLevel = this.getHarvestLevel(stack, "");
Block block = state.getBlock(); Block block = state.getBlock();
return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack) && (this.hasExtraWhitelist(block) || block.getMaterial(state).isToolNotRequired() || (block == Blocks.SNOW_LAYER || block == Blocks.SNOW || (block == Blocks.OBSIDIAN ? harvestLevel >= 3 : (block != Blocks.DIAMOND_BLOCK && block != Blocks.DIAMOND_ORE ? (block != Blocks.EMERALD_ORE && block != Blocks.EMERALD_BLOCK ? (block != Blocks.GOLD_BLOCK && block != Blocks.GOLD_ORE ? (block != Blocks.IRON_BLOCK && block != Blocks.IRON_ORE ? (block != Blocks.LAPIS_BLOCK && block != Blocks.LAPIS_ORE ? (block != Blocks.REDSTONE_ORE && block != Blocks.LIT_REDSTONE_ORE ? (block.getMaterial(state) == Material.ROCK || (block.getMaterial(state) == Material.IRON || block.getMaterial(state) == Material.ANVIL)) : harvestLevel >= 2) : harvestLevel >= 1) : harvestLevel >= 1) : harvestLevel >= 2) : harvestLevel >= 2) : harvestLevel >= 2)))); return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack) && (this.hasExtraWhitelist(block) || block.getMaterial(state).isToolNotRequired() || (block == Blocks.SNOW_LAYER || block == Blocks.SNOW || (block == Blocks.OBSIDIAN ? HARVEST_LEVEL >= 3 : (block != Blocks.DIAMOND_BLOCK && block != Blocks.DIAMOND_ORE ? (block != Blocks.EMERALD_ORE && block != Blocks.EMERALD_BLOCK ? (block != Blocks.GOLD_BLOCK && block != Blocks.GOLD_ORE ? (block != Blocks.IRON_BLOCK && block != Blocks.IRON_ORE ? (block != Blocks.LAPIS_BLOCK && block != Blocks.LAPIS_ORE ? (block != Blocks.REDSTONE_ORE && block != Blocks.LIT_REDSTONE_ORE ? (block.getMaterial(state) == Material.ROCK || (block.getMaterial(state) == Material.IRON || block.getMaterial(state) == Material.ANVIL)) : HARVEST_LEVEL >= 2) : HARVEST_LEVEL >= 1) : HARVEST_LEVEL >= 1) : HARVEST_LEVEL >= 2) : HARVEST_LEVEL >= 2) : HARVEST_LEVEL >= 2))));
} }
@Override @Override

View file

@ -341,6 +341,7 @@ public final class WorldUtil{
//Cobbled together from Tinkers' Construct (with permission, thanks!) and PlayerInteractionManager code. //Cobbled together from Tinkers' Construct (with permission, thanks!) and PlayerInteractionManager code.
//Breaking blocks is a hideous pain so yea. //Breaking blocks is a hideous pain so yea.
//This doesn't do any additional harvestability checks that the blocks itself don't do!
public static boolean playerHarvestBlock(ItemStack stack, World world, EntityPlayer player, BlockPos pos){ public static boolean playerHarvestBlock(ItemStack stack, World world, EntityPlayer player, BlockPos pos){
if(world.isAirBlock(pos)){ if(world.isAirBlock(pos)){
return false; return false;
@ -349,17 +350,6 @@ public final class WorldUtil{
IBlockState state = world.getBlockState(pos); IBlockState state = world.getBlockState(pos);
Block block = state.getBlock(); Block block = state.getBlock();
boolean effective = false;
for(String type : stack.getItem().getToolClasses(stack)){
if(block.isToolEffective(type, state)){
effective = true;
}
}
if(!effective || !ForgeHooks.canHarvestBlock(block, player, world, pos)){
return false;
}
if(player.capabilities.isCreativeMode){ if(player.capabilities.isCreativeMode){
block.onBlockHarvested(world, pos, state, player); block.onBlockHarvested(world, pos, state, player);
if(block.removedByPlayer(state, world, pos, player, false)){ if(block.removedByPlayer(state, world, pos, player, false)){