private bool Func_27031_a(net.minecraft.src.World world, int i, int j, int k, bool flag, int l, int i1) { int j1 = world.GetBlockId(i, j, k); if (j1 == net.minecraft.src.Block.GOLDEN_RAIL.ID) { int k1 = world.GetBlockMetadata(i, j, k); int l1 = k1 & 7; if (i1 == 1 && (l1 == 0 || l1 == 4 || l1 == 5)) { return(false); } if (i1 == 0 && (l1 == 1 || l1 == 2 || l1 == 3)) { return(false); } if ((k1 & 8) != 0) { if (world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered (i, j + 1, k)) { return(true); } else { return(Func_27032_a(world, i, j, k, k1, flag, l + 1)); } } } return(false); }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpBukkitLive.SharpBukkit.SharpRandom random) { if (world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered (i, j + 1, k)) { DispenseItem(world, i, j, k, random); } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower()) { bool flag = world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered (i, j + 1, k); if (flag) { world.ScheduleUpdateTick(i, j, k, ID, TickRate()); } } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower() && world.IsBlockIndirectlyGettingPowered (i, j, k)) { OnBlockDestroyedByPlayer(world, i, j, k, 1); world.SetBlockWithNotify(i, j, k, 0); } }
public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int k) { base.OnBlockAdded(world, i, j, k); if (world.IsBlockIndirectlyGettingPowered(i, j, k)) { OnBlockDestroyedByPlayer(world, i, j, k, 1); world.SetBlockWithNotify(i, j, k, 0); } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { int i1 = world.GetBlockMetadata(i, j, k); if ((i1 & 8) != 0) { if (world.GetBlockId(i, j - 1, k) != ID) { world.SetBlockWithNotify(i, j, k, 0); } if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower()) { OnNeighborBlockChange(world, i, j - 1, k, l); } } else { bool flag = false; if (world.GetBlockId(i, j + 1, k) != ID) { world.SetBlockWithNotify(i, j, k, 0); flag = true; } if (!world.IsBlockNormalCube(i, j - 1, k)) { world.SetBlockWithNotify(i, j, k, 0); flag = true; if (world.GetBlockId(i, j + 1, k) == ID) { world.SetBlockWithNotify(i, j + 1, k, 0); } } if (flag) { if (!world.singleplayerWorld) { DropBlockAsItem(world, i, j, k, i1); } } else { if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower()) { bool flag1 = world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered (i, j + 1, k); Func_272_a(world, i, j, k, flag1); } } } }
private void Func_4038_g(net.minecraft.src.World world, int i, int j, int k, bool flag) { if (world.singleplayerWorld) { return; } else { (new net.minecraft.src.RailLogic(this, world, i, j, k)).Func_596_a(world.IsBlockIndirectlyGettingPowered (i, j, k), flag); return; } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { if (world.singleplayerWorld) { return; } int i1 = world.GetBlockMetadata(i, j, k); int j1 = i; int k1 = k; if ((i1 & 3) == 0) { k1++; } if ((i1 & 3) == 1) { k1--; } if ((i1 & 3) == 2) { j1++; } if ((i1 & 3) == 3) { j1--; } if (!world.IsBlockNormalCube(j1, j, k1)) { world.SetBlockWithNotify(i, j, k, 0); DropBlockAsItem(world, i, j, k, i1); } if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower()) { bool flag = world.IsBlockIndirectlyGettingPowered(i, j, k); Func_28040_a(world, i, j, k, flag); } }
public override void OnNeighborBlockChange(net.minecraft.src.World world, int i, int j, int k, int l) { if (world.singleplayerWorld) { return; } int i1 = world.GetBlockMetadata(i, j, k); int j1 = i1; if (field_27034_a) { j1 &= 7; } bool flag = false; if (!world.IsBlockNormalCube(i, j - 1, k)) { flag = true; } if (j1 == 2 && !world.IsBlockNormalCube(i + 1, j, k)) { flag = true; } if (j1 == 3 && !world.IsBlockNormalCube(i - 1, j, k)) { flag = true; } if (j1 == 4 && !world.IsBlockNormalCube(i, j, k - 1)) { flag = true; } if (j1 == 5 && !world.IsBlockNormalCube(i, j, k + 1)) { flag = true; } if (flag) { DropBlockAsItem(world, i, j, k, world.GetBlockMetadata(i, j, k)); world.SetBlockWithNotify(i, j, k, 0); } else { if (ID == net.minecraft.src.Block.GOLDEN_RAIL.ID) { bool flag1 = world.IsBlockIndirectlyGettingPowered(i, j, k) || world.IsBlockIndirectlyGettingPowered (i, j + 1, k); flag1 = flag1 || Func_27032_a(world, i, j, k, i1, true, 0) || Func_27032_a(world, i, j, k, i1, false, 0); bool flag2 = false; if (flag1 && (i1 & 8) == 0) { world.SetBlockMetadataWithNotify(i, j, k, j1 | 8); flag2 = true; } else { if (!flag1 && (i1 & 8) != 0) { world.SetBlockMetadataWithNotify(i, j, k, j1); flag2 = true; } } if (flag2) { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); if (j1 == 2 || j1 == 3 || j1 == 4 || j1 == 5) { world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); } } } else { if (l > 0 && net.minecraft.src.Block.blocksList[l].CanProvidePower() && !field_27034_a && net.minecraft.src.RailLogic.GetNAdjacentTracks(new net.minecraft.src.RailLogic (this, world, i, j, k)) == 3) { Func_4038_g(world, i, j, k, false); } } } }
private void Func_21031_a(net.minecraft.src.World world, int i, int j, int k, int l, int i1, int j1) { int k1 = world.GetBlockMetadata(i, j, k); int l1 = 0; wiresProvidePower = false; bool flag = world.IsBlockIndirectlyGettingPowered(i, j, k); wiresProvidePower = true; if (flag) { l1 = 15; } else { for (int i2 = 0; i2 < 4; i2++) { int k2 = i; int i3 = k; if (i2 == 0) { k2--; } if (i2 == 1) { k2++; } if (i2 == 2) { i3--; } if (i2 == 3) { i3++; } if (k2 != l || j != i1 || i3 != j1) { l1 = GetMaxCurrentStrength(world, k2, j, i3, l1); } if (world.IsBlockNormalCube(k2, j, i3) && !world.IsBlockNormalCube(i, j + 1, k)) { if (k2 != l || j + 1 != i1 || i3 != j1) { l1 = GetMaxCurrentStrength(world, k2, j + 1, i3, l1); } continue; } if (!world.IsBlockNormalCube(k2, j, i3) && (k2 != l || j - 1 != i1 || i3 != j1)) { l1 = GetMaxCurrentStrength(world, k2, j - 1, i3, l1); } } if (l1 > 0) { l1--; } else { l1 = 0; } } if (k1 != l1) { world.editingBlocks = true; world.SetBlockMetadataWithNotify(i, j, k, l1); world.MarkBlocksDirty(i, j, k, i, j, k); world.editingBlocks = false; for (int j2 = 0; j2 < 4; j2++) { int l2 = i; int j3 = k; int k3 = j - 1; if (j2 == 0) { l2--; } if (j2 == 1) { l2++; } if (j2 == 2) { j3--; } if (j2 == 3) { j3++; } if (world.IsBlockNormalCube(l2, j, j3)) { k3 += 2; } int l3 = 0; l3 = GetMaxCurrentStrength(world, l2, j, j3, -1); l1 = world.GetBlockMetadata(i, j, k); if (l1 > 0) { l1--; } if (l3 >= 0 && l3 != l1) { Func_21031_a(world, l2, j, j3, i, j, k); } l3 = GetMaxCurrentStrength(world, l2, k3, j3, -1); l1 = world.GetBlockMetadata(i, j, k); if (l1 > 0) { l1--; } if (l3 >= 0 && l3 != l1) { Func_21031_a(world, l2, k3, j3, i, j, k); } } if (k1 == 0 || l1 == 0) { field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i - 1, j, k)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i + 1, j, k)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j - 1, k)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j + 1, k)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k - 1)); field_21032_b.Add(new net.minecraft.src.ChunkPosition(i, j, k + 1)); } } }