<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=Custom_Races%2Fen</id>
	<title>Custom Races/en - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=Custom_Races%2Fen"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Custom_Races/en&amp;action=history"/>
	<updated>2026-10-25T16:56:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=Custom_Races/en&amp;diff=38552&amp;oldid=prev</id>
		<title>FuzzyBot: Updating to match new version of source page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Custom_Races/en&amp;diff=38552&amp;oldid=prev"/>
		<updated>2026-10-22T01:09:44Z</updated>

		<summary type="html">&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:09, 22 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l66&quot;&gt;Line 66:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 66:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;customModel&amp;lt;/code&amp;gt; || String || Model key. Empty means the race looks like a Human. A built-in key (for example &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;) reuses that model and its textures; any other key loads your own model. The built-in keys are listed on [[Special:MyLanguage/Custom Models and Assets#Built-in model keys|Custom Models and Assets]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;customModel&amp;lt;/code&amp;gt; || String || Model key. Empty means the race looks like a Human. A built-in key (for example &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;) reuses that model and its textures; any other key loads your own model. The built-in keys are listed on [[Special:MyLanguage/Custom Models and Assets#Built-in model keys|Custom Models and Assets]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;isLayered&amp;lt;/code&amp;gt; || Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;: the body is drawn from three tintable texture layers (body colors 1, 2 and 3) and the race uses its own face textures. &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;: one plain body texture and borrowed Human faces.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;isLayered&amp;lt;/code&amp;gt; || Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;: the body is drawn from three tintable texture layers (body colors 1, 2 and 3) and the race uses its own face textures. &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;: one plain body texture and borrowed Human faces&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Any body texture can have an optional &amp;lt;code&amp;gt;&amp;lt;texture&amp;gt;_shadow.png&amp;lt;/code&amp;gt; mask next to it (for example &amp;lt;code&amp;gt;..._layer1_shadow.png&amp;lt;/code&amp;gt; next to &amp;lt;code&amp;gt;..._layer1.png&amp;lt;/code&amp;gt;): it is drawn in a shadow tone of that texture&#039;s body color (same hue, shifted saturation), so the shading follows the colors the player picks&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;headBones&amp;lt;/code&amp;gt; || List of strings || Bone names the player can choose from in character customization (one at a time, plus a &amp;quot;none&amp;quot; option), for example ears, horns or antennas. Join bones with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; to show several at once (&amp;lt;code&amp;gt;&amp;quot;ears1+horns2&amp;quot;&amp;lt;/code&amp;gt;). The special entry &amp;lt;code&amp;gt;&amp;quot;hair&amp;quot;&amp;lt;/code&amp;gt; enables the hair editor for the race. Bones are looked up in &amp;lt;code&amp;gt;geo/entity/raceparts.geo.json&amp;lt;/code&amp;gt; first, then in the race model.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;headBones&amp;lt;/code&amp;gt; || List of strings || Bone names the player can choose from in character customization (one at a time, plus a &amp;quot;none&amp;quot; option), for example ears, horns or antennas. Join bones with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; to show several at once (&amp;lt;code&amp;gt;&amp;quot;ears1+horns2&amp;quot;&amp;lt;/code&amp;gt;). The special entry &amp;lt;code&amp;gt;&amp;quot;hair&amp;quot;&amp;lt;/code&amp;gt; enables the hair editor for the race. Bones are looked up in &amp;lt;code&amp;gt;geo/entity/raceparts.geo.json&amp;lt;/code&amp;gt; first, then in the race model.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l72&quot;&gt;Line 72:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;racialSkill&amp;lt;/code&amp;gt; || String || Which racial skill the race uses: &amp;lt;code&amp;gt;human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;saiyan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bioandroid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;glind&amp;lt;/code&amp;gt;. A custom race uses the same tuning as the race it borrows from (&amp;lt;code&amp;gt;general-server.json&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;racialSkills.&amp;lt;skill&amp;gt;&amp;lt;/code&amp;gt;). See [[Special:MyLanguage/Racial Skills|Racial Skills]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;racialSkill&amp;lt;/code&amp;gt; || String || Which racial skill the race uses: &amp;lt;code&amp;gt;human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;saiyan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bioandroid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;glind&amp;lt;/code&amp;gt;. A custom race uses the same tuning as the race it borrows from (&amp;lt;code&amp;gt;general-server.json&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;racialSkills.&amp;lt;skill&amp;gt;&amp;lt;/code&amp;gt;). See [[Special:MyLanguage/Racial Skills|Racial Skills]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;hasSaiyanTail&amp;lt;/code&amp;gt; || Boolean || Gives the race a Saiyan tail.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;hasSaiyanTail&amp;lt;/code&amp;gt; || Boolean || Gives the race a Saiyan tail&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Hiding and showing it plays the same animation as for Saiyans, which wraps the tail around the waist&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;auraType&amp;lt;/code&amp;gt; || String || 2D aura sprite set: &amp;lt;code&amp;gt;kakarot&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;god&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;code&amp;gt;auraType&amp;lt;/code&amp;gt; || String || 2D aura sprite set: &amp;lt;code&amp;gt;kakarot&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;god&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l94&quot;&gt;Line 94:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 94:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Schema source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/config/RaceCharacterConfig.java&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Schema source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/config/RaceCharacterConfig.java&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Note|type=info|title=Resource packs|text=In 2.2 the built-in &amp;lt;code&amp;gt;humansaiyan&amp;lt;/code&amp;gt; body shading textures were renamed from &amp;lt;code&amp;gt;bodytype_*_layer2.png&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;bodytype_*_layer1_shadow.png&amp;lt;/code&amp;gt; (in &amp;lt;code&amp;gt;textures/entity/races/humansaiyan/&amp;lt;/code&amp;gt;). A resource pack that replaced the old files must rename them.}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Form skill prices ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Form skill prices ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key dmzwiki:diff:1.41:old-1624:rev-38552:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=Custom_Races/en&amp;diff=1624&amp;oldid=prev</id>
		<title>FuzzyBot: Updating to match new version of source page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Custom_Races/en&amp;diff=1624&amp;oldid=prev"/>
		<updated>2026-10-13T04:56:45Z</updated>

		<summary type="html">&lt;p&gt;Updating to match new version of source page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Custom races&amp;#039;&amp;#039;&amp;#039; are playable races you add to DragonMineZ with config files alone. No Java code or add-on jar is needed: a folder with a few JSON files defines the race&amp;#039;s look, its classes, its racial skill and its transformations, and the race then shows up in character creation.&lt;br /&gt;
&lt;br /&gt;
== How DragonMineZ finds races ==&lt;br /&gt;
DragonMineZ loads its built-in races first (&amp;lt;code&amp;gt;human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;saiyan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bioandroid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;glind&amp;lt;/code&amp;gt;), then scans the subfolders of &amp;lt;code&amp;gt;config/dragonminez/races/&amp;lt;/code&amp;gt;. Any other folder name there is treated as a custom race key (use lowercase). Each race folder holds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
config/dragonminez/races/&amp;lt;race_key&amp;gt;/&lt;br /&gt;
  character.json      # appearance, model, racial skill, form skill prices&lt;br /&gt;
  stats.json          # per-class base stats and scaling&lt;br /&gt;
  forms/*.json        # the race&amp;#039;s transformation groups&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you create an empty folder, DragonMineZ generates a &amp;lt;code&amp;gt;character.json&amp;lt;/code&amp;gt; and a &amp;lt;code&amp;gt;stats.json&amp;lt;/code&amp;gt; with neutral defaults the next time configs load. It does &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; generate any forms for a custom race: you add those yourself (see step 3).&lt;br /&gt;
&lt;br /&gt;
For a good starting point, copy an existing race folder (for example &amp;lt;code&amp;gt;races/saiyan/&amp;lt;/code&amp;gt;), rename it and tune the values inside.&lt;br /&gt;
&lt;br /&gt;
Source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/config/ConfigManager.java&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;loadAllRaces&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;createOrLoadRace&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
{{Note|type=config|title=Config version|text=Every file carries a &amp;lt;code&amp;gt;&amp;quot;configVersion&amp;quot;&amp;lt;/code&amp;gt; string (currently &amp;lt;code&amp;gt;&amp;quot;2.2.0&amp;quot;&amp;lt;/code&amp;gt;). A custom file with an older or missing version is backed up to &amp;lt;code&amp;gt;config/dragonminez/oldBackup/&amp;lt;/code&amp;gt; and saved again with the current version; your values are kept. A file with broken JSON syntax is never overwritten: it is reported and skipped until you fix it. See [[Special:MyLanguage/How to JSON|How to JSON]] and [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]].}}&lt;br /&gt;
&lt;br /&gt;
== Step 1: Configure the character ==&lt;br /&gt;
&amp;lt;code&amp;gt;character.json&amp;lt;/code&amp;gt; sets the race&amp;#039;s appearance, model, racial skill and form skill prices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;configVersion&amp;quot;: &amp;quot;2.2.0&amp;quot;,&lt;br /&gt;
  &amp;quot;hasGender&amp;quot;: false,&lt;br /&gt;
  &amp;quot;useVanillaSkin&amp;quot;: false,&lt;br /&gt;
  &amp;quot;customModel&amp;quot;: &amp;quot;saibaman&amp;quot;,&lt;br /&gt;
  &amp;quot;isLayered&amp;quot;: true,&lt;br /&gt;
  &amp;quot;headBones&amp;quot;: [&amp;quot;ears1&amp;quot;],&lt;br /&gt;
  &amp;quot;racialSkill&amp;quot;: &amp;quot;namekian&amp;quot;,&lt;br /&gt;
  &amp;quot;hasSaiyanTail&amp;quot;: false,&lt;br /&gt;
  &amp;quot;auraType&amp;quot;: &amp;quot;kakarot&amp;quot;,&lt;br /&gt;
  &amp;quot;auraType3D&amp;quot;: &amp;quot;userPreference&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultModelScaling&amp;quot;: [0.9375, 0.9375, 0.9375],&lt;br /&gt;
  &amp;quot;defaultBodyType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;slimBodyTypes&amp;quot;: [],&lt;br /&gt;
  &amp;quot;defaultHairType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;defaultEyesType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;defaultNoseType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;defaultMouthType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;defaultTattooType&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;defaultBodyColor&amp;quot;: &amp;quot;#3E8E2E&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultBodyColor2&amp;quot;: &amp;quot;#2A5C20&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultBodyColor3&amp;quot;: &amp;quot;#9BD36A&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultHairColor&amp;quot;: &amp;quot;#222629&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultEye1Color&amp;quot;: &amp;quot;#B40000&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultEye2Color&amp;quot;: &amp;quot;#B40000&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultAuraColor&amp;quot;: &amp;quot;#7FFF00&amp;quot;,&lt;br /&gt;
  &amp;quot;formSkillsCosts&amp;quot;: {&lt;br /&gt;
    &amp;quot;superforms&amp;quot;: { &amp;quot;buyFromMaster&amp;quot;: false, &amp;quot;prices&amp;quot;: [20000, 45000, 80000] },&lt;br /&gt;
    &amp;quot;godforms&amp;quot;: { &amp;quot;buyFromMaster&amp;quot;: false, &amp;quot;prices&amp;quot;: [] },&lt;br /&gt;
    &amp;quot;legendaryforms&amp;quot;: { &amp;quot;buyFromMaster&amp;quot;: false, &amp;quot;prices&amp;quot;: [] }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Type !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hasGender&amp;lt;/code&amp;gt; || Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; gives the race a male/female choice. Custom models and textures then use &amp;lt;code&amp;gt;_male&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;_female&amp;lt;/code&amp;gt; suffixes (see [[Special:MyLanguage/Custom Models and Assets|Custom Models and Assets]]).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;useVanillaSkin&amp;lt;/code&amp;gt; || Boolean || When &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, body type &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; renders the player&amp;#039;s own Minecraft skin; the race&amp;#039;s own body textures start at body type &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;customModel&amp;lt;/code&amp;gt; || String || Model key. Empty means the race looks like a Human. A built-in key (for example &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;) reuses that model and its textures; any other key loads your own model. The built-in keys are listed on [[Special:MyLanguage/Custom Models and Assets#Built-in model keys|Custom Models and Assets]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isLayered&amp;lt;/code&amp;gt; || Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;: the body is drawn from three tintable texture layers (body colors 1, 2 and 3) and the race uses its own face textures. &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;: one plain body texture and borrowed Human faces.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;headBones&amp;lt;/code&amp;gt; || List of strings || Bone names the player can choose from in character customization (one at a time, plus a &amp;quot;none&amp;quot; option), for example ears, horns or antennas. Join bones with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; to show several at once (&amp;lt;code&amp;gt;&amp;quot;ears1+horns2&amp;quot;&amp;lt;/code&amp;gt;). The special entry &amp;lt;code&amp;gt;&amp;quot;hair&amp;quot;&amp;lt;/code&amp;gt; enables the hair editor for the race. Bones are looked up in &amp;lt;code&amp;gt;geo/entity/raceparts.geo.json&amp;lt;/code&amp;gt; first, then in the race model.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;racialSkill&amp;lt;/code&amp;gt; || String || Which racial skill the race uses: &amp;lt;code&amp;gt;human&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;saiyan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;namekian&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frostdemon&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bioandroid&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;majin&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;glind&amp;lt;/code&amp;gt;. A custom race uses the same tuning as the race it borrows from (&amp;lt;code&amp;gt;general-server.json&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;racialSkills.&amp;lt;skill&amp;gt;&amp;lt;/code&amp;gt;). See [[Special:MyLanguage/Racial Skills|Racial Skills]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hasSaiyanTail&amp;lt;/code&amp;gt; || Boolean || Gives the race a Saiyan tail.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auraType&amp;lt;/code&amp;gt; || String || 2D aura sprite set: &amp;lt;code&amp;gt;kakarot&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;god&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auraType3D&amp;lt;/code&amp;gt; || String || 3D aura style of the base form: &amp;lt;code&amp;gt;smooth&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sparking&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;god&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;userPreference&amp;lt;/code&amp;gt; (follows each player&amp;#039;s own setting).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;aura3DStyle&amp;lt;/code&amp;gt; || Object || Fine-tuning of the base 3D aura shape. The keys are listed on [[Special:MyLanguage/Custom Forms#3D aura shape|Custom Forms]].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;defaultModelScaling&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;[x, y, z]&amp;lt;/code&amp;gt; || Base model size.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;defaultBodyType&amp;lt;/code&amp;gt; || Integer || Body type selected by default in character creation.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;slimBodyTypes&amp;lt;/code&amp;gt; || List of integers || Body types (other than &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;) that use slim arms. Body type &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; always follows the player&amp;#039;s skin model.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;defaultHairType&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultEyesType&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultNoseType&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultMouthType&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultTattooType&amp;lt;/code&amp;gt; || Integer || Default customization indices.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;defaultBodyColor&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultBodyColor2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultBodyColor3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultHairColor&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultEye1Color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultEye2Color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;defaultAuraColor&amp;lt;/code&amp;gt; || Hex string || Default colors in character creation.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;formSkillsCosts&amp;lt;/code&amp;gt; || Object || One entry per form skill the race can level (see below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schema source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/config/RaceCharacterConfig.java&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Form skill prices ===&lt;br /&gt;
Each key of &amp;lt;code&amp;gt;formSkillsCosts&amp;lt;/code&amp;gt; is a form skill: &amp;lt;code&amp;gt;superforms&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;legendaryforms&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;godforms&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;androidforms&amp;lt;/code&amp;gt;. The value is either a plain array of prices or an object with these fields:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Type !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;prices&amp;lt;/code&amp;gt; || List of numbers || TP price of each level, in order. The number of entries is the skill&amp;#039;s maximum level, so an empty list means the race cannot level that skill.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;buyFromMaster&amp;lt;/code&amp;gt; || Boolean || &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;: the first level has to be bought from a master before the skill can be leveled from the Skills menu.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A form unlocks when this skill reaches the form&amp;#039;s &amp;lt;code&amp;gt;unlockOnSkillLevel&amp;lt;/code&amp;gt; (see step 3).&lt;br /&gt;
&lt;br /&gt;
=== Android upgrade for custom races ===&lt;br /&gt;
Dr. Gero&amp;#039;s android upgrade is offered to any race whose &amp;lt;code&amp;gt;formSkillsCosts&amp;lt;/code&amp;gt; has at least one price under &amp;lt;code&amp;gt;androidforms&amp;lt;/code&amp;gt; (by default only [[Special:MyLanguage/Human|Humans]]). The upgrade puts the player into the &amp;lt;code&amp;gt;androidbase&amp;lt;/code&amp;gt; form of the &amp;lt;code&amp;gt;androidforms&amp;lt;/code&amp;gt; group, so the race also needs an &amp;lt;code&amp;gt;androidforms&amp;lt;/code&amp;gt; form group in its &amp;lt;code&amp;gt;forms/&amp;lt;/code&amp;gt; folder. The easiest way is to copy &amp;lt;code&amp;gt;races/human/forms/androidforms.json&amp;lt;/code&amp;gt; into your race&amp;#039;s &amp;lt;code&amp;gt;forms/&amp;lt;/code&amp;gt; folder. See [[Special:MyLanguage/Android|Android]] for the upgrade itself.&lt;br /&gt;
&lt;br /&gt;
== Step 2: Configure the classes ==&lt;br /&gt;
&amp;lt;code&amp;gt;stats.json&amp;lt;/code&amp;gt; holds a &amp;lt;code&amp;gt;classes&amp;lt;/code&amp;gt; object with one block per class. DragonMineZ generates the eight default classes: &amp;lt;code&amp;gt;warrior&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spiritualist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;martialartist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;berserker&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;paladin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tank&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cleric&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;unversed&amp;lt;/code&amp;gt; (see [[Special:MyLanguage/Classes|Classes]]). You can add your own class by duplicating a block under a new key; it shows up in character creation for that race. A player whose class isn&amp;#039;t in the race&amp;#039;s file uses the &amp;lt;code&amp;gt;warrior&amp;lt;/code&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
Inside each class block:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Type !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;baseStats&amp;lt;/code&amp;gt; || Object || Starting stats: &amp;lt;code&amp;gt;STR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SKP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VIT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PWR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ENE&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;statScaling&amp;lt;/code&amp;gt; || Object || &amp;lt;code&amp;gt;STR_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SKP_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;STM_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEF_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VIT_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PWR_scaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ENE_scaling&amp;lt;/code&amp;gt;. The optional &amp;lt;code&amp;gt;VIT_scaling_max&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DEF_scaling_max&amp;lt;/code&amp;gt; make the scaling grow from the normal value towards this maximum as the stat rises (up to the curve knee set in &amp;lt;code&amp;gt;general-server.json&amp;lt;/code&amp;gt;); leave them out for flat scaling.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;baseHp5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hp5VitScaling&amp;lt;/code&amp;gt; || Number || Health regenerated every 5 seconds, plus a share of VIT.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;baseEp5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ep5EneScaling&amp;lt;/code&amp;gt; || Number || Ki regenerated every 5 seconds, plus a share of ENE.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;baseSp5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sp5StmScaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sp5ResScaling&amp;lt;/code&amp;gt; || Number || Stamina regenerated every 5 seconds, plus a share of VIT (&amp;lt;code&amp;gt;sp5StmScaling&amp;lt;/code&amp;gt;, despite its name) and a share of RES (&amp;lt;code&amp;gt;sp5ResScaling&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; when missing).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tpCostMultiplier&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tpGainMultiplier&amp;lt;/code&amp;gt; || Number || Class-wide multipliers on TP costs and TP gains.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;passive&amp;lt;/code&amp;gt; || Object || &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; plus a &amp;lt;code&amp;gt;values&amp;lt;/code&amp;gt; map with the tuning of the class passive (the keys depend on the class).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Schema source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/config/RaceStatsConfig.java&amp;lt;/code&amp;gt;. See [[Special:MyLanguage/Stats and Attributes|Stats and Attributes]] for what each stat does.&lt;br /&gt;
&lt;br /&gt;
== Step 3: Add form groups ==&lt;br /&gt;
{{Main|Custom Forms}}&lt;br /&gt;
Each file in &amp;lt;code&amp;gt;races/&amp;lt;race_key&amp;gt;/forms/&amp;lt;/code&amp;gt; defines one form group. Race forms use exactly the same schema as stack forms, so the full field reference is on [[Special:MyLanguage/Custom Forms|Custom Forms]]. The fields that matter most for a race group are:&lt;br /&gt;
* &amp;lt;code&amp;gt;groupName&amp;lt;/code&amp;gt;: the group key (lowercase). Groups are identified by this value, not by the filename.&lt;br /&gt;
* &amp;lt;code&amp;gt;formType&amp;lt;/code&amp;gt;: the form skill that unlocks the group: &amp;lt;code&amp;gt;superforms&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;legendaryforms&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;godforms&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;androidforms&amp;lt;/code&amp;gt;. The race needs prices for that skill in &amp;lt;code&amp;gt;formSkillsCosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;forms&amp;lt;/code&amp;gt;: the forms of the group, in transformation order. Each form&amp;#039;s &amp;lt;code&amp;gt;unlockOnSkillLevel&amp;lt;/code&amp;gt; is the skill level that unlocks it.&lt;br /&gt;
* &amp;lt;code&amp;gt;customModel&amp;lt;/code&amp;gt;: a model key for the form (looked up the same way as the race&amp;#039;s &amp;lt;code&amp;gt;customModel&amp;lt;/code&amp;gt;).&lt;br /&gt;
Files whose name starts with &amp;lt;code&amp;gt;old_&amp;lt;/code&amp;gt; are ignored. See [[Special:MyLanguage/Transformations|Transformations]] for how forms work in game.&lt;br /&gt;
&lt;br /&gt;
== Step 4: Add translation keys ==&lt;br /&gt;
Race and form names are translated with these keys:&lt;br /&gt;
* &amp;lt;code&amp;gt;race.dragonminez.&amp;lt;race_key&amp;gt;&amp;lt;/code&amp;gt;: the name of the race.&lt;br /&gt;
* &amp;lt;code&amp;gt;race.dragonminez.&amp;lt;race_key&amp;gt;.desc&amp;lt;/code&amp;gt;: a short description shown in character creation.&lt;br /&gt;
* &amp;lt;code&amp;gt;race.dragonminez.&amp;lt;race_key&amp;gt;.group.&amp;lt;group_key&amp;gt;&amp;lt;/code&amp;gt;: the name of a form group.&lt;br /&gt;
* &amp;lt;code&amp;gt;race.dragonminez.&amp;lt;race_key&amp;gt;.form.&amp;lt;group_key&amp;gt;.&amp;lt;form_key&amp;gt;&amp;lt;/code&amp;gt;: the name of a form.&lt;br /&gt;
The default language file is &amp;lt;code&amp;gt;src/main/resources/assets/dragonminez/lang/en_us.json&amp;lt;/code&amp;gt;. Feel free to edit your &amp;lt;code&amp;gt;en_us.json&amp;lt;/code&amp;gt; or create a new language file for your custom race. You don&amp;#039;t need to add translation keys for anything else: DragonMineZ automatically merges the translations already made on Crowdin with your own.&lt;br /&gt;
&lt;br /&gt;
== Step 5: Reload and validate ==&lt;br /&gt;
# Save your JSON files.&lt;br /&gt;
# Run &amp;lt;code&amp;gt;/dmzreload config&amp;lt;/code&amp;gt; (see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]]).&lt;br /&gt;
# Open character creation and check that your race appears.&lt;br /&gt;
# Check its forms, colors and scaling in game.&lt;br /&gt;
&lt;br /&gt;
{{Navbox Modding}}&lt;/div&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
</feed>