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();
}
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();
}
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();
}
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;
}
}
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;
}
}
Aggregations