}
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onGetHarvestSpeed(PlayerEvent.BreakSpeed event) {
ItemStack heldItem = event.entityPlayer.getHeldItem();
if (heldItem == null)
return;
int shatter = EnchantmentHelper.getEnchantmentLevel(LibEnchantIDs.shatter, heldItem);
if (shatter > 0) {
if (event.block.getBlockHardness(event.entityPlayer.worldObj, 0, 0, 0) > 20F) {
event.newSpeed *= (3 * shatter);
} else {
event.newSpeed *= .8;
}
}
int tunnel = EnchantmentHelper.getEnchantmentLevel(LibEnchantIDs.tunnel, heldItem);
if (tunnel > 0) {
float dir = event.entityPlayer.rotationYaw;
if (heldItem.stackTagCompound != null && heldItem.stackTagCompound.hasKey(NBTTunnelDirection)) {
float oldDir = heldItem.stackTagCompound.getFloat(NBTTunnelDirection);
float dif = Math.abs(oldDir - dir);
if (dif < 50) {
event.newSpeed *= (1 + (.2 * tunnel));
} else {
event.newSpeed *= .3;
}
}
}
int desintegrate = EnchantmentHelper.getEnchantmentLevel(LibEnchantIDs.idDesintegrate, heldItem);
int autoSmelt = EnchantmentHelper.getEnchantmentLevel(LibEnchantIDs.idAutoSmelt, heldItem);
boolean desintegrateApplies = desintegrate > 0 && event.block.blockHardness <= 1.5F;
boolean autoSmeltApplies = autoSmelt > 0 && event.block.getMaterial() == Material.wood;
if (desintegrateApplies || autoSmeltApplies) {
heldItem.damageItem(1, event.entityPlayer);
event.newSpeed = Float.MAX_VALUE;
} else if (desintegrate > 0 || autoSmelt > 0)
event.setCanceled(true);
}