<?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=NPC_Placement_and_Alignment%2Fen</id>
	<title>NPC Placement and Alignment/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=NPC_Placement_and_Alignment%2Fen"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=NPC_Placement_and_Alignment/en&amp;action=history"/>
	<updated>2026-10-25T21:16:22Z</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=NPC_Placement_and_Alignment/en&amp;diff=38522&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=NPC_Placement_and_Alignment/en&amp;diff=38522&amp;oldid=prev"/>
		<updated>2026-10-22T01:08:26Z</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:08, 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-l190&quot;&gt;Line 190:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 190:&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;hostile_above&amp;lt;/code&amp;gt; || Integer || The same, but for an alignment above this value.&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;hostile_above&amp;lt;/code&amp;gt; || Integer || The same, but for an alignment above this value.&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;interaction.min_alignment&amp;lt;/code&amp;gt; || Integer || &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The player needs at least &lt;/del&gt;this alignment &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to talk to &lt;/del&gt;the NPC&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Even if &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NPC isn&#039;t hostile&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a low enough &lt;/del&gt;alignment &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;still blocks interaction&lt;/del&gt;. It can also be written directly on the rule, without the &amp;lt;code&amp;gt;interaction&amp;lt;/code&amp;gt; wrapper.&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;interaction.min_alignment&amp;lt;/code&amp;gt; || Integer || &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Below &lt;/ins&gt;this alignment the NPC &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;still talks to &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;player, but greets them coldly, and its side quests show as locked (saga quests&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;quests with their own &lt;/ins&gt;alignment &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;condition and quests already in progress stay available)&lt;/ins&gt;. It can also be written directly on the rule, without the &amp;lt;code&amp;gt;interaction&amp;lt;/code&amp;gt; wrapper.&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;interaction.max_alignment&amp;lt;/code&amp;gt; || Integer || The same, but as an upper bound.&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;interaction.max_alignment&amp;lt;/code&amp;gt; || Integer || The same, but as an upper bound.&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;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; 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;All four threshold fields are optional: leave out whichever don&#039;t apply. Reading the &amp;lt;code&amp;gt;goku&amp;lt;/code&amp;gt; entry above as an example: below 25 alignment Goku is hostile; from 25 to 60 he &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is present &lt;/del&gt;but &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;won&#039;t talk &lt;/del&gt;(the alignment is under the &amp;lt;code&amp;gt;min_alignment&amp;lt;/code&amp;gt; of 61); at 61 or more he is friendly and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;can be talked to&lt;/del&gt;.&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;All four threshold fields are optional: leave out whichever don&#039;t apply. Reading the &amp;lt;code&amp;gt;goku&amp;lt;/code&amp;gt; entry above as an example: below 25 alignment Goku is hostile; from 25 to 60 he &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;still talks to you, &lt;/ins&gt;but &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;coldly, and his side quests stay locked &lt;/ins&gt;(the alignment is under the &amp;lt;code&amp;gt;min_alignment&amp;lt;/code&amp;gt; of 61); at 61 or more he is friendly and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;everything is open&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;&amp;lt;code&amp;gt;NpcDispositionService.getRelation()&amp;lt;/code&amp;gt; checks the relation in this order:&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;NpcDispositionService.getRelation()&amp;lt;/code&amp;gt; checks the relation in this order:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key dmzwiki:diff:1.41:old-12422:rev-38522:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=NPC_Placement_and_Alignment/en&amp;diff=12422&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=NPC_Placement_and_Alignment/en&amp;diff=12422&amp;oldid=prev"/>
		<updated>2026-10-13T06:26:52Z</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;NPC Placement and Alignment&amp;#039;&amp;#039;&amp;#039; covers the files that decide where master and trainer NPCs stand and how a player&amp;#039;s alignment changes the way each NPC treats them. Two related per-world JSON files do this, both under &amp;lt;code&amp;gt;&amp;lt;world save&amp;gt;/dragonminez/npcs/&amp;lt;/code&amp;gt;, plus a datapack format for NPCs that live inside structures.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File !! What it controls&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;placements.json&amp;lt;/code&amp;gt; || Where master and trainer NPCs spawn (position, dimension, initial alignment or relation).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alignment_rules.json&amp;lt;/code&amp;gt; || How a &amp;#039;&amp;#039;&amp;#039;player&amp;#039;s&amp;#039;&amp;#039;&amp;#039; alignment affects each NPC&amp;#039;s hostility, friendliness and availability for interaction.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both files load at server start and reload with &amp;lt;code&amp;gt;/dmzreload config&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;/dmzreload all&amp;lt;/code&amp;gt;); see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]]. A reload also applies the placements again to every loaded dimension.&lt;br /&gt;
&lt;br /&gt;
{{Note|type=warning|title=Old worlds keep their old files|text=Both files are only written with DragonMineZ&amp;#039;s defaults when they are &amp;#039;&amp;#039;&amp;#039;missing&amp;#039;&amp;#039;&amp;#039;. A world created with an older DragonMineZ version keeps its old files, so it does not get new default entries (for example the v2.2 Otherworld NPCs and their new coordinates). To get the current defaults, delete the file (back it up first if you edited it) and run &amp;lt;code&amp;gt;/dmzreload config&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
== NPC placement ==&lt;br /&gt;
&amp;lt;code&amp;gt;placements.json&amp;lt;/code&amp;gt; lists every NPC DragonMineZ places and where.&lt;br /&gt;
&lt;br /&gt;
Source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/server/world/npc/NPCPlacementManager.java&amp;lt;/code&amp;gt;.&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;schema&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;placements&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;master_roshi&amp;quot;,&lt;br /&gt;
      &amp;quot;entity&amp;quot;: &amp;quot;dragonminez:master_roshi&amp;quot;,&lt;br /&gt;
      &amp;quot;dimension&amp;quot;: &amp;quot;minecraft:overworld&amp;quot;,&lt;br /&gt;
      &amp;quot;structure&amp;quot;: &amp;quot;roshi_house&amp;quot;,&lt;br /&gt;
      &amp;quot;x&amp;quot;: 0.0,&lt;br /&gt;
      &amp;quot;y&amp;quot;: 0.0,&lt;br /&gt;
      &amp;quot;z&amp;quot;: 0.0,&lt;br /&gt;
      &amp;quot;yaw&amp;quot;: 225.0,&lt;br /&gt;
      &amp;quot;pitch&amp;quot;: 0.0,&lt;br /&gt;
      &amp;quot;surface&amp;quot;: true,&lt;br /&gt;
      &amp;quot;relative_to_spawn&amp;quot;: false,&lt;br /&gt;
      &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
      &amp;quot;override&amp;quot;: false&lt;br /&gt;
    }&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;id&amp;lt;/code&amp;gt; || String || Unique placement id. It is tagged onto the spawned entity so DragonMineZ can find and update it later. If two placements share an id, the last one in the file wins (a warning is logged).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;entity&amp;lt;/code&amp;gt; || String || Registry id of the entity type.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dimension&amp;lt;/code&amp;gt; || String || Defaults to &amp;lt;code&amp;gt;minecraft:overworld&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;npc_id&amp;lt;/code&amp;gt; || String || Only meaningful for &amp;lt;code&amp;gt;dragonminez:quest_npc&amp;lt;/code&amp;gt; entities: links to the quest system&amp;#039;s NPC id.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt; || String || Only used for &amp;lt;code&amp;gt;quest_npc&amp;lt;/code&amp;gt; entities.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;structure&amp;lt;/code&amp;gt; || String || If set, &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; become an &amp;#039;&amp;#039;&amp;#039;offset&amp;#039;&amp;#039;&amp;#039; from that structure&amp;#039;s origin instead of world coordinates. Valid values: &amp;lt;code&amp;gt;roshi_house&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;goku_house&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;elder_guru&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;timechamber&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kamilookout&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gero_lab&amp;lt;/code&amp;gt;. An unrecognized value falls back to treating &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; as raw world coordinates (with a warning in the log).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; || Number || World coordinates, or the offset from the structure (see above). Defaults: &amp;lt;code&amp;gt;0.5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;64.0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0.5&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;yaw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pitch&amp;lt;/code&amp;gt; || Number || Facing direction in degrees.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;surface&amp;lt;/code&amp;gt; || Boolean || If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, snaps Y to the terrain surface at load time instead of using the given Y.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;relative_to_spawn&amp;lt;/code&amp;gt; || Boolean || If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, adds the world&amp;#039;s spawn point to &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; (applied after any structure offset).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; || Boolean || If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, this placement is skipped entirely.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;override&amp;lt;/code&amp;gt; || Boolean || If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the entity is always respawned, even if one already exists for this &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt;. Otherwise an existing entity is just updated in place.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alignment&amp;lt;/code&amp;gt; || Integer (0–100) || Optional alignment for this specific NPC: above 60 it is friendly, from 41 to 60 neutral, and 40 or less hostile (unless an alignment rule makes it hostile first, see below).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;relation&amp;lt;/code&amp;gt; || String || Optional override for this instance (&amp;lt;code&amp;gt;HOSTILE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FRIENDLY&amp;lt;/code&amp;gt;), stored on the entity itself instead of being looked up from the alignment rules.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Unknown keys are reported in the JSON load report.&lt;br /&gt;
&lt;br /&gt;
=== Default placements ===&lt;br /&gt;
The default file actively spawns these NPCs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Placement id !! Entity !! Where&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_roshi&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_roshi&amp;lt;/code&amp;gt; || Roshi&amp;#039;s house&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_goku&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_goku&amp;lt;/code&amp;gt; || Goku&amp;#039;s house&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_karin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_dende&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_popo&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_karin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_dende&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_popo&amp;lt;/code&amp;gt; || Kami&amp;#039;s Lookout&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_gero&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_gero&amp;lt;/code&amp;gt; || Gero&amp;#039;s lab&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_guru&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_guru&amp;lt;/code&amp;gt; || Elder Guru&amp;#039;s house (Namek)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_kaiosama&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_kaiosama&amp;lt;/code&amp;gt; || Otherworld, &amp;lt;code&amp;gt;54.5 299 1031.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_toribot&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_toribot&amp;lt;/code&amp;gt; || Otherworld, &amp;lt;code&amp;gt;50.5 298 1030.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_enma&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_enma&amp;lt;/code&amp;gt; || Otherworld, &amp;lt;code&amp;gt;0.5 150 17.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_baba&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_uranai&amp;lt;/code&amp;gt; || Otherworld, &amp;lt;code&amp;gt;9.5 150 3.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_grandkai&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_grandkai&amp;lt;/code&amp;gt; || Otherworld, &amp;lt;code&amp;gt;-30.5 150 12.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;npc_hell_ogre&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:quest_npc&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;npc_id&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;hell_ogre&amp;lt;/code&amp;gt;) || Otherworld, &amp;lt;code&amp;gt;9.5 150 16.5&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;master_otherworld_announcer&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;dragonminez:master_otherworld_announcer&amp;lt;/code&amp;gt; || [[Special:MyLanguage/Otherworld Tournament|Otherworld Tournament]] grounds, &amp;lt;code&amp;gt;-25.5 352 -1164.5&amp;lt;/code&amp;gt; (only placed once the tournament grounds have been built)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Quest NPCs and master NPCs ===&lt;br /&gt;
Quest NPCs (Bulma, Krillin, Yamcha, Tien, Piccolo, Gohan, Vegeta, Trunks, Chi-Chi, Videl, Shin and the Namek Elder) appear in the default file too, but with &amp;lt;code&amp;gt;&amp;quot;enabled&amp;quot;: false&amp;lt;/code&amp;gt;: they are no longer spawned at runtime through this system. They are baked directly into the structure NBT, so they live at fixed, hand-placed spots instead of piling up at the world spawn. Their entries here are for reference only. NPCs added to a structure after its NBT was made come from [[Special:MyLanguage/NPC Placement and Alignment#Structure NPCs|structure NPC files]] instead (Chi-Chi in Goku&amp;#039;s House is one).&lt;br /&gt;
&lt;br /&gt;
The Otherworld NPCs (&amp;lt;code&amp;gt;master_kaiosama&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_enma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_baba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_toribot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_grandkai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;master_otherworld_announcer&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;npc_hell_ogre&amp;lt;/code&amp;gt;) always force &amp;lt;code&amp;gt;override: true&amp;lt;/code&amp;gt; internally, whatever the file says, since they need to exist reliably in a generated dimension. See [[Special:MyLanguage/Otherworld|Otherworld]].&lt;br /&gt;
&lt;br /&gt;
== Structure NPCs ==&lt;br /&gt;
Structure NPC files place NPCs &amp;#039;&amp;#039;&amp;#039;inside&amp;#039;&amp;#039;&amp;#039; a DragonMineZ structure without editing its &amp;lt;code&amp;gt;.nbt&amp;lt;/code&amp;gt; file. Unlike the files above, these are &amp;#039;&amp;#039;&amp;#039;datapack&amp;#039;&amp;#039;&amp;#039; files: &amp;lt;code&amp;gt;data/&amp;lt;namespace&amp;gt;/structure_npcs/*.json&amp;lt;/code&amp;gt;, one per structure, loaded with the datapacks (and by &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt;).&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;structure&amp;quot;: &amp;quot;dragonminez:goku_house&amp;quot;,&lt;br /&gt;
  &amp;quot;npcs&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;npc_chi_chi&amp;quot;,&lt;br /&gt;
      &amp;quot;entity&amp;quot;: &amp;quot;dragonminez:quest_npc&amp;quot;,&lt;br /&gt;
      &amp;quot;npc_id&amp;quot;: &amp;quot;chi_chi&amp;quot;,&lt;br /&gt;
      &amp;quot;model&amp;quot;: &amp;quot;saga_videl&amp;quot;,&lt;br /&gt;
      &amp;quot;texture&amp;quot;: &amp;quot;saga_chichi&amp;quot;,&lt;br /&gt;
      &amp;quot;pos&amp;quot;: [67.5, 5.0, 50.5],&lt;br /&gt;
      &amp;quot;yaw&amp;quot;: 90.0&lt;br /&gt;
    }&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 !! Required !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;structure&amp;lt;/code&amp;gt; || Yes || Id of the structure the NPCs belong to.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || Yes || Unique id of this NPC inside the structure. It is also the tracking key, so don&amp;#039;t rename it once worlds use it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;entity&amp;lt;/code&amp;gt; || Yes || Entity type to spawn (for example &amp;lt;code&amp;gt;dragonminez:quest_npc&amp;lt;/code&amp;gt; or a master&amp;#039;s entity id).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;npc_id&amp;lt;/code&amp;gt; || No || Quest NPC id, for &amp;lt;code&amp;gt;dragonminez:quest_npc&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt; || No || Model and texture names for quest NPCs.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; || No || Which template of the structure the position is relative to, for structures made of several pieces.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pos&amp;lt;/code&amp;gt; || Yes || Position &amp;#039;&amp;#039;&amp;#039;relative to the structure&amp;#039;s template&amp;#039;&amp;#039;&amp;#039;, so it stays right whatever rotation the structure spawned with.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;yaw&amp;lt;/code&amp;gt; || No || Facing, also relative to the template (default &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;alignment&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;relation&amp;lt;/code&amp;gt; || No || Initial alignment and relation, as in &amp;lt;code&amp;gt;placements.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each NPC spawns &amp;#039;&amp;#039;&amp;#039;once&amp;#039;&amp;#039;&amp;#039; per generated structure when its chunk loads, including structures that were generated before the file existed, and the spawn is remembered: an NPC that dies doesn&amp;#039;t come back.&lt;br /&gt;
&lt;br /&gt;
To get the coordinates, stand where the NPC should be and run &amp;lt;code&amp;gt;/dmzstructure here&amp;lt;/code&amp;gt;: it prints the structure, its template and your position and yaw relative to the template, with a &amp;#039;&amp;#039;&amp;#039;Copy NPC JSON&amp;#039;&amp;#039;&amp;#039; button that copies a ready-made entry. &amp;lt;code&amp;gt;/dmzstructure npcs&amp;lt;/code&amp;gt; lists the NPCs of the structure you are in and whether each one has spawned yet. Both commands need the &amp;lt;code&amp;gt;dragonminez.dmzstructure&amp;lt;/code&amp;gt; permission (see [[Special:MyLanguage/Permissions|Permissions]]).&lt;br /&gt;
&lt;br /&gt;
== NPC alignment rules ==&lt;br /&gt;
{{See also|Alignment|Masters}}&lt;br /&gt;
&amp;lt;code&amp;gt;alignment_rules.json&amp;lt;/code&amp;gt; decides how each NPC reacts to the player&amp;#039;s alignment.&lt;br /&gt;
&lt;br /&gt;
Source: &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/alignment/NpcAlignmentRules.java&amp;lt;/code&amp;gt;.&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;npcs&amp;quot;: {&lt;br /&gt;
    &amp;quot;goku&amp;quot;: {&lt;br /&gt;
      &amp;quot;default_relation&amp;quot;: &amp;quot;FRIENDLY&amp;quot;,&lt;br /&gt;
      &amp;quot;interaction&amp;quot;: { &amp;quot;min_alignment&amp;quot;: 61 },&lt;br /&gt;
      &amp;quot;hostile_below&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;gero&amp;quot;: {&lt;br /&gt;
      &amp;quot;default_relation&amp;quot;: &amp;quot;NEUTRAL&amp;quot;,&lt;br /&gt;
      &amp;quot;interaction&amp;quot;: { &amp;quot;max_alignment&amp;quot;: 60 }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The keys in &amp;lt;code&amp;gt;npcs&amp;lt;/code&amp;gt; are NPC ids &amp;#039;&amp;#039;&amp;#039;with any namespace stripped&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;dragonminez:roshi&amp;lt;/code&amp;gt; becomes the key &amp;lt;code&amp;gt;roshi&amp;lt;/code&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;default_relation&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;HOSTILE&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;FRIENDLY&amp;lt;/code&amp;gt; || Base relation when none of the thresholds below overrides it. Defaults to &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hostile_below&amp;lt;/code&amp;gt; || Integer || If the player&amp;#039;s alignment is below this value, the NPC turns hostile regardless of &amp;lt;code&amp;gt;default_relation&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hostile_above&amp;lt;/code&amp;gt; || Integer || The same, but for an alignment above this value.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;interaction.min_alignment&amp;lt;/code&amp;gt; || Integer || The player needs at least this alignment to talk to the NPC. Even if the NPC isn&amp;#039;t hostile, a low enough alignment still blocks interaction. It can also be written directly on the rule, without the &amp;lt;code&amp;gt;interaction&amp;lt;/code&amp;gt; wrapper.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;interaction.max_alignment&amp;lt;/code&amp;gt; || Integer || The same, but as an upper bound.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All four threshold fields are optional: leave out whichever don&amp;#039;t apply. Reading the &amp;lt;code&amp;gt;goku&amp;lt;/code&amp;gt; entry above as an example: below 25 alignment Goku is hostile; from 25 to 60 he is present but won&amp;#039;t talk (the alignment is under the &amp;lt;code&amp;gt;min_alignment&amp;lt;/code&amp;gt; of 61); at 61 or more he is friendly and can be talked to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;NpcDispositionService.getRelation()&amp;lt;/code&amp;gt; checks the relation in this order:&lt;br /&gt;
# A &amp;lt;code&amp;gt;relation&amp;lt;/code&amp;gt; set on the placement (&amp;lt;code&amp;gt;placements.json&amp;lt;/code&amp;gt;) wins.&lt;br /&gt;
# The rule&amp;#039;s &amp;lt;code&amp;gt;hostile_below&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;hostile_above&amp;lt;/code&amp;gt; thresholds.&lt;br /&gt;
# An &amp;lt;code&amp;gt;alignment&amp;lt;/code&amp;gt; set on the placement.&lt;br /&gt;
# The rule&amp;#039;s &amp;lt;code&amp;gt;default_relation&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Master NPCs ===&lt;br /&gt;
For &amp;#039;&amp;#039;&amp;#039;master and trainer NPCs&amp;#039;&amp;#039;&amp;#039; the rule file decides hostility, but their alignment gate is a fixed rule instead of &amp;lt;code&amp;gt;interaction&amp;lt;/code&amp;gt;: masters can always be talked to, but [[Special:MyLanguage/Goku|Goku]], [[Special:MyLanguage/Gohan|Gohan]], [[Special:MyLanguage/King Kai|King Kai]], [[Special:MyLanguage/Old Kai|Old Kai]], [[Special:MyLanguage/Master Roshi|Roshi]] and [[Special:MyLanguage/Krillin|Krillin]] only unlock their &amp;#039;&amp;#039;&amp;#039;Skills&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Train&amp;#039;&amp;#039;&amp;#039; and new quests at an alignment of at least &amp;#039;&amp;#039;&amp;#039;61&amp;#039;&amp;#039;&amp;#039;, and [[Special:MyLanguage/Cell|Cell]] and [[Special:MyLanguage/Frieza|Frieza]] at &amp;#039;&amp;#039;&amp;#039;40 or less&amp;#039;&amp;#039;&amp;#039;. Every other master has no alignment gate. See [[Special:MyLanguage/Masters|Masters]].&lt;br /&gt;
&lt;br /&gt;
=== NPC ids covered by default ===&lt;br /&gt;
The default file covers &amp;lt;code&amp;gt;goku&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;roshi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;karin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;guru&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dende&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;popo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kingkai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gero&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;enma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;baba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;toribot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grandkai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;otherworld_announcer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bulma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;krillin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;yamcha&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tien&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chiaotzu&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gohan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;trunks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;chi_chi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;videl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;namek_elder&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;piccolo&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vegeta&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Most default to &amp;lt;code&amp;gt;FRIENDLY&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;min_alignment: 41&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;61&amp;lt;/code&amp;gt; for Goku, Guru, Dende, King Kai and the Namek Elder) and &amp;lt;code&amp;gt;hostile_below: 25&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;gero&amp;lt;/code&amp;gt; defaults to &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;max_alignment: 60&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;enma&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;baba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;toribot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grandkai&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;otherworld_announcer&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vegeta&amp;lt;/code&amp;gt; default to &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt; with no thresholds.&lt;br /&gt;
* &amp;lt;code&amp;gt;piccolo&amp;lt;/code&amp;gt; defaults to &amp;lt;code&amp;gt;NEUTRAL&amp;lt;/code&amp;gt; with its own thresholds (&amp;lt;code&amp;gt;min_alignment: 41&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hostile_below: 20&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Reload and validate ==&lt;br /&gt;
# Edit the files under &amp;lt;code&amp;gt;&amp;lt;world save&amp;gt;/dragonminez/npcs/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Validate the JSON syntax (see [[Special:MyLanguage/How to JSON|How to JSON]]).&lt;br /&gt;
# Run &amp;lt;code&amp;gt;/dmzreload config&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;/dmzreload all&amp;lt;/code&amp;gt;); see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]].&lt;br /&gt;
# Check that the NPC spawned or moved as expected, and that hostility and interaction based on alignment behave as configured (test at a couple of alignment values if you can).&lt;br /&gt;
&lt;br /&gt;
{{Navbox Modding}}&lt;/div&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
</feed>