From 6691689ca513361b531bb7ae383dc20c5e83e707 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Jul 2024 20:31:26 +0000 Subject: [PATCH] deploy: b173eb816c0607c0ed6eecaf019e55231e08c4a7 --- 404.html | 4 +- assets/js/18efa110.627200b5.js | 1 + assets/js/8b409f7b.cb1d38e9.js | 1 + assets/js/8b409f7b.e8aedb56.js | 1 - assets/js/8d480cc8.9b1f7a28.js | 1 - assets/js/8d480cc8.f6746b9f.js | 1 + ...f2afb.fd380df3.js => 935f2afb.13b6e749.js} | 2 +- assets/js/93a501ed.9a1d6e94.js | 1 + assets/js/93a501ed.ad8de7ce.js | 1 - assets/js/9ca9907f.ba9d1c13.js | 1 - assets/js/9ca9907f.e5de8096.js | 1 + assets/js/a48951f7.2699cf47.js | 1 - assets/js/a48951f7.4634c9ac.js | 1 + assets/js/b20d371f.3ab719f4.js | 1 + assets/js/b20d371f.a0efba32.js | 1 - assets/js/b70a2853.3df4dcf7.js | 1 - assets/js/b70a2853.f8bb9e4a.js | 1 + assets/js/cea55577.4459f0a3.js | 1 - assets/js/cea55577.c6762770.js | 1 + assets/js/main.c6af8f82.js | 2 + ...CENSE.txt => main.c6af8f82.js.LICENSE.txt} | 0 assets/js/main.f559625a.js | 2 - assets/js/runtime~main.081b8e62.js | 1 + assets/js/runtime~main.9dc52cde.js | 1 - docs/block-item.html | 4 +- docs/customization.html | 15 +- docs/customization/1.12.html | 4 +- docs/customization/1.12/mutation.html | 4 +- docs/customization/1.12/plant.html | 4 +- docs/customization/1.12/soil.html | 4 +- docs/customization/1.18.html | 4 +- docs/customization/1.18/fertilizer.html | 4 +- docs/customization/1.18/mutation.html | 4 +- docs/customization/1.18/plant.html | 4 +- docs/customization/1.18/soil.html | 4 +- docs/customization/1.18/weed.html | 4 +- docs/customization/fertilizer.html | 42 +++-- docs/customization/mutation.html | 26 +-- docs/customization/plant.html | 172 +++++++++++++++--- docs/customization/removing-data.html | 39 ++++ docs/customization/soil.html | 31 +++- docs/customization/tolerance-calculator.html | 4 +- docs/customization/weed.html | 28 ++- docs/customization/wrapping-up.html | 4 +- docs/wiki.html | 20 +- docs/wiki/block-item/analyzer.html | 4 +- docs/wiki/block-item/journal.html | 4 +- docs/wiki/faq.html | 62 ++++--- docs/wiki/mutation-calculator.html | 4 +- index.html | 4 +- sitemap.xml | 2 +- 51 files changed, 375 insertions(+), 159 deletions(-) create mode 100644 assets/js/18efa110.627200b5.js create mode 100644 assets/js/8b409f7b.cb1d38e9.js delete mode 100644 assets/js/8b409f7b.e8aedb56.js delete mode 100644 assets/js/8d480cc8.9b1f7a28.js create mode 100644 assets/js/8d480cc8.f6746b9f.js rename assets/js/{935f2afb.fd380df3.js => 935f2afb.13b6e749.js} (63%) create mode 100644 assets/js/93a501ed.9a1d6e94.js delete mode 100644 assets/js/93a501ed.ad8de7ce.js delete mode 100644 assets/js/9ca9907f.ba9d1c13.js create mode 100644 assets/js/9ca9907f.e5de8096.js delete mode 100644 assets/js/a48951f7.2699cf47.js create mode 100644 assets/js/a48951f7.4634c9ac.js create mode 100644 assets/js/b20d371f.3ab719f4.js delete mode 100644 assets/js/b20d371f.a0efba32.js delete mode 100644 assets/js/b70a2853.3df4dcf7.js create mode 100644 assets/js/b70a2853.f8bb9e4a.js delete mode 100644 assets/js/cea55577.4459f0a3.js create mode 100644 assets/js/cea55577.c6762770.js create mode 100644 assets/js/main.c6af8f82.js rename assets/js/{main.f559625a.js.LICENSE.txt => main.c6af8f82.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.f559625a.js create mode 100644 assets/js/runtime~main.081b8e62.js delete mode 100644 assets/js/runtime~main.9dc52cde.js create mode 100644 docs/customization/removing-data.html diff --git a/404.html b/404.html index 6a38550..3d7828b 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ Page Not Found | AgriCraft - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/18efa110.627200b5.js b/assets/js/18efa110.627200b5.js new file mode 100644 index 0000000..9a49396 --- /dev/null +++ b/assets/js/18efa110.627200b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[241],{9162:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var a=t(5893),i=t(1151);const s={},o="Removing Default Data",c={id:"customization/removing-data",title:"Removing Default Data",description:"You can remove existing data (such as plants, mutations, etc.) using the filter block in your datapack's pack.mcmeta file. The filter block supports regular expressions (regex), making the process more efficient.",source:"@site/docs/customization/removing-data.md",sourceDirName:"customization",slug:"/customization/removing-data",permalink:"/docs/customization/removing-data",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/removing-data.md",tags:[],version:"current",frontMatter:{}},r={},l=[{value:"Removing All Plants and Mutations in a Specific Namespace",id:"removing-all-plants-and-mutations-in-a-specific-namespace",level:2},{value:"Removing Mutations for Specific Plants",id:"removing-mutations-for-specific-plants",level:2},{value:"Example pack.mcmeta",id:"example-packmcmeta",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"removing-default-data",children:"Removing Default Data"}),"\n",(0,a.jsxs)(n.p,{children:["You can remove existing data (such as plants, mutations, etc.) using the ",(0,a.jsx)(n.code,{children:"filter"})," block in your datapack's ",(0,a.jsx)(n.code,{children:"pack.mcmeta"})," file. The ",(0,a.jsx)(n.code,{children:"filter"})," block supports regular expressions (regex), making the process more efficient."]}),"\n",(0,a.jsxs)(n.blockquote,{children:["\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Note:"})," Due to a ",(0,a.jsx)(n.a,{href:"https://bugs.mojang.com/browse/MC-271761",children:"Minecraft bug"}),", there are certain limitations to this option."]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"removing-all-plants-and-mutations-in-a-specific-namespace",children:"Removing All Plants and Mutations in a Specific Namespace"}),"\n",(0,a.jsx)(n.p,{children:"This example demonstrates how to remove all AgriCraft plants and mutations."}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"namespace"})," specifies that only data from the ",(0,a.jsx)(n.code,{children:"agricraft"})," namespace should be removed."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"path"})," is the path to the files that you want to remove:","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"agricraft/"})," is the directory where all AgriCraft data is stored."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"((plants)|(mutations))"})," regex pattern specifies that both plants and mutations will be removed while keeping soils, fertilizers, and weeds intact."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:".*"})," regex pattern matches all files in the specified path."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.blockquote,{children:["\n",(0,a.jsxs)(n.p,{children:["Please note that using multiple namespaces will ",(0,a.jsx)(n.a,{href:"https://bugs.mojang.com/browse/MC-271761",children:"cause them to leak"}),". Until this issue is resolved, you should specify the same ",(0,a.jsx)(n.code,{children:"namespace"})," for all the paths."]}),"\n"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json5",children:' "filter": {\n "block": [\n {\n "namespace": "agricraft",\n "path": "agricraft/((plants)|(mutations))/.*"\n }\n ]\n }\n'})}),"\n",(0,a.jsx)(n.h2,{id:"removing-mutations-for-specific-plants",children:"Removing Mutations for Specific Plants"}),"\n",(0,a.jsxs)(n.p,{children:["This example shows how to remove mutations for specific plants without using ",(0,a.jsx)(n.code,{children:"namespace"}),". If not specified, the mutation for ",(0,a.jsx)(n.code,{children:"petinia"})," will be removed from all namespaces. This shouldn't be an issue unless you have multiple mods with plants that have the same name. The second path targets all plants that end with ",(0,a.jsx)(n.code,{children:"_tulip"}),". This can be useful for removing multiple plants with similar names."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json5",children:' "filter": {\n "block": [\n {\n "path": "agricraft/mutations/petinia"\n },\n {\n "path": "agricraft/mutations/.*_tulip"\n }\n ]\n }\n'})}),"\n",(0,a.jsxs)(n.h2,{id:"example-packmcmeta",children:["Example ",(0,a.jsx)(n.code,{children:"pack.mcmeta"})]}),"\n",(0,a.jsxs)(n.p,{children:["Once you add the ",(0,a.jsx)(n.code,{children:"filter"}),", ",(0,a.jsx)(n.code,{children:"pack.mcmeta"})," file should look like this:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json5",children:'{\n "pack": {\n "pack_format": 15,\n "description": "AgriCraft test datapack"\n },\n "filter": {\n "block": [\n {\n "path": "agricraft/((plants)|(mutations))/.*_tulip"\n },\n {\n "path": "agricraft/.*/petinia"\n },\n {\n "path": "agricraft/soils/podzol"\n }\n ]\n }\n}\n'})})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>o});var a=t(7294);const i={},s=a.createContext(i);function o(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8b409f7b.cb1d38e9.js b/assets/js/8b409f7b.cb1d38e9.js new file mode 100644 index 0000000..7485163 --- /dev/null +++ b/assets/js/8b409f7b.cb1d38e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[663],{4708:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>o});var i=t(5893),r=t(1151);const a={},s="Fertilizer",l={id:"customization/fertilizer",title:"Fertilizer",description:"Fertilizers are items used make the plant grow faster by forcing a growth tick of the plant. AgriCraft ships default fertilizers such as bone meal, but these can be modified and new fertilizers can be added.",source:"@site/docs/customization/fertilizer.md",sourceDirName:"customization",slug:"/customization/fertilizer",permalink:"/docs/customization/fertilizer",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/fertilizer.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Soil",permalink:"/docs/customization/soil"},next:{title:"Weed",permalink:"/docs/customization/weed"}},c={},o=[{value:"Plant tags",id:"plant-tags",level:2}];function d(e){const n={code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"fertilizer",children:"Fertilizer"}),"\n",(0,i.jsx)(n.p,{children:"Fertilizers are items used make the plant grow faster by forcing a growth tick of the plant. AgriCraft ships default fertilizers such as bone meal, but these can be modified and new fertilizers can be added."}),"\n",(0,i.jsxs)(n.p,{children:["To create a fertilizer, add a new JSON file in the directory ",(0,i.jsx)(n.code,{children:"data//agricraft/fertilizers/.json"})," where ",(0,i.jsx)(n.code,{children:"namespace"})," is the namespace and ",(0,i.jsx)(n.code,{children:"fertilizer_id"})," is the ID of this fertilizer, which can be whatever you want."]}),"\n",(0,i.jsx)(n.p,{children:"Every fertilizer requires the following fields:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"mods"}),": mods required for the plant to be loaded."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"variants"}),": array of item objects representing the fertilizer. Every item object consists of ",(0,i.jsx)(n.code,{children:"item"})," field, which can be a tag or a resource location."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"trigger_mutation"}),": if ",(0,i.jsx)(n.code,{children:"true"}),", the fertilizer can trigger crop mutation."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"trigger_weeds"}),": if ",(0,i.jsx)(n.code,{children:"true"}),", the fertilizer can trigger weed growth in the crop."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"potency"}),": potency of the fertilizer, higher values mean faster growth."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"reduce_growth"}),": if ",(0,i.jsx)(n.code,{children:"true"}),", the fertilizer can reduce the growth stage of negatively affected plants."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"kill_plant"}),": if ",(0,i.jsx)(n.code,{children:"true"}),", the fertilizer can kill negatively affected plants."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"neutral_on"}),": list of plants unaffected by the fertilizer. Can be a tag or a resource location."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"negative_on"}),": list of plants negatively affected by the fertilizer. Can be a tag or a resource location."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"particles"}),": array of particles that are spawned in the world when the fertilizer is used on a plant. Every particle object consists of:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"amount"}),": amount of particles."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"particle"}),": resource location of the particle that will spawn."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"delta_x"}),", ",(0,i.jsx)(n.code,{children:"delta_y"})," and ",(0,i.jsx)(n.code,{children:"delta_z"}),": these represent how far from the center of the block the particles will spawn in the given direction."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"when"}),": list of outcomes that can spawn the particle. Can be ",(0,i.jsx)(n.code,{children:"positive"}),", ",(0,i.jsx)(n.code,{children:"neutral"})," and ",(0,i.jsx)(n.code,{children:"negative"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Here is an example of a fertilizer that should be similar to bone meal:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "mods": [],\n "variants": [\n {\n "item": "minecraft:bone_meal"\n }\n ],\n "trigger_mutation": true,\n "trigger_weeds": true,\n "potency": 1,\n "reduce_growth": true,\n "kill_plant": true,\n "neutral_on": [\n "agricraft:nitor_wart",\n "minecraft:wither_rose"\n ],\n "negative_on": [],\n "particles": [\n {\n "amount": 2,\n "delta_x": 0.6,\n "delta_y": 0.4,\n "delta_z": 0.6,\n "particle": "minecraft:happy_villager",\n "when": [\n "positive"\n ]\n },\n {\n "amount": 2,\n "delta_x": 0.6,\n "delta_y": 0.4,\n "delta_z": 0.6,\n "particle": "minecraft:smoke",\n "when": [\n "negative"\n ]\n }\n ]\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"plant-tags",children:"Plant tags"}),"\n",(0,i.jsxs)(n.p,{children:["To simplify maintaining ",(0,i.jsx)(n.code,{children:"neutral_on"})," and ",(0,i.jsx)(n.code,{children:"negative_on"})," fields, you can make plant tags. Plant tags are similar to block or item tags, but for plants instead."]}),"\n",(0,i.jsxs)(n.p,{children:["They must be placed in the directory ",(0,i.jsx)(n.code,{children:"data//tags/agricraft/plants/.json"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"The example below shows a tag that contains all tulip plants:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "values": [\n "minecraft:white_tulip",\n "minecraft:pink_tulip",\n "minecraft:orange_tulip",\n "minecraft:red_tulip"\n ]\n}\n'})})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>s});var i=t(7294);const r={},a=i.createContext(r);function s(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8b409f7b.e8aedb56.js b/assets/js/8b409f7b.e8aedb56.js deleted file mode 100644 index 040a85a..0000000 --- a/assets/js/8b409f7b.e8aedb56.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[663],{4708:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(5893),i=r(1151);const a={},o="Fertilizer",s={id:"customization/fertilizer",title:"Fertilizer",description:"Fertilizers are items used to force growth tick of the plant (i.e. making the plant grow faster).",source:"@site/docs/customization/fertilizer.md",sourceDirName:"customization",slug:"/customization/fertilizer",permalink:"/docs/customization/fertilizer",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/fertilizer.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Soil",permalink:"/docs/customization/soil"},next:{title:"Weed",permalink:"/docs/customization/weed"}},l={},c=[{value:"Plant tags",id:"plant-tags",level:2}];function d(e){const t={code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,i.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"fertilizer",children:"Fertilizer"}),"\n",(0,n.jsx)(t.p,{children:"Fertilizers are items used to force growth tick of the plant (i.e. making the plant grow faster).\r\nAgriCraft ships default fertilizers (mainly the bone meal), but you can modify them or add new ones with a datapack."}),"\n",(0,n.jsxs)(t.p,{children:["To create your own fertilizer, add a new json file in the directory ",(0,n.jsx)(t.code,{children:"data//agricraft/fertilizers/.json"}),"\r\nwhere ",(0,n.jsx)(t.code,{children:"datapack_id"})," is the id of your datapack and",(0,n.jsx)(t.code,{children:"fertilizer_id"})," is the id of this fertilizer (it can be whatever you want).\r\nIn our case it will be ",(0,n.jsx)(t.code,{children:"tuto"})," and ",(0,n.jsx)(t.code,{children:"tomato_fertilizer"}),"."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-json5",children:'{\r\n // mods needed for the fertilizer to be loaded\r\n "mods": [],\r\n // an array of items representing this fertilizer\r\n "variants": [\r\n {\r\n // tag or element id of items to use\r\n "item": "minecraft:bone_meal"\r\n }\r\n ],\r\n // Determine if the fertilizer trigger mutation in the crop\r\n "trigger_mutation": true,\r\n // Determine if the fertilizer trigger weed growth in the crop\r\n "trigger_weeds": true,\r\n // Determine the potency of the fertilizerk, bigger values equals faster growth\r\n "potency": 1,\r\n // Determine if the fertilizer can reduce the growth of negatively affected plants\r\n "reduce_growth": true,\r\n // Determine if the fertilizer can kill negatively affected plants.\r\n "kill_plant": true,\r\n // The list of unaffected plants by this fertilizer. Can be a tag or element id.\r\n "neutral_on": [\r\n "minecraft:wheat",\r\n ],\r\n // The list of negatively affected plants by the fertilizer\r\n "negative_on": [\r\n ],\r\n // An array of particles that are spawned in the world when the fertilizer is used on a plant.\r\n "particles": [\r\n {\r\n // The amount of particles\r\n "amount": 2,\r\n // How far from the center of the block the particle can spawn (X axis)\r\n "delta_x": 0.6,\r\n // How high from the center of the block the particle can spawn (Y axis)\r\n "delta_y": 0.4,\r\n // How high from the center of the block the particle can spawn (Z axis)\r\n "delta_z": 0.6,\r\n // The id of the particle\r\n "particle": "minecraft:happy_villager",\r\n // Determine when the particle should spawn\r\n "when": [\r\n "positive",\r\n "neutral",\r\n "negative"\r\n ]\r\n },\r\n {\r\n "amount": 2,\r\n "delta_x": 0.6,\r\n "delta_y": 0.4,\r\n "delta_z": 0.6,\r\n "particle": "minecraft:smoke",\r\n "when": [\r\n "negative"\r\n ]\r\n }\r\n ],\r\n}\n'})}),"\n",(0,n.jsx)(t.h2,{id:"plant-tags",children:"Plant tags"}),"\n",(0,n.jsxs)(t.p,{children:["Plant tags are like block tags or item tags, but for plants instead.\r\nThey must be placed in the directory ",(0,n.jsx)(t.code,{children:"data//tags/agricraft/plants/.json"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1151:(e,t,r)=>{r.d(t,{Z:()=>s,a:()=>o});var n=r(7294);const i={},a=n.createContext(i);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8d480cc8.9b1f7a28.js b/assets/js/8d480cc8.9b1f7a28.js deleted file mode 100644 index dbf5e4f..0000000 --- a/assets/js/8d480cc8.9b1f7a28.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[155],{8263:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>r,toc:()=>l});var n=i(5893),s=i(1151);const a={},o="Frequently Asked Questions",r={id:"wiki/faq",title:"Frequently Asked Questions",description:"How do I prevent a plant from spawning? How do I disable it?",source:"@site/docs/wiki/faq.md",sourceDirName:"wiki",slug:"/wiki/faq",permalink:"/docs/wiki/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/wiki/faq.md",tags:[],version:"current",frontMatter:{},sidebar:"wikiSidebar",previous:{title:"AgriCraft",permalink:"/docs/wiki/"},next:{title:"Mutation Chance Calculator",permalink:"/docs/wiki/mutation-calculator"}},d={},l=[{value:"How do I prevent a plant from spawning? How do I disable it?",id:"how-do-i-prevent-a-plant-from-spawning-how-do-i-disable-it",level:2},{value:"How do I disable weeds?",id:"how-do-i-disable-weeds",level:2},{value:"Why won't some plant seeds don't stack with others?",id:"why-wont-some-plant-seeds-dont-stack-with-others",level:2},{value:"How do I use fertilizers from other mods?",id:"how-do-i-use-fertilizers-from-other-mods",level:2},{value:"Why can't I put the seed into the Seed Analyzer?",id:"why-cant-i-put-the-seed-into-the-seed-analyzer",level:2},{value:"How can I use the Seed Analyzer?",id:"how-can-i-use-the-seed-analyzer",level:2},{value:"How can I give myself a seed with specific genes values?",id:"how-can-i-give-myself-a-seed-with-specific-genes-values",level:2}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-prevent-a-plant-from-spawning-how-do-i-disable-it",children:"How do I prevent a plant from spawning? How do I disable it?"}),"\n",(0,n.jsxs)(t.p,{children:["Like you would disable a recipe in minecraft, create a datapack that replace the corresponding JSON file by a file that contains just the following text: ",(0,n.jsx)(t.code,{children:"{}"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-disable-weeds",children:"How do I disable weeds?"}),"\n",(0,n.jsx)(t.p,{children:"Same as with any other plant."}),"\n",(0,n.jsx)(t.h2,{id:"why-wont-some-plant-seeds-dont-stack-with-others",children:"Why won't some plant seeds don't stack with others?"}),"\n",(0,n.jsxs)(t.p,{children:["Probably because one of those stack doesn't have the same genes as the other. Each gene is saved in the itemstack.\nThe tooltip should show some of it. However, some genes are hidden by default.\nYou need to change the value ",(0,n.jsx)(t.code,{children:"todo"})," to true in the config to be able to see these hidden genes."]}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-use-fertilizers-from-other-mods",children:"How do I use fertilizers from other mods?"}),"\n",(0,n.jsxs)(t.p,{children:["Create the corresponding ",(0,n.jsx)(t.a,{href:"../customization/fertilizer",children:"fertilizer json"}),".\nSome mods fertilizers should already be present, if not, tell us on GitHub or Discord, so we can add them."]}),"\n",(0,n.jsx)(t.h2,{id:"why-cant-i-put-the-seed-into-the-seed-analyzer",children:"Why can't I put the seed into the Seed Analyzer?"}),"\n",(0,n.jsxs)(t.p,{children:["The seed is probably not supported by default. Check the default seed datapack for agricraft (you can have a web version\non the ",(0,n.jsx)(t.a,{href:"https://github.com/AgriCraft/AgriCraft/todo",children:"GitHub repository"}),") for a folder for the mod and the plant it this folder.\nIf there isn't, consider adding the plant yourself by following the ",(0,n.jsx)(t.a,{href:"/docs/customization/plant",children:"seed customization tutorial"}),",\nor ask us to add it on GitHub or Discord."]}),"\n",(0,n.jsx)(t.h2,{id:"how-can-i-use-the-seed-analyzer",children:"How can I use the Seed Analyzer?"}),"\n",(0,n.jsx)(t.p,{children:"Right-click to open the seed analyzer and Shift-right-click with a seed or a journal in your hand to insert it in the analyzer.\nIf the journal is present in the analyzer, and you analyze a seed, the page for that seed will show up in the journal."}),"\n",(0,n.jsx)(t.h2,{id:"how-can-i-give-myself-a-seed-with-specific-genes-values",children:"How can I give myself a seed with specific genes values?"}),"\n",(0,n.jsx)(t.p,{children:"There is two ways to give you a seed with specific values:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Use the AgriCraft give command as follows:","\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed "}),": give the seed for the given plant with default stats (1 to every stat)"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed all "}),": give the seed for the given plant with each stat set to the given value (must be between 1 and 10)"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed distinct "}),": give the seed for the given plant with each stat set to their own value. The format is the values with a comma between, ordered by the stats id alphabetical order.\nExample: To have a plant with the following stats: fertility=1, gain=2, growth=3, mutativity=4, resistance=5, strength=6; the command is ",(0,n.jsx)(t.code,{children:"/agricraft_seed distinct 1,2,3,4,5,6"}),"."]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(t.li,{children:"Use the Minecraft give command and set the nbt of the AgriCraft seed according to your need."}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>r,a:()=>o});var n=i(7294);const s={},a=n.createContext(s);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8d480cc8.f6746b9f.js b/assets/js/8d480cc8.f6746b9f.js new file mode 100644 index 0000000..e9173af --- /dev/null +++ b/assets/js/8d480cc8.f6746b9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[155],{8263:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var n=i(5893),s=i(1151);const o={},r="Frequently Asked Questions",a={id:"wiki/faq",title:"Frequently Asked Questions",description:"How do I prevent a plant from spawning? How do I disable it?",source:"@site/docs/wiki/faq.md",sourceDirName:"wiki",slug:"/wiki/faq",permalink:"/docs/wiki/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/wiki/faq.md",tags:[],version:"current",frontMatter:{},sidebar:"wikiSidebar",previous:{title:"AgriCraft",permalink:"/docs/wiki/"},next:{title:"Mutation Chance Calculator",permalink:"/docs/wiki/mutation-calculator"}},d={},l=[{value:"How do I prevent a plant from spawning? How do I disable it?",id:"how-do-i-prevent-a-plant-from-spawning-how-do-i-disable-it",level:2},{value:"How do I disable weeds?",id:"how-do-i-disable-weeds",level:2},{value:"Why won't some plant seeds stack with others?",id:"why-wont-some-plant-seeds-stack-with-others",level:2},{value:"How do I use fertilizers from other mods?",id:"how-do-i-use-fertilizers-from-other-mods",level:2},{value:"How can I use the Seed Analyzer?",id:"how-can-i-use-the-seed-analyzer",level:2},{value:"Why can't I put the seed into the Seed Analyzer?",id:"why-cant-i-put-the-seed-into-the-seed-analyzer",level:2},{value:"How can I give myself a seed with specific gene values?",id:"how-can-i-give-myself-a-seed-with-specific-gene-values",level:2}];function h(e){const t={a:"a",br:"br",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-prevent-a-plant-from-spawning-how-do-i-disable-it",children:"How do I prevent a plant from spawning? How do I disable it?"}),"\n",(0,n.jsxs)(t.p,{children:["To properly remove plants or their mutations, use the ",(0,n.jsx)(t.code,{children:"filter"})," option in ",(0,n.jsx)(t.code,{children:"pack.mcmeta"}),". You can find more information ",(0,n.jsx)(t.a,{href:"/docs/customization/removing-data",children:"here"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-disable-weeds",children:"How do I disable weeds?"}),"\n",(0,n.jsxs)(t.p,{children:["To disable weeds altogether, set ",(0,n.jsx)(t.code,{children:"disable_weeds"})," in the AgriCraft config to ",(0,n.jsx)(t.code,{children:"true"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["To remove a specific weed type, follow the same method as for removing ",(0,n.jsx)(t.a,{href:"/docs/customization/removing-data",children:"plants"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"why-wont-some-plant-seeds-stack-with-others",children:"Why won't some plant seeds stack with others?"}),"\n",(0,n.jsxs)(t.p,{children:["Every seed contains multiple genes. If these genes aren't identical, the seeds won't stack.",(0,n.jsx)(t.br,{}),"\n","The tooltip should show some of them. However, some genes are hidden by default or through the config."]}),"\n",(0,n.jsx)(t.p,{children:"You can see the entire seed genotype by planting it and using the Magnifying Glass."}),"\n",(0,n.jsx)(t.p,{children:"Suspiciously Savvy Seed Sorting Sack can also help by holding multiple seeds with different genes in your inventory."}),"\n",(0,n.jsx)(t.h2,{id:"how-do-i-use-fertilizers-from-other-mods",children:"How do I use fertilizers from other mods?"}),"\n",(0,n.jsxs)(t.p,{children:["Create the corresponding ",(0,n.jsx)(t.a,{href:"/docs/customization/fertilizer",children:"fertilizer json"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["If a mod is ",(0,n.jsx)(t.a,{href:"/docs/wiki/",children:"supported"})," by AgriCraft, the fertilizer should work out of the box. If it doesn't, tell us on GitHub or Discord so we can add it."]}),"\n",(0,n.jsx)(t.h2,{id:"how-can-i-use-the-seed-analyzer",children:"How can I use the Seed Analyzer?"}),"\n",(0,n.jsx)(t.p,{children:"Shift Right Click with a seed or a journal in your hand to insert it into the analyzer. Shift Right Click again to remove items from the analyzer."}),"\n",(0,n.jsx)(t.p,{children:"When the seed is present in the analyzer, analyzing a seed will create a corresponding page in the journal."}),"\n",(0,n.jsx)(t.h2,{id:"why-cant-i-put-the-seed-into-the-seed-analyzer",children:"Why can't I put the seed into the Seed Analyzer?"}),"\n",(0,n.jsx)(t.p,{children:"If you follow the instructions above and it still doesn't work, the seed might not be supported by AgriCraft. Check whether an AgriCraft version of the seed exists in JEI/EMI or in the Creative Inventory."}),"\n",(0,n.jsxs)(t.p,{children:["If it doesn't, consider adding the plant yourself by following the ",(0,n.jsx)(t.a,{href:"/docs/customization/plant",children:"seed customization tutorial"}),", or ask us on GitHub or Discord to add it."]}),"\n",(0,n.jsx)(t.h2,{id:"how-can-i-give-myself-a-seed-with-specific-gene-values",children:"How can I give myself a seed with specific gene values?"}),"\n",(0,n.jsx)(t.p,{children:"There are two ways to give yourself a seed with specific values:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsx)(t.li,{children:"Use the AgriCraft give command:"}),"\n"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed "}),": gives the seed for the specified plant with default stats (1 for every stat)."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed all "}),": gives the seed for the specified plant with each stat set to the specified value (must be between 1 and 10)."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/agricraft_seed distinct "}),": gives the seed for the specified plant with each stat set to its own value. The format is the values with a hyphen between, ordered by the stats' ID in alphabetical order.\nExample: To have a plant with the following stats: fertility=1, gain=2, growth=3, mutativity=4, resistance=5, strength=6, use the command: ",(0,n.jsx)(t.code,{children:"/agricraft_seed distinct 1-2-3-4-5-6"}),"."]}),"\n"]}),"\n",(0,n.jsxs)(t.ol,{start:"2",children:["\n",(0,n.jsx)(t.li,{children:"Use the Minecraft give command and set the NBT of the AgriCraft seed according to your needs:"}),"\n"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.code,{children:"/give agricraft:seed"}),"\nExample: To give yourself Wheat Seeds with default stats, use the following command:\n",(0,n.jsx)(t.code,{children:'/give @p agricraft:seed{genes:{fertility:{dom:1,rec:1},gain:{dom:1,rec:1},growth:{dom:1,rec:1},mutativity:{dom:1,rec:1},resistance:{dom:1,rec:1},species:{dom:"minecraft:wheat",rec:"minecraft:wheat"},strength:{dom:1,rec:1}}}'})]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>a,a:()=>r});var n=i(7294);const s={},o=n.createContext(s);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.fd380df3.js b/assets/js/935f2afb.13b6e749.js similarity index 63% rename from assets/js/935f2afb.fd380df3.js rename to assets/js/935f2afb.13b6e749.js index f64c140..348aee5 100644 --- a/assets/js/935f2afb.fd380df3.js +++ b/assets/js/935f2afb.13b6e749.js @@ -1 +1 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[53],{1109:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"customizationSidebar":[{"type":"link","label":"AgriCraft Customization","href":"/docs/customization/","docId":"customization/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/plant","docId":"customization/plant","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/mutation","docId":"customization/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/soil","docId":"customization/soil","unlisted":false},{"type":"link","label":"Fertilizer","href":"/docs/customization/fertilizer","docId":"customization/fertilizer","unlisted":false},{"type":"link","label":"Weed","href":"/docs/customization/weed","docId":"customization/weed","unlisted":false},{"type":"link","label":"Wrapping up","href":"/docs/customization/wrapping-up","docId":"customization/wrapping-up","unlisted":false},{"type":"link","label":"Tolerance calculator","href":"/docs/customization/tolerance-calculator","docId":"customization/tolerance-calculator","unlisted":false},{"type":"category","label":"Other versions","items":[{"type":"category","label":"1.16 & 1.18","items":[{"type":"link","label":"AgriCraft JSON","href":"/docs/customization/1.18/","docId":"customization/1.18/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/1.18/plant","docId":"customization/1.18/plant","unlisted":false},{"type":"link","label":"Weed","href":"/docs/customization/1.18/weed","docId":"customization/1.18/weed","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/1.18/mutation","docId":"customization/1.18/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/1.18/soil","docId":"customization/1.18/soil","unlisted":false},{"type":"link","label":"Fertilizer","href":"/docs/customization/1.18/fertilizer","docId":"customization/1.18/fertilizer","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"1.12","items":[{"type":"link","label":"AgriCraft JSON","href":"/docs/customization/1.12/","docId":"customization/1.12/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/1.12/plant","docId":"customization/1.12/plant","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/1.12/mutation","docId":"customization/1.12/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/1.12/soil","docId":"customization/1.12/soil","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}],"wikiSidebar":[{"type":"link","label":"AgriCraft","href":"/docs/wiki/","docId":"wiki/index","unlisted":false},{"type":"link","label":"Frequently Asked Questions","href":"/docs/wiki/faq","docId":"wiki/faq","unlisted":false},{"type":"link","label":"Mutation Chance Calculator","href":"/docs/wiki/mutation-calculator","docId":"wiki/mutation-calculator","unlisted":false},{"type":"category","label":"Blocks & Items","items":[{"type":"link","label":"analyzer","href":"/docs/wiki/block-item/analyzer","docId":"wiki/block-item/analyzer","unlisted":false},{"type":"link","label":"journal","href":"/docs/wiki/block-item/journal","docId":"wiki/block-item/journal","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/block-item"}]},"docs":{"customization/1.12/index":{"id":"customization/1.12/index","title":"AgriCraft JSON (for Minecraft 1.12)","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Customization!","sidebar":"customizationSidebar"},"customization/1.12/mutation":{"id":"customization/1.12/mutation","title":"AgriCraft Mutation JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.12/plant":{"id":"customization/1.12/plant","title":"AgriCraft Plant JSON","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Custom Plants!","sidebar":"customizationSidebar"},"customization/1.12/soil":{"id":"customization/1.12/soil","title":"AgriCraft Soil JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/fertilizer":{"id":"customization/1.18/fertilizer","title":"AgriCraft Fertilizer JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/index":{"id":"customization/1.18/index","title":"AgriCraft JSON (for Minecraft 1.16 & 1.18)","description":"AgriCraft 3.0.0 updated the JSON Customization introduced in AgriCraft 2.0.0.","sidebar":"customizationSidebar"},"customization/1.18/mutation":{"id":"customization/1.18/mutation","title":"AgriCraft Mutation JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/plant":{"id":"customization/1.18/plant","title":"AgriCraft Plant JSON","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Custom Plants!","sidebar":"customizationSidebar"},"customization/1.18/soil":{"id":"customization/1.18/soil","title":"AgriCraft Soil JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/weed":{"id":"customization/1.18/weed","title":"AgriCraft Weed JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/fertilizer":{"id":"customization/fertilizer","title":"Fertilizer","description":"Fertilizers are items used to force growth tick of the plant (i.e. making the plant grow faster).","sidebar":"customizationSidebar"},"customization/index":{"id":"customization/index","title":"AgriCraft Customization","description":"This documentation will guide you on how to customize AgriCraft 3.2.0 with a datapack and a resourcepack.","sidebar":"customizationSidebar"},"customization/mutation":{"id":"customization/mutation","title":"Mutation","description":"Mutations are a way to create new breeds of plants from two plants.","sidebar":"customizationSidebar"},"customization/plant":{"id":"customization/plant","title":"Plant","description":"This page will guide you to create a custom plant for AgriCraft.","sidebar":"customizationSidebar"},"customization/soil":{"id":"customization/soil","title":"Soil","description":"Soils are blocks where crops can grow on.","sidebar":"customizationSidebar"},"customization/tolerance-calculator":{"id":"customization/tolerance-calculator","title":"Tolerance calculator","description":"A calculator to determine the tolerance factor for each soil requirements of the plant.","sidebar":"customizationSidebar"},"customization/weed":{"id":"customization/weed","title":"Weed","description":"Weeds are configured almost like the plants.","sidebar":"customizationSidebar"},"customization/wrapping-up":{"id":"customization/wrapping-up","title":"Wrapping up","description":"If you followed all the customization tutorials, you\'ll have the following files in your data+resourcepack:","sidebar":"customizationSidebar"},"wiki/block-item/analyzer":{"id":"wiki/block-item/analyzer","title":"analyzer","description":"","sidebar":"wikiSidebar"},"wiki/block-item/journal":{"id":"wiki/block-item/journal","title":"journal","description":"","sidebar":"wikiSidebar"},"wiki/faq":{"id":"wiki/faq","title":"Frequently Asked Questions","description":"How do I prevent a plant from spawning? How do I disable it?","sidebar":"wikiSidebar"},"wiki/index":{"id":"wiki/index","title":"AgriCraft","description":"AgriCraft is a mod which aims to bring crop breeding to Minecraft, this includes both improving your existing crops,","sidebar":"wikiSidebar"},"wiki/mutation-calculator":{"id":"wiki/mutation-calculator","title":"Mutation Chance Calculator","description":"let maxFertility = 10, maxMutativity = 10;","sidebar":"wikiSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[53],{1109:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"customizationSidebar":[{"type":"link","label":"AgriCraft Customization","href":"/docs/customization/","docId":"customization/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/plant","docId":"customization/plant","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/mutation","docId":"customization/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/soil","docId":"customization/soil","unlisted":false},{"type":"link","label":"Fertilizer","href":"/docs/customization/fertilizer","docId":"customization/fertilizer","unlisted":false},{"type":"link","label":"Weed","href":"/docs/customization/weed","docId":"customization/weed","unlisted":false},{"type":"link","label":"Wrapping up","href":"/docs/customization/wrapping-up","docId":"customization/wrapping-up","unlisted":false},{"type":"link","label":"Tolerance calculator","href":"/docs/customization/tolerance-calculator","docId":"customization/tolerance-calculator","unlisted":false},{"type":"category","label":"Other versions","items":[{"type":"category","label":"1.16 & 1.18","items":[{"type":"link","label":"AgriCraft JSON","href":"/docs/customization/1.18/","docId":"customization/1.18/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/1.18/plant","docId":"customization/1.18/plant","unlisted":false},{"type":"link","label":"Weed","href":"/docs/customization/1.18/weed","docId":"customization/1.18/weed","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/1.18/mutation","docId":"customization/1.18/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/1.18/soil","docId":"customization/1.18/soil","unlisted":false},{"type":"link","label":"Fertilizer","href":"/docs/customization/1.18/fertilizer","docId":"customization/1.18/fertilizer","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"1.12","items":[{"type":"link","label":"AgriCraft JSON","href":"/docs/customization/1.12/","docId":"customization/1.12/index","unlisted":false},{"type":"link","label":"Plant","href":"/docs/customization/1.12/plant","docId":"customization/1.12/plant","unlisted":false},{"type":"link","label":"Mutation","href":"/docs/customization/1.12/mutation","docId":"customization/1.12/mutation","unlisted":false},{"type":"link","label":"Soil","href":"/docs/customization/1.12/soil","docId":"customization/1.12/soil","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true}],"wikiSidebar":[{"type":"link","label":"AgriCraft","href":"/docs/wiki/","docId":"wiki/index","unlisted":false},{"type":"link","label":"Frequently Asked Questions","href":"/docs/wiki/faq","docId":"wiki/faq","unlisted":false},{"type":"link","label":"Mutation Chance Calculator","href":"/docs/wiki/mutation-calculator","docId":"wiki/mutation-calculator","unlisted":false},{"type":"category","label":"Blocks & Items","items":[{"type":"link","label":"analyzer","href":"/docs/wiki/block-item/analyzer","docId":"wiki/block-item/analyzer","unlisted":false},{"type":"link","label":"journal","href":"/docs/wiki/block-item/journal","docId":"wiki/block-item/journal","unlisted":false}],"collapsed":true,"collapsible":true,"href":"/docs/block-item"}]},"docs":{"customization/1.12/index":{"id":"customization/1.12/index","title":"AgriCraft JSON (for Minecraft 1.12)","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Customization!","sidebar":"customizationSidebar"},"customization/1.12/mutation":{"id":"customization/1.12/mutation","title":"AgriCraft Mutation JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.12/plant":{"id":"customization/1.12/plant","title":"AgriCraft Plant JSON","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Custom Plants!","sidebar":"customizationSidebar"},"customization/1.12/soil":{"id":"customization/1.12/soil","title":"AgriCraft Soil JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/fertilizer":{"id":"customization/1.18/fertilizer","title":"AgriCraft Fertilizer JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/index":{"id":"customization/1.18/index","title":"AgriCraft JSON (for Minecraft 1.16 & 1.18)","description":"AgriCraft 3.0.0 updated the JSON Customization introduced in AgriCraft 2.0.0.","sidebar":"customizationSidebar"},"customization/1.18/mutation":{"id":"customization/1.18/mutation","title":"AgriCraft Mutation JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/plant":{"id":"customization/1.18/plant","title":"AgriCraft Plant JSON","description":"AgriCraft 2.0.0 introduces an exciting new feature: JSON Custom Plants!","sidebar":"customizationSidebar"},"customization/1.18/soil":{"id":"customization/1.18/soil","title":"AgriCraft Soil JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/1.18/weed":{"id":"customization/1.18/weed","title":"AgriCraft Weed JSON","description":"Structure","sidebar":"customizationSidebar"},"customization/fertilizer":{"id":"customization/fertilizer","title":"Fertilizer","description":"Fertilizers are items used make the plant grow faster by forcing a growth tick of the plant. AgriCraft ships default fertilizers such as bone meal, but these can be modified and new fertilizers can be added.","sidebar":"customizationSidebar"},"customization/index":{"id":"customization/index","title":"AgriCraft Customization","description":"This guide will help you customize AgriCraft 4.0 using a datapack and a resourcepack. It is assumed you have experience creating datapacks and resourcepacks for Minecraft.","sidebar":"customizationSidebar"},"customization/mutation":{"id":"customization/mutation","title":"Mutation","description":"Mutations are a method to grow new plant breeds from two existing plants. AgriCraft includes default mutations for various plants, which can be modified, and new mutations can also be added.","sidebar":"customizationSidebar"},"customization/plant":{"id":"customization/plant","title":"Plant","description":"This page will guide you through the process of creating a custom plant for AgriCraft.","sidebar":"customizationSidebar"},"customization/removing-data":{"id":"customization/removing-data","title":"Removing Default Data","description":"You can remove existing data (such as plants, mutations, etc.) using the filter block in your datapack\'s pack.mcmeta file. The filter block supports regular expressions (regex), making the process more efficient."},"customization/soil":{"id":"customization/soil","title":"Soil","description":"Soils are blocks crops can grow on. AgriCraft ships default soils, but these can be modified and new soils can be added with a datapack.","sidebar":"customizationSidebar"},"customization/tolerance-calculator":{"id":"customization/tolerance-calculator","title":"Tolerance calculator","description":"A calculator to determine the tolerance factor for each soil requirements of the plant.","sidebar":"customizationSidebar"},"customization/weed":{"id":"customization/weed","title":"Weed","description":"Weeds are configured almost like the plants.","sidebar":"customizationSidebar"},"customization/wrapping-up":{"id":"customization/wrapping-up","title":"Wrapping up","description":"If you followed all the customization tutorials, you\'ll have the following files in your data+resourcepack:","sidebar":"customizationSidebar"},"wiki/block-item/analyzer":{"id":"wiki/block-item/analyzer","title":"analyzer","description":"","sidebar":"wikiSidebar"},"wiki/block-item/journal":{"id":"wiki/block-item/journal","title":"journal","description":"","sidebar":"wikiSidebar"},"wiki/faq":{"id":"wiki/faq","title":"Frequently Asked Questions","description":"How do I prevent a plant from spawning? How do I disable it?","sidebar":"wikiSidebar"},"wiki/index":{"id":"wiki/index","title":"AgriCraft","description":"AgriCraft is a mod which aims to bring crop breeding to Minecraft. This includes both improving your existing crops and cross-breeding to mutate them into new species of crops.","sidebar":"wikiSidebar"},"wiki/mutation-calculator":{"id":"wiki/mutation-calculator","title":"Mutation Chance Calculator","description":"let maxFertility = 10, maxMutativity = 10;","sidebar":"wikiSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/93a501ed.9a1d6e94.js b/assets/js/93a501ed.9a1d6e94.js new file mode 100644 index 0000000..c2f6b05 --- /dev/null +++ b/assets/js/93a501ed.9a1d6e94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[8],{678:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>d});var n=i(5893),a=i(1151);const r={hide_table_of_contents:!0},o="AgriCraft Customization",s={id:"customization/index",title:"AgriCraft Customization",description:"This guide will help you customize AgriCraft 4.0 using a datapack and a resourcepack. It is assumed you have experience creating datapacks and resourcepacks for Minecraft.",source:"@site/docs/customization/index.md",sourceDirName:"customization",slug:"/customization/",permalink:"/docs/customization/",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/index.md",tags:[],version:"current",frontMatter:{hide_table_of_contents:!0},sidebar:"customizationSidebar",next:{title:"Plant",permalink:"/docs/customization/plant"}},c={},d=[{value:"Migrating from AgriCraft 3.1.0 to 4.0",id:"migrating-from-agricraft-310-to-40",level:2}];function l(t){const e={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"agricraft-customization",children:"AgriCraft Customization"}),"\n",(0,n.jsx)(e.p,{children:"This guide will help you customize AgriCraft 4.0 using a datapack and a resourcepack. It is assumed you have experience creating datapacks and resourcepacks for Minecraft."}),"\n",(0,n.jsx)(e.p,{children:"To add additional content, refer to one of the five sections, each corresponding to a specific datapack registry exposed by AgriCraft"}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsx)(e.li,{children:(0,n.jsx)(e.a,{href:"/docs/customization/plant",children:"Add a new plant"})}),"\n",(0,n.jsx)(e.li,{children:(0,n.jsx)(e.a,{href:"/docs/customization/mutation",children:"Add a new plant mutation"})}),"\n",(0,n.jsx)(e.li,{children:(0,n.jsx)(e.a,{href:"/docs/customization/soil",children:"Add a new soil"})}),"\n",(0,n.jsx)(e.li,{children:(0,n.jsx)(e.a,{href:"/docs/customization/fertilizer",children:"Add a new fertilizer"})}),"\n",(0,n.jsx)(e.li,{children:(0,n.jsx)(e.a,{href:"/docs/customization/weed",children:"Add a new weed"})}),"\n"]}),"\n",(0,n.jsxs)(e.p,{children:["Additionally, you can learn how to ",(0,n.jsx)(e.a,{href:"/docs/customization/removing-data",children:"remove default plants, mutations and more"}),"."]}),"\n",(0,n.jsx)(e.h2,{id:"migrating-from-agricraft-310-to-40",children:"Migrating from AgriCraft 3.1.0 to 4.0"}),"\n",(0,n.jsxs)(e.p,{children:["The tool to migrate your AgriCraft data to 4.0's datapack and resourcepack system can be found ",(0,n.jsx)(e.a,{href:"https://github.com/PiotrO15/AgriCraft-Data-Converter",children:"here"}),"."]})]})}function u(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},1151:(t,e,i)=>{i.d(e,{Z:()=>s,a:()=>o});var n=i(7294);const a={},r=n.createContext(a);function o(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:o(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/93a501ed.ad8de7ce.js b/assets/js/93a501ed.ad8de7ce.js deleted file mode 100644 index b5b6b1a..0000000 --- a/assets/js/93a501ed.ad8de7ce.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[8],{678:(t,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var e=n(5893),o=n(1151);const a={hide_table_of_contents:!0},r="AgriCraft Customization",s={id:"customization/index",title:"AgriCraft Customization",description:"This documentation will guide you on how to customize AgriCraft 3.2.0 with a datapack and a resourcepack.",source:"@site/docs/customization/index.md",sourceDirName:"customization",slug:"/customization/",permalink:"/docs/customization/",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/index.md",tags:[],version:"current",frontMatter:{hide_table_of_contents:!0},sidebar:"customizationSidebar",next:{title:"Plant",permalink:"/docs/customization/plant"}},c={},d=[{value:"Migrating from AgriCraft 3.1.0 to 4.0",id:"migrating-from-agricraft-310-to-40",level:2}];function l(t){const i={a:"a",br:"br",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.a)(),...t.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.h1,{id:"agricraft-customization",children:"AgriCraft Customization"}),"\n",(0,e.jsxs)(i.p,{children:["This documentation will guide you on how to customize AgriCraft 3.2.0 with a datapack and a resourcepack.",(0,e.jsx)(i.br,{}),"\n","It is assumed you know how to create datapacks and resourcepacks for Minecraft."]}),"\n",(0,e.jsx)(i.p,{children:"This guide is split on 5 parts, one for each datapack registry AgriCraft exposes:"}),"\n",(0,e.jsxs)(i.ul,{children:["\n",(0,e.jsx)(i.li,{children:(0,e.jsx)(i.a,{href:"/docs/customization/plant",children:"Add a new plant"})}),"\n",(0,e.jsx)(i.li,{children:(0,e.jsx)(i.a,{href:"/docs/customization/mutation",children:"Add a new plant mutation"})}),"\n",(0,e.jsx)(i.li,{children:(0,e.jsx)(i.a,{href:"/docs/customization/soil",children:"Add a new soil"})}),"\n",(0,e.jsx)(i.li,{children:(0,e.jsx)(i.a,{href:"/docs/customization/fertilizer",children:"Add a new fertilizer"})}),"\n",(0,e.jsx)(i.li,{children:(0,e.jsx)(i.a,{href:"/docs/customization/weed",children:"Add a new weed"})}),"\n"]}),"\n",(0,e.jsx)(i.h2,{id:"migrating-from-agricraft-310-to-40",children:"Migrating from AgriCraft 3.1.0 to 4.0"}),"\n",(0,e.jsx)(i.p,{children:"A tool will be provided to easily migrate your custom config.\nThis will be updated when the tool is available."})]})}function u(t={}){const{wrapper:i}={...(0,o.a)(),...t.components};return i?(0,e.jsx)(i,{...t,children:(0,e.jsx)(l,{...t})}):l(t)}},1151:(t,i,n)=>{n.d(i,{Z:()=>s,a:()=>r});var e=n(7294);const o={},a=e.createContext(o);function r(t){const i=e.useContext(a);return e.useMemo((function(){return"function"==typeof t?t(i):{...i,...t}}),[i,t])}function s(t){let i;return i=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),e.createElement(a.Provider,{value:i},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/9ca9907f.ba9d1c13.js b/assets/js/9ca9907f.ba9d1c13.js deleted file mode 100644 index 8928d4f..0000000 --- a/assets/js/9ca9907f.ba9d1c13.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[101],{583:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var r=t(5893),a=t(1151);const s={},i="Weed",o={id:"customization/weed",title:"Weed",description:"Weeds are configured almost like the plants.",source:"@site/docs/customization/weed.md",sourceDirName:"customization",slug:"/customization/weed",permalink:"/docs/customization/weed",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/weed.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Fertilizer",permalink:"/docs/customization/fertilizer"},next:{title:"Wrapping up",permalink:"/docs/customization/wrapping-up"}},c={},d=[{value:"Datapack",id:"datapack",level:2},{value:"Resourcepack",id:"resourcepack",level:2},{value:"Textures",id:"textures",level:3},{value:"Translation",id:"translation",level:3}];function l(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"weed",children:"Weed"}),"\n",(0,r.jsx)(n.p,{children:"Weeds are configured almost like the plants."}),"\n",(0,r.jsx)(n.h2,{id:"datapack",children:"Datapack"}),"\n",(0,r.jsxs)(n.p,{children:["As with plants, the datapack part consists of one json defining the weed.\r\nThe location of the file is ",(0,r.jsx)(n.code,{children:"data//agricraft/weeds/.json"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"The scheme of the file is as follows:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json5",children:'{\r\n // mods needed for the weed to be loaded\r\n "mods": [],\r\n // An array containing the height of the weed for each growth stage.\r\n "stages": [\r\n 2,\r\n 4,\r\n 6,\r\n 8,\r\n 10,\r\n 12,\r\n 14,\r\n 16\r\n ],\r\n // The chance the weed has of spawning on a random tick [range: 0.0-1.0].\r\n "spawn_chance": 0.25,\r\n // The chance the weed has of growing on a random tick [range: 0.0-1.0].\r\n "growth_chance": 0.9,\r\n // Defines if a weed is aggressive, aggressive weeds will try to spread to adjacent crops when mature.\r\n "aggressive": true,\r\n // Defines if a weed is lethal, lethal weeds will try to kill the host plant when mature.\r\n "lethal": true,\r\n // A list containing the possible raking products of the weed. The rake products have the same scheme as the plant products.\r\n "rake_products": [],\r\n // Determines the growth requirements of the weed. It is the same format as the plant requirements.\r\n "requirement": {\r\n "soil_humidity": {\r\n "condition": "damp",\r\n "type": "equal",\r\n "tolerance_factor": 0.15\r\n },\r\n "soil_acidity": {\r\n "condition": "neutral",\r\n "type": "equal",\r\n "tolerance_factor": 0.2\r\n },\r\n "soil_nutrients": {\r\n "condition": "medium",\r\n "type": "equal_or_higher",\r\n "tolerance_factor": 0.1\r\n },\r\n "min_light": 10,\r\n "max_light": 16,\r\n "light_tolerance_factor": 0.5,\r\n "seasons": [\r\n "spring",\r\n "summer",\r\n "autumn",\r\n "winter"\r\n ],\r\n "block_conditions": [],\r\n "fluid": {\r\n "fluid": "minecraft:empty",\r\n "states": [],\r\n }\r\n }\r\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"resourcepack",children:"Resourcepack"}),"\n",(0,r.jsxs)(n.p,{children:["The resourcepack part describe how the weed is rendered, and follows the same architecture as the plants resourcepack part.\r\nHowever, the models must be placed in the folder ",(0,r.jsx)(n.code,{children:"weed"})," instead of ",(0,r.jsx)(n.code,{children:"crop"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"textures",children:"Textures"}),"\n",(0,r.jsxs)(n.p,{children:["Agricraft will load the textures from ",(0,r.jsx)(n.code,{children:"textures/weed/"}),", so you can put your weed textures there if you want."]}),"\n",(0,r.jsx)(n.h3,{id:"translation",children:"Translation"}),"\n",(0,r.jsxs)(n.p,{children:["The key use to translate the name of the weed is: ",(0,r.jsx)(n.code,{children:"weed.agricraft.."}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>i});var r=t(7294);const a={},s=r.createContext(a);function i(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9ca9907f.e5de8096.js b/assets/js/9ca9907f.e5de8096.js new file mode 100644 index 0000000..d1de8f6 --- /dev/null +++ b/assets/js/9ca9907f.e5de8096.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[101],{583:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var t=r(5893),s=r(1151);const i={},a="Weed",o={id:"customization/weed",title:"Weed",description:"Weeds are configured almost like the plants.",source:"@site/docs/customization/weed.md",sourceDirName:"customization",slug:"/customization/weed",permalink:"/docs/customization/weed",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/weed.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Fertilizer",permalink:"/docs/customization/fertilizer"},next:{title:"Wrapping up",permalink:"/docs/customization/wrapping-up"}},c={},d=[{value:"Datapack",id:"datapack",level:2},{value:"Resourcepack",id:"resourcepack",level:2},{value:"Textures",id:"textures",level:3},{value:"Translation",id:"translation",level:3}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"weed",children:"Weed"}),"\n",(0,t.jsx)(n.p,{children:"Weeds are configured almost like the plants."}),"\n",(0,t.jsx)(n.h2,{id:"datapack",children:"Datapack"}),"\n",(0,t.jsxs)(n.p,{children:["As with plants, the datapack part consists of one JSON file defining the weed. The location of the file is ",(0,t.jsx)(n.code,{children:"data//agricraft/weeds/.json"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"Weed should have the following fields:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"mods"}),": mods needed for the weed to be loaded."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"stages"}),": list of growth stages for this weed. Every stage should be a number corresponding to the height of the weed in pixels."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"spawn_chance"}),": chance the weed has of spawning on a random tick."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"growth_chance"}),": chance the weed has of growing on a random tick."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"aggressive"}),": if ",(0,t.jsx)(n.code,{children:"true"}),", the weed will try to spread to adjacent crops when mature."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"lethal"}),": if ",(0,t.jsx)(n.code,{children:"true"}),", the weed will try to kill the host plant when mature."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"rake_products"}),": list of possible raking products of the weed. Follows the same structure as ",(0,t.jsx)(n.a,{href:"/docs/customization/plant#Adding-plant-products",children:"plant products"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"requirement"}),": an object containing plant's requirements. Follows the same structure as plants, which is explained ",(0,t.jsx)(n.a,{href:"/docs/customization/plant#Creating-a-simple-plant",children:"here"})," and ",(0,t.jsx)(n.a,{href:"/docs/customization/plant#Adding-additional-requirements",children:"here"}),"."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The example below shows a basic weed:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\r\n "mods": [],\r\n "stages": [\r\n 2,\r\n 4,\r\n 6,\r\n 8,\r\n 10,\r\n 12,\r\n 14,\r\n 16\r\n ],\r\n "spawn_chance": 0.25,\r\n "growth_chance": 0.9,\r\n "aggressive": true,\r\n "lethal": true,\r\n "requirement": {\r\n "light_tolerance_factor": 0.5,\r\n "max_light": 16,\r\n "min_light": 10,\r\n "soil_acidity": {\r\n "type": "equal",\r\n "tolerance_factor": 0.2,\r\n "value": "neutral"\r\n },\r\n "soil_humidity": {\r\n "type": "equal",\r\n "tolerance_factor": 0.15,\r\n "value": "damp"\r\n },\r\n "soil_nutrients": {\r\n "type": "equal_or_higher",\r\n "tolerance_factor": 0.1,\r\n "value": "medium"\r\n },\r\n "seasons": [\r\n "spring",\r\n "summer",\r\n "autumn",\r\n "winter"\r\n ]\r\n }\r\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"resourcepack",children:"Resourcepack"}),"\n",(0,t.jsxs)(n.p,{children:["The resourcepack part describes how the weed is rendered. It follows the same architecture as the ",(0,t.jsx)(n.a,{href:"/docs/customization/plant#Resourcepack",children:"plant resourcepack part"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["The only difference is that the models must be placed in the ",(0,t.jsx)(n.code,{children:"weed"})," folder instead of ",(0,t.jsx)(n.code,{children:"crop"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"textures",children:"Textures"}),"\n",(0,t.jsxs)(n.p,{children:["Agricraft will load the textures from ",(0,t.jsx)(n.code,{children:"textures/weed/"}),", so you can put your weed textures there if you want."]}),"\n",(0,t.jsx)(n.h3,{id:"translation",children:"Translation"}),"\n",(0,t.jsxs)(n.p,{children:["The key used to translate the name of the weed is ",(0,t.jsx)(n.code,{children:"weed.agricraft.."}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>o,a:()=>a});var t=r(7294);const s={},i=t.createContext(s);function a(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a48951f7.2699cf47.js b/assets/js/a48951f7.2699cf47.js deleted file mode 100644 index 26d969d..0000000 --- a/assets/js/a48951f7.2699cf47.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[150],{9204:(e,i,d)=>{d.r(i),d.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>a,frontMatter:()=>t,metadata:()=>c,toc:()=>h});var n=d(5893),s=d(1151);const t={},r="Soil",c={id:"customization/soil",title:"Soil",description:"Soils are blocks where crops can grow on.",source:"@site/docs/customization/soil.md",sourceDirName:"customization",slug:"/customization/soil",permalink:"/docs/customization/soil",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/soil.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Mutation",permalink:"/docs/customization/mutation"},next:{title:"Fertilizer",permalink:"/docs/customization/fertilizer"}},l={},h=[{value:"Soil conditions",id:"soil-conditions",level:2},{value:"Humidity",id:"humidity",level:3},{value:"Acidity",id:"acidity",level:3},{value:"Nutrients",id:"nutrients",level:3}];function o(e){const i={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h1,{id:"soil",children:"Soil"}),"\n",(0,n.jsx)(i.p,{children:"Soils are blocks where crops can grow on.\r\nAgriCraft ships default soils, but you can modify them or add new ones with a datapack."}),"\n",(0,n.jsxs)(i.p,{children:["To create your own soil, add a new json file in the directory ",(0,n.jsx)(i.code,{children:"data//agricraft/soils/.json"}),"\r\nwhere ",(0,n.jsx)(i.code,{children:"datapack_id"})," is the id of your datapack and",(0,n.jsx)(i.code,{children:"soil_id"})," is the id of this soil (it can be whatever you want).\r\nIn our case it will be ",(0,n.jsx)(i.code,{children:"tuto"})," and ",(0,n.jsx)(i.code,{children:"tomato_soil"}),"."]}),"\n",(0,n.jsx)(i.p,{children:"The structure of the json file is the following:"}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-json5",children:'{\r\n // mods needed for the soil to be loaded\r\n "mods": [],\r\n // an array of blocks representing this soil\r\n "variants": [\r\n {\r\n // tag or element id of blocks to use\r\n "block": "minecraft:farmland",\r\n // list of blockstates the block must match\r\n "states": []\r\n }\r\n ],\r\n // the humidity condition of the block (see below for more information)\r\n "humidity": "wet",\r\n // the acidity condition of the block\r\n "acidity": "slightly_acidic",\r\n // the nutrient condition of the block\r\n "nutrients": "high",\r\n // a value used to modify the growth of the plants on this soil.\r\n // 1.0 is the default growth of the plant, a lower value will decrease the speed of growth,\r\n // and a higher value will increase its speed.\r\n "growth_modifier": 1.0,\r\n}\n'})}),"\n",(0,n.jsx)(i.h2,{id:"soil-conditions",children:"Soil conditions"}),"\n",(0,n.jsx)(i.h3,{id:"humidity",children:"Humidity"}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Index"}),(0,n.jsx)(i.th,{children:"Condition"}),(0,n.jsx)(i.th,{children:"Alias"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"0"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"arid"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"dry"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"2"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"damp"})}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"moist"})})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"3"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"wet"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"standard"})," ",(0,n.jsx)(i.code,{children:"default"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"4"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"watery"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"5"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"flooded"})}),(0,n.jsx)(i.td,{})]})]})]}),"\n",(0,n.jsx)(i.h3,{id:"acidity",children:"Acidity"}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Index"}),(0,n.jsx)(i.th,{children:"Condition"}),(0,n.jsx)(i.th,{children:"Alias"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"0"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"highly_acidic"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"highly-acidic"})," ",(0,n.jsx)(i.code,{children:"highly acidic"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"acidic"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"2"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"slightly_acidic"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"slightly-acidic"})," ",(0,n.jsx)(i.code,{children:"slightly acidic"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"3"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"neutral"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"4"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"slightly_alkaline"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"slightly-alkaline"})," ",(0,n.jsx)(i.code,{children:"slightly alkaline"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"5"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"alkaline"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"6"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"highly_alkaline"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"highly-alkaline"})," ",(0,n.jsx)(i.code,{children:"highly alkaline"})]})]})]})]}),"\n",(0,n.jsx)(i.h3,{id:"nutrients",children:"Nutrients"}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Index"}),(0,n.jsx)(i.th,{children:"Condition"}),(0,n.jsx)(i.th,{children:"Alias"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"0"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"none"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"zero"})," ",(0,n.jsx)(i.code,{children:"empty"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"1"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"very_low"})}),(0,n.jsxs)(i.td,{children:[(0,n.jsx)(i.code,{children:"scarce"})," ",(0,n.jsx)(i.code,{children:"poor"})]})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"2"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"low"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"3"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"medium"})}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"average"})})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"4"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"high"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"5"}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"very_high"})}),(0,n.jsx)(i.td,{children:(0,n.jsx)(i.code,{children:"rich"})})]})]})]})]})}function a(e={}){const{wrapper:i}={...(0,s.a)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},1151:(e,i,d)=>{d.d(i,{Z:()=>c,a:()=>r});var n=d(7294);const s={},t=n.createContext(s);function r(e){const i=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a48951f7.4634c9ac.js b/assets/js/a48951f7.4634c9ac.js new file mode 100644 index 0000000..c4a9f06 --- /dev/null +++ b/assets/js/a48951f7.4634c9ac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[150],{9204:(e,i,d)=>{d.r(i),d.d(i,{assets:()=>t,contentTitle:()=>l,default:()=>a,frontMatter:()=>c,metadata:()=>r,toc:()=>h});var s=d(5893),n=d(1151);const c={},l="Soil",r={id:"customization/soil",title:"Soil",description:"Soils are blocks crops can grow on. AgriCraft ships default soils, but these can be modified and new soils can be added with a datapack.",source:"@site/docs/customization/soil.md",sourceDirName:"customization",slug:"/customization/soil",permalink:"/docs/customization/soil",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/soil.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Mutation",permalink:"/docs/customization/mutation"},next:{title:"Fertilizer",permalink:"/docs/customization/fertilizer"}},t={},h=[{value:"Soil conditions",id:"soil-conditions",level:2},{value:"Humidity",id:"humidity",level:3},{value:"Acidity",id:"acidity",level:3},{value:"Nutrients",id:"nutrients",level:3}];function o(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"soil",children:"Soil"}),"\n",(0,s.jsx)(i.p,{children:"Soils are blocks crops can grow on. AgriCraft ships default soils, but these can be modified and new soils can be added with a datapack."}),"\n",(0,s.jsxs)(i.p,{children:["To create your own soil, add a new json file in the directory ",(0,s.jsx)(i.code,{children:"data//agricraft/soils/.json"})," where ",(0,s.jsx)(i.code,{children:"namespace"})," is the namespace and ",(0,s.jsx)(i.code,{children:"soil_id"})," is the ID of this soil, which can be whatever you want."]}),"\n",(0,s.jsx)(i.p,{children:"Every soil requires the following fields:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"mods"}),": mods needed for the soil to be loaded."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"variants"}),": array of blocks representing this soil. Every soil object consists of:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"block"}),": tag or a resource location of the block."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"states"}),": list of states the block must match. ",(0,s.jsx)(i.em,{children:"[optional]"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"humidity"}),": humidity condition of the soil. Accepted values ",(0,s.jsx)(i.a,{href:"#Humidity",children:"can be found here"}),"."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"acidity"}),": acidity condition of the soil. Accepted values ",(0,s.jsx)(i.a,{href:"#Acidity",children:"can be found here"}),"."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"nutrients"}),": nutrient condition of the soil. Accepted values ",(0,s.jsx)(i.a,{href:"#Nutrients",children:"can be found here"}),"."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"growth_modifier"}),": value used to modify the growth of the plants on this soil. The default value is ",(0,s.jsx)(i.code,{children:"1.0"}),". Higher values will increase the growth speed, while lower ones will decrease it."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"The example below shows soul soil as a soil:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-json",children:'{\r\n "mods": [],\r\n "variants": [\r\n {\r\n "block": "minecraft:soul_soil"\r\n }\r\n ],\r\n "acidity": "neutral",\r\n "humidity": "arid",\r\n "nutrients": "very_high",\r\n "growth_modifier": 1.0\r\n}\n'})}),"\n",(0,s.jsx)(i.h2,{id:"soil-conditions",children:"Soil conditions"}),"\n",(0,s.jsx)(i.h3,{id:"humidity",children:"Humidity"}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Index"}),(0,s.jsx)(i.th,{children:"Condition"}),(0,s.jsx)(i.th,{children:"Alias"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"0"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"arid"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"1"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"dry"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"2"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"damp"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"moist"})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"3"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"wet"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"standard"})," ",(0,s.jsx)(i.code,{children:"default"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"4"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"watery"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"5"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"flooded"})}),(0,s.jsx)(i.td,{})]})]})]}),"\n",(0,s.jsx)(i.h3,{id:"acidity",children:"Acidity"}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Index"}),(0,s.jsx)(i.th,{children:"Condition"}),(0,s.jsx)(i.th,{children:"Alias"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"0"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"highly_acidic"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"highly-acidic"})," ",(0,s.jsx)(i.code,{children:"highly acidic"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"1"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"acidic"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"2"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"slightly_acidic"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"slightly-acidic"})," ",(0,s.jsx)(i.code,{children:"slightly acidic"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"3"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"neutral"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"4"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"slightly_alkaline"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"slightly-alkaline"})," ",(0,s.jsx)(i.code,{children:"slightly alkaline"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"5"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"alkaline"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"6"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"highly_alkaline"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"highly-alkaline"})," ",(0,s.jsx)(i.code,{children:"highly alkaline"})]})]})]})]}),"\n",(0,s.jsx)(i.h3,{id:"nutrients",children:"Nutrients"}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Index"}),(0,s.jsx)(i.th,{children:"Condition"}),(0,s.jsx)(i.th,{children:"Alias"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"0"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"none"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"zero"})," ",(0,s.jsx)(i.code,{children:"empty"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"1"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"very_low"})}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)(i.code,{children:"scarce"})," ",(0,s.jsx)(i.code,{children:"poor"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"2"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"low"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"3"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"medium"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"average"})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"4"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"high"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"5"}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"very_high"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)(i.code,{children:"rich"})})]})]})]})]})}function a(e={}){const{wrapper:i}={...(0,n.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},1151:(e,i,d)=>{d.d(i,{Z:()=>r,a:()=>l});var s=d(7294);const n={},c=s.createContext(n);function l(e){const i=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),s.createElement(c.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b20d371f.3ab719f4.js b/assets/js/b20d371f.3ab719f4.js new file mode 100644 index 0000000..ebf62cc --- /dev/null +++ b/assets/js/b20d371f.3ab719f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[51],{5017:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>u,contentTitle:()=>h,default:()=>m,frontMatter:()=>c,metadata:()=>p,toc:()=>x});var s=i(5893),t=i(1151);const o=i.p+"assets/images/hash-e15fe29a0e734e960883aa0dfeb14744.png",r=i.p+"assets/images/plus-55664dca0ca7351c2ec5d429f66366f5.png",l=i.p+"assets/images/cross-cf23c36640152e8c1849dab75e384204.png",a=i.p+"assets/images/gourd-9a2bf7724048196da3a9b193d4f885ec.png",d=i.p+"assets/images/rhombus-caf2e856b0650b4c67d3199d6543e23e.png",c={},h="Plant",p={id:"customization/plant",title:"Plant",description:"This page will guide you through the process of creating a custom plant for AgriCraft.",source:"@site/docs/customization/plant.mdx",sourceDirName:"customization",slug:"/customization/plant",permalink:"/docs/customization/plant",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/plant.mdx",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"AgriCraft Customization",permalink:"/docs/customization/"},next:{title:"Mutation",permalink:"/docs/customization/mutation"}},u={},x=[{value:"Datapack",id:"datapack",level:2},{value:"Creating a simple plant",id:"creating-a-simple-plant",level:3},{value:"Adding plant products",id:"adding-plant-products",level:3},{value:"Adding seeds",id:"adding-seeds",level:3},{value:"Specifying soil humidity, acidity and nutrients",id:"specifying-soil-humidity-acidity-and-nutrients",level:3},{value:"How the soil conditions are used",id:"how-the-soil-conditions-are-used",level:4},{value:"How to set a specific soil for the plant?",id:"how-to-set-a-specific-soil-for-the-plant",level:4},{value:"How to allow other soils after a specific plant strength?",id:"how-to-allow-other-soils-after-a-specific-plant-strength",level:4},{value:"Adding additional requirements",id:"adding-additional-requirements",level:3},{value:"Biome and dimension",id:"biome-and-dimension",level:4},{value:"Season",id:"season",level:4},{value:"Block conditions",id:"block-conditions",level:4},{value:"Fluid condition",id:"fluid-condition",level:4},{value:"Adding modifiers",id:"adding-modifiers",level:3},{value:"Available modifiers",id:"available-modifiers",level:4},{value:"Adding particle effects",id:"adding-particle-effects",level:3},{value:"Resourcepack",id:"resourcepack",level:2},{value:"Crop Models",id:"crop-models",level:3},{value:"Seed models",id:"seed-models",level:3},{value:"Textures",id:"textures",level:3},{value:"Translation",id:"translation",level:3}];function j(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"plant",children:"Plant"}),"\n",(0,s.jsx)(n.p,{children:"This page will guide you through the process of creating a custom plant for AgriCraft."}),"\n",(0,s.jsxs)(n.p,{children:["Before we start, we have to choose a resource location for the plant.\nWe are creating a tomato plant, so let's use ",(0,s.jsx)(n.code,{children:"tuto:tomato"})," as the plant's resource location."]}),"\n",(0,s.jsx)(n.p,{children:"This guide is split in two parts:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Datapack"}),": defines the behaviour of the plant"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Resourcepack"}),": defines how the plant is rendered"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"datapack",children:"Datapack"}),"\n",(0,s.jsx)(n.p,{children:"The data part consists of only one json file defining the plant.\nBelow is the location of the file."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'data\n \u2514\u2500tuto # the namespace of the resource location of your plant ("tuto" here) which is also the id of your datapack\n \u2514\u2500agricraft\n \u2514\u2500plants # agricraft/plants is the folder used by agricraft to load plants in the game\n \u2514\u2500tomato.json # The name of the file must match the id of your plant ("tomato" here)\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"#",title:"TODO: @Ketheroth add back this when mystical agriculture compat",children:"//"})," # (todo: primer for agricraft 3.1.0 json to 3.2.0 json)"]}),"\n",(0,s.jsx)(n.h3,{id:"creating-a-simple-plant",children:"Creating a simple plant"}),"\n",(0,s.jsx)(n.p,{children:"First, let's create a simple plant. Every plant requires the following fields:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"mods"}),": list of mods required to load this plant. ",(0,s.jsx)(n.strong,{children:"Currently not used"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"seeds"}),": list of items that can be used as a seed for this plant. Note that AgriCraft will always generate it's own seed for the plant. More information about adding seeds ",(0,s.jsx)(n.a,{href:"#Adding-seeds",children:"can be found below"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"stages"}),": list of growth stages for this plant. Every stage should be a number corresponding to the height of the plant in pixels."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"harvest_stage"}),": growth stage that the plant will have after it gets harvested."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"growth_chance"}),": chance the plant has of growing on a random tick."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"growth_bonus"}),": chance the plant has of growing bonus on a random tick."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cloneable"}),": determines if the plant can be cloned."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"spread_chance"}),": spread chance of the plant on clone."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"requirement"}),": an object containing plant's requirements:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"soil_humidity"}),", ",(0,s.jsx)(n.code,{children:"soil_acidity"})," and ",(0,s.jsx)(n.code,{children:"soil_nutrients"}),": humidity, acidity and nutrients of the soil required for the plant to grow. An in-depth explanation ",(0,s.jsx)(n.a,{href:"#Specifying-soil-humidity-acidity-and-nutrients",children:"is provided below"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"min_light"}),": minimum light required for the plant to grow."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"max_light"}),": maximum light required for the plant to grow."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"light_tolerance_factor"}),": light tolerance of the plant. For each level of plant strength, ",(0,s.jsx)(n.code,{children:"min_light"})," decreases and ",(0,s.jsx)(n.code,{children:"max_light"})," increases by the given value."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Other than the fields mentioned above, all fields are considered optional."}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of a simple plant that grows on farmland and has the same growth stages as wheat:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "mods": [],\n "seeds": [],\n "stages": [\n 2,\n 4,\n 6,\n 8,\n 10,\n 12,\n 14,\n 16\n ],\n "harvest_stage": 4,\n "growth_chance": 0.75,\n "growth_bonus": 0.025,\n "cloneable": true,\n "spread_chance": 0.1,\n "requirement": {\n "soil_acidity": {\n "type": "equal",\n "tolerance_factor": 0.2,\n "value": "slightly_acidic"\n },\n "soil_humidity": {\n "type": "equal",\n "tolerance_factor": 0.15,\n "value": "wet"\n },\n "soil_nutrients": {\n "type": "equal_or_higher",\n "tolerance_factor": 0.1,\n "value": "high"\n },\n "min_light": 10,\n "max_light": 16,\n "light_tolerance_factor": 0.5\n }\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"adding-plant-products",children:"Adding plant products"}),"\n",(0,s.jsxs)(n.p,{children:["Products are stored in two different arrays: ",(0,s.jsx)(n.code,{children:"products"})," and ",(0,s.jsx)(n.code,{children:"clip_products"}),". Both arrays function similarly, with the key difference being that ",(0,s.jsx)(n.code,{children:"clip_products"})," are only dropped when harvesting with a Clipper."]}),"\n",(0,s.jsx)(n.p,{children:"A product object requires the following fields:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"item"}),": tag or resource location of the item to be produced."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"min"}),": minimum amount that can be dropped."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"max"}),": maximum amount that can be dropped."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"chance"}),": chance for this product to be produced."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"required"}),": if set to ",(0,s.jsx)(n.code,{children:"true"}),", the product will exist only if the item is present in the game."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nbt"}),": the NBT that will be added to the item. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If multiple drops are present in the array, all of the products will be dropped according to the individual ",(0,s.jsx)(n.code,{children:"chance"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of adding potato drops to the plant:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "products": [\n {\n "item": "minecraft:potato",\n "min": 1,\n "max": 4,\n "chance": 0.95,\n "required": true\n },\n {\n "item": "minecraft:poisonous_potato",\n "min": 1,\n "max": 2,\n "chance": 0.02,\n "required": true\n }\n ]\n'})}),"\n",(0,s.jsx)(n.h3,{id:"adding-seeds",children:"Adding seeds"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"item"}),": tag or resource location of the item that will be used as a seed."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"override_planting"}),": if ",(0,s.jsx)(n.code,{children:"true"}),", default item behaviour will be overridden to place an AgriCraft plant instead."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"grass_drop_chance"}),": chance for this seed to drop when grass is broken."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"seed_drop_chance"}),": chance for this seed to drop when the crop is broken."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"seed_drop_bonus"}),": chance for a second seed to drop when the crop is broken."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nbt"}),": NBT needed for the item to be considered a seed. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here's an example of adding potato as a seed for the plant:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "seeds": [\n {\n "item": "minecraft:potato",\n "override_planting": true,\n "grass_drop_chance": 0.0,\n "seed_drop_chance": 1.0,\n "seed_drop_bonus": 0.0\n }\n ]\n'})}),"\n",(0,s.jsx)(n.h3,{id:"specifying-soil-humidity-acidity-and-nutrients",children:"Specifying soil humidity, acidity and nutrients"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"soil_humidity"}),", ",(0,s.jsx)(n.code,{children:"soil_acidity"})," and ",(0,s.jsx)(n.code,{children:"soil_nutrients"})," requirements consist of the following fields:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"type"}),": can be one of the following:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"equal"}),": the condition of the soil must be equal to the plant condition. If it is higher or lower, the plant will not grow."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"equal_or_lower"}),": the condition of the soil must be equal or lower than the plant condition. If it is higher, the plant will not grow."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"equal_or_hight"}),": the condition of the soil must be equal or higher than the plant condition. If it is lower, the plant will not grow."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"}),": the value of the requirement. See ",(0,s.jsx)(n.a,{href:"/docs/customization/soil#soil-conditions",children:"soil condition values"})," for the possible soil requirements of the plant."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tolerance_factor"}),": broadens the requirement based on plant's strength."]}),"\n"]}),"\n",(0,s.jsx)(n.h4,{id:"how-the-soil-conditions-are-used",children:"How the soil conditions are used"}),"\n",(0,s.jsxs)(n.p,{children:["The requirement of the plant is met if the soil value is in the range ",(0,s.jsx)(n.code,{children:"plant_requirement \xb1 (plant_tolerance * plant_strength)"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Example:",(0,s.jsx)(n.br,{}),"\n","Assuming the plant has a strength of 10 and this is its humidity requirement:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "soil_humidity": {\n "condition": "damp",\n "type": "equal",\n "tolerance_factor": 0.2\n }\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"damp"})," has a value of 2 (its index in ",(0,s.jsx)(n.a,{href:"/docs/customization/soil#humidity",children:"this chart"}),").\nThe range of soil humidity for such requirement is ",(0,s.jsx)(n.code,{children:"2 \xb1 (0.2 * 10)"})," which is ",(0,s.jsx)(n.code,{children:"[0, 4]"}),".\nThis means the crop can grow on soils with humidity arid, dry, damp, wet, or watery when its strength is 10."]}),"\n",(0,s.jsxs)(n.p,{children:["Note that if the type of the requirement was ",(0,s.jsx)(n.code,{children:"equal_or_higher"})," the range would have been ",(0,s.jsx)(n.code,{children:"[0, +inf["}),"\nand ",(0,s.jsx)(n.code,{children:"]-inf, 4]"})," if it was ",(0,s.jsx)(n.code,{children:"equal_or_lower"}),"."]}),"\n",(0,s.jsx)(n.h4,{id:"how-to-set-a-specific-soil-for-the-plant",children:"How to set a specific soil for the plant?"}),"\n",(0,s.jsxs)(n.p,{children:["For each soil condition, set the same condition value as the soil in the plan requirement, with ",(0,s.jsx)(n.code,{children:"equal"})," for the type and ",(0,s.jsx)(n.code,{children:"0"})," for the tolerance factor."]}),"\n",(0,s.jsx)(n.h4,{id:"how-to-allow-other-soils-after-a-specific-plant-strength",children:"How to allow other soils after a specific plant strength?"}),"\n",(0,s.jsxs)(n.p,{children:["You can use ",(0,s.jsx)(n.a,{href:"/docs/customization/tolerance-calculator",children:"this tool"})," to determine the tolerance factor for each soil condition."]}),"\n",(0,s.jsx)(n.h3,{id:"adding-additional-requirements",children:"Adding additional requirements"}),"\n",(0,s.jsxs)(n.p,{children:["All of the requirements mentioned below have to be added to the ",(0,s.jsx)(n.code,{children:"requirement"})," object you should already have in the plant file."]}),"\n",(0,s.jsx)(n.h4,{id:"biome-and-dimension",children:"Biome and dimension"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"biomes"})," and ",(0,s.jsx)(n.code,{children:"dimensions"})," fields allow you to specify in which biomes or dimensions your plant will or won't grow."]}),"\n",(0,s.jsx)(n.p,{children:"These requirements use the following fields:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"values"}),": a list of biome or dimension resource locations."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"blacklist"}),": if ",(0,s.jsx)(n.code,{children:"true"}),", the specified biomes or dimensions will be blacklisted (the plant won't grow in them)."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"ignore_from_strength"}),": the requirement will be ignored if the strength of the plant is greater or equal to this value. Defaults to 11 (meaning the requirement will never be ignored). ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of a requirement that stops the plant from growing in plains and desert biomes:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "biomes": {\n "values": [\n\t\t"minecraft:plains",\n\t\t"minecraft:desert"\n\t ],\n "blacklist": true,\n "ignore_from_strength": 11\n }\n'})}),"\n",(0,s.jsx)(n.h4,{id:"season",children:"Season"}),"\n",(0,s.jsxs)(n.p,{children:["If you are using a mod that adds seasons, you can make your plant grow only during specific seasons. To do this, add a ",(0,s.jsx)(n.code,{children:"seasons"})," field to the ",(0,s.jsx)(n.code,{children:"requirement"}),". It should be a list of all the seasons during which the plant can grow."]}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of a requirement that makes the plant grow only during spring and autumn:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "seasons": [\n "spring",\n "autumn"\n ]\n'})}),"\n",(0,s.jsx)(n.h4,{id:"block-conditions",children:"Block conditions"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"block"}),": tag or resource location of the required block."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"strength"}),": the requirement will be ignored if the strength of the plant is greater or equal to this value. Setting it to 11 means the condition will never be ignored."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"nbt"}),": NBT that must be included in the block (or block entity). ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"states"}),": list of states that must be present in the block. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"amount"}),": the amount of blocks required in the specified range. Defaults to 1. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"min_x"}),", ",(0,s.jsx)(n.code,{children:"min_y"}),", ",(0,s.jsx)(n.code,{children:"min_z"})," and ",(0,s.jsx)(n.code,{children:"max_x"}),", ",(0,s.jsx)(n.code,{children:"max_y"}),", ",(0,s.jsx)(n.code,{children:"max_z"}),": the bounding box, relative to the crop at 0, 0, 0, where the block(s) need to be placed. The bounding box is inclusive. Defaults to ",(0,s.jsx)(n.code,{children:"(0, -2, 0)"}),", ",(0,s.jsx)(n.code,{children:"(0, -2, 0)"}),", meaning the block needs to be placed under the soil. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of a requirement that makes the plant grow only when there is some kind of a diamond ore under the soil:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "block_conditions": [\n {\n "block": "#agricraft:ores/diamond",\n "strength": 11\n }\n ]\n'})}),"\n",(0,s.jsx)(n.h4,{id:"fluid-condition",children:"Fluid condition"}),"\n",(0,s.jsxs)(n.p,{children:["Fluid condition can be added with a ",(0,s.jsx)(n.code,{children:"fluid_condition"})," field. The fluid condition object requires the following fields:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"fluid"}),": tag or ID of the fluid."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"states"}),": list of states that must be present in the fluid. ",(0,s.jsx)(n.em,{children:"[optional]"})]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "fluid_condition": {\n "fluid": "minecraft:empty",\n "states": []\n }\n'})}),"\n",(0,s.jsx)(n.h3,{id:"adding-modifiers",children:"Adding modifiers"}),"\n",(0,s.jsx)(n.p,{children:"Modifiers allow you to further customize your plants by adding special effects, such as actions during harvest or effects on collision."}),"\n",(0,s.jsxs)(n.p,{children:["To add a modifier, add a ",(0,s.jsx)(n.code,{children:"modifiers"})," section to your plant file. It should contain an array of all the modifiers you want to use."]}),"\n",(0,s.jsxs)(n.p,{children:["Each modifier should have an ",(0,s.jsx)(n.code,{children:"id"}),". Additionally, some modifiers require a ",(0,s.jsx)(n.code,{children:"value"})," to further specify the action. Here you can see an example of summoning a zombie on plant harvest:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' {\n "id": "agricraft:summon",\n "value": "minecraft:zombie"\n }\n'})}),"\n",(0,s.jsx)(n.p,{children:"Since modifiers are stored in an array, you can have multiple modifiers at the same time:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "modifiers": [\n\t{\n\t "id": "agricraft:brightness"\n\t},\n {\n "id": "agricraft:summon",\n "value": "minecraft:zombie"\n }\n ]\n'})}),"\n",(0,s.jsx)(n.h4,{id:"available-modifiers",children:"Available modifiers"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:brightness"}),": crop will emit light."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:burn"}),": crop will burn colliding entities."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:bushy"}),": crop will slow down colliding entities."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:experience"}),": crop will drop experience on harvest."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:fungus"}),": crop will grow a fungus tree when bonemealed at max growth.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," specifies the resource location of the fungus that will be grown."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:poisoning"}),": crop will apply the poison effect to colliding entities."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:redstone"}),": crop will emit redstone signal."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:summon"}),": crop will summon an entity on harvest.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," specifies the resource location of the mob that will be summoned."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:thorns"}),": crop will hurt colliding entities (like a cactus)."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:tree"}),": crop will grow a tree when bonemealed at max growth.","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"value"})," specifies the resource location of the sapling that will be grown."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"agricraft:withering"}),": crop will apply the wither effect to colliding entities."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"adding-particle-effects",children:"Adding particle effects"}),"\n",(0,s.jsxs)(n.p,{children:["To make particles spawn around your plant, add a ",(0,s.jsx)(n.code,{children:"particle_effects"})," section to its file. It should contain an array of all the particle effects that you want to add."]}),"\n",(0,s.jsx)(n.p,{children:"Each particle effect requires the following fields:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"probability"}),": chance for the particle to spawn. ",(0,s.jsx)(n.em,{children:"[range 0.0-1.0]"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"stages"}),": list of plant stages at which the particle can spawn."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"particle"}),": resource location of the particle that will spawn."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"delta_x"}),", ",(0,s.jsx)(n.code,{children:"delta_y"})," and ",(0,s.jsx)(n.code,{children:"delta_z"}),": these represent how far from the center of the block the particles will spawn in the given direction."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Here is an example of adding smoke particles to a fully-grown plant:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:' "particle_effects": [\n {\n "probability": 0.4,\n "stages": [\n 7\n ],\n "particle": "minecraft:smoke",\n "delta_x": 0.3,\n "delta_y": 0.4,\n "delta_z": 0.3\n }\n ]\n'})}),"\n",(0,s.jsx)(n.h2,{id:"resourcepack",children:"Resourcepack"}),"\n",(0,s.jsx)(n.p,{children:"The resource part consists of multiple json file defining how the plant will be rendered in the game.\nThis is probably the most work you'll have to do.\nBelow is the location of each file, according to the plant json define above."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"assets\n \u2514\u2500tuto\n \u251c\u2500lang\n \u2502 \u2514\u2500en_us.json\n \u251c\u2500models\n \u2502 \u251c\u2500crop\n \u2502 \u2502 \u251c\u2500tomato_stage0.json\n \u2502 \u2502 \u251c\u2500tomato_stage1.json\n \u2502 \u2502 \u251c\u2500tomato_stage2.json\n \u2502 \u2502 \u251c\u2500tomato_stage3.json\n \u2502 \u2502 \u251c\u2500tomato_stage4.json\n \u2502 \u2502 \u251c\u2500tomato_stage5.json\n \u2502 \u2502 \u251c\u2500tomato_stage6.json\n \u2502 \u2502 \u2514\u2500tomato_stage7.json\n \u2502 \u2514\u2500seed\n \u2502 \u2514\u2500tomato.json\n \u2514\u2500textures // the textures files are optionals, they depends on whatever textures you used in the models\n \u251c\u2500plant\n \u2502 \u251c\u2500tomato_stage0.png\n \u2502 \u251c\u2500tomato_stage1.png\n \u2502 \u251c\u2500tomato_stage2.png\n \u2502 \u251c\u2500tomato_stage3.png\n \u2502 \u251c\u2500tomato_stage4.png\n \u2502 \u251c\u2500tomato_stage5.png\n \u2502 \u251c\u2500tomato_stage6.png\n \u2502 \u2514\u2500tomato_stage7.png\n \u2514\u2500seed\n \u2514\u2500tomato.png\n"})}),"\n",(0,s.jsx)(n.h3,{id:"crop-models",children:"Crop Models"}),"\n",(0,s.jsxs)(n.p,{children:["AgriCraft will try to load a model for the plant block to its resource location and its growth stage.\nIt will load the plant models in ",(0,s.jsx)(n.code,{children:"/models/crop/_stage.json"})," where the namespace and id correspond\nto the namespace and the id of the plant (",(0,s.jsx)(n.code,{children:"tuto"})," and ",(0,s.jsx)(n.code,{children:"tomato"})," in our example) and stage correspond to the growth stage of the plant.\nThis means you have to define one model per growth stage you defined in your plant json."]}),"\n",(0,s.jsx)(n.p,{children:"You can use whatever model you want for your plant, but AgriCraft provides multiple default models for ease of use and are described as follows:"}),"\n","\n","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crop_hash"}),": 4 faces parallel with the block faces, similar to Vanilla wheat."]}),"\n"]}),"\n",(0,s.jsx)("img",{alt:"hash crop image",src:o,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_hash",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tall_crop_hash"}),": like ",(0,s.jsx)(n.code,{children:"crop_hash"})," but 2 blocks high"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/tall_crop_hash",\n "textures": {\n "crop": "",\n "crop_top": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crop_cross"}),": 2 faces along the diagonals, similar to Vanilla flowers."]}),"\n"]}),"\n",(0,s.jsx)("img",{alt:"cross crop image",src:l,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_cross",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crop_plus"}),": Similar to cross, but instead 4 crosses at each crop stick."]}),"\n"]}),"\n",(0,s.jsx)("img",{alt:"plus crop image",src:r,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_plus",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"tall_crop_plus"}),": like ",(0,s.jsx)(n.code,{children:"crop_plus"})," but 2 blocks high"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/tall_crop_plus",\n "textures": {\n "crop": "",\n "crop_top": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crop_gourd"}),": i.e. for pumpkins and melons: renders a hash pattern with the ",(0,s.jsx)(n.code,{children:"crop"})," texture, and a small gourd with the ",(0,s.jsx)(n.code,{children:"gourd"})," texture."]}),"\n"]}),"\n",(0,s.jsx)("img",{alt:"gourd crop image",src:a,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_gourd",\n "textures": {\n "crop": "",\n "gourd": ""\n }\n}\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"crop_rhombus"}),": 4 faces spanning between the centers of the block faces, mainly used for weeds."]}),"\n"]}),"\n",(0,s.jsx)("img",{alt:"rhombus crop image",src:d,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_rhombus",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"seed-models",children:"Seed models"}),"\n",(0,s.jsxs)(n.p,{children:["AgriCraft will try to load the model for the default plant seed from the path ",(0,s.jsx)(n.code,{children:"/models/seed/.json"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"textures",children:"Textures"}),"\n",(0,s.jsxs)(n.p,{children:["AgriCraft will also load textures from ",(0,s.jsx)(n.code,{children:"textures/plant/"})," and ",(0,s.jsx)(n.code,{children:"textures/seed/"})," too, so you can put your plant and seed textures there if you want."]}),"\n",(0,s.jsx)(n.h3,{id:"translation",children:"Translation"}),"\n",(0,s.jsx)(n.p,{children:"AgriCraft will localize the name of the plant, its seed and its description according to the following keys:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"plant.agricraft.."}),": the name of the plant"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"seed.agricraft.."}),": the name of the seed"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"description.agricraft.."}),": the description of the plant"]}),"\n"]})]})}function m(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(j,{...e})}):j(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>r});var s=i(7294);const t={},o=s.createContext(t);function r(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b20d371f.a0efba32.js b/assets/js/b20d371f.a0efba32.js deleted file mode 100644 index 3b6b635..0000000 --- a/assets/js/b20d371f.a0efba32.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[51],{5017:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>d,default:()=>g,frontMatter:()=>h,metadata:()=>p,toc:()=>m});var o=n(5893),i=n(1151);const a=n.p+"assets/images/hash-e15fe29a0e734e960883aa0dfeb14744.png",s=n.p+"assets/images/plus-55664dca0ca7351c2ec5d429f66366f5.png",r=n.p+"assets/images/cross-cf23c36640152e8c1849dab75e384204.png",l=n.p+"assets/images/gourd-9a2bf7724048196da3a9b193d4f885ec.png",c=n.p+"assets/images/rhombus-caf2e856b0650b4c67d3199d6543e23e.png",h={},d="Plant",p={id:"customization/plant",title:"Plant",description:"This page will guide you to create a custom plant for AgriCraft.",source:"@site/docs/customization/plant.mdx",sourceDirName:"customization",slug:"/customization/plant",permalink:"/docs/customization/plant",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/plant.mdx",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"AgriCraft Customization",permalink:"/docs/customization/"},next:{title:"Mutation",permalink:"/docs/customization/mutation"}},u={},m=[{value:"Datapack",id:"datapack",level:2},{value:"Soil requirements",id:"soil-requirements",level:3},{value:"How the soil conditions are used",id:"how-the-soil-conditions-are-used",level:4},{value:"How to set a specific soil for the plant?",id:"how-to-set-a-specific-soil-for-the-plant",level:4},{value:"How to allow other soils after a specific plant strength?",id:"how-to-allow-other-soils-after-a-specific-plant-strength",level:4},{value:"Resourcepack",id:"resourcepack",level:2},{value:"Crop Models",id:"crop-models",level:3},{value:"Seed models",id:"seed-models",level:3},{value:"Textures",id:"textures",level:3},{value:"Translation",id:"translation",level:3}];function f(e){const t={a:"a",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"plant",children:"Plant"}),"\n",(0,o.jsx)(t.p,{children:"This page will guide you to create a custom plant for AgriCraft."}),"\n",(0,o.jsxs)(t.p,{children:["Before starting to write anything, we have to choose a resource location for the plant.\nWe are creating the tomato plant, so let's use ",(0,o.jsx)(t.code,{children:"tuto:tomato"})," as the plant's resource location."]}),"\n",(0,o.jsx)(t.p,{children:"This guide is split in two part:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"the datapack part, to define the behaviour of the plant"}),"\n",(0,o.jsx)(t.li,{children:"the resourcepack part, to define how the plant is rendered"}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"datapack",children:"Datapack"}),"\n",(0,o.jsx)(t.p,{children:"The data part consists of only one json file defining the plant.\nBelow is the location of the file."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:'data\n \u2514\u2500tuto # the namespace of the resource location of your plant ("tuto" here) which is also the id of your datapack\n \u2514\u2500agricraft\n \u2514\u2500plants # agricraft/plants is the folder used by agricraft to load plants in the game\n \u2514\u2500tomato.json # The name of the file must match the id of your plant ("tomato" here)\n'})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"#",title:"TODO: @Ketheroth add back this when mystical agriculture compat",children:"//"})," # (todo: primer for agricraft 3.1.0 json to 3.2.0 json)"]}),"\n",(0,o.jsx)(t.p,{children:"The json file have a specific format, described as follows:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json5",children:'{\n // mods needed for the plant to be loaded\n "mods": [],\n // Items to use as seed for this plant.\n // Note that AgriCraft will always generate a seed for this plant\n // (regardless if there are elements in this seed list)\n "seeds": [\n {\n // tag or element id of items to use\n "item": "minecraft:potato",\n // override default item behaviour to place an agricraft plant instead\n "override_planting": true,\n // If this nbt is included in the item\'s nbt, then the item is considered as a seed for this plant\n // [optional] (default = "", no nbt) \n "nbt": "",\n // chance for this plant\'s seed to drop when grass is broken\n "grass_drop_chance": 0.0,\n // chance for this plant\'s seed to drop when the crop is broken\n "seed_drop_chance": 1.0,\n // chance for a second seed to drop when the crop is broken\n "seed_drop_bonus": 0.0\n }\n ],\n // growth stages for the plant. each number correspond to the height of the plant at that stage.\n // add/remove a number to add/remove a growth stage\n "stages": [\n 2,\n 4,\n 6,\n 8,\n 10,\n 12,\n 14,\n 16\n ],\n // After harvest, the growth stage is set to be this one.\n "harvest_stage": 4,\n // The chance the plant has of growing on a random tick\n "growth_chance": 0.75,\n // The chance the plant has of growing bonus on a random tick\n "growth_bonus": 0.025,\n // Determine if the plant can be cloned\n "cloneable": true,\n // The spread chance of the plant on clone\n "spread_chance": 0.1,\n // The list of item produced on harvest. All products in the list is produced (according to the chance of course)\n "products": [\n {\n // tag or element id\n "item": "minecraft:wheat",\n // minimum amount\n "min": 1,\n // maximum amount\n "max": 3,\n // chance for this product to be produced\n "chance": 0.95,\n // if the item is required to be present in Minecraft for the product to exist\n "required": true,\n // nbt to add to the itemstack\n // [optional] (default = "", no nbt)\n "nbt": "",\n }\n ],\n // The list of item produced on clipping. objects are the same as harvest products\n "clip_products": [\n ],\n // Growth requirement of the plant (the plant will grow only if every requirement are met)\n "requirement": {\n // humidity of the soil.\n // see Soil customization for more information on each soil property\n "soil_humidity": {\n // The required humidity condition of the plant\n "condition": "wet",\n // Determine when the condition is met\n "type": "equal",\n // The tolerance factor of the condition\n "tolerance_factor": 0.15\n },\n // acidity of the soil\n "soil_acidity": {\n "condition": "slightly_acidic",\n "type": "equal",\n "tolerance_factor": 0.2\n },\n // nutrients of the soil\n "soil_nutrients": {\n "condition": "high",\n "type": "equal_or_higher",\n "tolerance_factor": 0.1\n },\n // minimum light present on the plant\n "min_light": 10,\n // maximum light present on the plant\n "max_light": 16,\n // tolerance factor of light values outside the min-max boundaries\n // the light requirement is met if the block light is in the range:\n // [min_light - plant_strength * light_tolerance, max_light + plant_strength * light_tolerance]\n "light_tolerance_factor": 0.5,\n // The list of biomes the plant must be in to grow\n // [optional] (default = empty blacklist)\n "biomes": {\n // list of biome resource locations (like "minecraft:plains")\n "values": [],\n // if the above list is used as a blacklist (plant won\'t grow if in the biomes)\n // or as a whitelist (plant will grow only in the biomes)\n "blacklist": true,\n // biome requirement is ignore if the strength of the plant is greater or equal to this value\n // [optional] (default = 11, effectively making biome requirement never ignored because the max strength of a plant is 10 by default)\n "ignore_from_strength": 11\n },\n // Same as the biome requirement above, but for dimensions\n // [optional] (default = empty blacklist)\n "dimensions": {\n "values": [],\n "blacklist": true,\n "ignore_from_strength": 11\n },\n // The list of seasons the plant can grow.\n // No seasons logic are provided by AgriCraft, you\'ll add to bring your own seasons mod.\n // [optional] (default = as below, the plant can grow in all seasons)\n "seasons": [\n "spring",\n "summer",\n "autumn",\n "winter"\n ],\n // The list of blocks that must be present near the plant so it can grow\n // [optional] (default = empty list)\n "block_conditions": [\n {\n // tag or element id of the required block\n "block": "#forge:ores/gold",\n // nbt that must be included in the block (or block entity) nbt\n // [optional] (default = "", no nbt) \n "nbt": "",\n // list of states that must be present in the block\n // [optional] (default = [], all states matches) \n "states": [],\n // strength at which this block condition become ignored\n "strength": 11,\n // the amount required in the given range\n "amount": 1,\n // The bounding box, relative to the crop at 0, 0, 0 in which the block(s) are to be placed.\n // In this case we specify the box {(0, -2, 0), (0, -2, 0)}, which is the single block directly\n // below the soil block. Notice that the upper bound is inclusive, so that to specify a\n // single block we use the same point twice, not the upper left and lower right points.\n "min_x": 0,\n "min_y": -2,\n "min_z": 0,\n "max_x": 0,\n "max_y": -2,\n "max_z": 0,\n }\n ],\n // The required fluid the plant needs to be in to grow\n // Warning, if the fluid condition is not met it is lethal for the crop\n // [optional] (default = no fluid) \n "fluid_condition": {\n // tag or element id of the fluid\n "fluid": "minecraft:empty",\n // list of states that must be present in the fluid\n // [optional] (default = [], all states matches)\n "states": [],\n }\n },\n // An array of callbacks the crop will use.\n // Below are all the default callbacks.\n // [optional] (default = [], no callback)\n "callbacks": [\n // the crop emit light\n "agricraft:brightness",\n // the crop burn colliding entities\n "agricraft:burn",\n // the crop slow down colliding entities\n "agricraft:bushy",\n // the corp drop experience on harvest\n "agricraft:experience",\n // the crop apply the poison effect to colliding entities\n "agricraft:poisoning",\n // the crop emit redstone signal\n "agricraft:redstone",\n // the crop hurt colliding entities (like a cactus)\n "agricraft:thorns",\n // the crop apply the wither effect to colliding entities\n "agricraft:withering"\n ],\n // An array describing the particles the plant can emit.\n // [optional] (default=[])\n "particle_effects": [\n {\n // The probability the particle will spawn [range 0.0-1.0].\n "probability": 0.5,\n // An array containing the indexes (0-indexed) of the stages the plant can produce particles.\n "stages": [\n 7 // in this example, the effect is only present on the last stage\n ],\n // The id of the particle\n "particle": "minecraft:smoke",\n // How far from the center of the block the particle can spawn (X axis).\n "delta_x": 0.3,\n // How high from the center of the block the particle can spawn (Y axis).\n "delta_y": 0.4,\n // How far from the center of the block the particle can spawn (Z axis).\n "delta_z": 0.3\n }\n ]\n}\n'})}),"\n",(0,o.jsx)(t.h3,{id:"soil-requirements",children:"Soil requirements"}),"\n",(0,o.jsxs)(t.p,{children:["See the ",(0,o.jsx)(t.a,{href:"soil#soil-conditions",children:"soil condition values"})," for the soil requirements of the plant."]}),"\n",(0,o.jsx)(t.p,{children:"The type of a condition can be one of the following values :"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"equal"}),": the condition of the soil must be equal to the plant condition.\nExample: if the humidity condition of the plant is wet, the soil humidity must be wet too (the plant won't grow if it isn't this exact condition)"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"equal_or_lower"}),": the condition of the soil must be equal or lower than the plant condition.\nExample: if the humidity condition of the plant is wet, the soil humidity must be arid, dry, damp or wet."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"equal_or_hight"}),": the condition of the soil must be equal or higher than the plant condition.\nExample: if the humidity condition of the plant is wet, the soil humidity must be wet, watery or flooded."]}),"\n"]}),"\n",(0,o.jsx)(t.h4,{id:"how-the-soil-conditions-are-used",children:"How the soil conditions are used"}),"\n",(0,o.jsxs)(t.p,{children:["The requirement of the plant is met if the soil value is in the range ",(0,o.jsx)(t.code,{children:"plant_requirement \xb1 (plant_tolerance * plant_strength)"}),"."]}),"\n",(0,o.jsxs)(t.p,{children:["Example:",(0,o.jsx)(t.br,{}),"\n","Assuming the plant has a strength of 10 and this condition in its json file:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "soil_humidity": {\n "condition": "damp",\n "type": "equal",\n "tolerance_factor": 0.2\n }\n}\n'})}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.code,{children:"damp"})," has a value of 2 (its index in ",(0,o.jsx)(t.a,{href:"/docs/customization/soil#humidity",children:"this chart"}),").\nThe range of soil humidity for such requirement is ",(0,o.jsx)(t.code,{children:"2 \xb1 (0.2 * 10)"})," which is ",(0,o.jsx)(t.code,{children:"[0, 4]"}),".\nThis means the crop can grow on soils with humidity arid, dry, damp, wet, or watery when its strength is 10."]}),"\n",(0,o.jsxs)(t.p,{children:["Note that if the type of the requirement was ",(0,o.jsx)(t.code,{children:"equal_or_higher"})," the range would have been ",(0,o.jsx)(t.code,{children:"[0, +inf["}),"\nand ",(0,o.jsx)(t.code,{children:"]-inf, 4]"})," if it was ",(0,o.jsx)(t.code,{children:"equal_or_lower"}),"."]}),"\n",(0,o.jsx)(t.h4,{id:"how-to-set-a-specific-soil-for-the-plant",children:"How to set a specific soil for the plant?"}),"\n",(0,o.jsxs)(t.p,{children:["For each soil condition, set the same condition value as the soil in the plan requirement, with ",(0,o.jsx)(t.code,{children:"equal"})," for the type and ",(0,o.jsx)(t.code,{children:"0"})," for the tolerance factor."]}),"\n",(0,o.jsx)(t.h4,{id:"how-to-allow-other-soils-after-a-specific-plant-strength",children:"How to allow other soils after a specific plant strength?"}),"\n",(0,o.jsxs)(t.p,{children:["You can use ",(0,o.jsx)(t.a,{href:"/docs/customization/tolerance-calculator",children:"this tool"})," to determine the tolerance factor for each soil condition."]}),"\n",(0,o.jsx)(t.h2,{id:"resourcepack",children:"Resourcepack"}),"\n",(0,o.jsx)(t.p,{children:"The resource part consists of multiple json file defining how the plant will be rendered in the game.\nThis is probably the most work you'll have to do.\nBelow is the location of each file, according to the plant json define above."}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{children:"assets\n \u2514\u2500tuto\n \u251c\u2500lang\n \u2502 \u2514\u2500en_us.json\n \u251c\u2500models\n \u2502 \u251c\u2500crop\n \u2502 \u2502 \u251c\u2500tomato_stage0.json\n \u2502 \u2502 \u251c\u2500tomato_stage1.json\n \u2502 \u2502 \u251c\u2500tomato_stage2.json\n \u2502 \u2502 \u251c\u2500tomato_stage3.json\n \u2502 \u2502 \u251c\u2500tomato_stage4.json\n \u2502 \u2502 \u251c\u2500tomato_stage5.json\n \u2502 \u2502 \u251c\u2500tomato_stage6.json\n \u2502 \u2502 \u2514\u2500tomato_stage7.json\n \u2502 \u2514\u2500seed\n \u2502 \u2514\u2500tomato.json\n \u2514\u2500textures // the textures files are optionals, they depends on whatever textures you used in the models\n \u251c\u2500plant\n \u2502 \u251c\u2500tomato_stage0.png\n \u2502 \u251c\u2500tomato_stage1.png\n \u2502 \u251c\u2500tomato_stage2.png\n \u2502 \u251c\u2500tomato_stage3.png\n \u2502 \u251c\u2500tomato_stage4.png\n \u2502 \u251c\u2500tomato_stage5.png\n \u2502 \u251c\u2500tomato_stage6.png\n \u2502 \u2514\u2500tomato_stage7.png\n \u2514\u2500seed\n \u2514\u2500tomato.png\n"})}),"\n",(0,o.jsx)(t.h3,{id:"crop-models",children:"Crop Models"}),"\n",(0,o.jsxs)(t.p,{children:["AgriCraft will try to load a model for the plant block to its resource location and its growth stage.\nIt will load the plant models in ",(0,o.jsx)(t.code,{children:"/models/crop/_stage.json"})," where the namespace and id correspond\nto the namespace and the id of the plant (",(0,o.jsx)(t.code,{children:"tuto"})," and ",(0,o.jsx)(t.code,{children:"tomato"})," in our example) and stage correspond to the growth stage of the plant.\nThis means you have to define one model per growth stage you defined in your plant json."]}),"\n",(0,o.jsx)(t.p,{children:"You can use whatever model you want for your plant, but AgriCraft provides multiple default models for ease of use and are described as follows:"}),"\n","\n","\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"crop_hash"}),": 4 faces parallel with the block faces, similar to Vanilla wheat."]}),"\n"]}),"\n",(0,o.jsx)("img",{alt:"hash crop image",src:a,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_hash",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"tall_crop_hash"}),": like ",(0,o.jsx)(t.code,{children:"crop_hash"})," but 2 blocks high"]}),"\n"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/tall_crop_hash",\n "textures": {\n "crop": "",\n "crop_top": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"crop_cross"}),": 2 faces along the diagonals, similar to Vanilla flowers."]}),"\n"]}),"\n",(0,o.jsx)("img",{alt:"cross crop image",src:r,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_cross",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"crop_plus"}),": Similar to cross, but instead 4 crosses at each crop stick."]}),"\n"]}),"\n",(0,o.jsx)("img",{alt:"plus crop image",src:s,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_plus",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"tall_crop_plus"}),": like ",(0,o.jsx)(t.code,{children:"crop_plus"})," but 2 blocks high"]}),"\n"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/tall_crop_plus",\n "textures": {\n "crop": "",\n "crop_top": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"crop_gourd"}),": i.e. for pumpkins and melons: renders a hash pattern with the ",(0,o.jsx)(t.code,{children:"crop"})," texture, and a small gourd with the ",(0,o.jsx)(t.code,{children:"gourd"})," texture."]}),"\n"]}),"\n",(0,o.jsx)("img",{alt:"gourd crop image",src:l,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_gourd",\n "textures": {\n "crop": "",\n "gourd": ""\n }\n}\n'})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"crop_rhombus"}),": 4 faces spanning between the centers of the block faces, mainly used for weeds."]}),"\n"]}),"\n",(0,o.jsx)("img",{alt:"rhombus crop image",src:c,style:{display:"block",margin:"auto",width:"700px"}}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-json",children:'{\n "parent": "agricraft:crop/crop_rhombus",\n "textures": {\n "crop": ""\n }\n}\n'})}),"\n",(0,o.jsx)(t.h3,{id:"seed-models",children:"Seed models"}),"\n",(0,o.jsxs)(t.p,{children:["AgriCraft will try to load the model for the default plant seed from the path ",(0,o.jsx)(t.code,{children:"/models/seed/.json"}),"."]}),"\n",(0,o.jsx)(t.h3,{id:"textures",children:"Textures"}),"\n",(0,o.jsxs)(t.p,{children:["AgriCraft will also load textures from ",(0,o.jsx)(t.code,{children:"textures/plant/"})," and ",(0,o.jsx)(t.code,{children:"textures/seed/"})," too, so you can put your plant and seed textures there if you want."]}),"\n",(0,o.jsx)(t.h3,{id:"translation",children:"Translation"}),"\n",(0,o.jsx)(t.p,{children:"AgriCraft will localize the name of the plant, its seed and its description according to the following keys:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"plant.agricraft.."}),": the name of the plant"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"seed.agricraft.."}),": the name of the seed"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"description.agricraft.."}),": the description of the plant"]}),"\n"]})]})}function g(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(f,{...e})}):f(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>s});var o=n(7294);const i={},a=o.createContext(i);function s(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b70a2853.3df4dcf7.js b/assets/js/b70a2853.3df4dcf7.js deleted file mode 100644 index 257f408..0000000 --- a/assets/js/b70a2853.3df4dcf7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[392],{8844:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var n=i(5893),s=i(1151);const r={},c="AgriCraft",d={id:"wiki/index",title:"AgriCraft",description:"AgriCraft is a mod which aims to bring crop breeding to Minecraft, this includes both improving your existing crops,",source:"@site/docs/wiki/index.md",sourceDirName:"wiki",slug:"/wiki/",permalink:"/docs/wiki/",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/wiki/index.md",tags:[],version:"current",frontMatter:{},sidebar:"wikiSidebar",next:{title:"Frequently Asked Questions",permalink:"/docs/wiki/faq"}},o={},l=[{value:"Compatibilities:",id:"compatibilities",level:2}];function a(t){const e={a:"a",br:"br",h1:"h1",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"agricraft",children:"AgriCraft"}),"\n",(0,n.jsx)(e.p,{children:"AgriCraft is a mod which aims to bring crop breeding to Minecraft, this includes both improving your existing crops,\nor cross-breeding to mutate into new species of crops."}),"\n",(0,n.jsxs)(e.p,{children:["This wiki is player focused, it contains frequently asked questions, and some calculators.",(0,n.jsx)(e.br,{}),"\n","If you are a mod or modpack dev, you might want to go to ",(0,n.jsx)(e.a,{href:"/docs/customization/",children:"the customization documentation"}),"."]}),"\n",(0,n.jsx)(e.p,{children:"This mod is compatible with many other, according to the chart below.\nIf a mod isn't present, and you think we should add compatibility to it, ask us in Discord or GitHub."}),"\n",(0,n.jsx)(e.h2,{id:"compatibilities",children:"Compatibilities:"}),"\n",(0,n.jsxs)(e.table,{children:[(0,n.jsx)(e.thead,{children:(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.th,{children:"Mod (1.20.4)"}),(0,n.jsx)(e.th,{style:{textAlign:"center"},children:"Functionalities"}),(0,n.jsx)(e.th,{style:{textAlign:"center"},children:"Plants"})]})}),(0,n.jsxs)(e.tbody,{children:[(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"Minecraft"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"JEI"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(e.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"EMI"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"partial"}),(0,n.jsx)(e.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"jade"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(e.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"biomesoplenty"}),(0,n.jsx)(e.td,{style:{textAlign:"center"}}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"immersiveengineering"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"planned"}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(e.tr,{children:[(0,n.jsx)(e.td,{children:"pamhc2crops"}),(0,n.jsx)(e.td,{style:{textAlign:"center"}}),(0,n.jsx)(e.td,{style:{textAlign:"center"},children:"yes"})]})]})]})]})}function h(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(a,{...t})}):a(t)}},1151:(t,e,i)=>{i.d(e,{Z:()=>d,a:()=>c});var n=i(7294);const s={},r=n.createContext(s);function c(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function d(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/b70a2853.f8bb9e4a.js b/assets/js/b70a2853.f8bb9e4a.js new file mode 100644 index 0000000..596467f --- /dev/null +++ b/assets/js/b70a2853.f8bb9e4a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[392],{8844:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var n=i(5893),s=i(1151);const r={},c="AgriCraft",d={id:"wiki/index",title:"AgriCraft",description:"AgriCraft is a mod which aims to bring crop breeding to Minecraft. This includes both improving your existing crops and cross-breeding to mutate them into new species of crops.",source:"@site/docs/wiki/index.md",sourceDirName:"wiki",slug:"/wiki/",permalink:"/docs/wiki/",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/wiki/index.md",tags:[],version:"current",frontMatter:{},sidebar:"wikiSidebar",next:{title:"Frequently Asked Questions",permalink:"/docs/wiki/faq"}},o={},l=[{value:"Compatibilities:",id:"compatibilities",level:2}];function a(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"agricraft",children:"AgriCraft"}),"\n",(0,n.jsx)(t.p,{children:"AgriCraft is a mod which aims to bring crop breeding to Minecraft. This includes both improving your existing crops and cross-breeding to mutate them into new species of crops."}),"\n",(0,n.jsxs)(t.p,{children:["This wiki is player focused. It contains ",(0,n.jsx)(t.a,{href:"/docs/wiki/faq",children:"Frequently Asked Questions"})," and ",(0,n.jsx)(t.a,{href:"/docs/wiki/mutation-calculator",children:"Mutation Chance Calculator"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["If you are a mod or modpack dev, check out ",(0,n.jsx)(t.a,{href:"/docs/customization/",children:"the customization documentation"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"This mod is compatible with many others, as shown in the chart below.\nIf a mod is not listed and you believe we should add it, please let us know on Discord or GitHub."}),"\n",(0,n.jsx)(t.h2,{id:"compatibilities",children:"Compatibilities:"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"NOTE:"})," The 1.20.1 version is currently missing Immersive Engineering support."]}),"\n"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Mod (1.20.4)"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"Functionalities"}),(0,n.jsx)(t.th,{style:{textAlign:"center"},children:"Plants"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"Minecraft"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"JEI"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(t.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"EMI"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"partial"}),(0,n.jsx)(t.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"jade"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"}),(0,n.jsx)(t.td,{style:{textAlign:"center"}})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"biomesoplenty"}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"immersiveengineering"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"planned"}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"pamhc2crops"}),(0,n.jsx)(t.td,{style:{textAlign:"center"}}),(0,n.jsx)(t.td,{style:{textAlign:"center"},children:"yes"})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>d,a:()=>c});var n=i(7294);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cea55577.4459f0a3.js b/assets/js/cea55577.4459f0a3.js deleted file mode 100644 index 539e8ba..0000000 --- a/assets/js/cea55577.4459f0a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[927],{1398:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=n(5893),a=n(1151);const i={},r="Mutation",s={id:"customization/mutation",title:"Mutation",description:"Mutations are a way to create new breeds of plants from two plants.",source:"@site/docs/customization/mutation.md",sourceDirName:"customization",slug:"/customization/mutation",permalink:"/docs/customization/mutation",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/mutation.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Plant",permalink:"/docs/customization/plant"},next:{title:"Soil",permalink:"/docs/customization/soil"}},c={},d=[];function u(t){const e={a:"a",code:"code",h1:"h1",p:"p",pre:"pre",...(0,a.a)(),...t.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h1,{id:"mutation",children:"Mutation"}),"\n",(0,o.jsxs)(e.p,{children:["Mutations are a way to create new breeds of plants from two plants.\r\nAgriCraft ships default mutations for plants (you can view the defaults ",(0,o.jsx)(e.a,{href:"https://github.com/AgriCraft/todo-kether-fix-this",children:"here"}),").\r\nHowever, you can modify these mutations or add new ones."]}),"\n",(0,o.jsxs)(e.p,{children:["To create your own mutation, add a new json file in the directory ",(0,o.jsx)(e.code,{children:"data//agricraft/mutations/.json"}),"\r\nwhere ",(0,o.jsx)(e.code,{children:"datapack_id"})," is the id of your datapack and",(0,o.jsx)(e.code,{children:"mutation_id"})," is the id of this mutation (it can be whatever you want).\r\nIn our case it will be ",(0,o.jsx)(e.code,{children:"tuto"})," and ",(0,o.jsx)(e.code,{children:"tomato"}),"."]}),"\n",(0,o.jsx)(e.p,{children:"There can be multiple mutation for the same plant, as long as the id of the mutation is different."}),"\n",(0,o.jsx)(e.p,{children:"The json file must have the following structure:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-json5",children:'{\r\n // mods needed for the mutation to be loaded\r\n "mods": [],\r\n // the chance of the mutation occurring on any given random tick, in the range [0.0, 1.0]\r\n "chance": 0.75,\r\n // the plant id of the child resulting of the mutation\r\n "child": "tuto:tomato",\r\n // the plant id of the first parent\r\n "parent1": "minecraft:poppy",\r\n // the plant id of the second parent\r\n "parent2": "minecraft:potato"\r\n}\r\n\n'})})]})}function l(t={}){const{wrapper:e}={...(0,a.a)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(u,{...t})}):u(t)}},1151:(t,e,n)=>{n.d(e,{Z:()=>s,a:()=>r});var o=n(7294);const a={},i=o.createContext(a);function r(t){const e=o.useContext(i);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:r(t.components),o.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/cea55577.c6762770.js b/assets/js/cea55577.c6762770.js new file mode 100644 index 0000000..2617eb2 --- /dev/null +++ b/assets/js/cea55577.c6762770.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[927],{1398:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var a=e(5893),i=e(1151);const o={},r="Mutation",s={id:"customization/mutation",title:"Mutation",description:"Mutations are a method to grow new plant breeds from two existing plants. AgriCraft includes default mutations for various plants, which can be modified, and new mutations can also be added.",source:"@site/docs/customization/mutation.md",sourceDirName:"customization",slug:"/customization/mutation",permalink:"/docs/customization/mutation",draft:!1,unlisted:!1,editUrl:"https://github.com/AgriCraft/agricraft.github.io/tree/main/docs/customization/mutation.md",tags:[],version:"current",frontMatter:{},sidebar:"customizationSidebar",previous:{title:"Plant",permalink:"/docs/customization/plant"},next:{title:"Soil",permalink:"/docs/customization/soil"}},c={},d=[];function u(t){const n={code:"code",em:"em",h1:"h1",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...t.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"mutation",children:"Mutation"}),"\n",(0,a.jsx)(n.p,{children:"Mutations are a method to grow new plant breeds from two existing plants. AgriCraft includes default mutations for various plants, which can be modified, and new mutations can also be added."}),"\n",(0,a.jsxs)(n.p,{children:["To create a mutation, add a new JSON file in the directory ",(0,a.jsx)(n.code,{children:"data//agricraft/mutations/.json"}),", where ",(0,a.jsx)(n.code,{children:"namespace"})," is the namespace and ",(0,a.jsx)(n.code,{children:"mutation_id"})," is the ID of this mutation, which can be whatever you want."]}),"\n",(0,a.jsx)(n.p,{children:"There can be multiple mutations for the same plant, as long as the ID of each mutation is different."}),"\n",(0,a.jsx)(n.p,{children:"Every mutation must have the following structure:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"chance"}),": chance of the mutation occurring on any given random tick. ",(0,a.jsx)(n.em,{children:"[range 0.0-1.0]"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"child"}),": ID of the plant resulting from the mutation."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.code,{children:"parent1"})," and ",(0,a.jsx)(n.code,{children:"parent2"}),": IDs of parents needed for the mutation."]}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"The example below shows a mutation of sugar cane and melon that results in the creation of poppy:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\r\n "chance": 0.75,\r\n "child": "minecraft:poppy",\r\n "parent1": "minecraft:sugar_cane",\r\n "parent2": "minecraft:melon"\r\n}\n'})})]})}function l(t={}){const{wrapper:n}={...(0,i.a)(),...t.components};return n?(0,a.jsx)(n,{...t,children:(0,a.jsx)(u,{...t})}):u(t)}},1151:(t,n,e)=>{e.d(n,{Z:()=>s,a:()=>r});var a=e(7294);const i={},o=a.createContext(i);function r(t){const n=a.useContext(o);return a.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function s(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),a.createElement(o.Provider,{value:n},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.c6af8f82.js b/assets/js/main.c6af8f82.js new file mode 100644 index 0000000..0f4a23d --- /dev/null +++ b/assets/js/main.c6af8f82.js @@ -0,0 +1,2 @@ +/*! For license information please see main.c6af8f82.js.LICENSE.txt */ +(self.webpackChunkagridocs=self.webpackChunkagridocs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const i={"06aaa5f2":[()=>n.e(681).then(n.bind(n,221)),"@site/docs/customization/1.12/plant.md",221],"0780772d":[()=>n.e(324).then(n.bind(n,4215)),"@site/docs/customization/1.12/index.md",4215],"0fca424a":[()=>n.e(364).then(n.t.bind(n,5745,19)),"/home/runner/work/agricraft.github.io/agricraft.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"14eb3368":[()=>Promise.all([n.e(532),n.e(817)]).then(n.bind(n,4245)),"@theme/DocCategoryGeneratedIndexPage",4245],17896441:[()=>Promise.all([n.e(532),n.e(349),n.e(918)]).then(n.bind(n,2916)),"@theme/DocItem",2916],"18efa110":[()=>n.e(241).then(n.bind(n,9162)),"@site/docs/customization/removing-data.md",9162],"1f391b9e":[()=>Promise.all([n.e(532),n.e(349),n.e(85)]).then(n.bind(n,3967)),"@theme/MDXPage",3967],"303de0f5":[()=>n.e(604).then(n.bind(n,3778)),"@site/docs/customization/tolerance-calculator.mdx",3778],"43e8dc8c":[()=>n.e(507).then(n.bind(n,2229)),"@site/docs/customization/1.12/soil.md",2229],"5e95c892":[()=>n.e(661).then(n.bind(n,1388)),"@theme/DocsRoot",1388],"643a8f42":[()=>n.e(476).then(n.bind(n,9078)),"@site/docs/wiki/mutation-calculator.mdx",9078],"6684eaec":[()=>n.e(544).then(n.bind(n,1385)),"@site/docs/customization/1.12/mutation.md",1385],"7816c25a":[()=>n.e(807).then(n.bind(n,6090)),"@site/docs/customization/1.18/plant.md",6090],81387393:[()=>n.e(736).then(n.t.bind(n,3769,19)),"/home/runner/work/agricraft.github.io/agricraft.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"8b409f7b":[()=>n.e(663).then(n.bind(n,4708)),"@site/docs/customization/fertilizer.md",4708],"8d480cc8":[()=>n.e(155).then(n.bind(n,8263)),"@site/docs/wiki/faq.md",8263],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"93a501ed":[()=>n.e(8).then(n.bind(n,678)),"@site/docs/customization/index.md",678],"9ca9907f":[()=>n.e(101).then(n.bind(n,583)),"@site/docs/customization/weed.md",583],a0777649:[()=>n.e(835).then(n.bind(n,2693)),"@site/docs/customization/1.18/soil.md",2693],a48951f7:[()=>n.e(150).then(n.bind(n,9204)),"@site/docs/customization/soil.md",9204],a7bd4aaa:[()=>n.e(518).then(n.bind(n,5375)),"@theme/DocVersionRoot",5375],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,4783)),"@theme/DocRoot",4783],b20d371f:[()=>n.e(51).then(n.bind(n,5017)),"@site/docs/customization/plant.mdx",5017],b70a2853:[()=>n.e(392).then(n.bind(n,8844)),"@site/docs/wiki/index.md",8844],c235316a:[()=>n.e(893).then(n.bind(n,1925)),"@site/docs/customization/1.18/fertilizer.md",1925],cea55577:[()=>n.e(927).then(n.bind(n,1398)),"@site/docs/customization/mutation.md",1398],d18f53ba:[()=>n.e(244).then(n.bind(n,907)),"@site/docs/wiki/block-item/journal.md",907],d9e47f10:[()=>n.e(640).then(n.bind(n,2605)),"@site/docs/customization/1.18/weed.md",2605],f3976560:[()=>n.e(844).then(n.bind(n,629)),"@site/src/pages/index.md",629],f46e92ff:[()=>n.e(887).then(n.t.bind(n,6768,19)),"~docs/default/category-docs-wikisidebar-category-blocks-items-995.json",6768],f50ffaa1:[()=>n.e(849).then(n.bind(n,8745)),"@site/docs/customization/wrapping-up.md",8745],f58db72e:[()=>n.e(506).then(n.bind(n,5161)),"@site/docs/customization/1.18/mutation.md",5161],fbe37772:[()=>n.e(625).then(n.bind(n,7947)),"@site/docs/customization/1.18/index.md",7947],ffdcbd8a:[()=>n.e(620).then(n.bind(n,8966)),"@site/docs/wiki/block-item/analyzer.md",8966]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(980).then(n.bind(n,5980)),modules:["@theme/NotFound"],webpack:()=>[5980],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],m=(0,u.Z)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))})),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const f=[{path:"/docs",component:d("/docs","48a"),routes:[{path:"/docs",component:d("/docs","35f"),routes:[{path:"/docs",component:d("/docs","e48"),routes:[{path:"/docs/block-item",component:d("/docs/block-item","ae3"),exact:!0,sidebar:"wikiSidebar"},{path:"/docs/customization",component:d("/docs/customization","2ab"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.12",component:d("/docs/customization/1.12","1d9"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.12/mutation",component:d("/docs/customization/1.12/mutation","d55"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.12/plant",component:d("/docs/customization/1.12/plant","213"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.12/soil",component:d("/docs/customization/1.12/soil","d02"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18",component:d("/docs/customization/1.18","387"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18/fertilizer",component:d("/docs/customization/1.18/fertilizer","41d"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18/mutation",component:d("/docs/customization/1.18/mutation","616"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18/plant",component:d("/docs/customization/1.18/plant","1ba"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18/soil",component:d("/docs/customization/1.18/soil","468"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/1.18/weed",component:d("/docs/customization/1.18/weed","b63"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/fertilizer",component:d("/docs/customization/fertilizer","602"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/mutation",component:d("/docs/customization/mutation","abf"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/plant",component:d("/docs/customization/plant","6e4"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/removing-data",component:d("/docs/customization/removing-data","199"),exact:!0},{path:"/docs/customization/soil",component:d("/docs/customization/soil","916"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/tolerance-calculator",component:d("/docs/customization/tolerance-calculator","cda"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/weed",component:d("/docs/customization/weed","051"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/customization/wrapping-up",component:d("/docs/customization/wrapping-up","98a"),exact:!0,sidebar:"customizationSidebar"},{path:"/docs/wiki",component:d("/docs/wiki","c43"),exact:!0,sidebar:"wikiSidebar"},{path:"/docs/wiki/block-item/analyzer",component:d("/docs/wiki/block-item/analyzer","abb"),exact:!0,sidebar:"wikiSidebar"},{path:"/docs/wiki/block-item/journal",component:d("/docs/wiki/block-item/journal","a81"),exact:!0,sidebar:"wikiSidebar"},{path:"/docs/wiki/faq",component:d("/docs/wiki/faq","e95"),exact:!0,sidebar:"wikiSidebar"},{path:"/docs/wiki/mutation-calculator",component:d("/docs/wiki/mutation-calculator","31f"),exact:!0,sidebar:"wikiSidebar"}]}]}]},{path:"/",component:d("/","d28"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},2712:(e,t,n)=>{"use strict";var r=n(7294),a=n(745),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(8423),n(703),n(2295)];var u=n(723),c=n(6550),d=n(8790),f=n(5893);function p(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var m=n(5742),g=n(2263),h=n(4996),y=n(1217),b=n(8231),v=n(808),w=n(337),k=n(3024),x=n(9356),S=n(3510);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(m.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,h.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(m.Z,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function _(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(m.Z,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.h})]}),n&&(0,f.jsx)(b.d,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(E,{}),(0,f.jsx)(S.Z,{tag:k.HX,locale:e}),(0,f.jsx)(m.Z,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;function N(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(8934),j=n(8940),L=n(469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function z(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),z(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(c.AW,{location:t,render:()=>e})})}}const I=R,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",D="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Q=n(9670);const K=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Q.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),z(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(i.B6,{children:(0,f.jsx)(o.VK,{children:(0,f.jsx)(q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};z(window.location.pathname).then(l)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>f});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"customization/index","docs":[{"id":"customization/1.12/index","path":"/docs/customization/1.12/","sidebar":"customizationSidebar"},{"id":"customization/1.12/mutation","path":"/docs/customization/1.12/mutation","sidebar":"customizationSidebar"},{"id":"customization/1.12/plant","path":"/docs/customization/1.12/plant","sidebar":"customizationSidebar"},{"id":"customization/1.12/soil","path":"/docs/customization/1.12/soil","sidebar":"customizationSidebar"},{"id":"customization/1.18/fertilizer","path":"/docs/customization/1.18/fertilizer","sidebar":"customizationSidebar"},{"id":"customization/1.18/index","path":"/docs/customization/1.18/","sidebar":"customizationSidebar"},{"id":"customization/1.18/mutation","path":"/docs/customization/1.18/mutation","sidebar":"customizationSidebar"},{"id":"customization/1.18/plant","path":"/docs/customization/1.18/plant","sidebar":"customizationSidebar"},{"id":"customization/1.18/soil","path":"/docs/customization/1.18/soil","sidebar":"customizationSidebar"},{"id":"customization/1.18/weed","path":"/docs/customization/1.18/weed","sidebar":"customizationSidebar"},{"id":"customization/fertilizer","path":"/docs/customization/fertilizer","sidebar":"customizationSidebar"},{"id":"customization/index","path":"/docs/customization/","sidebar":"customizationSidebar"},{"id":"customization/mutation","path":"/docs/customization/mutation","sidebar":"customizationSidebar"},{"id":"customization/plant","path":"/docs/customization/plant","sidebar":"customizationSidebar"},{"id":"customization/removing-data","path":"/docs/customization/removing-data"},{"id":"customization/soil","path":"/docs/customization/soil","sidebar":"customizationSidebar"},{"id":"customization/tolerance-calculator","path":"/docs/customization/tolerance-calculator","sidebar":"customizationSidebar"},{"id":"customization/weed","path":"/docs/customization/weed","sidebar":"customizationSidebar"},{"id":"customization/wrapping-up","path":"/docs/customization/wrapping-up","sidebar":"customizationSidebar"},{"id":"wiki/block-item/analyzer","path":"/docs/wiki/block-item/analyzer","sidebar":"wikiSidebar"},{"id":"wiki/block-item/journal","path":"/docs/wiki/block-item/journal","sidebar":"wikiSidebar"},{"id":"wiki/faq","path":"/docs/wiki/faq","sidebar":"wikiSidebar"},{"id":"wiki/index","path":"/docs/wiki/","sidebar":"wikiSidebar"},{"id":"wiki/mutation-calculator","path":"/docs/wiki/mutation-calculator","sidebar":"wikiSidebar"},{"id":"block-item","path":"/docs/block-item","sidebar":"wikiSidebar"}],"draftIds":[],"sidebars":{"customizationSidebar":{"link":{"path":"/docs/customization/","label":"customization/index"}},"wikiSidebar":{"link":{"path":"/docs/wiki/","label":"wiki/index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.1.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.0"}}}');var u=n(5893);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(9356),l=n(4126),s=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(p,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(o.Z,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.Z,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const f=e=>(0,s.jsx)(d,{...e});class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??f)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(405),a=n(5893);function o(e){return(0,a.jsx)(r.ql,{...e})}},3692:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(3727),o=n(9356),i=n(2263),l=n(3919),s=n(412),u=n(8138),c=n(4996),d=n(5893);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,c.C)(),x=(0,u.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=f||p;const C=(0,l.Z)(E),_=E?.replace("pathname://","");let T=void 0!==_?(N=_,y&&(e=>e.startsWith("/"))(N)?k(N):N):void 0;var N;T&&C&&(T=(0,o.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const A=(0,r.useRef)(!1),j=n?a.OL:a.rU,L=s.Z.canUseIntersectionObserver,P=(0,r.useRef)(),O=()=>{A.current||null==T||(window.docusaurus.preload(T),A.current=!0)};(0,r.useEffect)((()=>(!L&&C&&null!=T&&window.docusaurus.prefetch(T),()=>{L&&P.current&&P.current.disconnect()})),[P,T,L,C]);const z=T?.startsWith("#")??!1,R=!T||!C||z;return R||h||x.collectLink(T),R?(0,d.jsx)("a",{ref:S,href:T,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(j,{...b,onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,L&&e&&C&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:g,activeClassName:m}})}const p=r.forwardRef(f)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(7294),a=n(5893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},8138:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);n(5893);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},5743:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},7192:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},9356:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(5743);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(7192);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},93:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>f,_r:()=>c,Jo:()=>h,zh:()=>d,yW:()=>m,gB:()=>p});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function p(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},703:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},8423:(e,t,n)=>{"use strict";n.r(t);var r=n(2573),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(3968)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2757:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(512),a=n(5999),o=n(1217),i=n(3692),l=n(8138);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_FNw8",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_JmiO"};var u=n(5893);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.Z)(),{navbar:{hideOnScroll:f}}=(0,o.L)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const p=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.Z)("anchor",f?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":p,title:p,children:"\u200b"})]})}},2339:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);const r={iconExternalLink:"iconExternalLink_T11m"};var a=n(5893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},4126:(e,t,n)=>{"use strict";n.d(t,{Z:()=>pt});var r=n(7294),a=n(512),o=n(4763),i=n(8231),l=n(6550),s=n(5999),u=n(3445),c=n(5893);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=p();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(1042),y=n(337);const b={skipToContent:"skipToContent_gu5v"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(1217),k=n(5792);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_VBLd"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_M4QP"};function _(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_w47h",announcementBarPlaceholder:"announcementBarPlaceholder_VCrL",announcementBarClose:"announcementBarClose_X3y7",announcementBarContent:"announcementBarContent_JsD6"};function N(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:T.announcementBarPlaceholder}),(0,c.jsx)(_,{className:T.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:T.announcementBarClose})]})}var A=n(8396),j=n(5944);var L=n(5647),P=n(7269);const O=r.createContext(null);function z(e){let{children:t}=e;const n=function(){const e=(0,A.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(O.Provider,{value:n,children:t})}function R(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(O);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:R(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2850),D=n(2389);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_kWbt",toggleButton:"toggleButton_fOL9",darkToggleIcon:"darkToggleIcon_DFgp",lightToggleIcon:"lightToggleIcon_DCeJ",toggleButtonDisabled:"toggleButtonDisabled_STpu"};function Z(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,D.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(Z),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_e68Z"};function W(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var q=n(5012);function G(){return(0,c.jsx)(q.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,A.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(G,{}),(0,c.jsx)(W,{className:"margin-right--md"}),(0,c.jsx)(Y,{})]})}var K=n(3692),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(2339);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Z)(r),f=(0,X.Z)(t),p=(0,X.Z)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,J.Z)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(K.Z,{href:s?p:a,...u,...g}):(0,c.jsx)(K.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(348),le=n(9748),se=n(2263);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_gosV"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ce,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function fe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),p()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:t.map(((e,t)=>(0,r.createElement)(Ce,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?fe:de;return(0,c.jsx)(r,{...n})}var me=n(808);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_Ax7J";var ye=n(1875);const be={navbarSearchContainer:"navbarSearchContainer_IP3a"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,be.navbarSearchContainer),children:t})}var we=n(93),ke=n(3167);var xe=n(869);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),f=(0,me.l)(),{search:p,hash:m}=(0,l.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(pe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.Z,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,ke.vY)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,ke.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.lO)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.TH)(),f=(0,we.Iw)(n),p=(0,we.gB)(n),{savePreferredVersionName:m}=(0,xe.J)(n),g=[...a,...p.map((e=>{const t=f.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===f.activeVersion,onClick:()=>m(e.name)}})),...o],h=(0,ke.lO)(n)[0],y=t&&g.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(pe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ce(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function _e(){const e=(0,A.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ce,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Te(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ne(){const e=0===(0,w.L)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Te,{onClick:()=>t.hide()}),t.content]})}function Ae(){const e=(0,A.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(Q,{}),primaryMenu:(0,c.jsx)(_e,{}),secondaryMenu:(0,c.jsx)(Ne,{})}):null}const je={navbarHideable:"navbarHideable_GXDz",navbarHidden:"navbarHidden_WAp3"};function Le(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,A.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,j.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[je.navbarHideable,!d&&je.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Le,{onClick:i.toggle}),(0,c.jsx)(Ae,{})]})}var Oe=n(9356);const ze={errorBoundaryError:"errorBoundaryError_lMj0",errorBoundaryFallback:"errorBoundaryFallback_H2TG"};function Re(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ie(e){let{error:t}=e;const n=(0,Oe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:ze.errorBoundaryError,children:n})}class Fe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Me="right";function De(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,A.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(De,{})})}const $e={colorModeToggle:"colorModeToggle_GwZs"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Fe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(Ce,{...e})},t)))})}function Ze(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function He(){const e=(0,A.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Me)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(Ze,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(G,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(W,{className:$e.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.Z,{})})]})})}function Ve(){return(0,c.jsx)(Pe,{children:(0,c.jsx)(He,{})})}function We(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Z)(n),s=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(K.Z,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function qe(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(We,{item:t})},t.href??t.to)}function Ge(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(qe,{item:e},t)))})]})}function Ye(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Ge,{column:e},t)))})}function Qe(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ke(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(We,{item:t})}function Xe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Ke,{item:e}),t.length!==n+1&&(0,c.jsx)(Qe,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ye,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(3801);const tt={footerLogoLink:"footerLogoLink_uIzf"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(K.Z,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(ot,{style:a,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(at,{copyright:t})})}const lt=r.memo(it),st=(0,L.Qc)([M.S,k.pl,j.OC,xe.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(P.n2,{children:(0,c.jsx)(A.M,{children:(0,c.jsx)(z,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(2757);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Re,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Ie,{error:t})})]})})})}const ft={mainWrapper:"mainWrapper_IbdI"};function pt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(N,{}),(0,c.jsx)(Ve,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,ft.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},5012:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(3692),a=n(4996),o=n(2263),i=n(1217),l=n(3801),s=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...f}=e,p=(0,a.Z)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.Z,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},3510:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(5742),a=n(5893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},3801:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),a=n(512),o=n(2389),i=n(2850);const l={themedComponent:"themedComponent_ZRzL","themedComponent--light":"themedComponent--light_dGsa","themedComponent--dark":"themedComponent--dark_pzCA"};var s=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},348:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),a=n(412),o=n(469),i=n(2863),l=n(5893);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function f(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return f(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function m(e){if(!a.Z.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(f(c.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5792:(e,t,n)=>{"use strict";n.d(t,{nT:()=>g,pl:()=>m});var r=n(7294),a=n(2389),o=n(3088),i=n(5647),l=n(1217),s=n(5893);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),f=e=>u.set(String(e)),p=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{f(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&f(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2850:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>h});var r=n(7294),a=n(412),o=n(5647),i=n(3088),l=n(1217),s=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),f={light:"light",dark:"dark"},p=e=>e===f.dark?f.dark:f.light,m=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),g=e=>{d.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&g(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f.dark:f.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===f.dark},setLightTheme(){i(f.light)},setDarkTheme(){i(f.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},869:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7294),a=n(93),o=n(9935),i=n(1217),l=n(3167),s=n(5647),u=n(3088),c=n(5893);const d=e=>`docs-preferred-version-${e}`,f={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){f.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6178:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(7294),a=n(5647),o=n(5893);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},4150:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(7294),a=n(5647),o=n(5893);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},8396:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>m});var r=n(7294),a=n(7269),o=n(293),i=n(6550),l=n(5647);function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(1217),c=n(5893);const d=r.createContext(void 0);function f(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function p(e){let{children:t}=e;const n=f();return(0,c.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},7269:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(7294),a=n(5647),o=n(5893);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},337:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},293:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},1042:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},2863:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},3167:(e,t,n)=>{"use strict";n.d(t,{MN:()=>T,LM:()=>m,_F:()=>b,cE:()=>f,jA:()=>g,xz:()=>p,SN:()=>_,lO:()=>S,vY:()=>C,oz:()=>E,s1:()=>x,f:()=>w});var r=n(7294),a=n(6550),o=n(8790),i=n(93),l=n(869),s=n(4150),u=n(6178);function c(e){return Array.from(new Set(e))}var d=n(9748);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=m(t);if(e)return e}}(e):void 0:e.href}function g(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=k({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),y=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||y(e.items,t))}function v(e,t){switch(e.type){case"category":return b(e,t)||e.items.some((e=>v(e,t)));case"link":return!e.unlisted||b(e,t);default:return!0}}function w(e,t){return(0,r.useMemo)((()=>e.filter((e=>v(e,t)))),[e,t])}function k(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function x(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?k({sidebarItems:e.items,pathname:t}):null}function S(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function E(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function C(e,t){const n=S(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,a.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}function T(e){return e.filter((e=>!("category"===e.type||"link"===e.type)||!!m(e)))}},8231:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>d,VC:()=>m});var r=n(7294),a=n(512),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);var c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.Z,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),f&&(0,c.jsx)("meta",{property:"og:image",content:f}),f&&(0,c.jsx)("meta",{name:"twitter:image",content:f}),i]})}const f=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(f),l=(0,a.Z)(i,t);return(0,c.jsxs)(f.Provider,{value:l,children:[(0,c.jsx)(o.Z,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,a.Z)(r,o),children:t})}},5647:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(7294),a=n(469),o=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},9748:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},5944:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>u,RF:()=>f});var r=n(7294),a=n(412),o=n(2389),i=(n(469),n(5647)),l=n(5893);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3024:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},3088:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},808:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(9356);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},3445:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(5647);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},1217:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>_,ob:()=>p,PP:()=>N,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,C=y||b;r.push({name:h||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(E)+"]+?"})}}return i{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},2444:()=>{!function(e){var t=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;e.languages.json5=e.languages.extend("json",{property:[{pattern:RegExp(t.source+"(?=\\s*:)"),greedy:!0},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/,alias:"unquoted"}],string:{pattern:t,greedy:!0},number:/[+-]?\b(?:NaN|Infinity|0x[a-fA-F\d]+)\b|[+-]?(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[eE][+-]?\d+\b)?/})}(Prism)},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(m+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},3968:(e,t,n)=>{var r={"./prism-json":4277,"./prism-json5":2444};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3968},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n