| package li.cil.oc.integration.gregtech |
| import cpw.mods.fml.common.eventhandler.SubscribeEvent |
| import gregtech.api.interfaces.IDamagableItem |
| import gregtech.api.items.GT_MetaGenerated_Tool |
| import li.cil.oc.api.event.RobotUsedToolEvent |
| import net.minecraft.item.ItemStack |
| object EventHandlerGregTech { |
| def onRobotApplyDamageRate(e: RobotUsedToolEvent.ApplyDamageRate) { |
| (e.toolBeforeUse.getItem, e.toolAfterUse.getItem) match { |
| case (itemBefore: IDamagableItem, itemAfter: IDamagableItem) => |
| val damage = GT_MetaGenerated_Tool.getToolDamage(e.toolAfterUse) - GT_MetaGenerated_Tool.getToolDamage(e.toolBeforeUse) |
| val actualDamage = damage * e.getDamageRate |
| if (e.agent.player.getRNG.nextDouble() > 0.5) |
| damage - math.floor(actualDamage).toInt |
| damage - math.ceil(actualDamage).toInt |
| GT_MetaGenerated_Tool.setToolDamage(e.toolAfterUse, GT_MetaGenerated_Tool.getToolDamage(e.toolAfterUse) - repairedDamage) |
| def getDurability(stack: ItemStack): Double = { |
| case item: IDamagableItem => 1.0 - GT_MetaGenerated_Tool.getToolDamage(stack).toDouble / GT_MetaGenerated_Tool.getToolMaxDamage(stack).toDouble |