private void OnBlockStabilized(Block block) { if (BlockMap.ContainsKey(block.Position)) { throw new Exception($"Attempted to add block, but one already exists at {block.Position}!"); } else { BlockMap[block.Position] = block; } _log.Info($"Block stabilized at {block.Position}."); OnChunkChanged.Raise(this); }
private void CreateEdges( ) { foreach (var block in Blocks) { BlockMap[block.Number] = block; } foreach (var block in Blocks) { var numbers = block.GetOutEdges( ); foreach (var number in numbers) { if (!BlockMap.ContainsKey(number)) { continue; } block.OutEdges.Add(BlockMap[number]); BlockMap[number].InEdges.Add(block); } } }
/// <inheritdoc /> public override object?ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer) { BlockMap result = new BlockMap(); var ob = JToken.Load(reader); if (ob is JObject obj) { foreach (var item in obj) { if (item.Value == null) { continue; } var key = item.Key; if (result.ContainsKey(key)) { continue; } BlockMappingEntry a = new BlockMappingEntry(); a.BedrockStates = new Dictionary <string, string>(); JObject itemValue = (JObject)item.Value; foreach (var itemKey in itemValue) { if (itemKey.Key == "bedrock_identifier") { a.BedrockIdentifier = itemKey.Value.ToObject <string>(); } else if (itemKey.Key == "bedrock_states") { if (itemKey.Value.Type == JTokenType.Object) { foreach (var state in (JObject)itemKey.Value) { switch (state.Value.Type) { case JTokenType.Boolean: a.BedrockStates.TryAdd(state.Key, state.Value.ToObject <bool>() ? "1" : "0"); break; default: a.BedrockStates.TryAdd(state.Key, state.Value.ToObject <string>()); break; } } } } } //var a = item.Value.ToObject<BlockMappingEntry>(serializer); //var match = Regex.Match(key); result.Add(key, a); } } return(result); }