Confirmedusers, editor, Administrators
886
edits
CreativeMD (talk | contribs) No edit summary |
CreativeMD (talk | contribs) No edit summary |
||
(25 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
__FORCETOC__ | __FORCETOC__ | ||
This tutorial should introduce you into the basic of adding an item to the game using JSON files. If you want to add a item with functionality you should check out the tutorial for [[Advanced Items]]. There is a full list of all properties which can be defined inside the json file [[Item Json Properties]]. Adding a block to the game is rather similar, so if you have done that already most of the following steps should be | 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 an item to the game using JSON files. If you want to add a item with functionality you should check out the tutorial for [[Advanced Items]]. There is a full list of all properties which can be defined inside the json file [[Item Json Properties]]. Adding a block to the game is rather similar, so if you have done that already most of the following steps should be familiar to you. | ||
= A Simple Item = | = A Simple Item = | ||
So, the first thing we going to need is an idea. What does this game need | So, the first thing we going to need is an idea. What does this game need? Wait i got it ... the game needs an overpowered wand. Let's call this mod '''MyWandMod'''. | ||
== Workspace == | |||
First of all I suggested to create a new folder to keep everything nice and clean. Inside this '''workspace''' we will create the mod itself and later on put it into a zip file, so we can test it and distribute it to other people. | |||
== The Texture == | == The Texture == | ||
This is the texture we gonna use [[File:Wand.png]] | This is the texture we gonna use [[File:Wand.png]]. | ||
In order to use the texture we need to put it at the right place. Therefore create the following folders in your workspace <code>assets/mywandmod/textures/item/</code>. Now rename the texture to <code>wand.png</code> and place it in there. | |||
== The Item File == | |||
To create the actual wand need to create a json file inside <code>assets/mywandmod/itemtypes/</code> in your workspace. In this example we name it <code>wand.json</code>. This file contains the basic properties of your item. | |||
The content of this json file should look as it follows: | The content of this json file should look as it follows: | ||
Line 18: | Line 24: | ||
{ | { | ||
code: "wand", | code: "wand", | ||
creativeinventory: { " | creativeinventory: { "general": ["*"] }, | ||
texture: { base: " | texture: { base: "item/wand" } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* '''code''': A unique identifier for your item | * '''code''': A unique identifier for your item. | ||
* '''creativeinventory''': The creative inventory tabs the itemshould be shown in (currently only 1 tab available) | * '''creativeinventory''': The creative inventory tabs the itemshould be shown in (currently only 1 tab available) | ||
* '''textures''': What textures to apply. | * '''textures''': What textures to apply. | ||
== | == Naming the Block == | ||
Now we got everything ready | Now we got almost everything ready, except of a proper name. Create another json file in your workspace <code>assets/mywandmod/lang/en.json</code> and give your item a proper name: | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"item-wand": "Wand" | |||
} | |||
</syntaxhighlight> | |||
== Testing/ Distribution == | |||
There is only one thing left. We need to create a zip file of the assets folder inside your 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>MyWandMod.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. | |||
Furthermore you need to add a <code>modinfo.json</code> file, check out [[Game_Content_Mod|this tutorial]]. | |||
[https://wiki.vintagestory.at/images/e/ec/MyWandMod.zip MyWandMod.zip] | |||
To install the mod, navigate to the [[Vintagestory folder]] and place it inside the mods folder. | |||
Now we got everything ready to run our first test. You should be able to find the added item in the creative inventory. | |||
[ | [[File:2017-01-30 13-59-27.png|700px]] | ||
'''Hint''': Use the client command <code>.tfedit</code> if you want to adjust the item position, rotation and scale in Hands, in GUI, when dropped on the ground or in third person mode. | |||
= Advanced Properties = | = Advanced Properties = | ||
Line 55: | Line 65: | ||
Our wand is still rather useless, so it might be a good idea to add our wand some mining functionality. How it works? We the property "miningspeedbytype" we can define the mining speed for each material. Here is a list of all [[Block Materials|block materials]]. | Our wand is still rather useless, so it might be a good idea to add our wand some mining functionality. How it works? We the property "miningspeedbytype" we can define the mining speed for each material. Here is a list of all [[Block Materials|block materials]]. | ||
The number indicates how fast the tool is able to mine the block, while <code>1</code> is the default value. <code>time to mine = block resistance / miningspeed</code>. Meaning a speed of <code>2</code> is twice as fast the default speed of one. So our tool is seven times faster than using the hand. | |||
A pickaxe looks like this: | A pickaxe looks like this: | ||
Line 70: | Line 82: | ||
Our tool can be damaged by breaking a block, or using it for an weapon. The property <code>damagedby</code> allows us to define all possible damage source. For now we will stick to <code>blockbreaking</code> and <code>attacking</code>. | Our tool can be damaged by breaking a block, or using it for an weapon. The property <code>damagedby</code> allows us to define all possible damage source. For now we will stick to <code>blockbreaking</code> and <code>attacking</code>. | ||
<syntaxhighlight | <syntaxhighlight lang="json"> | ||
damagedby: ["blockbreaking", "attacking"], | damagedby: ["blockbreaking", "attacking"], | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 76: | Line 88: | ||
and the durability should be 2000: | and the durability should be 2000: | ||
<syntaxhighlight | <syntaxhighlight lang="json"> | ||
durabilitybytype: { | durabilitybytype: { | ||
"*": 2000, | "*": 2000, | ||
Line 120: | Line 132: | ||
We can also change the durability for each type individually. | We can also change the durability for each type individually. | ||
<syntaxhighlight | <syntaxhighlight lang="json"> | ||
durabilitybytype: { | durabilitybytype: { | ||
"*-shovel": 4000, | "*-shovel": 4000, | ||
Line 132: | Line 144: | ||
Using the same way we specified the mining speed for each type we can also specify a texture for each type. | Using the same way we specified the mining speed for each type we can also specify a texture for each type. | ||
<syntaxhighlight | <syntaxhighlight lang="json"> | ||
texturebytype: { | texturebytype: { | ||
"*-shovel": { | "*-shovel": { | ||
base: " | base: "item/wand-shovel", | ||
}, | }, | ||
"*-pickaxe": { | "*-pickaxe": { | ||
base: " | base: "item/wand-pickaxe", | ||
}, | }, | ||
"*-axe": { | "*-axe": { | ||
base: " | base: "item/wand-axe", | ||
}, | }, | ||
} | } | ||
Line 147: | Line 159: | ||
But we can accomplish the same thing with an easier way: | But we can accomplish the same thing with an easier way: | ||
<syntaxhighlight | <syntaxhighlight lang="json"> | ||
texture: { | texture: { | ||
base: " | base: "item/wand-{tooltype}", | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 157: | Line 169: | ||
== Texture Overlays == | == Texture Overlays == | ||
As everybody knows programmers are lazy, so instead of drawing a texture for each variant of our | As everybody knows programmers are lazy, so instead of drawing a texture for each variant of our item, we can use overlays instead, which will make it a lot easier. | ||
These are the overlays for each type: [[File:Wand-overlay-axe.png]] [[File:Wand-overlay-pickaxe.png]] [[File:Wand-overlay-shovel.png]]. All we have to do now is to change the base texture to back to the original wand texture and add an overlay texture. | |||
<syntaxhighlight lang="json"> | |||
texture: { | |||
base: "wand", | |||
overlays: [ "item/wand-overlay-{tooltype}" ], | |||
}, | |||
</syntaxhighlight> | |||
and this is the result: | |||
[[File:2017-02-09 17-30-34.png|700px]] | |||
== Download == | |||
You can download the mod to test it out yourself: [https://wiki.vintagestory.at/images/e/ec/MyAdvancedWandMod.zip MyAdvancedWandMod.zip] | |||
{{Navbox/modding|Vintage Story}} |