Added special handling for Magnanimous Tools. Closes #1467.

This commit is contained in:
Florian Nücke 2015-10-04 23:05:59 +02:00
parent 2ead961841
commit b99baf0bcc
4 changed files with 15 additions and 10 deletions

View File

@ -0,0 +1,7 @@
package li.cil.oc.integration.magtools
import net.minecraft.item.ItemStack
object ModMagnanimousTools {
def isMagTool(stack: ItemStack) = stack != null && stack.getItem.getClass.getName.startsWith("com.vapourdrive.magtools.items.tools.")
}

View File

@ -3,6 +3,7 @@ package li.cil.oc.integration.tcon
import li.cil.oc.api import li.cil.oc.api
import li.cil.oc.integration.ModProxy import li.cil.oc.integration.ModProxy
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import net.minecraft.item.ItemStack
import net.minecraftforge.common.MinecraftForge import net.minecraftforge.common.MinecraftForge
object ModTinkersConstruct extends ModProxy { object ModTinkersConstruct extends ModProxy {
@ -13,4 +14,6 @@ object ModTinkersConstruct extends ModProxy {
MinecraftForge.EVENT_BUS.register(EventHandlerTinkersConstruct) MinecraftForge.EVENT_BUS.register(EventHandlerTinkersConstruct)
} }
def isInfiTool(stack: ItemStack) = stack != null && stack.getItem.getClass.getName.startsWith("tconstruct.")
} }

View File

@ -1,7 +0,0 @@
package li.cil.oc.integration.util
import net.minecraft.item.ItemStack
object TinkersConstruct {
def isInfiTool(stack: ItemStack) = stack != null && stack.getItem.getClass.getName.startsWith( """tconstruct.""")
}

View File

@ -12,8 +12,9 @@ import li.cil.oc.api.internal
import li.cil.oc.api.network.Connector import li.cil.oc.api.network.Connector
import li.cil.oc.common.EventHandler import li.cil.oc.common.EventHandler
import li.cil.oc.integration.Mods import li.cil.oc.integration.Mods
import li.cil.oc.integration.magtools.ModMagnanimousTools
import li.cil.oc.integration.tcon.ModTinkersConstruct
import li.cil.oc.integration.util.PortalGun import li.cil.oc.integration.util.PortalGun
import li.cil.oc.integration.util.TinkersConstruct
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
import li.cil.oc.util.InventoryUtils import li.cil.oc.util.InventoryUtils
import net.minecraft.block.Block import net.minecraft.block.Block
@ -332,12 +333,13 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
// their break logic in onBlockStartBreak but return true to cancel // their break logic in onBlockStartBreak but return true to cancel
// further processing. We also need to adjust our offset for their ray- // further processing. We also need to adjust our offset for their ray-
// tracing implementation. // tracing implementation.
if (TinkersConstruct.isInfiTool(stack)) { val needsSpecialPlacement = ModTinkersConstruct.isInfiTool(stack) || ModMagnanimousTools.isMagTool(stack)
if (needsSpecialPlacement) {
posY -= 1.62 posY -= 1.62
prevPosY = posY prevPosY = posY
} }
val cancel = stack != null && stack.getItem.onBlockStartBreak(stack, x, y, z, this) val cancel = stack != null && stack.getItem.onBlockStartBreak(stack, x, y, z, this)
if (cancel && TinkersConstruct.isInfiTool(stack)) { if (cancel && needsSpecialPlacement) {
posY += 1.62 posY += 1.62
prevPosY = posY prevPosY = posY
return adjustedBreakTime return adjustedBreakTime