Search in sources :

Example 11 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 12 with RailMonoMagnetBase

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

the class NSC2B method onUpdate.

@Override
public void onUpdate() {
    int x = MathHelper.floor_double(this.posX);
    int y = MathHelper.floor_double(this.posY);
    int z = MathHelper.floor_double(this.posZ);
    if (worldObj.getBlock(x, y, z) instanceof RailMonoMagnetBase) {
        RailMonoMagnetBase rail = (RailMonoMagnetBase) worldObj.getBlock(x, y, z);
        int meta = worldObj.getBlockMetadata(x, y, z);
        if (rail.isPowered())
            meta &= 0x7;
        if (meta >= 2 && meta <= 5) {
            if (shiftY < -0.5)
                shiftY += 0.05;
        } else if (shiftY > -1.0)
            shiftY -= 0.05;
    } else {
        boolean state;
        state = worldObj.getBlock(x + 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x - 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z + 1) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z - 1) instanceof RailMonoMagnetBase;
        if (!state && shiftY < 0)
            shiftY += 0.05;
    }
    super.onUpdate();
}
Also used : RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase)

Example 13 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 14 with RailMonoMagnetBase

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

the class NSC3B method onUpdate.

@Override
public void onUpdate() {
    int x = MathHelper.floor_double(this.posX);
    int y = MathHelper.floor_double(this.posY);
    int z = MathHelper.floor_double(this.posZ);
    if (worldObj.getBlock(x, y, z) instanceof RailMonoMagnetBase) {
        RailMonoMagnetBase rail = (RailMonoMagnetBase) worldObj.getBlock(x, y, z);
        int meta = worldObj.getBlockMetadata(x, y, z);
        if (rail.isPowered())
            meta &= 0x7;
        if (meta >= 2 && meta <= 5) {
            if (shiftY < -0.5)
                shiftY += 0.05;
        } else if (shiftY > -1.0)
            shiftY -= 0.05;
    } else {
        boolean state;
        state = worldObj.getBlock(x + 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x - 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z + 1) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z - 1) instanceof RailMonoMagnetBase;
        if (!state && shiftY < 0)
            shiftY += 0.05;
    }
    super.onUpdate();
}
Also used : RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase)

Example 15 with RailMonoMagnetBase

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

the class NSC1BM method onUpdate.

@Override
public void onUpdate() {
    int x = MathHelper.floor_double(this.posX);
    int y = MathHelper.floor_double(this.posY);
    int z = MathHelper.floor_double(this.posZ);
    if (worldObj.getBlock(x, y, z) instanceof RailMonoMagnetBase) {
        RailMonoMagnetBase rail = (RailMonoMagnetBase) worldObj.getBlock(x, y, z);
        int meta = worldObj.getBlockMetadata(x, y, z);
        if (rail.isPowered())
            meta &= 0x7;
        if (meta >= 2 && meta <= 5) {
            if (shiftY < -0.5)
                shiftY += 0.05;
        } else if (shiftY > -1.0)
            shiftY -= 0.05;
    } else {
        boolean state;
        state = worldObj.getBlock(x + 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x - 1, y, z) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z + 1) instanceof RailMonoMagnetBase;
        state |= worldObj.getBlock(x, y, z - 1) instanceof RailMonoMagnetBase;
        if (!state && shiftY < 0)
            shiftY += 0.05;
    }
    super.onUpdate();
}
Also used : RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase)

Aggregations

RailMonoMagnetBase (club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase)20 BlockWire (club.nsdn.nyasamaelectricity.tileblock.wire.BlockWire)4 LocoBase (club.nsdn.nyasamarailway.entity.LocoBase)4 MinecartBase (club.nsdn.nyasamarailway.entity.MinecartBase)4 ConvWireMono (club.nsdn.nyasamarailway.tileblock.rail.ConvWireMono)4 Block (net.minecraft.block.Block)4 ForgeDirection (net.minecraftforge.common.util.ForgeDirection)4 NSPCT4 (club.nsdn.nyasamarailway.entity.cart.NSPCT4)1 NSPCT4M (club.nsdn.nyasamarailway.entity.loco.NSPCT4M)1 NSC1B (club.nsdn.nyasamarailway.entity.nsc.NSC1B)1 NSC1BM (club.nsdn.nyasamarailway.entity.nsc.NSC1BM)1 NSC2B (club.nsdn.nyasamarailway.entity.nsc.NSC2B)1 NSC2BM (club.nsdn.nyasamarailway.entity.nsc.NSC2BM)1 NSC3B (club.nsdn.nyasamarailway.entity.nsc.NSC3B)1 NSC3BM (club.nsdn.nyasamarailway.entity.nsc.NSC3BM)1