public void OnChangedWithType(Chunk chunk, BlockChangeRequestOrigin origin, Vector3Int blockPosition, ItemTypes.ItemType typeOld, ItemTypes.ItemType typeNew) { if (Types.ContainsByReference(typeOld, out int idxOld)) { if (Positions.TryRemove(blockPosition, out CivCrate instance)) { chunk.GetEntities()?.Remove(blockPosition); } } if (Types.ContainsByReference(typeNew, out int idxNew)) { Colony colony = null; switch (origin.Type) { case BlockChangeRequestOrigin.EType.Colony: colony = origin.AsColony; break; case BlockChangeRequestOrigin.EType.Player: Players.Player play = origin.AsPlayer; colony = play.ActiveColony; break; } CivCrate crate = new CivCrate(colony); if (chunk.GetOrAllocateEntities().Add(blockPosition, crate)) { Positions.TryAdd(blockPosition, crate); } } }
void IChangedWithType.OnChangedWithType(Chunk chunk, BlockChangeRequestOrigin requestOrigin, Vector3Int blockPosition, ItemTypes.ItemType typeOld, ItemTypes.ItemType typeNew) { if (typeNew == BuiltinBlocks.Types.water && ServerManager.ServerSettings.Water.MaxUpdatesPerTick > 0) { locationsToCheck.AddIfUnique(blockPosition, val: true); } }
public virtual void OnChangedWithType(Chunk chunk, BlockChangeRequestOrigin origin, Vector3Int blockPosition, ItemTypes.ItemType typeOld, ItemTypes.ItemType typeNew) { //OnRemove if (typeNew == BlockTypes.BuiltinBlocks.Types.air) { SignManager.signs.Remove(blockPosition); //Remove the marker foreach (var mapNPlayer in Players.PlayerDatabase.Where(pl => pl.Value.ConnectionState == Players.EConnectionState.Connected).ToList()) { Players.Player player = mapNPlayer.Value; if (Math.ManhattanDistance(new Vector3Int(player.Position), blockPosition) <= SignManager.markerDistance) { UIManager.RemoveMarker("Khanx.Sign" + blockPosition + player.Name, player); } } } //OnAdd if (typeOld == BlockTypes.BuiltinBlocks.Types.air) { if (SignManager.signs.ContainsKey(blockPosition)) { return; } if (origin.Type == BlockChangeRequestOrigin.EType.Player) { SignManager.signs.Add(blockPosition, new Sign(origin.AsPlayer.ID, "-")); } else { SignManager.signs.Add(blockPosition, new Sign(new NetworkID(), "-")); } } }