Search in sources :

Example 6 with RailMonoMagnetBase

use of club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase in project NyaSamaRailway by NSDN.

the class NSPCT6C method onUpdate.

@Override
public void onUpdate() {
    if (!worldObj.isRemote) {
        int px = MathHelper.floor_double(this.prevPosX);
        int py = MathHelper.floor_double(this.prevPosY);
        int pz = MathHelper.floor_double(this.prevPosZ);
        Block pBlock = worldObj.getBlock(px, py, pz);
        int x = MathHelper.floor_double(this.posX);
        int y = MathHelper.floor_double(this.posY);
        int z = MathHelper.floor_double(this.posZ);
        Block block = worldObj.getBlock(x, y, z);
        ForgeDirection dir = ForgeDirection.UNKNOWN;
        if (worldObj.getTileEntity(x, y, z) instanceof ConvWireMono.Conv) {
            dir = ((ConvWireMono.Conv) worldObj.getTileEntity(x, y, z)).direction;
        }
        ForgeDirection toDir = ForgeDirection.UNKNOWN;
        int yaw = MathHelper.floor_double((double) (this.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        switch(yaw) {
            case 0:
                toDir = ForgeDirection.SOUTH;
                break;
            case 1:
                toDir = ForgeDirection.WEST;
                break;
            case 2:
                toDir = ForgeDirection.NORTH;
                break;
            case 3:
                toDir = ForgeDirection.EAST;
                break;
        }
        if (block instanceof ConvWireMono && pBlock != block) {
            switch(dir) {
                case // drop to North
                SOUTH:
                    if (toDir == ForgeDirection.NORTH)
                        shiftY = MONO;
                    else if (toDir == ForgeDirection.SOUTH)
                        shiftY = WIRE;
                    break;
                case // drop to East
                WEST:
                    if (toDir == ForgeDirection.EAST)
                        shiftY = MONO;
                    else if (toDir == ForgeDirection.WEST)
                        shiftY = WIRE;
                    break;
                case // drop to South
                NORTH:
                    if (toDir == ForgeDirection.NORTH)
                        shiftY = WIRE;
                    else if (toDir == ForgeDirection.SOUTH)
                        shiftY = MONO;
                    break;
                case // drop to West
                EAST:
                    if (toDir == ForgeDirection.EAST)
                        shiftY = WIRE;
                    else if (toDir == ForgeDirection.WEST)
                        shiftY = MONO;
                    break;
            }
        } else if (block instanceof RailMonoMagnetBase) {
            shiftY = MONO;
        } else if (block instanceof BlockWire) {
            shiftY = WIRE;
        }
        double v = Math.sqrt(motionX * motionX + motionZ * motionZ);
        if (v > 1.0)
            shiftYCnt = shiftY;
        else if (!(block instanceof ConvWireMono) && v == 0)
            shiftYCnt = shiftY;
        else {
            if (shiftYCnt + v < shiftY)
                shiftYCnt += v;
            else if (shiftYCnt - v > shiftY)
                shiftYCnt -= v;
            else
                shiftYCnt = shiftY;
        }
        setShiftYCnt(shiftYCnt);
        setShiftY(shiftY);
    }
    super.onUpdate();
}
Also used : BlockWire(club.nsdn.nyasamaelectricity.tileblock.wire.BlockWire) RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase) ForgeDirection(net.minecraftforge.common.util.ForgeDirection) Block(net.minecraft.block.Block) ConvWireMono(club.nsdn.nyasamarailway.tileblock.rail.ConvWireMono)

Example 7 with RailMonoMagnetBase

use of club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase in project NyaSamaRailway by NSDN.

the class NSPCT8C method onUpdate.

@Override
public void onUpdate() {
    if (!worldObj.isRemote) {
        int px = MathHelper.floor_double(this.prevPosX);
        int py = MathHelper.floor_double(this.prevPosY);
        int pz = MathHelper.floor_double(this.prevPosZ);
        Block pBlock = worldObj.getBlock(px, py, pz);
        int x = MathHelper.floor_double(this.posX);
        int y = MathHelper.floor_double(this.posY);
        int z = MathHelper.floor_double(this.posZ);
        Block block = worldObj.getBlock(x, y, z);
        ForgeDirection dir = ForgeDirection.UNKNOWN;
        if (worldObj.getTileEntity(x, y, z) instanceof ConvWireMono.Conv) {
            dir = ((ConvWireMono.Conv) worldObj.getTileEntity(x, y, z)).direction;
        }
        ForgeDirection toDir = ForgeDirection.UNKNOWN;
        int yaw = MathHelper.floor_double((double) (this.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        switch(yaw) {
            case 0:
                toDir = ForgeDirection.SOUTH;
                break;
            case 1:
                toDir = ForgeDirection.WEST;
                break;
            case 2:
                toDir = ForgeDirection.NORTH;
                break;
            case 3:
                toDir = ForgeDirection.EAST;
                break;
        }
        if (block instanceof ConvWireMono && pBlock != block) {
            switch(dir) {
                case // drop to North
                SOUTH:
                    if (toDir == ForgeDirection.NORTH)
                        shiftY = MONO;
                    else if (toDir == ForgeDirection.SOUTH)
                        shiftY = WIRE;
                    break;
                case // drop to East
                WEST:
                    if (toDir == ForgeDirection.EAST)
                        shiftY = MONO;
                    else if (toDir == ForgeDirection.WEST)
                        shiftY = WIRE;
                    break;
                case // drop to South
                NORTH:
                    if (toDir == ForgeDirection.NORTH)
                        shiftY = WIRE;
                    else if (toDir == ForgeDirection.SOUTH)
                        shiftY = MONO;
                    break;
                case // drop to West
                EAST:
                    if (toDir == ForgeDirection.EAST)
                        shiftY = WIRE;
                    else if (toDir == ForgeDirection.WEST)
                        shiftY = MONO;
                    break;
            }
        } else if (block instanceof RailMonoMagnetBase) {
            shiftY = MONO;
        } else if (block instanceof BlockWire) {
            shiftY = WIRE;
        }
        double v = Math.sqrt(motionX * motionX + motionZ * motionZ);
        if (v > 1.0)
            shiftYCnt = shiftY;
        else if (!(block instanceof ConvWireMono) && v == 0)
            shiftYCnt = shiftY;
        else {
            if (shiftYCnt + v < shiftY)
                shiftYCnt += v;
            else if (shiftYCnt - v > shiftY)
                shiftYCnt -= v;
            else
                shiftYCnt = shiftY;
        }
        setShiftYCnt(shiftYCnt);
        setShiftY(shiftY);
    }
    super.onUpdate();
}
Also used : BlockWire(club.nsdn.nyasamaelectricity.tileblock.wire.BlockWire) RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase) ForgeDirection(net.minecraftforge.common.util.ForgeDirection) Block(net.minecraft.block.Block) ConvWireMono(club.nsdn.nyasamarailway.tileblock.rail.ConvWireMono)

Example 8 with RailMonoMagnetBase

use of club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase in project NyaSamaRailway by NSDN.

the class ItemNSPCT4 method onItemUse.

@Override
public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float px, float py, float pz) {
    if (BlockRailBase.func_150051_a(world.getBlock(x, y, z)) && world.getBlock(x, y, z) instanceof RailMonoMagnetBase) {
        if (!world.isRemote) {
            MinecartBase entityminecart = new NSPCT4(world, (double) x + 0.5, (double) y + 0.5, (double) z + 0.5);
            if (itemStack.hasDisplayName()) {
                entityminecart.setMinecartName(itemStack.getDisplayName());
            }
            world.spawnEntityInWorld(entityminecart);
        }
        --itemStack.stackSize;
        return true;
    } else {
        return false;
    }
}
Also used : MinecartBase(club.nsdn.nyasamarailway.entity.MinecartBase) RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase) NSPCT4(club.nsdn.nyasamarailway.entity.cart.NSPCT4)

Aggregations

RailMonoMagnetBase (club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase)8 BlockWire (club.nsdn.nyasamaelectricity.tileblock.wire.BlockWire)4 ConvWireMono (club.nsdn.nyasamarailway.tileblock.rail.ConvWireMono)4 Block (net.minecraft.block.Block)4 ForgeDirection (net.minecraftforge.common.util.ForgeDirection)4 LocoBase (club.nsdn.nyasamarailway.entity.LocoBase)1 MinecartBase (club.nsdn.nyasamarailway.entity.MinecartBase)1 NSPCT4 (club.nsdn.nyasamarailway.entity.cart.NSPCT4)1 NSPCT4M (club.nsdn.nyasamarailway.entity.loco.NSPCT4M)1