Updated plugin and removed commands that don't really belong here Using ILMerge to merge the parser into the DLL
128 lines
No EOL
4.6 KiB
C#
128 lines
No EOL
4.6 KiB
C#
using System;
|
|
using System.IO;
|
|
using DataLoader;
|
|
using GamecraftModdingAPI;
|
|
using GamecraftModdingAPI.Blocks;
|
|
using Newtonsoft.Json;
|
|
using RobocraftX.Blocks;
|
|
using RobocraftX.Blocks.Ghost;
|
|
using RobocraftX.Blocks.Scaling;
|
|
using RobocraftX.Character;
|
|
using RobocraftX.CommandLine.Custom;
|
|
using RobocraftX.Common;
|
|
using RobocraftX.Common.Input;
|
|
using RobocraftX.Common.Utilities;
|
|
using RobocraftX.CR.MachineEditing;
|
|
using RobocraftX.StateSync;
|
|
using Svelto.ECS;
|
|
using Svelto.ECS.EntityStructs;
|
|
using Unity.Jobs;
|
|
using Unity.Mathematics;
|
|
using uREPL;
|
|
|
|
namespace GCMC
|
|
{
|
|
public class CubePlacerEngine : IQueryingEntitiesEngine, IDeterministicTimeStopped
|
|
{
|
|
public void Ready()
|
|
{
|
|
RuntimeCommands.Register<string>("importWorld", ImportWorld, "Imports a Minecraft world.");
|
|
}
|
|
|
|
public EntitiesDB entitiesDB { get; set; }
|
|
|
|
private void ImportWorld(string name)
|
|
{
|
|
try
|
|
{
|
|
Log.Output("Starting...");
|
|
var blocksArray = JsonSerializer.Create()
|
|
.Deserialize<Blocks[]>(new JsonTextReader(File.OpenText(name)));
|
|
int C = 0;
|
|
foreach (var blocks in blocksArray)
|
|
{
|
|
BlockIDs id;
|
|
BlockColors color;
|
|
byte darkness = 0;
|
|
switch (blocks.Material)
|
|
{
|
|
case "DIRT":
|
|
id = BlockIDs.DirtCube;
|
|
color = BlockColors.Default;
|
|
break;
|
|
case "GRASS":
|
|
id = BlockIDs.GrassCube;
|
|
color = BlockColors.Default;
|
|
break;
|
|
case "STONE":
|
|
case "COAL_ORE":
|
|
case "IRON_ORE":
|
|
id = BlockIDs.ConcreteCube;
|
|
color = BlockColors.White;
|
|
darkness = 5;
|
|
break;
|
|
case "LEAVES":
|
|
id = BlockIDs.AluminiumCube;
|
|
color = BlockColors.Green;
|
|
darkness = 5;
|
|
break;
|
|
case "AIR":
|
|
case "DOUBLE_PLANT":
|
|
continue;
|
|
case "LOG":
|
|
id = BlockIDs.WoodCube;
|
|
color = BlockColors.Default;
|
|
break;
|
|
case "WATER":
|
|
id = BlockIDs.AluminiumCube;
|
|
color = BlockColors.Blue;
|
|
break;
|
|
case "SAND":
|
|
id = BlockIDs.AluminiumCube;
|
|
color = BlockColors.Yellow;
|
|
break;
|
|
case "LONG_GRASS":
|
|
id = BlockIDs.Flower1;
|
|
color = BlockColors.Default;
|
|
break;
|
|
case "YELLOW_FLOWER":
|
|
id = BlockIDs.Flower2;
|
|
color = BlockColors.Default;
|
|
break;
|
|
case "GRAVEL":
|
|
id = BlockIDs.ConcreteCube;
|
|
color = BlockColors.White;
|
|
darkness = 7;
|
|
break;
|
|
case "CLAY":
|
|
id = BlockIDs.ConcreteCube;
|
|
color = BlockColors.White;
|
|
darkness = 4;
|
|
break;
|
|
default:
|
|
Console.WriteLine("Unknown block: " + blocks.Material);
|
|
continue;
|
|
}
|
|
|
|
Block.PlaceNew(id, (blocks.Start + blocks.End) / 10 * 3, color: color, darkness: darkness,
|
|
scale: (blocks.End - blocks.Start + 1) * 3, rotation: float3.zero);
|
|
C++;
|
|
}
|
|
|
|
Log.Output(C + " blocks placed.");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
Log.Error(e.Message);
|
|
}
|
|
}
|
|
|
|
public JobHandle SimulatePhysicsStep(in float deltaTime, in PhysicsUtility utility, in PlayerInput[] playerInputs)
|
|
{
|
|
return new JobHandle();
|
|
}
|
|
|
|
public string name { get; } = "Cube placer engine";
|
|
}
|
|
} |