Search in sources :

Example 6 with Vec3d

use of uk.co.qmunity.lib.vec.Vec3d in project BluePower by Qmunity.

the class GateIntegratedCircuit method getBundledDeviceOnSide.

@Override
public IBundledDevice getBundledDeviceOnSide(ForgeDirection side) {
    side = new Vec3d(0, 0, 0).add(side).rotate(0, 90 * -getRotation(), 0).toForgeDirection();
    IPart p = getCircuitPartOnSide(side);
    if (p == null)
        return null;
    if (p instanceof IBundledDevice)
        return (IBundledDevice) p;
    return null;
}
Also used : IPart(uk.co.qmunity.lib.part.IPart) Vec3d(uk.co.qmunity.lib.vec.Vec3d) IBundledDevice(com.bluepowermod.api.wire.redstone.IBundledDevice)

Example 7 with Vec3d

use of uk.co.qmunity.lib.vec.Vec3d in project BluePower by Qmunity.

the class GateNullCell method onActivated.

// In-world customization
@Override
public boolean onActivated(EntityPlayer player, QMovingObjectPosition mop, ItemStack item) {
    Vec3d hit = new Vec3d(mop.hitVec).sub(mop.blockX, mop.blockY, mop.blockZ).rotateUndo(getFace(), Vec3d.center);
    if (item != null) {
        if (item.getItem() instanceof ItemPart) {
            IPart part = ((ItemPart) item.getItem()).createPart(item, player, null, null);
            if (part != null && part instanceof PartRedwireFaceUninsulated) {
                PartRedwireFace wire = (PartRedwireFace) part;
                if (hit.getY() > 2 / 16D) {
                    if (typeB == null) {
                        if (getWorld().isRemote)
                            return true;
                        typeB = wire.getRedwireType(ForgeDirection.UNKNOWN);
                        bundledB = false;
                        inWorldB = true;
                        getRedstoneConnectionCache().recalculateConnections();
                        sendUpdatePacket();
                        if (!player.capabilities.isCreativeMode)
                            item.stackSize--;
                        return true;
                    }
                } else {
                    if (typeA == null) {
                        if (getWorld().isRemote)
                            return true;
                        typeA = wire.getRedwireType(ForgeDirection.UNKNOWN);
                        bundledA = false;
                        inWorldA = true;
                        getRedstoneConnectionCache().recalculateConnections();
                        sendUpdatePacket();
                        if (!player.capabilities.isCreativeMode)
                            item.stackSize--;
                        return true;
                    }
                }
            }
        } else if (item.getItem() instanceof IScrewdriver && player.isSneaking()) {
            if (hit.getY() > 2 / 16D && ((hit.getY() <= 4 / 16D && hit.getX() > 0.5 - 1 / 16D && hit.getX() > 0.5 + 1 / 16D) || hit.getY() > 4 / 16D)) {
                if (typeB != null) {
                    if (getWorld().isRemote)
                        return true;
                    IOHelper.spawnItemInWorld(getWorld(), typeB.getPartInfo(MinecraftColor.NONE, bundledB).getStack(), getX() + 0.5, getY() + 0.5, getZ() + 0.5);
                    typeB = null;
                    bundledB = false;
                    inWorldB = false;
                    ((IScrewdriver) item.getItem()).damage(item, 1, player, false);
                    getRedstoneConnectionCache().recalculateConnections();
                    sendUpdatePacket();
                    return true;
                }
            } else if (hit.getY() > 2 / 16D) {
                if (typeA != null) {
                    if (getWorld().isRemote)
                        return true;
                    IOHelper.spawnItemInWorld(getWorld(), typeA.getPartInfo(MinecraftColor.NONE, bundledA).getStack(), getX() + 0.5, getY() + 0.5, getZ() + 0.5);
                    typeA = null;
                    bundledA = false;
                    inWorldA = false;
                    ((IScrewdriver) item.getItem()).damage(item, 1, player, false);
                    getRedstoneConnectionCache().recalculateConnections();
                    sendUpdatePacket();
                    return true;
                }
            }
        }
    }
    return super.onActivated(player, mop, item);
}
Also used : ItemPart(com.bluepowermod.item.ItemPart) IScrewdriver(com.bluepowermod.api.misc.IScrewdriver) IPart(uk.co.qmunity.lib.part.IPart) PartRedwireFace(com.bluepowermod.part.wire.redstone.PartRedwireFace) Vec3d(uk.co.qmunity.lib.vec.Vec3d) PartRedwireFaceUninsulated(com.bluepowermod.part.wire.redstone.PartRedwireFace.PartRedwireFaceUninsulated)

Aggregations

Vec3d (uk.co.qmunity.lib.vec.Vec3d)7 IPart (uk.co.qmunity.lib.part.IPart)4 IScrewdriver (com.bluepowermod.api.misc.IScrewdriver)2 ItemPart (com.bluepowermod.item.ItemPart)2 PartRedwireFace (com.bluepowermod.part.wire.redstone.PartRedwireFace)2 PartRedwireFaceUninsulated (com.bluepowermod.part.wire.redstone.PartRedwireFace.PartRedwireFaceUninsulated)2 SideOnly (cpw.mods.fml.relauncher.SideOnly)2 IIcon (net.minecraft.util.IIcon)2 ForgeDirection (net.minecraftforge.common.util.ForgeDirection)2 RenderHelper (uk.co.qmunity.lib.client.render.RenderHelper)2 Vec3dCube (uk.co.qmunity.lib.vec.Vec3dCube)2 IAdvancedSilkyRemovable (com.bluepowermod.api.block.IAdvancedSilkyRemovable)1 ISilkyRemovable (com.bluepowermod.api.block.ISilkyRemovable)1 IBundledDevice (com.bluepowermod.api.wire.redstone.IBundledDevice)1 IRedstoneDevice (com.bluepowermod.api.wire.redstone.IRedstoneDevice)1 GuiScreen (net.minecraft.client.gui.GuiScreen)1 GuiContainer (net.minecraft.client.gui.inventory.GuiContainer)1 ItemStack (net.minecraft.item.ItemStack)1 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)1 Vec3 (net.minecraft.util.Vec3)1