‪GamecraftModdingAPI  ‪v1.8.0
‪The unofficial Gamecraft modding API
GamecraftModdingAPI.Blocks.CustomBlock Class Reference

‪Experimental support for adding custom blocks to the game. More...

Inheritance diagram for GamecraftModdingAPI.Blocks.CustomBlock:
GamecraftModdingAPI.Block

Classes

class  CubeRegistrationPatch
 
struct  DataStruct
 
class  MaterialCopyPatch
 

Public Member Functions

 CustomBlock (EGID id)
 
 CustomBlock (uint id)
 
Copy< T > ()
 ‪Creates a copy of the block in the game with the same properties, stats and wires. More...
 
bool Equals (Block other)
 
bool Equals (EGID other)
 
override bool Equals (object obj)
 
Block[] GetConnectedCubes ()
 ‪Returns an array of blocks that are connected to this one. Returns an empty array if the block doesn't exist. More...
 
override int GetHashCode ()
 
Specialise< T > ()
 ‪Convert the block to a specialised block class. More...
 
override string ToString ()
 

Static Public Member Functions

static void ChangeExistingBlock (ushort id, Action< CubeListData > modifier)
 ‪A low-level method for changing any property of an existing block. Use with caution. More...
 
static Block GetLastPlacedBlock ()
 ‪Returns the most recently placed block. More...
 
static Block PlaceNew (BlockIDs block, float3 position, bool autoWire=false, Player player=null)
 ‪Place a new block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position. Place blocks next to each other to connect them. The placed block will be a complete block with a placement grid and collision which will be saved along with the game. More...
 
static T PlaceNew< T > (BlockIDs block, float3 position, bool autoWire=false, Player player=null)
 ‪Place a new block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position. Place blocks next to each other to connect them. The placed block will be a complete block with a placement grid and collision which will be saved along with the game. More...
 
static void RegisterCustomBlock< T > ()
 ‪Register a custom block type. Call it as soon as possible (in OnApplicationStart()).
You need a Unity project with Addressables and Havok installed and need a prefab added as an addressable asset. Build the addressables and the project and copy the catalog.json from StreamingAssets, you'll need to reference this file. Also copy the asset files from the subfolder to the same path in the game. More...
 

Public Attributes

bool Exists => BlockEngine.BlockExists(Id)
 ‪Whether the block exists. The other properties will return a default value if the block doesn't exist. If the block was just placed, then this will also return false but the properties will work correctly. More...
 

Static Protected Attributes

static readonly BlockCloneEngine BlockCloneEngine = new BlockCloneEngine()
 
static readonly BlockEventsEngine BlockEventsEngine = new BlockEventsEngine()
 
static readonly MovementEngine MovementEngine = new MovementEngine()
 
static readonly PlacementEngine PlacementEngine = new PlacementEngine()
 
static readonly RemovalEngine RemovalEngine = new RemovalEngine()
 
static readonly RotationEngine RotationEngine = new RotationEngine()
 
static readonly ScalingEngine ScalingEngine = new ScalingEngine()
 
static readonly SignalEngine SignalEngine = new SignalEngine()
 

Static Package Functions

static new void Init ()
 

Package Attributes

BlockEngine.BlockInitData InitData
 

Static Package Attributes

static readonly BlockEngine BlockEngine = new BlockEngine()
 

Properties

BlockGroup?????? BlockGroup [get, set]
 ‪Returns the block group this block is a part of. Block groups can also be placed using blueprints. Returns null if not part of a group.
Setting the group after the block has been initialized will not update everything properly, so you can only set this property on blocks newly placed by your code.
To set it for existing blocks, you can use the Copy() method and set the property on the resulting block (and remove this block). More...
 
BlockColor Color [get, set]
 ‪The block's color. Returns BlockColors.Default if the block no longer exists. More...
 
float4 CustomColor [get, set]
 ‪The block's exact color. Gets reset to the palette color (Color property) after reentering the game. More...
 
bool? Flipped [get, set]
 
EGID Id [get]
 
string? Label [get, set]
 ‪The text displayed on the block if applicable, or null. Setting it is temporary to the session, it won't be saved. More...
 
BlockMaterial Material [get, set]
 
float3 Position [get, set]
 ‪The block's current position or zero if the block no longer exists. A block is 0.2 wide by default in terms of position. More...
 
float3 Rotation [get, set]
 ‪The block's current rotation in degrees or zero if the block doesn't exist. More...
 
float3 Scale [get, set]
 ‪The block's non-uniform scale or zero if the block's invalid. Independent of the uniform scaling. The default scale of 1 means 0.2 in terms of position. More...
 
BlockIDs Type [get]
 ‪The block's type (ID). Returns BlockIDs.Invalid if the block doesn't exist anymore. More...
 
int UniformScale [get, set]
 ‪The block's uniform scale or zero if the block's invalid. Also sets the non-uniform scale. The default scale of 1 means 0.2 in terms of position. More...
 

Events

static EventHandler< BlockPlacedRemovedEventArgsPlaced [add, remove]
 ‪An event that fires each time a block is placed. More...
 
static EventHandler< BlockPlacedRemovedEventArgsRemoved [add, remove]
 ‪An event that fires each time a block is removed. More...
 

Detailed Description

Experimental support for adding custom blocks to the game.

Constructor & Destructor Documentation

◆ CustomBlock() [1/2]

GamecraftModdingAPI.Blocks.CustomBlock.CustomBlock ( EGID  id)
inline

◆ CustomBlock() [2/2]

GamecraftModdingAPI.Blocks.CustomBlock.CustomBlock ( uint  id)
inline

Member Function Documentation

◆ ChangeExistingBlock()

static void GamecraftModdingAPI.Blocks.CustomBlock.ChangeExistingBlock ( ushort  id,
Action< CubeListData >  modifier 
)
inlinestatic

‪A low-level method for changing any property of an existing block. Use with caution.

Parameters
id‪The block ID
modifier‪An action that modifies a property of the block

◆ Copy< T >()

T GamecraftModdingAPI.Block.Copy< T > ( )
inlineinherited

‪Creates a copy of the block in the game with the same properties, stats and wires.

Returns
Type Constraints
T :Block 

◆ Equals() [1/3]

bool GamecraftModdingAPI.Block.Equals ( Block  other)
inlineinherited

◆ Equals() [2/3]

bool GamecraftModdingAPI.Block.Equals ( EGID  other)
inlineinherited

◆ Equals() [3/3]

override bool GamecraftModdingAPI.Block.Equals ( object  obj)
inlineinherited

◆ GetConnectedCubes()

Block [] GamecraftModdingAPI.Block.GetConnectedCubes ( )
inlineinherited

‪Returns an array of blocks that are connected to this one. Returns an empty array if the block doesn't exist.

◆ GetHashCode()

override int GamecraftModdingAPI.Block.GetHashCode ( )
inlineinherited

◆ GetLastPlacedBlock()

static Block GamecraftModdingAPI.Block.GetLastPlacedBlock ( )
inlinestaticinherited

‪Returns the most recently placed block.

Returns
‪The block object

◆ Init()

static new void GamecraftModdingAPI.Blocks.CustomBlock.Init ( )
inlinestaticpackage

◆ PlaceNew()

static Block GamecraftModdingAPI.Block.PlaceNew ( BlockIDs  block,
float3  position,
bool  autoWire = false,
Player  player = null 
)
inlinestaticinherited

‪Place a new block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position. Place blocks next to each other to connect them. The placed block will be a complete block with a placement grid and collision which will be saved along with the game.

Parameters
block‪The block's type
color‪The block's color
material‪The block's material
position‪The block's position - default block size is 0.2
rotation‪The block's rotation in degrees
uscale‪The block's uniform scale - default scale is 1 (with 0.2 width)
scale‪The block's non-uniform scale - 0 means uscale is used
isFlipped‪Whether the block should be flipped
autoWire‪Whether the block should be auto-wired (if functional)
player‪The player who placed the block
Returns
‪The placed block or null if failed

◆ PlaceNew< T >()

static T GamecraftModdingAPI.Block.PlaceNew< T > ( BlockIDs  block,
float3  position,
bool  autoWire = false,
Player  player = null 
)
inlinestaticinherited

‪Place a new block at the given position. If scaled, position means the center of the block. The default block size is 0.2 in terms of position. Place blocks next to each other to connect them. The placed block will be a complete block with a placement grid and collision which will be saved along with the game.

Parameters
block‪The block's type
color‪The block's color
material‪The block's materialr
position‪The block's position - default block size is 0.2
rotation‪The block's rotation in degrees
uscale‪The block's uniform scale - default scale is 1 (with 0.2 width)
scale‪The block's non-uniform scale - 0 means uscale is used
isFlipped‪Whether the block should be flipped
autoWire‪Whether the block should be auto-wired (if functional)
player‪The player who placed the block
Returns
‪The placed block or null if failed
Type Constraints
T :Block 

◆ RegisterCustomBlock< T >()

static void GamecraftModdingAPI.Blocks.CustomBlock.RegisterCustomBlock< T > ( )
inlinestatic

‪Register a custom block type. Call it as soon as possible (in OnApplicationStart()).
You need a Unity project with Addressables and Havok installed and need a prefab added as an addressable asset. Build the addressables and the project and copy the catalog.json from StreamingAssets, you'll need to reference this file. Also copy the asset files from the subfolder to the same path in the game.

Template Parameters
T‪The custom block type
Type Constraints
T :CustomBlock 

◆ Specialise< T >()

T GamecraftModdingAPI.Block.Specialise< T > ( )
inlineinherited

‪Convert the block to a specialised block class.

Returns
‪The block.
Template Parameters
T‪The specialised block type.
Type Constraints
T :Block 

◆ ToString()

override string GamecraftModdingAPI.Block.ToString ( )
inlineinherited

Member Data Documentation

◆ BlockCloneEngine

readonly BlockCloneEngine GamecraftModdingAPI.Block.BlockCloneEngine = new BlockCloneEngine()
staticprotectedinherited

◆ BlockEngine

readonly BlockEngine GamecraftModdingAPI.Block.BlockEngine = new BlockEngine()
staticpackageinherited

◆ BlockEventsEngine

readonly BlockEventsEngine GamecraftModdingAPI.Block.BlockEventsEngine = new BlockEventsEngine()
staticprotectedinherited

◆ Exists

bool GamecraftModdingAPI.Block.Exists => BlockEngine.BlockExists(Id)
inherited

‪Whether the block exists. The other properties will return a default value if the block doesn't exist. If the block was just placed, then this will also return false but the properties will work correctly.

◆ InitData

BlockEngine.BlockInitData GamecraftModdingAPI.Block.InitData
packageinherited

◆ MovementEngine

readonly MovementEngine GamecraftModdingAPI.Block.MovementEngine = new MovementEngine()
staticprotectedinherited

◆ PlacementEngine

readonly PlacementEngine GamecraftModdingAPI.Block.PlacementEngine = new PlacementEngine()
staticprotectedinherited

◆ RemovalEngine

readonly RemovalEngine GamecraftModdingAPI.Block.RemovalEngine = new RemovalEngine()
staticprotectedinherited

◆ RotationEngine

readonly RotationEngine GamecraftModdingAPI.Block.RotationEngine = new RotationEngine()
staticprotectedinherited

◆ ScalingEngine

readonly ScalingEngine GamecraftModdingAPI.Block.ScalingEngine = new ScalingEngine()
staticprotectedinherited

◆ SignalEngine

readonly SignalEngine GamecraftModdingAPI.Block.SignalEngine = new SignalEngine()
staticprotectedinherited

Property Documentation

◆ BlockGroup

BlockGroup?????? GamecraftModdingAPI.Block.BlockGroup
getsetinherited

‪Returns the block group this block is a part of. Block groups can also be placed using blueprints. Returns null if not part of a group.
Setting the group after the block has been initialized will not update everything properly, so you can only set this property on blocks newly placed by your code.
To set it for existing blocks, you can use the Copy() method and set the property on the resulting block (and remove this block).

◆ Color

BlockColor GamecraftModdingAPI.Block.Color
getsetinherited

‪The block's color. Returns BlockColors.Default if the block no longer exists.

◆ CustomColor

float4 GamecraftModdingAPI.Block.CustomColor
getsetinherited

‪The block's exact color. Gets reset to the palette color (Color property) after reentering the game.

◆ Flipped

bool? GamecraftModdingAPI.Block.Flipped
getsetinherited

Whether the block is flipped.

◆ Id

EGID GamecraftModdingAPI.Block.Id
getinherited

◆ Label

string? GamecraftModdingAPI.Block.Label
getsetinherited

‪The text displayed on the block if applicable, or null. Setting it is temporary to the session, it won't be saved.

◆ Material

BlockMaterial GamecraftModdingAPI.Block.Material
getsetinherited

The block's material.

◆ Position

float3 GamecraftModdingAPI.Block.Position
getsetinherited

‪The block's current position or zero if the block no longer exists. A block is 0.2 wide by default in terms of position.

◆ Rotation

float3 GamecraftModdingAPI.Block.Rotation
getsetinherited

‪The block's current rotation in degrees or zero if the block doesn't exist.

◆ Scale

float3 GamecraftModdingAPI.Block.Scale
getsetinherited

‪The block's non-uniform scale or zero if the block's invalid. Independent of the uniform scaling. The default scale of 1 means 0.2 in terms of position.

◆ Type

BlockIDs GamecraftModdingAPI.Block.Type
getinherited

‪The block's type (ID). Returns BlockIDs.Invalid if the block doesn't exist anymore.

◆ UniformScale

int GamecraftModdingAPI.Block.UniformScale
getsetinherited

‪The block's uniform scale or zero if the block's invalid. Also sets the non-uniform scale. The default scale of 1 means 0.2 in terms of position.

Event Documentation

◆ Placed

EventHandler< BlockPlacedRemovedEventArgs> GamecraftModdingAPI.Block.Placed
staticaddremoveinherited

‪An event that fires each time a block is placed.

◆ Removed

EventHandler< BlockPlacedRemovedEventArgs> GamecraftModdingAPI.Block.Removed
staticaddremoveinherited

‪An event that fires each time a block is removed.


The documentation for this class was generated from the following file: