private void CheckValidToggleAndNotObstructed() { targetAnvil = Api.World.BlockAccessor.GetBlockEntity(anvilPos) as BlockEntityAnvil; obstructed = false; if (renderer != null) { renderer.Obstructed = false; } mptoggle = Api.World.BlockAccessor.GetBlockEntity(togglePos)?.GetBehavior <BEBehaviorMPToggle>(); if (mptoggle?.ValidHammerBase(Pos) == false) { mptoggle = null; obstructed = true; if (renderer != null) { renderer.Obstructed = true; } return; } BlockPos npos = Pos.AddCopy(0, 1, 0); for (int i = 0; i < 3; i++) { Block block = Api.World.BlockAccessor.GetBlock(npos); Cuboidf[] collboxes = block.GetCollisionBoxes(Api.World.BlockAccessor, npos); if (collboxes != null && collboxes.Length > 0) { obstructed = true; if (renderer != null) { renderer.Obstructed = true; } break; } npos.Add(facing.Normali); } }
public override void OnNeighbourBlockChange(IWorldAccessor world, BlockPos pos, BlockPos neibpos) { BEBehaviorMPToggle bemptoggle = world.BlockAccessor.GetBlockEntity(pos)?.GetBehavior <BEBehaviorMPToggle>(); if (bemptoggle != null && !bemptoggle.IsAttachedToBlock()) { foreach (BlockFacing face in BlockFacing.HORIZONTALS) { BlockPos npos = pos.AddCopy(face); BlockAngledGears blockagears = world.BlockAccessor.GetBlock(npos) as BlockAngledGears; if (blockagears == null) { continue; } if (blockagears.Facings.Contains(face.Opposite) && blockagears.Facings.Length == 1) { world.BlockAccessor.BreakBlock(npos, null); } } } base.OnNeighbourBlockChange(world, pos, neibpos); }