Confirmedusers
711
edits
No edit summary |
m (Updated navbox to new content navbox.) |
||
(14 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
<languages/><translate> | |||
<!--T:1--> | |||
{{GameVersion|1.19}} | |||
<!--T:2--> | |||
__TOC__ | __TOC__ | ||
A large amount of game content is freely modifiable through editing text files. If you feel like tinkering around, just open your assets folder. | <!--T:3--> | ||
A large amount of game content is freely modifiable through editing text files. If you feel like tinkering around, just open your assets folder, which is located in your Vintage Story install location. If installed in the default location, and using Windows, you can quickly open your assets folder. Hit Winkey+R to open the 'run' window, paste in the line: ''%appdata%/Vintagestory/assets'', and hit enter. | |||
< | <!--T:4--> | ||
Starting from Version 1.6 you should enable the error reporter by running the chat command /errorreporter 1 when you modify json files. With this, if you made any mistakes while changing the asset files, the game will display a dialog showing you all the errors it found. | {{Protip | ||
|Starting from Version 1.6 you should enable the error reporter by running the chat command /errorreporter 1 when you modify json files. With this, if you made any mistakes while changing the asset files, the game will display a dialog showing you all the errors it found. | |||
<!--T:5--> | |||
In earlier versions of the game you need to manually check out the log files in %appdata%/VintageStoryData/Logs/server-main.txt and client-main.txt | In earlier versions of the game you need to manually check out the log files in %appdata%/VintageStoryData/Logs/server-main.txt and client-main.txt | ||
}} | |||
== Keep your contents upon death == | == Keep your contents upon death == <!--T:6--> | ||
<!--T:7--> | |||
Open the file <code>assets/game/entities/humanoid/player.json</code>, find the line that begins with <code>server: {</code>, below that insert <code>attributes: { keepContents: true },</code> | Open the file <code>assets/game/entities/humanoid/player.json</code>, find the line that begins with <code>server: {</code>, below that insert <code>attributes: { keepContents: true },</code> | ||
<!--T:8--> | |||
This should prevent the player from dropping its inventory upon death. | This should prevent the player from dropping its inventory upon death. | ||
== Changing sleep duration in beds == <!--T:9--> | |||
== Changing sleep duration in beds == | |||
Beds in the Vanilla game are pretty limited, as they let you only sleep | <!--T:10--> | ||
Beds in the Vanilla game are pretty limited, as they let you only sleep a set number of hours every night. More often than not players prefer to skip the whole night. To achieve that open the file <code>assets/survival/blocktypes/wood/bed.json</code> | |||
Line | <!--T:11--> | ||
Line 8-11 should contain these lines: | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
"sleepEfficiencyByType": { | |||
"bed-wood-*" | "bed-wood-*": 0.70833333, | ||
"bed-hay-*" | "bed-hay-*": 0.58333333, | ||
"bed-woodaged-*" | "bed-woodaged-*": 0.79166666 | ||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
The <code>sleepEfficiency</code> attribute is specific to the bed. In this case a value of 1 means the player can sleep half the day. The hay bed has a value of 0. | <!--T:12--> | ||
The <code>sleepEfficiency</code> attribute is specific to the bed. Note the use of the <code>ByType</code> suffix to specify values for each type of bed. In this case a value of 1 means the player can sleep half the day. The hay bed has a value of 0.58333333, which means the player can sleep for 12 * 0.58333333 = ~7 in-game hours. Change the value to anything between 0...1 and start the game or leave and re-enter your singleplayer world. Next time you sleep in the bed you will be skipping that amount of time. | |||
== Making wolves less dangerous == <!--T:13--> | |||
<!--T:14--> | |||
Our favorite arch enemy the wolf. If you don't like the silent horror of the winterlands, we can tame him with a few tweaks. | |||
Open the file <code>assets/survival/entities/land/wolf-male.json</code> | |||
Line | <!--T:15--> | ||
Line 116-129 should contain this: | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
code: "meleeattack", | "code": "meleeattack", | ||
entityCodes: ["player"], | "entityCodes": ["player", "chicken-rooster", "chicken-hen", "chicken-baby", "hare-*", "deer-*-baby", "deer-pudu-*-adult", "deer-water-*-adult", "deer-pampas-*-adult", "deer-redbrocket-*-adult"], | ||
priority: 2, | "priority": 2, | ||
damage: | "damage": 8, | ||
slot: 1, | "damageTier": 2, | ||
mincooldown: 1500, | "damageType": "SlashingAttack", | ||
maxcooldown: 1500, | "slot": 1, | ||
attackDurationMs: 800, | "mincooldown": 1500, | ||
damagePlayerAtMs: 500, | "maxcooldown": 1500, | ||
animation: "Attack", | "attackDurationMs": 800, | ||
animationSpeed: 2.5, | "damagePlayerAtMs": 500, | ||
sound: "creature/wolf/ | "animation": "Attack", | ||
"animationSpeed": 2.5, | |||
"sound": "creature/wolf/attack" | |||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
This is the configuration for the wolves ai task to induce damage to | <!--T:16--> | ||
This is the configuration for the wolves ai task to induce damage to nearby enemies. By default, the wolf deals 8 damage, which means any unprotected player dies in 2-3 attacks. If you change the <code>damage</code> property to 5, the wolf has to attack you up to 3-4 times before a fully healed player dies. | |||
<!--T:17--> | |||
Right below is the enemy seeking task | Right below is the enemy seeking task | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
code: "seekentity", | "code": "seekentity", | ||
entityCodes: ["player"], | "entityCodes": ["player", "chicken-rooster", "chicken-hen", "chicken-baby", "hare-*"], | ||
priority: 1.5, | "priority": 1.5, | ||
movespeed: 0. | "movespeed": 0.045, | ||
seekingRange: | "seekingRange": 15, | ||
animation: "Run", | |||
animationSpeed: | "belowTempSeekingRange": 25, | ||
sound: "creature/wolf/ | "belowTempThreshold": -5, | ||
"animation": "Run", | |||
"leapAtTarget": true, | |||
"leapAnimation": null, | |||
"animationSpeed": 2.2, | |||
"leapChance": 0.01, | |||
"sound": "creature/wolf/growl", | |||
"whenNotInEmotionState": "saturated" | |||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
You can perhaps read out that the wolf has a seeking range of | <!--T:18--> | ||
You can perhaps read out that the wolf has a seeking range of 15 blocks. This means if the wolf finds a player within a radius of 15 blocks, it will start walking towards that player. Changing that to something lower, like 5 blocks, means you can get much closer to a wolf before he begins to chase you. | |||
<!--T:19--> | |||
Be sure to also apply the changes to the female wolf in <code>wolf-female.json</code>! | Be sure to also apply the changes to the female wolf in <code>wolf-female.json</code>! | ||
== Playing around with world generation == <!--T:20--> | |||
<!--T:21--> | |||
Inside the assets folder, navigate to the <code>assets/survival/worldgen/</code> folder. Copy aside the landforms.json so you have a backup, then open the landforms.json. Remove everything in this file and paste in the following text: | |||
Inside the assets folder, navigate to worldgen/ | <syntaxhighlight lang="json"> | ||
< | |||
{ | { | ||
code: "landforms", | "code": "landforms", | ||
"variants": | "variants": | ||
[ | [ | ||
Line 95: | Line 115: | ||
"comment": "humongous mountains with caverns in them", | "comment": "humongous mountains with caverns in them", | ||
"hexcolor": "#5BC184", | "hexcolor": "#5BC184", | ||
"weight": | "weight": 1.5, | ||
"useClimateMap": false, | "useClimateMap": false, | ||
"terrainOctaves": [ | "terrainOctaves": [0, 0, 0, 1, 1, 1, 1, 0.6, 0.15], | ||
"terrainOctaveThresholds": [ | "terrainOctaveThresholds": [0, 0, 0, 0.5, 0, 0, 0, 0, 0], | ||
"terrainYKeyPositions": [ | "terrainYKeyPositions": [0.000, 0.330, 0.370, 0.420, 0.430, 0.500, 0.600, 0.700, 1.000], | ||
"terrainYKeyThresholds": [1, | "terrainYKeyThresholds": [1.000, 1.000, 0.870, 0.840, 0.700, 0.940, 1.000, 1.000, 0.000] | ||
}, | }, | ||
] | ] | ||
} | } | ||
</ | </syntaxhighlight> | ||
Now next time you create a new survival world, the entire world is made of humongous mountains. Congratulations, you can now officially call yourself a modder! | <!--T:22--> | ||
Now next time you create a new survival world, the entire world is made of humongous mountains. Congratulations, you can now officially call yourself a modder! To revert these changes, simply delete the modified file, and rename your backed-up landforms file back to landforms.json. | |||
<!--T:23--> | |||
Very shortly explained, this file defines the list of land forms that may appear in the world. Each section enclosed in { ... } is one landform. If you feel like, you can play around with the values for terrainYKeyPositions and terrainYKeyThresholds and see what happens (they have to be values between 0 and 1). These numbers basically determine the shape of the landform at certain elevations. | Very shortly explained, this file defines the list of land forms that may appear in the world. Each section enclosed in { ... } is one landform. If you feel like, you can play around with the values for terrainYKeyPositions and terrainYKeyThresholds and see what happens (they have to be values between 0 and 1). These numbers basically determine the shape of the landform at certain elevations. | ||
<!--T:24--> | |||
More info on on that is available on the [[WorldGen API|World Generation]] page. | More info on on that is available on the [[WorldGen API|World Generation]] page. | ||
== Playing around with blocks == | == Playing around with blocks == <!--T:25--> | ||
You can tweak, add, or remove almost any block you want, including their shape. Inside the assets folder: | <!--T:26--> | ||
You can tweak, add, or remove almost any block you want, including their shape. Inside the assets/survival folder: | |||
* The blocks themselves are all in the subfolder blocktypes | * The blocks themselves are all in the subfolder blocktypes | ||
* The block textures in textures/blocks | * The block textures in textures/blocks | ||
Line 120: | Line 144: | ||
<!--T:27--> | |||
For example, let's make the fire pit emit a red light and huge particles: | For example, let's make the fire pit emit a red light and huge particles: | ||
<ul> | <ul> | ||
<li>Open up blocktypes/wood | <li>Open up <code>survival/blocktypes/wood/firepit.json</code>. Use Ctrl+F to find the following line:<br> | ||
"firepit-lit": [7, 7, | <code>"firepit-lit": [7, 7, 16],</code> | ||
</li> | </li> | ||
<li> | <li> | ||
These are the Hue, Saturation and Brightness values according to the [http://tyron.at/vs/vslightwheel.html VS Light Wheel] ( | These are the Hue, Saturation and Brightness values according to the [http://tyron.at/vs/vslightwheel.html VS Light Wheel] (hold your mouse over any pixel to see it's HSV Value). The brightness is how far the light will spread. I'll take [0, 7, 20]:<br> | ||
"firepit-lit": [0, 7, 20], | <code>"firepit-lit": [0, 7, 20],</code> | ||
</li> | </li> | ||
<li>On line | <!--T:28--> | ||
size: { avg: 0. | <li>On line 68 you should see this:<br> | ||
<code>size: { avg: 0.4, var: 0 },</code> | |||
</li> | </li> | ||
<li>This determines the size of the cubic glowing particles the fire pit emits, let's up the size | <li>This determines the size of the cubic glowing particles the fire pit emits, let's up the size 5 times and add some randomness to it:<br> | ||
size: { avg: 2, var: 0.5 }, | <code>size: { avg: 2, var: 0.5 },</code> | ||
</li> | </li> | ||
<!--T:29--> | |||
Save the file and restart the your singleplayer world, place your lit fire pit and you should see this: | Save the file and restart the your singleplayer world, place your lit fire pit and you should see this: | ||
<br> | |||
[[File:Moddedfirepit.png|300px]] | [[File:Moddedfirepit.png|300px]] | ||
<!--T:30--> | |||
{{Navbox/contentmodding}} | |||
</translate> | |||