<?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=Weapon_Attributes</id>
	<title>Weapon Attributes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=Weapon_Attributes"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Weapon_Attributes&amp;action=history"/>
	<updated>2026-10-25T15:44:43Z</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=Weapon_Attributes&amp;diff=357&amp;oldid=prev</id>
		<title>Neb: Sync from dragonminez-wiki repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Weapon_Attributes&amp;diff=357&amp;oldid=prev"/>
		<updated>2026-10-13T04:20:00Z</updated>

		<summary type="html">&lt;p&gt;Sync from dragonminez-wiki repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Weapon Attributes&amp;#039;&amp;#039;&amp;#039; is a datapack system that tells the DragonMineZ combat engine how a specific item behaves in combat: attack range, animation, hitbox shape, damage multipliers, conditional attack variants (dual-wielding, sneaking, mounted and so on) and critical stats. Third-party weapon mods hook into this system to get proper DragonMineZ combat behavior.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Loader: &amp;lt;code&amp;gt;WeaponRegistry.loadAttributes(resourceManager)&amp;lt;/code&amp;gt;, in &amp;lt;code&amp;gt;src/main/java/com/dragonminez/common/combat/logic/weapon/WeaponRegistry.java&amp;lt;/code&amp;gt;. It reloads with the vanilla datapack reload (&amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; or a restart), &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;/dmzreload&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== File location and item mapping == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
data/&amp;lt;namespace&amp;gt;/weapon_attributes/&amp;lt;item_path&amp;gt;.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
The namespace and path become the target item id: &amp;lt;code&amp;gt;data/dragonminez/weapon_attributes/axe.json&amp;lt;/code&amp;gt; applies to &amp;lt;code&amp;gt;dragonminez:axe&amp;lt;/code&amp;gt;. A third-party mod defines its own weapons under its own namespace, for example &amp;lt;code&amp;gt;data/mymod/weapon_attributes/great_axe.json&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;mymod:great_axe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|title=&amp;lt;translate&amp;gt;&amp;lt;!--T:5--&amp;gt; Better Combat datapacks&amp;lt;/translate&amp;gt;|text=&amp;lt;translate&amp;gt;&amp;lt;!--T:6--&amp;gt; Any &amp;lt;code&amp;gt;bettercombat:&amp;lt;/code&amp;gt; namespace found in these JSON files is rewritten to &amp;lt;code&amp;gt;dragonminez:&amp;lt;/code&amp;gt; at load time, so weapon attribute datapacks written for the Better Combat mod mostly work as they are.&amp;lt;/translate&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Top-level schema == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
A file holds an &amp;lt;code&amp;gt;attributes&amp;lt;/code&amp;gt; object:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;attributes&amp;quot;: { ... }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Or, to inherit another item&amp;#039;s attributes and only override specific fields, it names a &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;/translate&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;parent&amp;quot;: &amp;quot;dragonminez:sword&amp;quot;,&lt;br /&gt;
  &amp;quot;attributes&amp;quot;: {&lt;br /&gt;
    &amp;quot;crit_chance&amp;quot;: 0.10,&lt;br /&gt;
    &amp;quot;crit_damage&amp;quot;: 0.15&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; chains can go several levels deep (a parent can have its own parent). Cycles are detected: a weapon whose parent chain loops back on itself fails to resolve and is skipped (logged as an error), so double-check your &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; references.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Attributes fields == &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{Config|Combat Config|fallbackCompatibility}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:12--&amp;gt; Field&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:13--&amp;gt; Type&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:14--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attack_range&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:15--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:16--&amp;gt; Reach in blocks (the Minecraft default &amp;lt;code&amp;gt;3.0&amp;lt;/code&amp;gt; if left out).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pose&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:17--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:18--&amp;gt; GeckoLib animation pose for the main-hand weapon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;off_hand_pose&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:19--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; GeckoLib animation pose for the off-hand weapon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;two_handed&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:21--&amp;gt; Boolean&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:22--&amp;gt; If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the off hand can&amp;#039;t be used while the weapon is wielded.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:23--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:24--&amp;gt; Free-form category tag. It is used for two things: matching &amp;lt;code&amp;gt;DUAL_WIELDING_SAME_CATEGORY&amp;lt;/code&amp;gt; conditions between the main hand and the off hand, &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; as the target category for the &amp;lt;code&amp;gt;fallbackCompatibility&amp;lt;/code&amp;gt; regex system in [[Special:MyLanguage/Combat Config|Combat Config]].&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crit_chance&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:25--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; Innate critical chance (&amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt;–&amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;), applied as an attribute modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;crit_damage&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:27--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Innate critical damage multiplier, applied as an attribute modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;attacks&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:29--&amp;gt; Array&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:30--&amp;gt; &amp;#039;&amp;#039;&amp;#039;Required.&amp;#039;&amp;#039;&amp;#039; One or more attack variants (see below).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Attack entries == &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Each entry of &amp;lt;code&amp;gt;attacks&amp;lt;/code&amp;gt; describes one swing variant. DragonMineZ checks the &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt; from top to bottom and uses the first attack whose conditions all pass.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:33--&amp;gt; Field&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:34--&amp;gt; Type&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:35--&amp;gt; What it does&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:36--&amp;gt; List of condition strings&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; All of them must be true for this variant to fire. Leave it out for an unconditional attack.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;hitbox&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:38--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:39--&amp;gt; &amp;lt;code&amp;gt;FORWARD_BOX&amp;lt;/code&amp;gt; (a box extending forward, closest to vanilla), &amp;lt;code&amp;gt;VERTICAL_PLANE&amp;lt;/code&amp;gt; (a vertical sweeping slash) or &amp;lt;code&amp;gt;HORIZONTAL_PLANE&amp;lt;/code&amp;gt; (a wide horizontal sweep).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;damage_multiplier&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; Multiplier on the weapon&amp;#039;s base damage (default &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;angle&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; Swing arc in degrees.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;upswing&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:44--&amp;gt; Number&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; Cooldown multiplier: &amp;lt;code&amp;gt;cooldownTicks = (1 / (4 - attackSpeed)) * 20 * upswing&amp;lt;/code&amp;gt;. Lower means a faster follow-up. It also sets the swing&amp;#039;s &amp;#039;&amp;#039;&amp;#039;windup&amp;#039;&amp;#039;&amp;#039; (the delay before the hit lands): animation ticks × &amp;lt;code&amp;gt;upswing&amp;lt;/code&amp;gt; × 0.95, clamped to 3–7 ticks.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; String&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; GeckoLib animation name. It is checked against &amp;lt;code&amp;gt;animations/*.json&amp;lt;/code&amp;gt;; if there is no exact match, DragonMineZ picks the closest name (Levenshtein distance) after stripping known prefixes (&amp;lt;code&amp;gt;dragonminez:&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bettercombat:&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;combat.&amp;lt;/code&amp;gt;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;swing_sound&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;impact_sound&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;{ &amp;quot;id&amp;quot;, &amp;quot;volume&amp;quot;*, &amp;quot;pitch&amp;quot;*, &amp;quot;randomness&amp;quot;* }&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; Sound played on swing or impact. &amp;lt;code&amp;gt;volume&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pitch&amp;lt;/code&amp;gt; default to &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;randomness&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0.1&amp;lt;/code&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Attack conditions === &amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
This is the complete list of conditions:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; Condition&amp;lt;/translate&amp;gt; !! &amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; Meaning&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOT_DUAL_WIELDING&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; The off hand is empty (air).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DUAL_WIELDING_ANY&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; Both hands hold something.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DUAL_WIELDING_SAME&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Both hands hold the exact same item id.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DUAL_WIELDING_SAME_CATEGORY&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; Both hands hold items that share the same &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NO_OFFHAND_ITEM&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; The off hand is empty.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OFF_HAND_SHIELD&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:58--&amp;gt; The off hand holds a shield.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MAIN_HAND_ONLY&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; The attack only applies to the main-hand weapon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;OFF_HAND_ONLY&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; The attack only applies to the off-hand weapon.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MOUNTED&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; The player is riding an entity.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOT_MOUNTED&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; The player is not riding.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SNEAKING&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt; The player is crouching.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NOT_SNEAKING&amp;lt;/code&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt; The player is standing.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Full example == &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
A dagger with several attacks and a dual-wield variant:&lt;br /&gt;
&amp;lt;/translate&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;attributes&amp;quot;: {&lt;br /&gt;
    &amp;quot;attack_range&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;two_handed&amp;quot;: false,&lt;br /&gt;
    &amp;quot;category&amp;quot;: &amp;quot;dagger&amp;quot;,&lt;br /&gt;
    &amp;quot;attacks&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;hitbox&amp;quot;: &amp;quot;HORIZONTAL_PLANE&amp;quot;,&lt;br /&gt;
        &amp;quot;damage_multiplier&amp;quot;: 0.8,&lt;br /&gt;
        &amp;quot;angle&amp;quot;: 150,&lt;br /&gt;
        &amp;quot;upswing&amp;quot;: 0.5,&lt;br /&gt;
        &amp;quot;animation&amp;quot;: &amp;quot;combat.one_handed_slash_horizontal_right_1&amp;quot;,&lt;br /&gt;
        &amp;quot;swing_sound&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;dragonminez:dagger_slash&amp;quot; }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;hitbox&amp;quot;: &amp;quot;HORIZONTAL_PLANE&amp;quot;,&lt;br /&gt;
        &amp;quot;damage_multiplier&amp;quot;: 0.8,&lt;br /&gt;
        &amp;quot;angle&amp;quot;: 150,&lt;br /&gt;
        &amp;quot;upswing&amp;quot;: 0.5,&lt;br /&gt;
        &amp;quot;animation&amp;quot;: &amp;quot;combat.one_handed_slash_horizontal_right_2&amp;quot;,&lt;br /&gt;
        &amp;quot;swing_sound&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;dragonminez:dagger_slash&amp;quot; }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;conditions&amp;quot;: [&amp;quot;DUAL_WIELDING_SAME_CATEGORY&amp;quot;, &amp;quot;MAIN_HAND_ONLY&amp;quot;],&lt;br /&gt;
        &amp;quot;hitbox&amp;quot;: &amp;quot;FORWARD_BOX&amp;quot;,&lt;br /&gt;
        &amp;quot;damage_multiplier&amp;quot;: 1.4,&lt;br /&gt;
        &amp;quot;angle&amp;quot;: 150,&lt;br /&gt;
        &amp;quot;upswing&amp;quot;: 0.5,&lt;br /&gt;
        &amp;quot;animation&amp;quot;: &amp;quot;combat.dual_handed_stab&amp;quot;,&lt;br /&gt;
        &amp;quot;swing_sound&amp;quot;: { &amp;quot;id&amp;quot;: &amp;quot;dragonminez:dagger_slash&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
An inheritance example (&amp;lt;code&amp;gt;brave_sword.json&amp;lt;/code&amp;gt;, overriding only the critical stats):&lt;br /&gt;
&amp;lt;/translate&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;parent&amp;quot;: &amp;quot;dragonminez:sword&amp;quot;,&lt;br /&gt;
  &amp;quot;attributes&amp;quot;: {&lt;br /&gt;
    &amp;quot;crit_chance&amp;quot;: 0.10,&lt;br /&gt;
    &amp;quot;crit_damage&amp;quot;: 0.15&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Shipped attribute files == &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{See also|Special Weapons}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
DragonMineZ ships these entries under &amp;lt;code&amp;gt;data/dragonminez/weapon_attributes/&amp;lt;/code&amp;gt;, so you can use them as a &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; or as a &amp;lt;code&amp;gt;weaponCombo&amp;lt;/code&amp;gt; or fallback target:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Base movesets:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;anchor&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;axe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;battlestaff&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;claw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;claymore&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cutlass&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dagger&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;double_axe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fist&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;giant&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;glaive&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;halberd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hammer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;katana&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lance&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mace&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pickaxe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rapier&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scythe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sickle&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;soul_knife&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spear&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;staff&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sword&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;trident&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;twin_blade&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;wand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Signature weapons:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;brave_sword&amp;lt;/code&amp;gt; ([[Special:MyLanguage/Brave Sword|Brave Sword]], parent &amp;lt;code&amp;gt;sword&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;yajirobe_katana&amp;lt;/code&amp;gt; ([[Special:MyLanguage/Yajirobe&amp;#039;s Katana|Yajirobe&amp;#039;s Katana]], parent &amp;lt;code&amp;gt;katana&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;z_sword&amp;lt;/code&amp;gt; ([[Special:MyLanguage/Z Sword|Z Sword]], parent &amp;lt;code&amp;gt;claymore&amp;lt;/code&amp;gt;) and &amp;lt;code&amp;gt;power_pole&amp;lt;/code&amp;gt; ([[Special:MyLanguage/Power Pole|Power Pole]], parent &amp;lt;code&amp;gt;staff&amp;lt;/code&amp;gt;, with its own three-hit combo).&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
DragonMineZ items without an entry of their own (for example the [[Special:MyLanguage/Dimension Sword|Dimension Sword]] and the Tamagami weapons: [[Special:MyLanguage/Tamagami Sword|Tamagami Sword]], [[Special:MyLanguage/Tamagami Trident|Tamagami Trident]] and [[Special:MyLanguage/Tamagami Hammer|Tamagami Hammer]]) get their moveset from the &amp;lt;code&amp;gt;fallbackCompatibility&amp;lt;/code&amp;gt; regexes in [[Special:MyLanguage/Combat Config|Combat Config]], just like third-party weapons.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== For third-party weapon mods == &amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
If your mod adds weapons and you don&amp;#039;t ship a Weapon Attributes entry for them, DragonMineZ falls back to matching the item id of every item with an attack-damage modifier against the &amp;lt;code&amp;gt;fallbackCompatibility&amp;lt;/code&amp;gt; list in [[Special:MyLanguage/Combat Config|Combat Config]] (for example, an item id containing &amp;lt;code&amp;gt;axe&amp;lt;/code&amp;gt; is treated like &amp;lt;code&amp;gt;dragonminez:axe&amp;lt;/code&amp;gt;). This gives a reasonable default, but a real datapack entry that matches your weapon&amp;#039;s actual moveset and animations is always more accurate, and it always takes priority over the fallback guess.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Reload and validate == &amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
# Add or edit files under &amp;lt;code&amp;gt;data/&amp;lt;namespace&amp;gt;/weapon_attributes/&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 the vanilla &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt;, or restart. This is a plain datapack reload listener, not part of &amp;lt;code&amp;gt;/dmzreload&amp;lt;/code&amp;gt; (see [[Special:MyLanguage/Reloading and Updating Changes|Reloading and Updating Changes]]).&lt;br /&gt;
# Test the weapon in game: range, animation, hitbox shape and any conditional variants (dual-wielding, sneaking, mounted).&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navbox Modding}}&lt;/div&gt;</summary>
		<author><name>Neb</name></author>
	</entry>
</feed>