Modding:Basic Block: Difference between revisions

From Vintage Story Wiki
no edit summary
No edit summary
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__FORCETOC__
__FORCETOC__


Please read the tutorial [[Getting Started]] first, if you haven't done it already. This tutorial should introduce you into the basic of adding a block to the game using JSON files. If you want to add a block with functionality you should check out the tutorial for [[Advanced Blocks]]. There is a full list of all properties which can be defined inside the json file [[Block Json Properties|here]].
Please read the tutorial [[Getting Started with Advanced Modding#Domains|Getting Started]] first, if you haven't done it already. This tutorial should introduce you into the basic of adding a block to the game using JSON files. If you want to add a block with functionality you should check out the tutorial for [[Advanced Blocks]]. There is a full list of all properties which can be defined inside the json file [[Block Json Properties|here]].


= A Simple Block =
= A Simple Block =
Line 15: Line 15:
We will use this texture for our block: [[File:Gold block.png]].
We will use this texture for our block: [[File:Gold block.png]].


Now we need to put the texture at the right place so we can use it later on. Therefore you have to rename the texture to <code>mygoldtexture.png</code> and put it inside <code>assets/mygoldblock/textures/blocks/</code> in your workspace (you have to create those folders first). <code>mygoldblock</code> will be our domain.
Now we need to put the texture at the right place so we can use it later on. Therefore you have to rename the texture to <code>mygoldtexture.png</code> and put it inside <code>assets/mygoldblock/textures/block/</code> in your workspace (you have to create those folders first). <code>mygoldblock</code> will be our domain.


== The Block File ==
== The Block File ==
Line 27: Line 27:
code: "mygoldblock",
code: "mygoldblock",
creativeinventory: { "general": ["*"] },
creativeinventory: { "general": ["*"] },
shape: { base: "block/basic/cube" },
blockmaterial: "Stone",
blockmaterial: "Stone",
drawtype: "Cube",
drawtype: "Cube",
Line 67: Line 66:
The last thing we need to do is to create a zip file of the assets folder inside our workspace. Either you use an external program (such as WinRAR or 7Zip) or you right-click the <code>assets</code> folder and hit '''Send To''' -> '''Compressed (zipped) folder'''. Eventually you can rename the zip file to <code>MyGoldBlockMod.zip</code>. The zip file can be either used for testing purposes or you can send it to other people so they can use it as well.
The last thing we need to do is to create a zip file of the assets folder inside our workspace. Either you use an external program (such as WinRAR or 7Zip) or you right-click the <code>assets</code> folder and hit '''Send To''' -> '''Compressed (zipped) folder'''. Eventually you can rename the zip file to <code>MyGoldBlockMod.zip</code>. The zip file can be either used for testing purposes or you can send it to other people so they can use it as well.


[http://wiki.vintagestory.at/images/4/4c/MyGoldBlockMod.zip MyGoldBlockMod.zip]
Furthermore you need to add a <code>modinfo.json</code> file, check out [[Game_Content_Mod|this tutorial]].


To install the mod, navigate to the [[Vintagestory Folder]] and place it inside the mods folder.
To install the mod, navigate to the [[Vintagestory folder]] and place it inside the mods folder.
 
[https://wiki.vintagestory.at/images/4/4c/MyGoldBlockMod.zip MyGoldBlockMod.zip]


[[File:2017-01-10 12-33-45.png|700px]].
[[File:2017-01-10 12-33-45.png|700px]].
'''Hint''': Use the client command <code>.tfedit</code> if you want to adjust the block position, rotation and scale in Hands, in GUI, when dropped on the ground or in third person mode.


= Advanced Properties =
= Advanced Properties =
Line 86: Line 89:
textures: {
textures: {
all: {  
all: {  
base: "mygoldtexture",
base: "block/mygoldtexture",
alternates: [{base: "mygoldtexture1" }, {base: "mygoldtexture2" }, {base: "mygoldtexture3" }],
alternates: [{base: "block/mygoldtexture1" }, {base: "block/mygoldtexture2" }, {base: "block/mygoldtexture3" }],
},
},
},
},
Line 122: Line 125:
"*-gold": {
"*-gold": {
all: {  
all: {  
base: "mygoldtexture",
base: "block/mygoldtexture",
alternates: [{base: "mygoldtexture1" }, {base: "mygoldtexture2" }, {base: "mygoldtexture3" }],
alternates: [{base: "block/mygoldtexture1" }, {base: "block/mygoldtexture2" }, {base: "block/mygoldtexture3" }],
},
},
},
},
"*-iron": {
"*-iron": {
all: {  
all: {  
base: "myirontexture",
base: "block/myirontexture",
alternates: [{base: "myirontexture1" }, {base: "myirontexture2" }, {base: "myirontexture3" }],
alternates: [{base: "block/myirontexture1" }, {base: "block/myirontexture2" }, {base: "block/myirontexture3" }],
},
},
}
}
Line 142: Line 145:
textures: {
textures: {
all: {  
all: {  
base: "my{type}texture",
base: "block/my{type}texture",
alternates: [{base: "my{type}texture1" }, {base: "my{type}texture2" }, {base: "my{type}texture3" }],
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
},
},
},
},
Line 156: Line 159:
{ code: "type", states: ["gold", "iron"] }
{ code: "type", states: ["gold", "iron"] }
],
],
shape: { base: "basic/cube" },
blockmaterial: "Stone",
blockmaterial: "Stone",
drawtype: "cube",
drawtype: "cube",
textures: {
textures: {
all: {  
all: {  
base: "my{type}texture",
base: "block/my{type}texture",
alternates: [{base: "my{type}texture1" }, {base: "my{type}texture2" }, {base: "my{type}texture3" }],
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
},
},
},
},
Line 192: Line 194:
"*-good": {
"*-good": {
all: {  
all: {  
base: "my{type}texture",
base: "block/my{type}texture",
},
},
},
},
"*-used": {
"*-used": {
all: {  
all: {  
base: "my{type}texture",
base: "block/my{type}texture",
alternates: [{base: "my{type}texture1" }, {base: "my{type}texture2" }, {base: "my{type}texture3" }],
alternates: [{base: "block/my{type}texture1" }, {base: "block/my{type}texture2" }, {base: "block/my{type}texture3" }],
},
},
},
},
Line 212: Line 214:
In order to use a custom shape we need to create one first. The engine only supports the model/shape format that's created by the [[VS Model Creator]].
In order to use a custom shape we need to create one first. The engine only supports the model/shape format that's created by the [[VS Model Creator]].


Once you have created your own shape you need to export it as a json file, create a new folder <code>assets/myshinyblock/shapes/blocks/</code> and save the file in there. In our example we will use this model [http://wiki.vintagestory.at/images/3/38/Myshinymodel.json Myshinymodel.json] and move it to <code>assets/myshinyblock/shapes/blocks/myshinymodel.json</code>.
Once you have created your own shape you need to export it as a json file, create a new folder <code>assets/myshinyblock/shapes/block/</code> and save the file in there. In our example we will use this model [https://wiki.vintagestory.at/images/3/38/Myshinymodel.json Myshinymodel.json] and move it to <code>assets/myshinyblock/shapes/block/myshinymodel.json</code>.
Now we need to specify the model inside our block type json file.
Now we need to specify the model inside our block type json file.


Line 222: Line 224:
and the shape to <code>myshinymodel</code>
and the shape to <code>myshinymodel</code>
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
shape: { base: "myshinymodel" },
shape: { base: "block/myshinymodel" },
</syntaxhighlight>
</syntaxhighlight>


Line 241: Line 243:
== Variants of Custom Shapes ==
== Variants of Custom Shapes ==


I created another model for the blocks in good condition ([http://wiki.vintagestory.at/images/f/fa/Myshinymodel1.json myshinymodel1.json]), because they should look more awesome, than the ones in used conditions. Therefore we need to copy the json file to <code>assets/myshinyblock/shapes/blocks/</code> as well.
I created another model for the blocks in good condition ([https://wiki.vintagestory.at/images/f/fa/Myshinymodel1.json myshinymodel1.json]), because they should look more awesome, than the ones in used conditions. Therefore we need to copy the json file to <code>assets/myshinyblock/shapes/block/</code> as well.


In order to specify the shape by type we need to remove the property <code>shape</code> and replace it with <code>shapebytype</code>:
In order to specify the shape by type we need to remove the property <code>shape</code> and replace it with <code>shapebytype</code>:
Line 247: Line 249:
shapebytype: {
shapebytype: {
"*-good": {
"*-good": {
base: "myshinymodel1",
base: "block/myshinymodel1",
},
},
"*-used": {
"*-used": {
base: "myshinymodel",
base: "block/myshinymodel",
},
},
},
},
Line 257: Line 259:
[[File:2017-01-12 14-51-45.png|700px]]
[[File:2017-01-12 14-51-45.png|700px]]


[http://wiki.vintagestory.at/images/4/42/MyShinyBlockMod.zip MyShinyBlockMod]
[https://wiki.vintagestory.at/images/4/42/MyShinyBlockMod.zip MyShinyBlockMod]


There are a lot of more things you can do with the blocktype and model formats. We recommend you to take a look at the Vintage Story block type files to understand how the system is working, in case something was left unexplained.
There are a lot of more things you can do with the blocktype and model formats. We recommend you to take a look at the Vintage Story block type files to understand how the system is working, in case something was left unexplained.
We hope we could introduce you into the basic of adding blocks the game. [[Advanced Blocks]] will teach you how to add more functionality to your block.
We hope we could introduce you into the basic of adding blocks the game. [[Advanced Blocks]] will teach you how to add more functionality to your block.
{{Navbox/modding|Vintage Story}}
Confirmedusers, editor, Administrators
886

edits