<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.mschae23.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschae23</id>
	<title>mschae’s docs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.mschae23.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mschae23"/>
	<link rel="alternate" type="text/html" href="https://docs.mschae23.de/Special:Contributions/Mschae23"/>
	<updated>2026-04-10T16:26:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=54</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=54"/>
		<updated>2025-11-21T15:54:36Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add only_take_first&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
	&amp;quot;only_take_first&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|only_take_first}}: if enabled, only the top enchantment (ignoring filtered enchantments like curses) will be removed. Does not affect level cost, so be sure to use &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; together with this (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
A cost function takes the list of enchantments on the item and calculates a level cost. It can be specified separately for each of the mod&#039;s features.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object|cost_function}}&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_min_power&amp;quot;&amp;lt;/code&amp;gt;: sums the minimum required [[mcw:Enchanting_mechanics|enchanting power]] needed to obtain the enchantment on an enchanting table, usually scaling with the enchantment&#039;s level. This is a defined value even for enchantments that are unobtainable at an enchanting table.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_enchantments&amp;quot;&amp;lt;/code&amp;gt;: returns the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_levels&amp;quot;&amp;lt;/code&amp;gt;: sums the levels of all enchantments on the item. Enchantments without a level are counted as &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Json|float|normal_factor}}: value to multiply the level count of normal (non-treasure) enchantments with. For example, if this is set to &amp;lt;code&amp;gt;3.0&amp;lt;/code&amp;gt; and you are disenchanting an item with Unbreaking II, it would cost 6 levels of XP.&lt;br /&gt;
*** {{Json|float|treasure_factor}}: value to multiply the level count of treasure enchantments (which are unobtainable at an enchanting table) with.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:average_count&amp;quot;&amp;lt;/code&amp;gt;: divides the level cost returned by another cost function by the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, making it ineffective).&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt;: removes all enchantments but the first from the item before passing the actual level cost calculation to another cost function.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:transform&amp;quot;&amp;lt;/code&amp;gt;: changes the result of another cost function based on the formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;result = (cost * factor) + offset&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The result is rounded up to the next integer.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
*** {{Json|float|factor}}: the value to multiply the level cost with (default: &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|float|offset}}: the value to add to the multiplied level cost (default: &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:filter&amp;quot;&amp;lt;/code&amp;gt;: applies the configured filter, to remove ignored enchantments. Should typically be the outermost cost function. Without this, ignored enchantments (which will remain on the original item) will still be taken into account for the level cost.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
The &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt; file contains some options that are exclusively used on the client side. Because the mod is compatible with vanilla clients, the only feature here is the display of the required XP cost.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: client config.&lt;br /&gt;
** {{Json|boolean|show_enchantment_cost}}: can be used to stop showing the level cost on the client entirely. Levels will still be deducted when taking the resulting item, even if this is disabled (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|object|sync_options}}: controls the mod&#039;s config sync feature, where the server sends its config to any compatible client when connecting. This means that even if the &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file on the phsyical client doesn&#039;t match the server&#039;s configuration, the displayed level costs will still be accurate.&lt;br /&gt;
*** {{Json|boolean|use_local_server_config_if_unsynced}}: fall back to the local &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file on the physical client in case the server does not send any configuration. If this is disabled, the client will not show a level cost on grindstone operations at all, even if it looks like one added by this mod. Should only be required for backwards compatibility with servers running old versions of the mod from before the config sync feature was added (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|log_received_config}}: when receiving the server&#039;s configuration, log it in the console in JSON format. Useful for debugging, or if you&#039;re curious how the server is configured (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=53</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=53"/>
		<updated>2025-10-20T09:35:07Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Client */ Document client config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
A cost function takes the list of enchantments on the item and calculates a level cost. It can be specified separately for each of the mod&#039;s features.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object|cost_function}}&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_min_power&amp;quot;&amp;lt;/code&amp;gt;: sums the minimum required [[mcw:Enchanting_mechanics|enchanting power]] needed to obtain the enchantment on an enchanting table, usually scaling with the enchantment&#039;s level. This is a defined value even for enchantments that are unobtainable at an enchanting table.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_enchantments&amp;quot;&amp;lt;/code&amp;gt;: returns the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_levels&amp;quot;&amp;lt;/code&amp;gt;: sums the levels of all enchantments on the item. Enchantments without a level are counted as &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Json|float|normal_factor}}: value to multiply the level count of normal (non-treasure) enchantments with. For example, if this is set to &amp;lt;code&amp;gt;3.0&amp;lt;/code&amp;gt; and you are disenchanting an item with Unbreaking II, it would cost 6 levels of XP.&lt;br /&gt;
*** {{Json|float|treasure_factor}}: value to multiply the level count of treasure enchantments (which are unobtainable at an enchanting table) with.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:average_count&amp;quot;&amp;lt;/code&amp;gt;: divides the level cost returned by another cost function by the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, making it ineffective).&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt;: removes all enchantments but the first from the item before passing the actual level cost calculation to another cost function.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:transform&amp;quot;&amp;lt;/code&amp;gt;: changes the result of another cost function based on the formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;result = (cost * factor) + offset&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The result is rounded up to the next integer.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
*** {{Json|float|factor}}: the value to multiply the level cost with (default: &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|float|offset}}: the value to add to the multiplied level cost (default: &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:filter&amp;quot;&amp;lt;/code&amp;gt;: applies the configured filter, to remove ignored enchantments. Should typically be the outermost cost function. Without this, ignored enchantments (which will remain on the original item) will still be taken into account for the level cost.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
The &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt; file contains some options that are exclusively used on the client side. Because the mod is compatible with vanilla clients, the only feature here is the display of the required XP cost.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: client config.&lt;br /&gt;
** {{Json|boolean|show_enchantment_cost}}: can be used to stop showing the level cost on the client entirely. Levels will still be deducted when taking the resulting item, even if this is disabled (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|object|sync_options}}: controls the mod&#039;s config sync feature, where the server sends its config to any compatible client when connecting. This means that even if the &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file on the phsyical client doesn&#039;t match the server&#039;s configuration, the displayed level costs will still be accurate.&lt;br /&gt;
*** {{Json|boolean|use_local_server_config_if_unsynced}}: fall back to the local &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file on the physical client in case the server does not send any configuration. If this is disabled, the client will not show a level cost on grindstone operations at all, even if it looks like one added by this mod. Should only be required for backwards compatibility with servers running old versions of the mod from before the config sync feature was added (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|log_received_config}}: when receiving the server&#039;s configuration, log it in the console in JSON format. Useful for debugging, or if you&#039;re curious how the server is configured (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=52</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=52"/>
		<updated>2025-10-20T09:23:24Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Cost function */ Document cost functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
A cost function takes the list of enchantments on the item and calculates a level cost. It can be specified separately for each of the mod&#039;s features.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object|cost_function}}&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_min_power&amp;quot;&amp;lt;/code&amp;gt;: sums the minimum required [[mcw:Enchanting_mechanics|enchanting power]] needed to obtain the enchantment on an enchanting table, usually scaling with the enchantment&#039;s level. This is a defined value even for enchantments that are unobtainable at an enchanting table.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_enchantments&amp;quot;&amp;lt;/code&amp;gt;: returns the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_levels&amp;quot;&amp;lt;/code&amp;gt;: sums the levels of all enchantments on the item. Enchantments without a level are counted as &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** {{Json|float|normal_factor}}: value to multiply the level count of normal (non-treasure) enchantments with. For example, if this is set to &amp;lt;code&amp;gt;3.0&amp;lt;/code&amp;gt; and you are disenchanting an item with Unbreaking II, it would cost 6 levels of XP.&lt;br /&gt;
*** {{Json|float|treasure_factor}}: value to multiply the level count of treasure enchantments (which are unobtainable at an enchanting table) with.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:average_count&amp;quot;&amp;lt;/code&amp;gt;: divides the level cost returned by another cost function by the number of enchantments on the item (be aware that &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt; will always reduce this to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, making it ineffective).&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:first_enchantment&amp;quot;&amp;lt;/code&amp;gt;: removes all enchantments but the first from the item before passing the actual level cost calculation to another cost function.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:transform&amp;quot;&amp;lt;/code&amp;gt;: changes the result of another cost function based on the formula &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;result = (cost * factor) + offset&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. The result is rounded up to the next integer.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the initial level cost calculation to.&lt;br /&gt;
*** {{Json|float|factor}}: the value to multiply the level cost with (default: &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|float|offset}}: the value to add to the multiplied level cost (default: &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:filter&amp;quot;&amp;lt;/code&amp;gt;: applies the configured filter, to remove ignored enchantments. Should typically be the outermost cost function. Without this, ignored enchantments (which will remain on the original item) will still be taken into account for the level cost.&lt;br /&gt;
*** {{Json|object|function}}: The cost function to delegate the remaining level cost calculation to.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=51</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=51"/>
		<updated>2025-10-15T13:31:10Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Begin documenting cost functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
A cost function takes the list of enchantments on the item and calculates a level cost. It can be specified separately for each of the mod&#039;s features.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object|cost_function}}&lt;br /&gt;
** if {{Json|string|type}} is &amp;lt;code&amp;gt;&amp;quot;grindenchantments:count_min_power&amp;quot;&amp;lt;/code&amp;gt;:&lt;br /&gt;
*** ...&lt;br /&gt;
** ...&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=50</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=50"/>
		<updated>2025-10-15T13:08:58Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Use Template:Tree view&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=49</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=49"/>
		<updated>2025-10-15T13:04:53Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Use Template:Json key&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been {{Json key|&amp;quot;items&amp;quot;}}): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=48</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=48"/>
		<updated>2025-10-15T13:01:58Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Use Template:Json key&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt; {{#if: {{{2|}}}|{{Json key|&amp;quot;{{{2}}}&amp;quot;}}|}}{{#if: {{{2|}}}|&amp;amp;nbsp;(|}}{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
|object=object&lt;br /&gt;
|array=array&lt;br /&gt;
|int=int&lt;br /&gt;
|float=float&lt;br /&gt;
|boolean=boolean&lt;br /&gt;
|string=string&lt;br /&gt;
|}}{{#if: {{{2|}}}|)|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=47</id>
		<title>Template:Json key</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=47"/>
		<updated>2025-10-15T13:00:27Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Fix template reference (page was moved)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;json-key&amp;quot;&amp;gt;{{{1|[[Category:Invalid template usage/JSON key]]}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template formats a string as a JSON key value (without adding quotation marks automatically), for consistency.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Json key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ===&lt;br /&gt;
{{Json key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=46</id>
		<title>Template:Json key</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=46"/>
		<updated>2025-10-15T13:00:02Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Mschae23 moved page Template:JSON key to Template:Json key without leaving a redirect: Consistency with Template:Json&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;json-key&amp;quot;&amp;gt;{{{1|[[Category:Invalid template usage/JSON key]]}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template formats a string as a JSON key value (without adding quotation marks automatically), for consistency.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{JSON key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ===&lt;br /&gt;
{{JSON key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=45</id>
		<title>Template:Json key</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json_key&amp;diff=45"/>
		<updated>2025-10-15T12:59:30Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: JSON key template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;span class=&amp;quot;json-key&amp;quot;&amp;gt;{{{1|[[Category:Invalid template usage/JSON key]]}}}&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template formats a string as a JSON key value (without adding quotation marks automatically), for consistency.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{JSON key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ===&lt;br /&gt;
{{JSON key|&amp;quot;config&amp;quot;}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=44</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=44"/>
		<updated>2025-10-15T12:55:15Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Use Template:Tree view&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt; {{#if: {{{2|}}}|&amp;lt;span class=&amp;quot;nowrap json-key&amp;quot;&amp;gt;&amp;quot;{{{2}}}&amp;quot;&amp;lt;/span&amp;gt;|}}{{#if: {{{2|}}}|&amp;amp;nbsp;(|}}{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
|object=object&lt;br /&gt;
|array=array&lt;br /&gt;
|int=int&lt;br /&gt;
|float=float&lt;br /&gt;
|boolean=boolean&lt;br /&gt;
|string=string&lt;br /&gt;
|}}{{#if: {{{2|}}}|)|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Tree_view&amp;diff=43</id>
		<title>Template:Tree view</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Tree_view&amp;diff=43"/>
		<updated>2025-10-15T12:54:23Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Tree view template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;{{{1|[[Category:Invalid template usage/Tree view]]}}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
A MediaWiki list wrapped in this template will be displayed in a tree view for better illustrations of [[Template:Json|JSON]] objects.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
{{Tree view|&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=42</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=42"/>
		<updated>2025-10-14T13:28:59Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Server */ Document filters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements. Vanilla functionality (simple disenchanting without keeping enchanted books) should not be affected.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should have been &amp;lt;span class=&amp;quot;json-key&amp;quot;&amp;gt;&amp;quot;items&amp;quot;&amp;lt;/span&amp;gt;): list of item IDs, to be used as either an allowlist or denylist. If set to an empty array, all item types can be used (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|enchantment}}: which enchantments can be extracted from items.&lt;br /&gt;
**** {{Json|array|enchantments}}: list of enchantment IDs, to be used as either an allowlist or denylist. If set to an empty array, all enchantment types can be used, as long as no other filter applies (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, only the specified enchantments can be extracted (other enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, only enchantments that &#039;&#039;aren&#039;t&#039;&#039; listed can be extracted (the specified enchantments will remain on the item). If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, items that have any of the listed enchantments cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|string|cursed_enchantments}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, curses are not treated specially. If set to &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;, curses will remain on the item when disenchanting. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, cursed items cannot be used at all (default: &amp;lt;code&amp;gt;&amp;quot;ignore&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** {{Json|int|version}}: config version (latest: &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=41</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=41"/>
		<updated>2025-10-14T08:07:12Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Fix color in last treeview item&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Turn a list into a tree view style (based on the Minecraft wiki&#039;s treeview styles) */&lt;br /&gt;
.treeview {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview .treeview-header {&lt;br /&gt;
	padding-left: 3px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child {&lt;br /&gt;
	border-color: var(--border-color);&lt;br /&gt;
	border-left-style: dotted;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:not(:last-child)::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child::before {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview ul,&lt;br /&gt;
.treeview li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style-type: none;&lt;br /&gt;
	list-style-image: none;&lt;br /&gt;
	line-height: 125%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-left: 13px;&lt;br /&gt;
	margin-left: 7px;&lt;br /&gt;
	border-left: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
.treeview li li::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	width: 11px;&lt;br /&gt;
	height: 11px;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue) {&lt;br /&gt;
	border-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue)::before {&lt;br /&gt;
	border-left: 1px solid var(--border-color);&lt;br /&gt;
	width: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview dl,&lt;br /&gt;
.treeview dt {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.jsontree-inherited {&lt;br /&gt;
	background-color: var(--jsontree-inherited-background-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.json-key {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-family: monospace;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=40</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=40"/>
		<updated>2025-10-13T16:21:06Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Server */ Start documenting filters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether filters are in effect (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|item}}: which items can be used in disenchanting, or repair cost resets.&lt;br /&gt;
**** {{Json|array|enchantments}} (misnamed; should be &amp;lt;code&amp;gt;&amp;quot;items&amp;quot;&amp;lt;/code&amp;gt;): list of item IDs, to be used as either an allowlist or denylist (default: &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** {{Json|string|action}}: if set to &amp;lt;code&amp;gt;&amp;quot;allow&amp;quot;&amp;lt;/code&amp;gt;, &#039;&#039;only&#039;&#039; the mentioned items can be used. If set to &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;, all items but the mentioned ones can be used (default: &amp;lt;code&amp;gt;&amp;quot;deny&amp;quot;&amp;lt;/code&amp;gt;). &lt;br /&gt;
** {{Json|int|version}}: config version (defaults to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=39</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=39"/>
		<updated>2025-10-13T15:04:39Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Server */ Fix section link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#Cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements.&lt;br /&gt;
*** ...&lt;br /&gt;
** {{Json|int|version}}: config version (defaults to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=38</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=38"/>
		<updated>2025-10-13T15:03:49Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Server */ Expand to include most options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#cost function|cost function]].&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#cost function|cost function]].&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|array|catalyst_items}}: an array of item IDs (or a single item ID) which have to be inserted alongside the item that should have its repair cost reset (default: &amp;lt;code&amp;gt;&amp;quot;minecraft:diamond&amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|requires_enchantment}}: whether the item that should have its repair cost reset is required to have an enchantment (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: see [[#cost function|cost function]].&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements.&lt;br /&gt;
*** ...&lt;br /&gt;
** {{Json|int|version}}: config version (defaults to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Cost function ===&lt;br /&gt;
TODO.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=37</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=37"/>
		<updated>2025-10-13T13:51:09Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Increase line height in treeviews&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Turn a list into a tree view style (based on the Minecraft wiki&#039;s treeview styles) */&lt;br /&gt;
.treeview {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview .treeview-header {&lt;br /&gt;
	padding-left: 3px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child {&lt;br /&gt;
	border-color: var(--border-color);&lt;br /&gt;
	border-left-style: dotted;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:not(:last-child)::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child::before {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview ul,&lt;br /&gt;
.treeview li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style-type: none;&lt;br /&gt;
	list-style-image: none;&lt;br /&gt;
	line-height: 125%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-left: 13px;&lt;br /&gt;
	margin-left: 7px;&lt;br /&gt;
	border-left: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
.treeview li li::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	width: 11px;&lt;br /&gt;
	height: 11px;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue) {&lt;br /&gt;
	border-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue)::before {&lt;br /&gt;
	border-left: 1px solid #636363;&lt;br /&gt;
	width: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview dl,&lt;br /&gt;
.treeview dt {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.jsontree-inherited {&lt;br /&gt;
	background-color: #E6E6FA;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.json-key {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-family: monospace;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=36</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=36"/>
		<updated>2025-10-13T13:45:50Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Server */ Add basic structure for server config&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|boolean|consume_enchanted_item}}: if enabled, the original item will be consumed when disenchanting; only the enchantments themselves can be obtained (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: function for calculating the level cost of disenchanting.&lt;br /&gt;
**** ...&lt;br /&gt;
** {{Json|object|move_enchantments}}: configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: function for calculating the level cost of moving enchantments.&lt;br /&gt;
**** ...&lt;br /&gt;
** {{Json|object|reset_repair_cost}}: configuration for the “reset repair cost” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** {{Json|object|cost_function}}: function for calculating the level cost of resetting a repair cost.&lt;br /&gt;
**** ...&lt;br /&gt;
** {{Json|object|filter}}: filters for all enchantment movements.&lt;br /&gt;
*** ...&lt;br /&gt;
** {{Json|int|version}}: config version (defaults to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=35</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=35"/>
		<updated>2025-10-13T13:19:29Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Begin documenting config options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
The &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; file contains the majority of the mod&#039;s configuration options, being used on the logical server. Most importantly, it is possible to disable certain features and change the disenchantment costs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: Server config.&lt;br /&gt;
** {{Json|object|disenchant_to_book}}: Configuration for the “disenchant to book” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** ...&lt;br /&gt;
** {{Json|object|move_enchantments}}: Configuration for the “move enchantments between books” feature.&lt;br /&gt;
*** {{Json|boolean|enabled}}: whether to enable the feature (default: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** ...&lt;br /&gt;
** ...&lt;br /&gt;
** {{Json|int|version}}: Config version (defaults to &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=34</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=34"/>
		<updated>2025-10-13T13:18:15Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add quotation marks around JSON key&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt; {{#if: {{{2|}}}|&amp;lt;span class=&amp;quot;nowrap json-key&amp;quot;&amp;gt;&amp;quot;{{{2}}}&amp;quot;&amp;lt;/span&amp;gt;|}}{{#if: {{{2|}}}|&amp;amp;nbsp;(|}}{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
|object=object&lt;br /&gt;
|array=array&lt;br /&gt;
|int=int&lt;br /&gt;
|float=float&lt;br /&gt;
|boolean=boolean&lt;br /&gt;
|string=string&lt;br /&gt;
|}}{{#if: {{{2|}}}|)|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|version}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=33</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=33"/>
		<updated>2025-10-13T13:16:35Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Fix unintended space&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt; {{#if: {{{2|}}}|&amp;lt;span class=&amp;quot;nowrap json-key&amp;quot;&amp;gt;{{{2}}}&amp;lt;/span&amp;gt;|}}{{#if: {{{2|}}}|&amp;amp;nbsp;(|}}{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
|object=object&lt;br /&gt;
|array=array&lt;br /&gt;
|int=int&lt;br /&gt;
|float=float&lt;br /&gt;
|boolean=boolean&lt;br /&gt;
|string=string&lt;br /&gt;
|}}{{#if: {{{2|}}}|)|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|version}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=32</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=32"/>
		<updated>2025-10-13T13:13:33Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Change formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt; {{#if: {{{2|}}}|&amp;lt;span class=&amp;quot;nowrap json-key&amp;quot;&amp;gt;&amp;amp;nbsp;{{{2}}}&amp;lt;/span&amp;gt;|}} {{#if: {{{2|}}}|(|}}{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
| object = object&lt;br /&gt;
| array = array&lt;br /&gt;
| int = int&lt;br /&gt;
| float = float&lt;br /&gt;
| boolean = boolean&lt;br /&gt;
| string = string&lt;br /&gt;
|}}{{#if: {{{2|}}}|)|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|number}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}}: The object.&lt;br /&gt;
** {{Json|int|version}}: The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=31</id>
		<title>Template:Json</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Template:Json&amp;diff=31"/>
		<updated>2025-10-13T13:05:07Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: JSON tree documentation template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch: {{{1|[[Category:Pages with invalid template usage/Json]]}}}&lt;br /&gt;
| object = {} &lt;br /&gt;
| array = []&lt;br /&gt;
| int = int&lt;br /&gt;
| float = float&lt;br /&gt;
| boolean = boolean&lt;br /&gt;
| string = string&lt;br /&gt;
|}}{{#if: {{{2|}}}|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;span class=&amp;quot;nowrap json-key&amp;quot;&amp;gt;&amp;amp;nbsp;{{{2}}}&amp;lt;/span&amp;gt;|}}:&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This template is used to illustrate JSON object trees in documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}} The object.&lt;br /&gt;
** {{Json|int|number}} The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
* {{Json|object}} The object.&lt;br /&gt;
** {{Json|int|version}} The version number.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=30</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=30"/>
		<updated>2025-10-13T12:55:02Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add style for JSON keys&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Turn a list into a tree view style (based on the Minecraft wiki&#039;s treeview styles) */&lt;br /&gt;
.treeview {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview .treeview-header {&lt;br /&gt;
	padding-left: 3px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child {&lt;br /&gt;
	border-color: var(--border-color);&lt;br /&gt;
	border-left-style: dotted;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:not(:last-child)::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child::before {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview ul,&lt;br /&gt;
.treeview li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style-type: none;&lt;br /&gt;
	list-style-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-left: 13px;&lt;br /&gt;
	margin-left: 7px;&lt;br /&gt;
	border-left: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
.treeview li li::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	width: 11px;&lt;br /&gt;
	height: 11px;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue) {&lt;br /&gt;
	border-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue)::before {&lt;br /&gt;
	border-left: 1px solid #636363;&lt;br /&gt;
	width: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview dl,&lt;br /&gt;
.treeview dt {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.jsontree-inherited {&lt;br /&gt;
	background-color: #E6E6FA;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.json-key {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-family: monospace;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=29</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Common.css&amp;diff=29"/>
		<updated>2025-10-13T12:40:15Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add initial version of treeview style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* CSS placed here will be applied to all skins */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Turn a list into a tree view style (based on the Minecraft wiki&#039;s treeview styles) */&lt;br /&gt;
.treeview {&lt;br /&gt;
	margin-top: 0.3em;&lt;br /&gt;
	display: flow-root;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview .treeview-header {&lt;br /&gt;
	padding-left: 3px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child {&lt;br /&gt;
	border-color: var(--border-color);&lt;br /&gt;
	border-left-style: dotted;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:not(:last-child)::before {&lt;br /&gt;
	content: none;&lt;br /&gt;
}&lt;br /&gt;
.treeview .treeview-header:last-child::before {&lt;br /&gt;
	border-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview ul,&lt;br /&gt;
.treeview li {&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	list-style-type: none;&lt;br /&gt;
	list-style-image: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-left: 13px;&lt;br /&gt;
	margin-left: 7px;&lt;br /&gt;
	border-left: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
.treeview li li::before {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: -1px;&lt;br /&gt;
	width: 11px;&lt;br /&gt;
	height: 11px;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue) {&lt;br /&gt;
	border-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.treeview li li:last-child:not(.treeview-continue)::before {&lt;br /&gt;
	border-left: 1px solid #636363;&lt;br /&gt;
	width: 10px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.treeview dl,&lt;br /&gt;
.treeview dt {&lt;br /&gt;
	margin-bottom: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.nbttree-inherited {&lt;br /&gt;
	background-color: #E6E6FA;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=28</id>
		<title>Grind enchantments</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=28"/>
		<updated>2025-08-15T14:48:37Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Link to source code and issue tracker separately&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Grind enchantments&#039;&#039;&#039; adds a few new features to the grindstone.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://legacy.curseforge.com/minecraft/mc-mods/grind-enchantments CurseForge]&lt;br /&gt;
* Download from [https://modrinth.com/mod/grind-enchantments Modrinth]&lt;br /&gt;
* View the [https://code.mschae23.de/mschae23/grind-enchantments source code] ([https://github.com/mschae23/grind-enchantments/issues issue tracker])&lt;br /&gt;
&lt;br /&gt;
Supports [https://modrinth.com/mod/tax-free-levels Tax Free Levels].&lt;br /&gt;
&lt;br /&gt;
This mod is for Fabric. A port to Forge is not planned.&lt;br /&gt;
&lt;br /&gt;
== Disenchant to book ==&lt;br /&gt;
You can put an enchanted item and a book into the grindstone, and you will get the enchantments onto the book (and your unenchanted item back).&lt;br /&gt;
&lt;br /&gt;
[[File:Grind enchantments - Disenchant.png|frameless|border|upright=3|link=|alt=An opened grindstone screen. The input slots contain an enchanted diamond pickaxe and a book, while the output slot has an enchanted book. A green label saying “Enchantment cost: 16” is shown in the bottom-right of the screen. The screenshot was taken at a weaponsmith’s house in a village, which is visible in the background.]]&lt;br /&gt;
&lt;br /&gt;
== Move enchantments between books ==&lt;br /&gt;
If you put an enchanted book into the top slot and an empty (or also already enchanted) book into the bottom slot of the grindstone, the enchantment at the top of the first book will be put onto the other book. &lt;br /&gt;
&lt;br /&gt;
This is useful if you have a book that has enchantments for different types of items (for example, a book with efficiency and protection), so you can separate them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
There are configuration files that allow you to change the behavior of the mod, most importantly the disenchantment cost.&lt;br /&gt;
For more information, see the [[Grind enchantments/Config|configuration]] page.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
Grind enchantments&lt;br /&gt;
Copyright (C) 2024  mschae23&lt;br /&gt;
&lt;br /&gt;
Grind enchantments is free software: you can redistribute it and/or modify&lt;br /&gt;
it under the terms of the GNU Lesser General Public License as published&lt;br /&gt;
by the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,&lt;br /&gt;
but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
GNU Lesser General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
along with this program.  If not, see https://www.gnu.org/licenses/.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=27</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=27"/>
		<updated>2025-08-13T14:40:08Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add link to .minecraft page on MCW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If you don&#039;t know how to find this, see the [[mcw:.minecraft|.minecraft]] page on the Minecraft wiki. If the files don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=26</id>
		<title>Grind enchantments/Config</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments/Config&amp;diff=26"/>
		<updated>2025-08-13T14:27:57Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Show default configs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The configuration files of Grind enchantments can be found in the &amp;lt;code&amp;gt;.minecraft/config/grindenchantments&amp;lt;/code&amp;gt; directory. If they don&#039;t exist, the mod will create them automatically.&lt;br /&gt;
There should be two files here: &amp;lt;code&amp;gt;server.json&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;client.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Defaults ==&lt;br /&gt;
The default values in the server config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;disenchant_to_book&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;consume_enchanted_item&amp;quot;: false,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_min_power&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;factor&amp;quot;: 0.3,&lt;br /&gt;
        &amp;quot;offset&amp;quot;: 8.0,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;move_enchantments&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;function&amp;quot;: {&lt;br /&gt;
            &amp;quot;normal_factor&amp;quot;: 3.0,&lt;br /&gt;
            &amp;quot;treasure_factor&amp;quot;: 8.0,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;factor&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;offset&amp;quot;: 0.5,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:first_enchantment&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:filter&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;reset_repair_cost&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: false,&lt;br /&gt;
    &amp;quot;catalyst_items&amp;quot;: &amp;quot;minecraft:diamond&amp;quot;,&lt;br /&gt;
    &amp;quot;requires_enchantment&amp;quot;: true,&lt;br /&gt;
    &amp;quot;cost_function&amp;quot;: {&lt;br /&gt;
      &amp;quot;function&amp;quot;: {&lt;br /&gt;
        &amp;quot;function&amp;quot;: {&lt;br /&gt;
          &amp;quot;normal_factor&amp;quot;: 1.0,&lt;br /&gt;
          &amp;quot;treasure_factor&amp;quot;: 4.0,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:count_levels&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:average_count&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;factor&amp;quot;: 1.5,&lt;br /&gt;
      &amp;quot;offset&amp;quot;: 4.0,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;grindenchantments:transform&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filter&amp;quot;: {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;deny&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;enchantment&amp;quot;: {&lt;br /&gt;
      &amp;quot;enchantments&amp;quot;: [],&lt;br /&gt;
      &amp;quot;action&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;cursed_enchantments&amp;quot;: &amp;quot;ignore&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;dedicated_server_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;alternative_cost_display_enabled&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default values in the client config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;show_enchantment_cost&amp;quot;: true,&lt;br /&gt;
  &amp;quot;sync_options&amp;quot;: {&lt;br /&gt;
    &amp;quot;use_local_server_config_if_unsynced&amp;quot;: true,&lt;br /&gt;
    &amp;quot;log_received_config&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;version&amp;quot;: 4&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=25</id>
		<title>Grind enchantments</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=25"/>
		<updated>2025-08-13T13:45:31Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: /* Disenchant to book */ Mention enchantment cost in alt text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Grind enchantments&#039;&#039;&#039; adds a few new features to the grindstone.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://legacy.curseforge.com/minecraft/mc-mods/grind-enchantments CurseForge]&lt;br /&gt;
* Download from [https://modrinth.com/mod/grind-enchantments Modrinth]&lt;br /&gt;
* View the [https://github.com/mschae23/grind-enchantments source code]&lt;br /&gt;
&lt;br /&gt;
Supports [https://modrinth.com/mod/tax-free-levels Tax Free Levels].&lt;br /&gt;
&lt;br /&gt;
This mod is for Fabric. A port to Forge is not planned.&lt;br /&gt;
&lt;br /&gt;
== Disenchant to book ==&lt;br /&gt;
You can put an enchanted item and a book into the grindstone, and you will get the enchantments onto the book (and your unenchanted item back).&lt;br /&gt;
&lt;br /&gt;
[[File:Grind enchantments - Disenchant.png|frameless|border|upright=3|link=|alt=An opened grindstone screen. The input slots contain an enchanted diamond pickaxe and a book, while the output slot has an enchanted book. A green label saying “Enchantment cost: 16” is shown in the bottom-right of the screen. The screenshot was taken at a weaponsmith’s house in a village, which is visible in the background.]]&lt;br /&gt;
&lt;br /&gt;
== Move enchantments between books ==&lt;br /&gt;
If you put an enchanted book into the top slot and an empty (or also already enchanted) book into the bottom slot of the grindstone, the enchantment at the top of the first book will be put onto the other book. &lt;br /&gt;
&lt;br /&gt;
This is useful if you have a book that has enchantments for different types of items (for example, a book with efficiency and protection), so you can separate them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
There are configuration files that allow you to change the behavior of the mod, most importantly the disenchantment cost.&lt;br /&gt;
For more information, see the [[Grind enchantments/Config|configuration]] page.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
Grind enchantments&lt;br /&gt;
Copyright (C) 2024  mschae23&lt;br /&gt;
&lt;br /&gt;
Grind enchantments is free software: you can redistribute it and/or modify&lt;br /&gt;
it under the terms of the GNU Lesser General Public License as published&lt;br /&gt;
by the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,&lt;br /&gt;
but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
GNU Lesser General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
along with this program.  If not, see https://www.gnu.org/licenses/.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=24</id>
		<title>Grind enchantments</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=24"/>
		<updated>2025-08-13T13:43:41Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add alt text for image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Grind enchantments&#039;&#039;&#039; adds a few new features to the grindstone.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://legacy.curseforge.com/minecraft/mc-mods/grind-enchantments CurseForge]&lt;br /&gt;
* Download from [https://modrinth.com/mod/grind-enchantments Modrinth]&lt;br /&gt;
* View the [https://github.com/mschae23/grind-enchantments source code]&lt;br /&gt;
&lt;br /&gt;
Supports [https://modrinth.com/mod/tax-free-levels Tax Free Levels].&lt;br /&gt;
&lt;br /&gt;
This mod is for Fabric. A port to Forge is not planned.&lt;br /&gt;
&lt;br /&gt;
== Disenchant to book ==&lt;br /&gt;
You can put an enchanted item and a book into the grindstone, and you will get the enchantments onto the book (and your unenchanted item back).&lt;br /&gt;
&lt;br /&gt;
[[File:Grind enchantments - Disenchant.png|frameless|border|upright=3|link=|alt=A screenshot with an opened grindstone screen. The input slots contain an enchanted diamond pickaxe and a book, while the output slot has an enchanted book. It was taken at a weaponsmith’s house in a village, which is visible in the background.]]&lt;br /&gt;
&lt;br /&gt;
== Move enchantments between books ==&lt;br /&gt;
If you put an enchanted book into the top slot and an empty (or also already enchanted) book into the bottom slot of the grindstone, the enchantment at the top of the first book will be put onto the other book. &lt;br /&gt;
&lt;br /&gt;
This is useful if you have a book that has enchantments for different types of items (for example, a book with efficiency and protection), so you can separate them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
There are configuration files that allow you to change the behavior of the mod, most importantly the disenchantment cost.&lt;br /&gt;
For more information, see the [[Grind enchantments/Config|configuration]] page.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
Grind enchantments&lt;br /&gt;
Copyright (C) 2024  mschae23&lt;br /&gt;
&lt;br /&gt;
Grind enchantments is free software: you can redistribute it and/or modify&lt;br /&gt;
it under the terms of the GNU Lesser General Public License as published&lt;br /&gt;
by the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,&lt;br /&gt;
but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
GNU Lesser General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
along with this program.  If not, see https://www.gnu.org/licenses/.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=23</id>
		<title>Grind enchantments</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=23"/>
		<updated>2025-08-13T12:01:57Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Add links and license info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Grind enchantments&#039;&#039;&#039; adds a few new features to the grindstone.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://legacy.curseforge.com/minecraft/mc-mods/grind-enchantments CurseForge]&lt;br /&gt;
* Download from [https://modrinth.com/mod/grind-enchantments Modrinth]&lt;br /&gt;
* View the [https://github.com/mschae23/grind-enchantments source code]&lt;br /&gt;
&lt;br /&gt;
Supports [https://modrinth.com/mod/tax-free-levels Tax Free Levels].&lt;br /&gt;
&lt;br /&gt;
This mod is for Fabric. A port to Forge is not planned.&lt;br /&gt;
&lt;br /&gt;
== Disenchant to book ==&lt;br /&gt;
You can put an enchanted item and a book into the grindstone, and you will get the enchantments onto the book (and your unenchanted item back).&lt;br /&gt;
&lt;br /&gt;
[[File:Grind enchantments - Disenchant.png|frameless|border|upright=3|link=]]&lt;br /&gt;
&lt;br /&gt;
== Move enchantments between books ==&lt;br /&gt;
If you put an enchanted book into the top slot and an empty (or also already enchanted) book into the bottom slot of the grindstone, the enchantment at the top of the first book will be put onto the other book. &lt;br /&gt;
&lt;br /&gt;
This is useful if you have a book that has enchantments for different types of items (for example, a book with efficiency and protection), so you can separate them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
There are configuration files that allow you to change the behavior of the mod, most importantly the disenchantment cost.&lt;br /&gt;
For more information, see the [[Grind enchantments/Config|configuration]] page.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
Grind enchantments&lt;br /&gt;
Copyright (C) 2024  mschae23&lt;br /&gt;
&lt;br /&gt;
Grind enchantments is free software: you can redistribute it and/or modify&lt;br /&gt;
it under the terms of the GNU Lesser General Public License as published&lt;br /&gt;
by the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,&lt;br /&gt;
but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
GNU Lesser General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU Lesser General Public License&lt;br /&gt;
along with this program.  If not, see https://www.gnu.org/licenses/.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=22</id>
		<title>File:Grind enchantments - Disenchant (archive).png</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=22"/>
		<updated>2025-08-13T11:55:55Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Protected &amp;quot;File:Grind enchantments - Disenchant (archive).png&amp;quot;: Archive ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Original screenshot of the mod&#039;s functionality as used on the CurseForge and Modrinth mod pages.&lt;br /&gt;
&lt;br /&gt;
Originally uploaded to CurseForge on 2020-04-29, archived from [https://media.forgecdn.net/attachments/289/283/2020-04-29_13.png https://media.forgecdn.net/attachments/289/283/2020-04-29_13.png].&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=21</id>
		<title>File:Grind enchantments - Disenchant (archive).png</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=21"/>
		<updated>2025-08-13T11:55:23Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Summarize origin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Original screenshot of the mod&#039;s functionality as used on the CurseForge and Modrinth mod pages.&lt;br /&gt;
&lt;br /&gt;
Originally uploaded to CurseForge on 2020-04-29, archived from [https://media.forgecdn.net/attachments/289/283/2020-04-29_13.png https://media.forgecdn.net/attachments/289/283/2020-04-29_13.png].&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=20</id>
		<title>File:Grind enchantments - Disenchant (archive).png</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant_(archive).png&amp;diff=20"/>
		<updated>2025-08-13T11:53:45Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=19</id>
		<title>Grind enchantments</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Grind_enchantments&amp;diff=19"/>
		<updated>2025-08-13T11:51:57Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Grind enchantments description page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Grind enchantments&#039;&#039;&#039; adds a few new features to the grindstone.&lt;br /&gt;
&lt;br /&gt;
== Disenchant to book ==&lt;br /&gt;
You can put an enchanted item and a book into the grindstone, and you will get the enchantments onto the book (and your unenchanted item back).&lt;br /&gt;
&lt;br /&gt;
[[File:Grind enchantments - Disenchant.png|frameless|border|upright=3|link=]]&lt;br /&gt;
&lt;br /&gt;
== Move enchantments between books ==&lt;br /&gt;
If you put an enchanted book into the top slot and an empty (or also already enchanted) book into the bottom slot of the grindstone, the enchantment at the top of the first book will be put onto the other book. &lt;br /&gt;
&lt;br /&gt;
This is useful if you have a book that has enchantments for different types of items (for example, a book with efficiency and protection), so you can separate them.&lt;br /&gt;
&lt;br /&gt;
Supports [https://modrinth.com/mod/tax-free-levels Tax Free Levels].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
This mod is for Fabric. A port to Forge is not planned.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
There are configuration files that allow you to change the behavior of the mod, most importantly the disenchantment cost.&lt;br /&gt;
For more information, see the [[Grind enchantments/Config|configuration]] page.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant.png&amp;diff=18</id>
		<title>File:Grind enchantments - Disenchant.png</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=File:Grind_enchantments_-_Disenchant.png&amp;diff=18"/>
		<updated>2025-08-13T11:42:18Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Copyright-footer&amp;diff=17</id>
		<title>MediaWiki:Copyright-footer</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Copyright-footer&amp;diff=17"/>
		<updated>2025-08-07T09:33:51Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Change copyright footer sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All pages on this site are available under $1 unless otherwise noted.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Copyright-footer&amp;diff=16</id>
		<title>MediaWiki:Copyright-footer</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Copyright-footer&amp;diff=16"/>
		<updated>2025-08-07T09:32:30Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created page with &amp;quot;This page is available under $1 unless otherwise noted.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is available under $1 unless otherwise noted.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=13</id>
		<title>Main page</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=13"/>
		<updated>2025-08-06T15:52:26Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Protected &amp;quot;Main page&amp;quot;: Main page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this site, I&#039;m going to document the programs I&#039;ve published (most importantly [https://code.mschae23.de/mschae23/grind-enchantments Grind enchantments]), soon™.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Sidebar&amp;diff=12</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Sidebar&amp;diff=12"/>
		<updated>2025-08-06T15:29:14Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Remove help page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Searchsuggest-search&amp;diff=11</id>
		<title>MediaWiki:Searchsuggest-search</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Searchsuggest-search&amp;diff=11"/>
		<updated>2025-08-06T15:28:52Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created page with &amp;quot;Search&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Search&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=10</id>
		<title>Main page</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=10"/>
		<updated>2025-08-06T15:27:39Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Replace main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On this site, I&#039;m going to document the programs I&#039;ve published (most importantly [https://code.mschae23.de/mschae23/grind-enchantments Grind enchantments]), soon™.&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Aboutsite&amp;diff=9</id>
		<title>MediaWiki:Aboutsite</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Aboutsite&amp;diff=9"/>
		<updated>2025-08-06T15:25:23Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Mschae23 moved page MediaWiki:About to MediaWiki:Aboutsite without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Site-icon-link-target&amp;diff=8</id>
		<title>MediaWiki:Site-icon-link-target</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Site-icon-link-target&amp;diff=8"/>
		<updated>2025-08-06T15:23:42Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created page with &amp;quot;https://www.mschae23.de/&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.mschae23.de/&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Nstab-mainpage&amp;diff=7</id>
		<title>MediaWiki:Nstab-mainpage</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Nstab-mainpage&amp;diff=7"/>
		<updated>2025-08-06T15:22:37Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created page with &amp;quot;Main page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=6</id>
		<title>Main page</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=Main_page&amp;diff=6"/>
		<updated>2025-08-06T15:22:20Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Mschae23 moved page Main Page to Main page without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User&#039;s Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Disclaimers&amp;diff=5</id>
		<title>MediaWiki:Disclaimers</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Disclaimers&amp;diff=5"/>
		<updated>2025-08-06T15:21:57Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Aboutsite&amp;diff=4</id>
		<title>MediaWiki:Aboutsite</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Aboutsite&amp;diff=4"/>
		<updated>2025-08-06T15:21:22Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
	<entry>
		<id>https://docs.mschae23.de/w/index.php?title=MediaWiki:Privacy&amp;diff=3</id>
		<title>MediaWiki:Privacy</title>
		<link rel="alternate" type="text/html" href="https://docs.mschae23.de/w/index.php?title=MediaWiki:Privacy&amp;diff=3"/>
		<updated>2025-08-06T15:21:09Z</updated>

		<summary type="html">&lt;p&gt;Mschae23: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mschae23</name></author>
	</entry>
</feed>