Cleanup, added INI file and parser lib (merged)
Updated plugin and removed commands that don't really belong here Using ILMerge to merge the parser into the DLL
This commit is contained in:
parent
2ad5109639
commit
3e3fd0c767
8 changed files with 97 additions and 85 deletions
11
GCMC/BlockType.cs
Normal file
11
GCMC/BlockType.cs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
using GamecraftModdingAPI.Blocks;
|
||||||
|
|
||||||
|
namespace GCMC
|
||||||
|
{
|
||||||
|
public struct BlockType
|
||||||
|
{
|
||||||
|
public string Material;
|
||||||
|
public BlockIDs Type;
|
||||||
|
public BlockColor Color;
|
||||||
|
}
|
||||||
|
}
|
45
GCMC/BlockTypes.ini
Normal file
45
GCMC/BlockTypes.ini
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
[Dirt]
|
||||||
|
type=DirtCube
|
||||||
|
|
||||||
|
[Grass]
|
||||||
|
type=GrassCube
|
||||||
|
|
||||||
|
[Stone,Coal_ore,Iron_ore]
|
||||||
|
type=ConcreteCube
|
||||||
|
color=White
|
||||||
|
darkness=5
|
||||||
|
|
||||||
|
[Leaves]
|
||||||
|
type=AluminiumCube
|
||||||
|
color=Green
|
||||||
|
darkness=5
|
||||||
|
|
||||||
|
[Air,Double_plant]
|
||||||
|
ignore=true
|
||||||
|
|
||||||
|
[Log]
|
||||||
|
type=WoodCube
|
||||||
|
|
||||||
|
[Water]
|
||||||
|
type=AluminiumCube
|
||||||
|
color=Blue
|
||||||
|
|
||||||
|
[Sand]
|
||||||
|
type=AluminiumCube
|
||||||
|
color=Yellow
|
||||||
|
|
||||||
|
[Long_grass]
|
||||||
|
type=Flower1
|
||||||
|
|
||||||
|
[Yellow_flower]
|
||||||
|
type=Flower2
|
||||||
|
|
||||||
|
[Gravel]
|
||||||
|
type=ConcreteCube
|
||||||
|
color=White
|
||||||
|
darkness=7
|
||||||
|
|
||||||
|
[Clay]
|
||||||
|
type=ConcreteCube
|
||||||
|
color=White
|
||||||
|
darkness=4
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using DataLoader;
|
using DataLoader;
|
||||||
|
using GamecraftModdingAPI;
|
||||||
using GamecraftModdingAPI.Blocks;
|
using GamecraftModdingAPI.Blocks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using RobocraftX.Blocks;
|
using RobocraftX.Blocks;
|
||||||
|
@ -21,30 +22,11 @@ using uREPL;
|
||||||
|
|
||||||
namespace GCMC
|
namespace GCMC
|
||||||
{
|
{
|
||||||
public class CubePlacerEngine : IQueryingEntitiesEngine, IDeterministicSim
|
public class CubePlacerEngine : IQueryingEntitiesEngine, IDeterministicTimeStopped
|
||||||
{
|
{
|
||||||
public void Ready()
|
public void Ready()
|
||||||
{
|
{
|
||||||
RuntimeCommands.Register<string>("importWorld", ImportWorld, "Imports a Minecraft world.");
|
RuntimeCommands.Register<string>("importWorld", ImportWorld, "Imports a Minecraft world.");
|
||||||
RuntimeCommands.Register<string>("placeCube", PlaceBlock, "Places a cube.");
|
|
||||||
RuntimeCommands.Register("placedBy", GetPlacedBy, "Gets who placed a block.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetPlacedBy()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var placementInfo =
|
|
||||||
entitiesDB.QueryEntity<BlockPlacementInfoStruct>(new EGID(BlockIdentifiers.LatestBlockID,
|
|
||||||
BlockIdentifiers.OWNED_BLOCKS));
|
|
||||||
Log.Output("Placed by: " + placementInfo.placedBy);
|
|
||||||
Log.Output("Loaded from disk: " + placementInfo.loadedFromDisk);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Log.Error("Failed to get who placed the block.");
|
|
||||||
Console.WriteLine("Error getting who placed the block:\n" + e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EntitiesDB entitiesDB { get; set; }
|
public EntitiesDB entitiesDB { get; set; }
|
||||||
|
@ -122,7 +104,7 @@ namespace GCMC
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Placement.PlaceBlock(id, (blocks.Start + blocks.End) / 10 * 3, color: color, darkness: darkness,
|
Block.PlaceNew(id, (blocks.Start + blocks.End) / 10 * 3, color: color, darkness: darkness,
|
||||||
scale: (blocks.End - blocks.Start + 1) * 3, rotation: float3.zero);
|
scale: (blocks.End - blocks.Start + 1) * 3, rotation: float3.zero);
|
||||||
C++;
|
C++;
|
||||||
}
|
}
|
||||||
|
@ -136,35 +118,7 @@ namespace GCMC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlaceBlock(string args)
|
public JobHandle SimulatePhysicsStep(in float deltaTime, in PhysicsUtility utility, in PlayerInput[] playerInputs)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var s = args.Split(' ');
|
|
||||||
ushort block = ushort.Parse(s[0]);
|
|
||||||
byte color = byte.Parse(s[1]);
|
|
||||||
byte darkness = byte.Parse(s[2]);
|
|
||||||
float x = float.Parse(s[3]), y = float.Parse(s[4]), z = float.Parse(s[5]);
|
|
||||||
int scale = int.Parse(s[6]);
|
|
||||||
float scaleX = float.Parse(s[7]);
|
|
||||||
float scaleY = float.Parse(s[8]);
|
|
||||||
float scaleZ = float.Parse(s[9]);
|
|
||||||
float rotX = float.Parse(s[10]);
|
|
||||||
float rotY = float.Parse(s[11]);
|
|
||||||
float rotZ = float.Parse(s[12]);
|
|
||||||
uint playerId = 0;
|
|
||||||
Placement.PlaceBlock((BlockIDs) block, new float3(x, y, z), new float3(rotX, rotY, rotZ),
|
|
||||||
(BlockColors) color, darkness, scale, new float3(scaleX, scaleY, scaleZ), playerId);
|
|
||||||
}
|
|
||||||
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();
|
return new JobHandle();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,74 +1,81 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project>
|
||||||
|
|
||||||
|
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>net472</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="fNbt" Version="0.6.4" />
|
<PackageReference Include="ILMerge" Version="3.0.29" />
|
||||||
|
<PackageReference Include="ini-parser" Version="2.5.2" />
|
||||||
|
<PackageReference Include="Lib.Harmony" Version="2.0.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="0Harmony, Version=1.2.0.1, Culture=neutral, PublicKeyToken=null">
|
|
||||||
<HintPath>bin\Debug\netstandard2.0\0Harmony.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="BlockEntityFactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="BlockEntityFactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\BlockEntityFactory.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\BlockEntityFactory.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="CommandLine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="CommandLine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\CommandLine.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\CommandLine.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DataLoader, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="DataLoader, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\DataLoader.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\DataLoader.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="GamecraftModdingAPI, Version=0.2.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="GamecraftModdingAPI, Version=1.0.2.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\..\GamecraftModdingAPI\GamecraftModdingAPI\bin\Debug\net472\GamecraftModdingAPI.dll</HintPath>
|
<HintPath>..\..\GamecraftModdingAPI\GamecraftModdingAPI\bin\Debug\net472\GamecraftModdingAPI.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="IllusionPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="IllusionPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>IllusionPlugin.dll</HintPath>
|
<HintPath>IllusionPlugin.dll</HintPath>
|
||||||
|
<!-- <Private>False</Private> Need to copy for ILMerge -->
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=12.0.1.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="Newtonsoft.Json, Version=12.0.1.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\..\GamecraftModdingAPI\GamecraftModdingAPI\bin\Debug\net472\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\..\GamecraftModdingAPI\GamecraftModdingAPI\bin\Debug\net472\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.Blocks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.Blocks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.Blocks.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.Character, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.Character, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.Character.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Character.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.Common.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.GUI, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.GUI, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.GUI.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.Input, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.Input, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.Input.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Input.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.MachineEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.MachineEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.MachineEditor.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.MachineEditor.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RobocraftX.StateSync, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="RobocraftX.StateSync, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\RobocraftX.StateSync.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.StateSync.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Svelto.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="Svelto.Common_3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\Svelto.Common.dll</HintPath>
|
<HintPath>D:\Games\SteamLibrary\steamapps\common\RobocraftX\Gamecraft_Data\Managed\Svelto.Common_3.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Svelto.ECS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="Svelto.ECS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\Svelto.ECS.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\Svelto.ECS.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Unity.Entities, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="Unity.Entities, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\Unity.Entities.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\Unity.Entities.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Unity.Mathematics, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="Unity.Mathematics, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\Unity.Mathematics.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\Unity.Mathematics.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\UnityEngine.CoreModule.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="uREPL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
<Reference Include="uREPL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
|
||||||
<HintPath>..\ref\uREPL.dll</HintPath>
|
<HintPath>..\..\ref\Gamecraft_Data\Managed\uREPL.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
<!-- the ILMergePath property points to the location of ILMerge.exe console application -->
|
||||||
|
<Exec Command="$(ILMergeConsolePath) /ndebug /out:bin\Debug\net472\GCMC.dll bin\$(Configuration)\net472\GCMC.dll bin\$(Configuration)\net472\INIFileParser.dll" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Harmony;
|
using HarmonyLib;
|
||||||
using IllusionPlugin;
|
using IllusionPlugin;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
@ -9,14 +9,14 @@ namespace GCMC
|
||||||
{
|
{
|
||||||
public string Name { get; } = "GCMC";
|
public string Name { get; } = "GCMC";
|
||||||
public string Version { get; } = "v0.0.1";
|
public string Version { get; } = "v0.0.1";
|
||||||
public static HarmonyInstance harmony { get; protected set; }
|
public static Harmony harmony { get; protected set; }
|
||||||
public const string HarmonyID = "io.github.norbipeti.GCMC";
|
public const string HarmonyID = "io.github.norbipeti.GCMC";
|
||||||
|
|
||||||
public void OnApplicationStart()
|
public void OnApplicationStart()
|
||||||
{
|
{
|
||||||
if (harmony == null)
|
if (harmony == null)
|
||||||
{
|
{
|
||||||
harmony = HarmonyInstance.Create(HarmonyID);
|
harmony = new Harmony(HarmonyID);
|
||||||
harmony.PatchAll(Assembly.GetExecutingAssembly());
|
harmony.PatchAll(Assembly.GetExecutingAssembly());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using DataLoader;
|
using DataLoader;
|
||||||
using Harmony;
|
using HarmonyLib;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using RobocraftX.Common;
|
using RobocraftX.Common;
|
||||||
using RobocraftX.CR.MachineEditing;
|
using RobocraftX.CR.MachineEditing;
|
||||||
|
@ -26,7 +26,7 @@ namespace GCMC
|
||||||
Debug.Log("Not authoritative, not adding MC engine");
|
Debug.Log("Not authoritative, not adding MC engine");
|
||||||
}
|
}
|
||||||
|
|
||||||
static MethodBase TargetMethod(HarmonyInstance instance)
|
static MethodBase TargetMethod()
|
||||||
{
|
{
|
||||||
return typeof(MainEditingCompositionRoot).GetMethod("Compose",
|
return typeof(MainEditingCompositionRoot).GetMethod("Compose",
|
||||||
BindingFlags.Public | BindingFlags.Static);
|
BindingFlags.Public | BindingFlags.Static);
|
||||||
|
|
|
@ -5,10 +5,6 @@
|
||||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="fNbt" Version="0.6.4" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\GCMC\GCMC.csproj" />
|
<ProjectReference Include="..\GCMC\GCMC.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Channels;
|
using System.Threading.Channels;
|
||||||
using fNbt;
|
|
||||||
using GCMC;
|
using GCMC;
|
||||||
|
|
||||||
namespace GCMCTest
|
namespace GCMCTest
|
||||||
|
|
Loading…
Reference in a new issue