<Compile Include="Data\DisplayNameAttribute.cs" />
<Compile Include="Subsystems\JsonGenerator.cs" />
<Compile Include="Subsystems\Snapshot.cs" />
+ <Compile Include="Data\JSON\BlockPosJson.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="VS_libs\" />
<Folder Include="Libs\" />
<Folder Include="Subsystems\" />
<Folder Include="Renderers\" />
+ <Folder Include="Data\JSON\" />
</ItemGroup>
<ItemGroup>
<None Include="modinfo.json">
--- /dev/null
+using System;
+
+using Newtonsoft.Json;
+
+using ProtoBuf;
+
+using Vintagestory.API.MathTools;
+
+namespace Automap
+{
+ [JsonConverter(typeof(BlockPosConverter))]
+ [ProtoContract]
+ public class BlockPosJson : BlockPos
+ {
+ public BlockPosJson(BlockPos orig) : base(x: orig.X, y: orig.Y, z: orig.Z)
+ {
+ }
+
+
+ }
+
+ /// <summary>
+ /// How JSON object conversion should be done for special formatting
+ /// </summary>
+ public class BlockPosConverter : JsonConverter
+ {
+ public override bool CanConvert(Type objectType)
+ {
+ return objectType == typeof(BlockPosJson);
+ }
+
+ public override bool CanRead {
+ get
+ {
+ return false;
+ }
+ }
+
+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+ {
+ throw new NotImplementedException( );
+ }
+
+ public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+ {
+ if (value != null) {
+ BlockPosJson bpj = value as BlockPosJson;
+
+ writer.WriteStartArray( );
+ writer.WriteValue(bpj.X);
+ writer.WriteValue(bpj.Y);
+ writer.WriteValue(bpj.Z);
+ writer.WriteEndArray( );
+ }
+ else writer.WriteNull( );
+
+ }
+
+ }
+}
+
public DateTime Timestamp;
+ [DisplayName(4, "Dest")]
+ [ProtoMember(5)]
+ public BlockPosJson Destination;
+
+
}
public class PointsOfInterest : KeyedCollection<BlockPos, PointOfInterest>
internal static void DecodeTranslocator(ICoreClientAPI clientAPI, PointsOfInterest poi, BlockPos posn, Block block)
{
- clientAPI.Logger.VerboseDebug("TRANSLOCATOR Designator Invoked!");
+ #if DEBUG
+ clientAPI.Logger.VerboseDebug("TRANSLOCATOR Designator Invoked!");
+ #endif
//Where to? and from!
BlockEntityStaticTranslocator te = clientAPI.World.BlockAccessor.GetBlockEntity(posn) as BlockEntityStaticTranslocator;
Location = posn.Copy(),
Notes = textTarget.ToString(),
Timestamp = DateTime.UtcNow,
+ Destination = new BlockPosJson(te.TargetLocation)
}
);
jsonWriter.WriteMapTupleForeach(
$"{poi.Location.X}_{poi.Location.Z}",
PointsOfInterest_Vals,
- (mem) => jsonWriter.WriteValue(GetValue(mem, poi))
+ (mem) => {
+ var dasField = GetValue(mem, poi);
+ jsonWriter.WriteRawValue(JsonConvert.SerializeObject(dasField));
+ }
);
});
#if DEBUG