diff --git a/GamecraftModdingAPI/Blocks/BlockIDs.cs b/GamecraftModdingAPI/Blocks/BlockIDs.cs
new file mode 100644
index 0000000..83dc735
--- /dev/null
+++ b/GamecraftModdingAPI/Blocks/BlockIDs.cs
@@ -0,0 +1,174 @@
+namespace GamecraftModdingAPI.Blocks
+{
+ public enum BlockIDs
+ {
+ AluminiumCube,
+ AxleS,
+ Battery,
+ HingeS,
+ MotorS,
+ HingeM,
+ MotorM,
+ TyreM,
+ AxleM,
+ IronCube,
+ RubberCube,
+ OiledCube,
+ AluminiumConeSegment, //12
+ AluminiumCorner,
+ AluminiumRoundedCorner,
+ AluminiumSlicedCube,
+ AluminiumRoundedSlicedCube,
+ AluminiumCylinder,
+ AluminiumPyramidSegment,
+ AluminiumSlope,
+ AluminiumRoundedSlope,
+ AluminiumSphere,
+ RubberConeSegment, //22
+ RubberCorner,
+ RubberRoundedCorner,
+ RubberSlicedCube,
+ RubberRoundedSlicedCube,
+ RubberCylinder,
+ RubberPyramidSegment,
+ RubberSlope,
+ RubberRoundedSlope,
+ RubberSphere,
+ OiledConeSegment, //32
+ OiledCorner,
+ OiledRoundedCorner,
+ OiledSlicedCube,
+ OiledRoundedSlicedCube,
+ OiledCylinder,
+ OiledPyramidSegment,
+ OiledSlope,
+ OiledRoundedSlope,
+ OiledSphere,
+ IronConeSegment, //42
+ IronCorner,
+ IronRoundedCorner,
+ IronSlicedCube,
+ IronRoundedSlicedCube,
+ IronCylinder,
+ IronPyramidSegment,
+ IronSlope,
+ IronRoundedSlope,
+ IronSphere,
+ GlassCube, //52
+ GlassSlicedCube,
+ GlassSlope,
+ GlassCorner,
+ GlassPyramidSegment,
+ GlassRoundedSlicedCube,
+ GlassRoundedSlope,
+ GlassRoundedCorner,
+ GlassConeSegment,
+ GlassCylinder,
+ GlassSphere,
+ Lever,
+ Reactor, //64 - one ID is skipped
+ PlayerSpawn = 66, //Crashes without special handling
+ SmallSpawn,
+ MediumSpawn,
+ LargeSpawn,
+ BallJoint,
+ UniversalJoint,
+ ServoAxle,
+ ServoHinge,
+ StepperAxle,
+ StepperHinge,
+ TelescopicJoint,
+ DampedSpring,
+ ServoPiston,
+ StepperPiston,
+ PneumaticPiston,
+ PneumaticHinge,
+ PneumaticAxle, //82
+ PilotSeat = 90, //Might crash
+ PassengerSeat,
+ PilotControls,
+ GrassCube,
+ DirtCube,
+ GrassConeSegment,
+ GrassCorner,
+ GrassRoundedCorner,
+ GrassSlicedCube,
+ GrassRoundedSlicedCube,
+ GrassPyramidSegment,
+ GrassSlope,
+ GrassRoundedSlope,
+ DirtConeSegment,
+ DirtCorner,
+ DirtRoundedCorner,
+ DirtSlicedCube,
+ DirtRoundedSlicedCube,
+ DirtPyramidSegment,
+ DirtSlope,
+ DirtRoundedSlope,
+ RubberHemisphere,
+ AluminiumHemisphere,
+ GrassInnerCornerBulged,
+ DirtInnerCornerBulged,
+ IronHemisphere,
+ OiledHemisphere,
+ GlassHemisphere,
+ TyreS,
+ ThreeWaySwitch,
+ Dial, //120
+ CharacterOnEnterTrigger, //Probably crashes
+ CharacterOnLeaveTrigger,
+ CharacterOnStayTrigger,
+ ObjectOnEnterTrigger,
+ ObjectOnLeaveTrigger,
+ ObjectOnStayTrigger,
+ Button,
+ Switch,
+ TextBlock, //Brings up a screen
+ ConsoleBlock, //Brings up a screen
+ Door,
+ GlassDoor,
+ PoweredDoor,
+ PoweredGlassDoor,
+ AluminiumTubeCorner,
+ IronTubeCorner,
+ WoodCube,
+ WoodSlicedCube,
+ WoodSlope,
+ WoodCorner,
+ WoodPyramidSegment,
+ WoodConeSegment,
+ WoodRoundedSlicedCube,
+ WoodRoundedSlope,
+ WoodRoundedCorner,
+ WoodCylinder,
+ WoodHemisphere,
+ WoodSphere,
+ BrickCube, //149
+ BrickSlicedCube = 151,
+ BrickSlope,
+ BrickCorner,
+ ConcreteCube,
+ ConcreteSlicedCube,
+ ConcreteSlope,
+ ConcreteCorner,
+ BeachTree1 = 200,
+ BeachTree2,
+ BeachTree3,
+ Rock1,
+ Rock2,
+ Rock3,
+ Rock4,
+ BirchTree1,
+ BirchTree2,
+ BirchTree3,
+ PineTree1,
+ PineTree2,
+ PineTree3,
+ Flower1,
+ Flower2,
+ Flower3,
+ Shrub1,
+ Shrub2,
+ Shrub3
+ }
+}
\ No newline at end of file
diff --git a/GamecraftModdingAPI/Blocks/Placement.cs b/GamecraftModdingAPI/Blocks/Placement.cs
index c7279e3..110f92c 100644
--- a/GamecraftModdingAPI/Blocks/Placement.cs
+++ b/GamecraftModdingAPI/Blocks/Placement.cs
@@ -22,10 +22,10 @@ namespace GamecraftModdingAPI.Blocks
/// The block's position in the grid - default block size is 0.2
/// The block's rotation
/// The block's uniform scale - default scale is 1 (with 0.2 width)
- /// The block's non-uniform scale - less than 1 means is used
+ /// The block's non-uniform scale - 0 means is used
/// The player who placed the block
///
- public static bool PlaceBlock(ushort block, float3 position,
+ public static bool PlaceBlock(BlockIDs block, float3 position,
quaternion rotation = new quaternion(), BlockColors color = BlockColors.Default, byte darkness = 0,
int uscale = 1, float3 scale = new float3(), uint playerId = 0)
{
diff --git a/GamecraftModdingAPI/Blocks/PlacementEngine.cs b/GamecraftModdingAPI/Blocks/PlacementEngine.cs
index 15303a8..3171cd1 100644
--- a/GamecraftModdingAPI/Blocks/PlacementEngine.cs
+++ b/GamecraftModdingAPI/Blocks/PlacementEngine.cs
@@ -52,14 +52,14 @@ namespace GCMC
/// The block's non-uniform scale - less than 1 means is used
/// The player who placed the block
///
- public void PlaceBlock(ushort block, BlockColors color, byte darkness, float3 position, int uscale,
+ public void PlaceBlock(BlockIDs block, BlockColors color, byte darkness, float3 position, int uscale,
float3 scale, uint playerId, quaternion rotation)
{ //It appears that only the non-uniform scale has any visible effect, but if that's not given here it will be set to the uniform one
try
{
if (darkness > 9)
throw new Exception("That is too dark. Make sure to use 0-9 as darkness. (0 is default.)");
- BuildBlock(block, (byte) (color + darkness * 10), position, uscale, scale, rotation).Init(
+ BuildBlock((ushort) block, (byte) (color + darkness * 10), position, uscale, scale, rotation).Init(
new BlockPlacementInfoStruct()
{
loadedFromDisk = false,
@@ -79,12 +79,12 @@ namespace GCMC
throw new Exception("The factory is null.");
if (uscale < 1)
throw new Exception("Scale needs to be at least 1");
- if (scale.x < 1) scale.x = uscale;
- if (scale.y < 1) scale.y = uscale;
- if (scale.z < 1) scale.z = uscale;
+ if (scale.x < 4e-5) scale.x = uscale;
+ if (scale.y < 4e-5) scale.y = uscale;
+ if (scale.z < 4e-5) scale.z = uscale;
//RobocraftX.CR.MachineEditing.PlaceBlockEngine
ScalingEntityStruct scaling = new ScalingEntityStruct {scale = scale};
- RotationEntityStruct rotation = new RotationEntityStruct {rotation = rot};
+ RotationEntityStruct rotation = new RotationEntityStruct {rotation = quaternion.identity};
GridRotationStruct gridRotation = new GridRotationStruct
{position = float3.zero, rotation = quaternion.identity};
CubeCategoryStruct category = new CubeCategoryStruct
@@ -135,7 +135,7 @@ namespace GCMC
return structInitializer;
}
- public string Name { get; } = "Cube placer engine";
+ public string Name { get; } = nameof(PlacementEngine);
[HarmonyPatch]
[UsedImplicitly]