瀏覽代碼

Update to Techblox and new API

master
NorbiPeti 3 年之前
父節點
當前提交
bba56a1967
簽署人: NorbiPeti <szatmari.norbert.peter@gmail.com> GPG 金鑰 ID: DBA4C4549A927E56
共有 5 個檔案被更改,包括 85 行新增70 行删除
  1. +1
    -1
      GCMC/BlockType.cs
  2. +14
    -9
      GCMC/BlockTypes.ini
  3. +31
    -31
      GCMC/GCMC.csproj
  4. +39
    -29
      GCMC/GCMCPlugin.cs
  5. 二進制
      GCMC/IllusionPlugin.dll

+ 1
- 1
GCMC/BlockType.cs 查看文件

@@ -1,4 +1,4 @@
using GamecraftModdingAPI.Blocks;
using TechbloxModdingAPI.Blocks;

namespace GCMC
{


+ 14
- 9
GCMC/BlockTypes.ini 查看文件

@@ -1,16 +1,19 @@
[Dirt]
type=DirtCube
type=Cube
color=Orange
darkness=5

[Grass]
type=GrassCube
type=Cube
color=Green

[Stone,Coal_ore,Iron_ore]
type=ConcreteCube
type=Cube
color=White
darkness=5

[Leaves]
type=AluminiumCube
type=Cube
color=Green
darkness=5

@@ -18,14 +21,16 @@ darkness=5
ignore=true

[Log]
type=WoodCube
type=Cube
color=Orange
darkness=8

[Water]
type=GlassCube
type=Cube
color=Blue

[Sand]
type=AluminiumCube
type=Cube
color=Yellow

[Long_grass]
@@ -35,11 +40,11 @@ type=Flower1
type=Flower2

[Gravel]
type=ConcreteCube
type=Cube
color=White
darkness=7

[Clay]
type=ConcreteCube
type=Cube
color=White
darkness=4

+ 31
- 31
GCMC/GCMC.csproj 查看文件

@@ -6,69 +6,69 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="ILMerge" Version="3.0.29" />
<PackageReference Include="ILMerge" Version="3.0.41" />
<PackageReference Include="ini-parser" Version="2.5.2" />
<PackageReference Include="Lib.Harmony" Version="2.0.1" />
<PackageReference Include="Lib.Harmony" Version="2.0.4" />
</ItemGroup>

<ItemGroup>
<Reference Include="BlockEntityFactory, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\BlockEntityFactory.dll</HintPath>
</Reference>
<Reference Include="CommandLine, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\CommandLine.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\CommandLine.dll</HintPath>
</Reference>
<Reference Include="DataLoader, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\DataLoader.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\DataLoader.dll</HintPath>
</Reference>
<Reference Include="Svelto.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Svelto.Common.dll</HintPath>
</Reference>
<Reference Include="GamecraftModdingAPI">
<HintPath>..\..\GamecraftModdingAPI\GamecraftModdingAPI\bin\Debug\net472\GamecraftModdingAPI.dll</HintPath>
<Reference Include="Svelto.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Svelto.Tasks.dll</HintPath>
</Reference>
<Reference Include="IllusionPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>IllusionPlugin.dll</HintPath>
<Reference Include="TechbloxModdingAPI">
<HintPath>..\..\ref\Plugins\TechbloxModdingAPI.dll</HintPath>
</Reference>
<Reference Include="IllusionPlugin">
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\IllusionPlugin.dll</HintPath>
<!-- <Private>False</Private> Need to copy for ILMerge -->
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\..\ref\Gamecraft_Data\Managed\Newtonsoft.Json.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.Blocks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Blocks.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Blocks.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.Character, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Character.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Character.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.Common, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Common.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Common.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.GUI, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.GUI.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.GUI.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.Input, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.Input.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.Input.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.MachineEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.MachineEditor.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.MachineEditor.dll</HintPath>
</Reference>
<Reference Include="RobocraftX.StateSync, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\RobocraftX.StateSync.dll</HintPath>
</Reference>
<Reference Include="Svelto.Common_3, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>D:\Games\SteamLibrary\steamapps\common\RobocraftX\Gamecraft_Data\Managed\Svelto.Common_3.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\RobocraftX.StateSync.dll</HintPath>
</Reference>
<Reference Include="Svelto.ECS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\Svelto.ECS.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Svelto.ECS.dll</HintPath>
</Reference>
<Reference Include="Unity.Entities, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\Unity.Entities.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Unity.Entities.dll</HintPath>
</Reference>
<Reference Include="Unity.Mathematics, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\Unity.Mathematics.dll</HintPath>
<Reference Include="Unity.Mathematics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\Unity.Mathematics.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="uREPL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\ref\Gamecraft_Data\Managed\uREPL.dll</HintPath>
<HintPath>..\..\ref\TechbloxPreview_Data\Managed\uREPL.dll</HintPath>
</Reference>
</ItemGroup>

@@ -79,9 +79,9 @@
</ItemGroup>

<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<Target Name="AfterBuild">
<!-- the ILMergePath property points to the location of ILMerge.exe console application -->
<!-- <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>
</Target> -->
</Project>

+ 39
- 29
GCMC/GCMCPlugin.cs 查看文件

@@ -1,23 +1,27 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
using GamecraftModdingAPI;
using GamecraftModdingAPI.Blocks;
using GamecraftModdingAPI.Commands;
using IllusionPlugin;
using Newtonsoft.Json;
using Svelto.Tasks.ExtraLean;
using TechbloxModdingAPI;
using TechbloxModdingAPI.App;
using TechbloxModdingAPI.Blocks;
using TechbloxModdingAPI.Commands;
using TechbloxModdingAPI.Tasks;
using Unity.Mathematics;
using UnityEngine;
using uREPL;

namespace GCMC
{
public class GCMCPlugin : IPlugin
public class GCMCPlugin : IEnhancedPlugin
{
public string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name;
public string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();
public override string Name { get; } = Assembly.GetExecutingAssembly().GetName().Name;
public override string Version { get; } = Assembly.GetExecutingAssembly().GetName().Version.ToString();

private readonly Dictionary<string, BlockType> mapping = new Dictionary<string, BlockType>(10);
private JsonSerializer _serializer = JsonSerializer.Create();
@@ -76,7 +80,7 @@ namespace GCMC
{
Material = mcblock.ToUpper(),
Type = type,
Color = new BlockColor {Color = color, Darkness = darkness}
Color = new BlockColor(color, darkness)
});
}
}
@@ -91,6 +95,7 @@ namespace GCMC
});
Log.Output("Placing blocks...");
int i;
Block lastBlock = null;
for (i = 0; i < blocksArray.Length; i++)
{
var blocks = blocksArray[i];
@@ -102,11 +107,18 @@ namespace GCMC

if (type.Type == BlockIDs.Invalid) continue;

Block.PlaceNew(type.Type, (blocks.Start + blocks.End) / 10 * 3, color: type.Color.Color,
darkness: type.Color.Darkness, scale: (blocks.End - blocks.Start + 1) * 3,
rotation: float3.zero);
var block = new Block(type.Type, (blocks.Start + blocks.End) / 10 * 3 + new float3(5000, 0, 5000))
{
Color = type.Color,
//Scale = (blocks.End - blocks.Start + 1) * 3
};
Console.WriteLine("Placed block at " + block.Position);
lastBlock = block;
}

if (lastBlock != null)
Game.Simulate += (sender, args) => OnSimulationStarted(lastBlock).RunOn(Scheduler.extraLeanRunner);

Log.Output(i + " blocks placed.");
}
catch (Exception e)
@@ -115,35 +127,33 @@ namespace GCMC
Log.Error(e.Message);
}
}
public void OnApplicationStart()
{
GamecraftModdingAPI.Main.Init();
CommandBuilder.Builder("importWorld", "Imports a Minecraft world.")
.Action<string>(ImportWorld).Build();
_serializer.TraceWriter = _traceWriter;

Debug.Log("GCMC loaded");
}

public void OnApplicationQuit()
private IEnumerator OnSimulationStarted(Block lastBlock)
{
}
SimBody body;
int C = 0;
while ((body = lastBlock.GetSimBody()) == null)
{
C++;
yield return null;
}

public void OnLevelWasLoaded(int level)
{
Console.WriteLine($"Body position: {body.Position} ({C})");
}

public void OnLevelWasInitialized(int level)
public override void OnApplicationStart()
{
}
TechbloxModdingAPI.Main.Init();
CommandBuilder.Builder("importWorld", "Imports a Minecraft world.")
.Action<string>(ImportWorld).Build();
//_serializer.TraceWriter = _traceWriter;

public void OnUpdate()
{
Debug.Log("GCMC loaded");
}

public void OnFixedUpdate()
public override void OnApplicationQuit()
{
TechbloxModdingAPI.Main.Shutdown();
}
}
}

二進制
GCMC/IllusionPlugin.dll 查看文件


Loading…
取消
儲存