Search in sources :

Example 1 with RailMonoMagnetBase

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

the class NSPCT6W 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 2 with RailMonoMagnetBase

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

the class NSPCT4M 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 3 with RailMonoMagnetBase

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

the class NSC1B 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 4 with RailMonoMagnetBase

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

the class ItemNSC1BM 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) {
            LocoBase entityminecart = new NSC1BM(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 : NSC1BM(club.nsdn.nyasamarailway.entity.nsc.NSC1BM) RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase) LocoBase(club.nsdn.nyasamarailway.entity.LocoBase)

Example 5 with RailMonoMagnetBase

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

the class ItemNSC2BM 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) {
            LocoBase entityminecart = new NSC2BM(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 : NSC2BM(club.nsdn.nyasamarailway.entity.nsc.NSC2BM) RailMonoMagnetBase(club.nsdn.nyasamarailway.tileblock.rail.mono.RailMonoMagnetBase) LocoBase(club.nsdn.nyasamarailway.entity.LocoBase)

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