This repository has been archived by the owner on Mar 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Block Example.json
187 lines (165 loc) · 8.96 KB
/
Block Example.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// -- Make a copy of this file, change the ID, and modify the values shown to make your own block --
// "PropertyName" : Value,
// Only change the Value, and make sure it ends with a comma
// Helpful site for https://danny-alexander.github.io/terratech-block-list/block-list.html
{
"Name": "Magical Block",
"Description": "A very nice block, loaded from the file system\nThis one is magical!", //You can make multiple lines with \n
"ID": 534968, //A random ID that MUST be unique
"Faction": 1, //GSO = 1|0, GeoCorp = 2, EXP|RR = 3, Venture = 4, HawkEye = 5, Special = 6, BetterFuture = 7
"Category": 0, //Control = 1, Standard = 2|0, Wheels = 3, Weapons = 4, Accessories = 5, Power = 6, Base = 7, Flight = 8
"Grade": 0, //The desired grade minus one
"Price": 100, //The price is measured by sum of recipe value times 3
"HP": 500, //A GSO one block has 250 health
"Mass": 1.0,
//"CenterOfMass": {"x": 0.0, "y": 0.0, "z": 0.0},
"Fragility": 1.0, //How likely the block is to fall off from being attacked. 2 is two times as likely, 0 is none at all, for example, SCUs do not fall off when attacked
"DamageableType": 0, // Standard = 0, Armour = 1, Rubber = 2, Volatile = 3, Shield = 4, Wood = 5, Rock = 6
"Rarity": 0, // Common = 0, Uncommon = 1, Rare = 2
"Recipe": "PlumbiaIngot, 5, plumbiteore", // Separate chunk names or IDs with a comma. Not case sensitive.
//"DropFromCrates": false, // No change = true
//"PairedBlock": 534968, // ID of paired block (Can be used to drop 2 wheels)
"IconName": null, //FILE Name of image, such as "icon.png". File can be anywhere and should be uniquely named
"MeshName": null, //FILE Name of mesh, such as "mesh.obj". File can be anywhere and should be uniquely named
/* EITHER */
"MeshTextureName": null, //FILE Name of image for texture, such as "texture.png". File can be anywhere and should be uniquely named
//"MeshGlossTextureName": null, //Black white transparency image for the shine. Opaque black looks like rough plastic or rubber, Opaque white looks like glossed mirror.
//"MeshEmissionTextureName": null, //Texture like the first, except is for illumination of parts of the model for things like night. Black is "off", the brighter it is the more it shows. Think LEDs
/* OR */
"MeshMaterialName": null, //Name of one of the GAME'S materials to use, such as "Corp_Main", "GSO_Main", "GC_Main", "VEN_Main", "BF_Main", and "HE_Main",. This material flashes and everything! (You can use this in combination with the above)
//"EmissionMode": 2, // No change = 0, Glow = 1, Glow at night = 2, Glow when anchored = 3
"ColliderMeshName": null, //FILE Name of the mesh, such as "collider.obj". Leaving as null will make an upright box collider relative to the mesh's extents
"SupressBoxColliderFallback": false, //Disable creation of BoxCollider. Useful for if a collider will be already provided
//"Friction": 0.6, //A value between 0 and 1, the slowdown of rubbing objects
//"StaticFriction": 0.6, //A value between 0 and 1, how much it sticks to a surface when it is stopped
//"Bounciness": 0.1, //A value between 0 and 1, how much it bounces back from a collision
// X is right and left, Y is up and down, and Z is forward and backward
/* EITHER */
"Cells": [ //Units in the grid space to be occupied
{
"x": 0,
"y": 0,
"z": 0
},
{
"x": 0,
"y": 1,
"z": 0
}
],
/* OR */
"BlockExtents": //Makes a filled grid box with these dimensions. IGNORED if "Cells": is used
{
"x": 1,
"y": 2,
"z": 1
}, // A vector of (1, 1, 1) returns a one-celled block (Width, Height, Length)
/* EITHER */
"APsOnlyAtBottom": false, //Make APs only on the bottom, or have all faces covered. IGNORED if "APs": is used. ONLY works with "BlockExtents":
/* OR */
"APs": [ //The location of APs on the block. Delete this or set to null if you'd rather use "APsOnlyAtBottom": with "BlockExtents":
{
"x": 0,
"y": 0,
"z": -0.5
},
{
"x": 0,
"y": 0,
"z": 0.5
},
{
"x": -0.5,
"y": 0,
"z": 0
},
{
"x": 0.5,
"y": 0,
"z": 0
},
{
"x": 0,
"y": -0.5,
"z": 0
},
{
"x": 0,
"y": 1.5,
"z": 0
}
],
//"RotationGroup": "" //No need for default, can take several values (see below)
/* Rotaion groups are: "default", "GSOFan", "GSOBlockLong", "GSOArmourSmall", "GSORadar", "GSODrill", "GSOAnchor", "GSOLaserForward", "GSOStripLight", "GSOBattery", "GSOBlock", "GSOHalfBlock", "GSODispenser", "GSORemoteCharger", "GSOMediumTractor",
"GSOWheel", "GCGirder", "VENShield", "SPEJet", "SPETailWing", "SPEFan", "SPERotorSm", "SPEBracket", "SPECBracketSeat", "SPEBlockSphere", "GSOFabricator", "HEMissile", "GSOScrapper", "GSOGenerator", "EXPCap", "EXPBall", "EXPHoop", "GCBumperCross",
"GCBumperStraight", "GCWheel_Stupid_588", "HE_Wheel_Single", "BF Wheels", "BF_Block_Smooth_111", "BF_Streamline_112" */
// Delete /* and */ if using
//OPTIONAL
"GamePrefabReference": null, //Use a block prefab from the GAME'S RESOURCES as a base. For example, "GSOBlock(111)", 3
"KeepRenderers": true, //If not true, prefab renderers will be removed
"KeepColliders": true, //If not true, colliders will be removed
//"DeathExplosionReference": 52, //Like the GamePrefabReference, but copies the explosion of a specific block. (Copies before Deserializer, so it is possible to manipulate in there)
"ReferenceOffset": {
"x": 0,
"y": 0,
"z": 0
} //Shift the subobjects of the block prefab by x, y and z
/*
"ReferenceRotationOffset": {
"x": 0, // Pitch
"y": 0, // Yaw
"z": 0 // Roll
}, //Rotate the subobjects of the block prefab by the origin
*/
/*
"ReferenceScale": {
"x": 0,
"y": 0,
"z": 0
}, //Scale all the subobjects of the block prefab by the origin
*/
// Sub Objects can modify existing sub gameobjects on a prefab reference. Properties can be omitted as necessary
/*
"SubObjects": [
{ // This is the start of a subobject modifier item. All the parameters are here for reference
"SubOverrideName": "m_CORP_Block_SubObject", //This line can be omitted (or set to not a valid subobject of the prefab) to create a new gameobject child.
"DestroyExistingRenderer": false, //With this false, it will use the material on the subobject if it exists instead of root. Can still be modified with below properties
"DestroyExistingColliders": false,
"MeshName": null,
"MakeBoxCollider": false, //Will resize to mesh if one is present, otherwise SubScale
"MakeSphereCollider": false, //Just a sphere
"ColliderMeshName": null,
"Layer": null, //Leave as null to be the default Tech layer for collision. Advanced use only!
"Friction": 0.6, //A value between 0 and 1, the slowdown of rubbing objects
"StaticFriction": 0.6, //A value between 0 and 1, how much it sticks to a surface when it is stopped
"Bounciness": 0.1, //A value between 0 and 1, how much it bounces back from a collision
"MeshTextureName": null,
"MeshMaterialName": null,
"SubPosition": { "x": 0, "y": 0, "z": 0 },
"SubScale": { "x": 1, "y": 1, "z": 1 },
"SubRotation": {
"x": 0, // Pitch
"y": 0, // Yaw
"z": 0 // Roll
}
}, // You can add as many items as needed for your block
{ // This item example only has a few of the parameters, as it does not need all of it
"SubOverrideName": "SubGameObject/CommonName", // For target subobjects with shared names, a number or parent subobject name can be used to target the right one. Property paths can also be used to find an object underneath a class
"DestroyExistingRenderer": false,
"MeshName": null,
"ColliderMeshName": null,
"MeshMaterialName": null,
"SubPosition": { "x": 0, "y": 0, "z": 0 }
}
],
/**/
// For great control of a block without creating a C# mod, such a system exists that you can modify the Hierarchy, and variables, of one.
// Note: There can only be one "JSONBLOCK" / "Deserializer" property in a file, but what is in it can be changed depending on use. These are examples.
/*
"Deserializer: {
// Complicated things go here, will be explained elsewhere. Check out other blocks or the discord for help
}
/**/
//If you have any problems, recommendations, or seek for guidance, ask on the Forum or official TerraTech Discord (discord.gg/terratechgame)
//It may be necessary to examine the hierarchy of the block you wish to base your block on. You can do that by pressing backslash with your mouse on top of that block, with the Control Blocks mod installed, or by dumping the block's JSON with Misc Mods.
}