private void Func_27035_f(net.minecraft.src.World world, int i, int j, int k, int l) { bool flag = (l & 8) != 0; bool flag1 = false; float f = 0.125F; List <Entity> list = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType (typeof(net.minecraft.src.EntityMinecart)), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool ((float)i + f, j, (float)k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k + 1) - f)); if (list.Count > 0) { flag1 = true; } if (flag1 && !flag) { world.SetBlockMetadataWithNotify(i, j, k, l | 8); world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.MarkBlocksDirty(i, j, k, i, j, k); } if (!flag1 && flag) { world.SetBlockMetadataWithNotify(i, j, k, l & 7); world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.MarkBlocksDirty(i, j, k, i, j, k); } if (flag1) { world.ScheduleUpdateTick(i, j, k, ID, TickRate()); } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { int l = world.GetBlockMetadata(i, j, k); if (l > 0) { world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); } base.OnBlockRemoval(world, i, j, k); }
private void SetStateIfMobInteractsWithPlate(net.minecraft.src.World world, int i , int j, int k) { bool flag = world.GetBlockMetadata(i, j, k) == 1; bool flag1 = false; float f = 0.125F; List <Entity> list = null; if (triggerMobType == net.minecraft.src.EnumMobType.everything) { list = world.GetEntitiesWithinAABBExcludingEntity(null, net.minecraft.src.AxisAlignedBB .GetBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (double )j + 0.25D, (float)(k + 1) - f)); } if (triggerMobType == net.minecraft.src.EnumMobType.mobs) { list = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType(typeof(net.minecraft.src.EntityLiving )), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool((float)i + f, j, (float )k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k + 1) - f)); } if (triggerMobType == net.minecraft.src.EnumMobType.players) { list = world.GetEntitiesWithinAABB(Sharpen.Runtime.GetClassForType(typeof(net.minecraft.src.EntityPlayer )), net.minecraft.src.AxisAlignedBB.GetBoundingBoxFromPool((float)i + f, j, (float )k + f, (float)(i + 1) - f, (double)j + 0.25D, (float)(k + 1) - f)); } if (list.Count > 0) { flag1 = true; } if (flag1 && !flag) { world.SetBlockMetadataWithNotify(i, j, k, 1); world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.MarkBlocksDirty(i, j, k, i, j, k); world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.10000000000000001D, (double )k + 0.5D, "random.click", 0.3F, 0.6F); } if (!flag1 && flag) { world.SetBlockMetadataWithNotify(i, j, k, 0); world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.MarkBlocksDirty(i, j, k, i, j, k); world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.10000000000000001D, (double )k + 0.5D, "random.click", 0.3F, 0.5F); } if (flag1) { world.ScheduleUpdateTick(i, j, k, ID, TickRate()); } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { base.OnBlockRemoval(world, i, j, k); if (world.singleplayerWorld) { return; } world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); UpdateAndPropagateCurrentStrength(world, i, j, k); NotifyWireNeighborsOfNeighborChange(world, i - 1, j, k); NotifyWireNeighborsOfNeighborChange(world, i + 1, j, k); NotifyWireNeighborsOfNeighborChange(world, i, j, k - 1); NotifyWireNeighborsOfNeighborChange(world, i, j, k + 1); if (world.IsBlockNormalCube(i - 1, j, k)) { NotifyWireNeighborsOfNeighborChange(world, i - 1, j + 1, k); } else { NotifyWireNeighborsOfNeighborChange(world, i - 1, j - 1, k); } if (world.IsBlockNormalCube(i + 1, j, k)) { NotifyWireNeighborsOfNeighborChange(world, i + 1, j + 1, k); } else { NotifyWireNeighborsOfNeighborChange(world, i + 1, j - 1, k); } if (world.IsBlockNormalCube(i, j, k - 1)) { NotifyWireNeighborsOfNeighborChange(world, i, j + 1, k - 1); } else { NotifyWireNeighborsOfNeighborChange(world, i, j - 1, k - 1); } if (world.IsBlockNormalCube(i, j, k + 1)) { NotifyWireNeighborsOfNeighborChange(world, i, j + 1, k + 1); } else { NotifyWireNeighborsOfNeighborChange(world, i, j - 1, k + 1); } }
private void UpdateAndPropagateCurrentStrength(net.minecraft.src.World world, int i, int j, int k) { Func_21031_a(world, i, j, k, i, j, k); List <ChunkPosition> arraylist = new List <ChunkPosition>(field_21032_b); field_21032_b.Clear(); for (int l = 0; l < arraylist.Count; l++) { net.minecraft.src.ChunkPosition chunkposition = (net.minecraft.src.ChunkPosition) arraylist[l]; world.NotifyBlocksOfNeighborChange(chunkposition.x, chunkposition.y, chunkposition .z, ID); } }
public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int k) { world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { byte byte0 = 2; for (int l = i - byte0; l <= i + byte0; l++) { for (int i1 = j - byte0; i1 <= j + byte0; i1++) { for (int j1 = k - byte0; j1 <= k + byte0; j1++) { world.NotifyBlocksOfNeighborChange(l, i1, j1, world.GetBlockId(l, i1, j1)); } } } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { if (torchActive) { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); } }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpRandom random) { if (world.singleplayerWorld) { return; } int l = world.GetBlockMetadata(i, j, k); if ((l & 8) == 0) { return; } world.SetBlockMetadataWithNotify(i, j, k, l & 7); world.NotifyBlocksOfNeighborChange(i, j, k, ID); int i1 = l & 7; if (i1 == 1) { world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); } else { if (i1 == 2) { world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); } else { if (i1 == 3) { world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); } else { if (i1 == 4) { world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); } else { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); } } } } world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "random.click" , 0.3F, 0.5F); world.MarkBlocksDirty(i, j, k, i, j, k); }
private void NotifyWireNeighborsOfNeighborChange(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockId(i, j, k) != ID) { return; } else { world.NotifyBlocksOfNeighborChange(i, j, k, ID); world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); return; } }
public override bool BlockActivated(net.minecraft.src.World world, int i, int j, int k, net.minecraft.src.EntityPlayer entityplayer) { int l = world.GetBlockMetadata(i, j, k); int i1 = l & 7; int j1 = 8 - (l & 8); if (j1 == 0) { return(true); } world.SetBlockMetadataWithNotify(i, j, k, i1 + j1); world.MarkBlocksDirty(i, j, k, i, j, k); world.PlaySoundEffect((double)i + 0.5D, (double)j + 0.5D, (double)k + 0.5D, "random.click" , 0.3F, 0.6F); world.NotifyBlocksOfNeighborChange(i, j, k, ID); if (i1 == 1) { world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); } else { if (i1 == 2) { world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); } else { if (i1 == 3) { world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); } else { if (i1 == 4) { world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); } else { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); } } } } world.ScheduleUpdateTick(i, j, k, ID, TickRate()); return(true); }
public override void OnBlockAdded(net.minecraft.src.World world, int i, int j, int k) { if (world.GetBlockMetadata(i, j, k) == 0) { base.OnBlockAdded(world, i, j, k); } if (torchActive) { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); world.NotifyBlocksOfNeighborChange(i, j + 1, k, ID); world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); } }
public override void OnBlockRemoval(net.minecraft.src.World world, int i, int j, int k) { int l = world.GetBlockMetadata(i, j, k); if ((l & 8) > 0) { world.NotifyBlocksOfNeighborChange(i, j, k, ID); int i1 = l & 7; if (i1 == 1) { world.NotifyBlocksOfNeighborChange(i - 1, j, k, ID); } else { if (i1 == 2) { world.NotifyBlocksOfNeighborChange(i + 1, j, k, ID); } else { if (i1 == 3) { world.NotifyBlocksOfNeighborChange(i, j, k - 1, ID); } else { if (i1 == 4) { world.NotifyBlocksOfNeighborChange(i, j, k + 1, ID); } else { world.NotifyBlocksOfNeighborChange(i, j - 1, k, ID); } } } } } base.OnBlockRemoval(world, i, j, k); }
public override void UpdateTick(net.minecraft.src.World world, int i, int j, int k, SharpBukkitLive.SharpBukkit.SharpRandom random) { int l = Func_301_g(world, i, j, k); byte byte0 = 1; if (blockMaterial == net.minecraft.src.Material.lava && !world.worldProvider.isHellWorld) { byte0 = 2; } bool flag = true; if (l > 0) { int i1 = -100; field_659_a = 0; i1 = Func_307_e(world, i - 1, j, k, i1); i1 = Func_307_e(world, i + 1, j, k, i1); i1 = Func_307_e(world, i, j, k - 1, i1); i1 = Func_307_e(world, i, j, k + 1, i1); int j1 = i1 + byte0; if (j1 >= 8 || i1 < 0) { j1 = -1; } if (Func_301_g(world, i, j + 1, k) >= 0) { int l1 = Func_301_g(world, i, j + 1, k); if (l1 >= 8) { j1 = l1; } else { j1 = l1 + 8; } } if (field_659_a >= 2 && blockMaterial == net.minecraft.src.Material.water) { if (world.GetBlockMaterial(i, j - 1, k).IsSolid()) { j1 = 0; } else { if (world.GetBlockMaterial(i, j - 1, k) == blockMaterial && world.GetBlockMetadata (i, j, k) == 0) { j1 = 0; } } } if (blockMaterial == net.minecraft.src.Material.lava && l < 8 && j1 < 8 && j1 > l && random.Next(4) != 0) { j1 = l; flag = false; } if (j1 != l) { l = j1; if (l < 0) { world.SetBlockWithNotify(i, j, k, 0); } else { world.SetBlockMetadataWithNotify(i, j, k, l); world.ScheduleUpdateTick(i, j, k, ID, TickRate()); world.NotifyBlocksOfNeighborChange(i, j, k, ID); } } else { if (flag) { Func_30004_i(world, i, j, k); } } } else { Func_30004_i(world, i, j, k); } if (Func_312_l(world, i, j - 1, k)) { if (l >= 8) { world.SetBlockAndMetadataWithNotify(i, j - 1, k, ID, l); } else { world.SetBlockAndMetadataWithNotify(i, j - 1, k, ID, l + 8); } } else { if (l >= 0 && (l == 0 || Func_309_k(world, i, j - 1, k))) { bool[] aflag = Func_4035_j(world, i, j, k); int k1 = l + byte0; if (l >= 8) { k1 = 1; } if (k1 >= 8) { return; } if (aflag[0]) { Func_311_f(world, i - 1, j, k, k1); } if (aflag[1]) { Func_311_f(world, i + 1, j, k, k1); } if (aflag[2]) { Func_311_f(world, i, j, k - 1, k1); } if (aflag[3]) { Func_311_f(world, i, j, k + 1, k1); } } } }
public virtual bool CreateExitLocation(net.minecraft.src.World world, net.minecraft.src.Entity entity) { byte byte0 = 16; double d = -1D; int i = net.minecraft.src.MathHelper.Floor_double(entity.posX); int j = net.minecraft.src.MathHelper.Floor_double(entity.posY); int k = net.minecraft.src.MathHelper.Floor_double(entity.posZ); int l = i; int i1 = j; int j1 = k; int k1 = 0; int l1 = field_28117_a.NextInt(4); for (int i2 = i - byte0; i2 <= i + byte0; i2++) { double d1 = ((double)i2 + 0.5D) - entity.posX; for (int j3 = k - byte0; j3 <= k + byte0; j3++) { double d3 = ((double)j3 + 0.5D) - entity.posZ; for (int k4 = 127; k4 >= 0; k4--) { if (!world.IsAirBlock(i2, k4, j3)) { continue; } for (; k4 > 0 && world.IsAirBlock(i2, k4 - 1, j3); k4--) { } for (int k5 = l1; k5 < l1 + 4; k5++) { int l6 = k5 % 2; int i8 = 1 - l6; if (k5 % 4 >= 2) { l6 = -l6; i8 = -i8; } for (int j9 = 0; j9 < 3; j9++) { for (int k10 = 0; k10 < 4; k10++) { for (int l11 = -1; l11 < 4; l11++) { int j12 = i2 + (k10 - 1) * l6 + j9 * i8; int l12 = k4 + l11; int j13 = (j3 + (k10 - 1) * i8) - j9 * l6; if (l11 < 0 && !world.GetBlockMaterial(j12, l12, j13).IsSolid() || l11 >= 0 && !world .IsAirBlock(j12, l12, j13)) { goto label0_break; } } } } double d5 = ((double)k4 + 0.5D) - entity.posY; double d7 = d1 * d1 + d5 * d5 + d3 * d3; if (d < 0.0D || d7 < d) { d = d7; l = i2; i1 = k4; j1 = j3; k1 = k5 % 4; } label0_continue :; } label0_break :; } } } if (d < 0.0D) { for (int j2 = i - byte0; j2 <= i + byte0; j2++) { double d2 = ((double)j2 + 0.5D) - entity.posX; for (int k3 = k - byte0; k3 <= k + byte0; k3++) { double d4 = ((double)k3 + 0.5D) - entity.posZ; for (int l4 = 127; l4 >= 0; l4--) { if (!world.IsAirBlock(j2, l4, k3)) { continue; } for (; world.IsAirBlock(j2, l4 - 1, k3); l4--) { } for (int l5 = l1; l5 < l1 + 2; l5++) { int i7 = l5 % 2; int j8 = 1 - i7; for (int k9 = 0; k9 < 4; k9++) { for (int l10 = -1; l10 < 4; l10++) { int i12 = j2 + (k9 - 1) * i7; int k12 = l4 + l10; int i13 = k3 + (k9 - 1) * j8; if (l10 < 0 && !world.GetBlockMaterial(i12, k12, i13).IsSolid() || l10 >= 0 && !world .IsAirBlock(i12, k12, i13)) { goto label1_break; } } } double d6 = ((double)l4 + 0.5D) - entity.posY; double d8 = d2 * d2 + d6 * d6 + d4 * d4; if (d < 0.0D || d8 < d) { d = d8; l = j2; i1 = l4; j1 = k3; k1 = l5 % 2; } label1_continue :; } label1_break :; } } } } int k2 = k1; int l2 = l; int i3 = i1; int l3 = j1; int i4 = k2 % 2; int j4 = 1 - i4; if (k2 % 4 >= 2) { i4 = -i4; j4 = -j4; } if (d < 0.0D) { if (i1 < 70) { i1 = 70; } if (i1 > 118) { i1 = 118; } i3 = i1; for (int i5 = -1; i5 <= 1; i5++) { for (int i6 = 1; i6 < 3; i6++) { for (int j7 = -1; j7 < 3; j7++) { int k8 = l2 + (i6 - 1) * i4 + i5 * j4; int l9 = i3 + j7; int i11 = (l3 + (i6 - 1) * j4) - i5 * i4; bool flag = j7 < 0; world.SetBlockWithNotify(k8, l9, i11, flag ? net.minecraft.src.Block.OBSIDIAN.ID : 0); } } } } for (int j5 = 0; j5 < 4; j5++) { world.editingBlocks = true; for (int j6 = 0; j6 < 4; j6++) { for (int k7 = -1; k7 < 4; k7++) { int l8 = l2 + (j6 - 1) * i4; int i10 = i3 + k7; int j11 = l3 + (j6 - 1) * j4; bool flag1 = j6 == 0 || j6 == 3 || k7 == -1 || k7 == 3; world.SetBlockWithNotify(l8, i10, j11, flag1 ? net.minecraft.src.Block.OBSIDIAN.ID : net.minecraft.src.Block.PORTAL.ID); } } world.editingBlocks = false; for (int k6 = 0; k6 < 4; k6++) { for (int l7 = -1; l7 < 4; l7++) { int i9 = l2 + (k6 - 1) * i4; int j10 = i3 + l7; int k11 = l3 + (k6 - 1) * j4; world.NotifyBlocksOfNeighborChange(i9, j10, k11, world.GetBlockId(i9, j10, k11)); } } } return(true); }
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); } } } }
public override bool OnItemUse(net.minecraft.src.ItemStack itemstack, net.minecraft.src.EntityPlayer entityplayer, net.minecraft.src.World world, int i, int j, int k, int l) { if (l != 1) { return(false); } j++; net.minecraft.src.Block block; if (field_260_a == net.minecraft.src.Material.wood) { block = net.minecraft.src.Block.WOODEN_DOOR; } else { block = net.minecraft.src.Block.IRON_DOOR_BLOCK; } if (!block.CanPlaceBlockAt(world, i, j, k)) { return(false); } int i1 = net.minecraft.src.MathHelper.Floor_double((double)(((entityplayer.rotationYaw + 180F) * 4F) / 360F) - 0.5D) & 3; byte byte0 = 0; byte byte1 = 0; if (i1 == 0) { byte1 = 1; } if (i1 == 1) { byte0 = unchecked ((byte)(-1)); } if (i1 == 2) { byte1 = unchecked ((byte)(-1)); } if (i1 == 3) { byte0 = 1; } int j1 = (world.IsBlockNormalCube(i - byte0, j, k - byte1) ? 1 : 0) + (world.IsBlockNormalCube (i - byte0, j + 1, k - byte1) ? 1 : 0); int k1 = (world.IsBlockNormalCube(i + byte0, j, k + byte1) ? 1 : 0) + (world.IsBlockNormalCube (i + byte0, j + 1, k + byte1) ? 1 : 0); bool flag = world.GetBlockId(i - byte0, j, k - byte1) == block.ID || world.GetBlockId (i - byte0, j + 1, k - byte1) == block.ID; bool flag1 = world.GetBlockId(i + byte0, j, k + byte1) == block.ID || world. GetBlockId(i + byte0, j + 1, k + byte1) == block.ID; bool flag2 = false; if (flag && !flag1) { flag2 = true; } else { if (k1 > j1) { flag2 = true; } } if (flag2) { i1 = i1 - 1 & 3; i1 += 4; } world.editingBlocks = true; world.SetBlockAndMetadataWithNotify(i, j, k, block.ID, i1); world.SetBlockAndMetadataWithNotify(i, j + 1, k, block.ID, i1 + 8); world.editingBlocks = false; world.NotifyBlocksOfNeighborChange(i, j, k, block.ID); world.NotifyBlocksOfNeighborChange(i, j + 1, k, block.ID); itemstack.stackSize--; return(true); }