diff --git a/1.18.x.html b/1.18.x.html index 8ab57e6..3497585 100644 --- a/1.18.x.html +++ b/1.18.x.html @@ -4,7 +4,7 @@
"SET"
|"ADD"
|"REMOVE"
)",id:"operation-setaddremove",level:3},{value:"order (integer)",id:"order-integer",level:3},{value:"icon (string)",id:"icon-string",level:3},{value:"add_cosmetic (boolean)",id:"add_cosmetic-boolean",level:3},{value:"use_native_gui (boolean)",id:"use_native_gui-boolean",level:3},{value:"render_toggle (boolean)",id:"render_toggle-boolean",level:3},{value:"drop_rule ("DEFAULT"
|"ALWAYS_DROP"
|"ALWAYS_KEEP"
|"DESTROY"
)",id:"drop_rule-defaultalways_dropalways_keepdestroy",level:3},{value:"validators (string[])",id:"validators-string",level:3},{value:"Example",id:"example",level:2},{value:"Modifying a Slot Type",id:"modifying-a-slot-type",level:2},{value:"Example",id:"example-1",level:3}];function c(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"slot-types",children:"Slot Types"}),"\n",(0,t.jsx)(s.p,{children:"A tutorial on how to register and modify slot types that are recognized by Curios."}),"\n",(0,t.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The recommended way to register a slot type is through a datapack. If a user or developer is unfamiliar with datapacks,\nit is recommended to read through the ",(0,t.jsx)(s.a,{href:"https://minecraft.fandom.com/wiki/Data_pack",children:"wiki page"})," in order to understand\nthe concept and structure before proceeding to the rest of this page."]}),"\n",(0,t.jsxs)(s.p,{children:["Alternatively, users can instead choose to use the ",(0,t.jsx)(s.a,{href:"../configuration#slot-configuration",children:"Curios configuration"})," to create\nand modify slot types. There are fewer features than those offered in the datapack method, but some users may find the\nprocess to be more straightforward."]}),"\n",(0,t.jsxs)(s.p,{children:["If using one of the ",(0,t.jsx)(s.a,{href:"./preset-slots",children:"Preset Slot Types"}),", this step can be skipped since Curios natively provides the\nneeded datapack registration."]}),"\n",(0,t.jsxs)(s.admonition,{type:"info",children:[(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Why are my registered slot types not appearing?"})}),(0,t.jsxs)(s.p,{children:["Registering slot types makes them available for use; however, they are ",(0,t.jsx)(s.em,{children:"not"})," added to any entities (including players)\nby default. In order to add them to an entity, please refer to ",(0,t.jsx)(s.a,{href:"/curios/slots/entity-register",children:"the next step"})," on adding slot\ntypes to entities."]})]}),"\n",(0,t.jsx)(s.h2,{id:"directory",children:"Directory"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The file should be a ",(0,t.jsx)(s.code,{children:".json"})," file with the ",(0,t.jsx)(s.code,{children:"identifier"})," for the slot type to be registered as the name. This file\nshould be located in the ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/"})," folder of the datapack."]}),"\n",(0,t.jsxs)(s.p,{children:["Example: Registering a ",(0,t.jsx)(s.code,{children:"head"})," slot type requires creating a ",(0,t.jsx)(s.code,{children:"head.json"})," file located in ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/"}),"\nso the final path should look like ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/head.json"}),"."]}),"\n",(0,t.jsx)(s.admonition,{type:"note",children:(0,t.jsxs)(s.p,{children:["The ",(0,t.jsx)(s.code,{children:"(namespace)"})," field should be replaced by the namespace chosen for this portion of the datapack. If this is a part\nof a mod, the namespace is usually the mod ID. If this is part of a user-defined datapack, then the namespace can be\nanything that is lowercased with no special characters."]})}),"\n",(0,t.jsx)(s.h2,{id:"syntax",children:"Syntax"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The structure of the ",(0,t.jsx)(s.code,{children:".json"})," file for the slot type consists of a top-level JSON object that holds various fields\nrelated to that slot type."]}),"\n",(0,t.jsx)(s.p,{children:"All fields are optional unless otherwise noted. Each field denotes certain merging behavior which defines how the\nfield is merged between all data files that include it."}),"\n",(0,t.jsxs)(s.h3,{id:"replace-boolean",children:[(0,t.jsx)(s.strong,{children:"replace"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"true"}),", replaces data from lower-priority datapacks."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"false"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"size-integer",children:[(0,t.jsx)(s.strong,{children:"size"})," (integer)"]}),"\n",(0,t.jsx)(s.p,{children:"The number of slots of this slot type to give by default."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"1"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The highest size will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"operation-setaddremove",children:[(0,t.jsx)(s.strong,{children:"operation"})," (",(0,t.jsx)(s.code,{children:'"SET"'}),"|",(0,t.jsx)(s.code,{children:'"ADD"'}),"|",(0,t.jsx)(s.code,{children:'"REMOVE"'}),")"]}),"\n",(0,t.jsxs)(s.p,{children:["Whether to use ",(0,t.jsx)(s.code,{children:"size"})," to set, add, or remove from the total number of slots."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"SET"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"order-integer",children:[(0,t.jsx)(s.strong,{children:"order"})," (integer)"]}),"\n",(0,t.jsx)(s.p,{children:"The order the slots will appear in the native Curios GUI, lower numbers appear first."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"1000"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The lowest order will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"icon-string",children:[(0,t.jsx)(s.strong,{children:"icon"})," (string)"]}),"\n",(0,t.jsx)(s.p,{children:"The location of the icon to use for the slot type."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"curios:slot/empty_curios_slot"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The last icon will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"add_cosmetic-boolean",children:[(0,t.jsx)(s.strong,{children:"add_cosmetic"})," (boolean)"]}),"\n",(0,t.jsx)(s.p,{children:"The location of the icon to use for the slot type."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"false"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"true"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"use_native_gui-boolean",children:[(0,t.jsx)(s.strong,{children:"use_native_gui"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"false"}),", does not add the slot type to the native Curios GUI."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"true"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"false"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"render_toggle-boolean",children:[(0,t.jsx)(s.strong,{children:"render_toggle"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"false"}),", does not allow the slot type to toggle its rendering."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"true"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"false"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"drop_rule-defaultalways_dropalways_keepdestroy",children:[(0,t.jsx)(s.strong,{children:"drop_rule"})," (",(0,t.jsx)(s.code,{children:'"DEFAULT"'}),"|",(0,t.jsx)(s.code,{children:'"ALWAYS_DROP"'}),"|",(0,t.jsx)(s.code,{children:'"ALWAYS_KEEP"'}),"|",(0,t.jsx)(s.code,{children:'"DESTROY"'}),")"]}),"\n",(0,t.jsxs)(s.p,{children:["Whether to drop, keep, destroy, or follow the ",(0,t.jsx)(s.code,{children:"keepCurios"})," configuration setting."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"DEFAULT"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"validators-string",children:[(0,t.jsx)(s.strong,{children:"validators"})," (string[])"]}),"\n",(0,t.jsxs)(s.p,{children:["The list of registered predicates from the Curios API used by this slot type to validate item insertions. For more\ninformation about validators, please see the page on ",(0,t.jsx)(s.a,{href:"../items/assign-slots#validators",children:"slot assignments"}),"."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'["curios:tag"]'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," Each entry is added into the final array."]}),"\n"]}),"\n",(0,t.jsxs)(s.admonition,{type:"info",children:[(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.strong,{children:["Which ",(0,t.jsx)(s.code,{children:"operation"})," value should I use?"]})}),(0,t.jsxs)(s.p,{children:["In most cases, ",(0,t.jsx)(s.code,{children:'"SET"'})," (also the default if no value is defined) will accomplish the desired result. It denotes that a\nslot type should have a certain amount of slots by default, with the highest value among all consumers being used.\n",(0,t.jsx)(s.code,{children:'"ADD"'}),"and ",(0,t.jsx)(s.code,{children:'"REMOVE"'})," are inherent slot modifiers and are based on the amount of slots specified by all ",(0,t.jsx)(s.code,{children:'"SET"'}),"\noperations, the result of which can change based on the mods/datapacks loaded."]})]}),"\n",(0,t.jsx)(s.h2,{id:"example",children:"Example"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "order": 20,\n "size": 4,\n "icon": "curios:slot/empty_custom_slot",\n "add_cosmetic": true\n}\n'})}),"\n",(0,t.jsxs)(s.p,{children:["This slot type will have a relatively low order of 20, which will make it appear higher than most slots. It also has\nsize of 4 which means that it will register 4 slots to any given entity by default. For the GUI, it uses an icon\nlocated at ",(0,t.jsx)(s.code,{children:"curios:slot/empty_custom_slot"}),". It also has added a cosmetic slot so there will be an additional slot for\ncosmetic items next to it in the Curios GUI."]}),"\n",(0,t.jsx)(s.h2,{id:"modifying-a-slot-type",children:"Modifying a Slot Type"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The process of modifying a slot type is identical to registering a new slot type, except using the same ",(0,t.jsx)(s.code,{children:"identifier"})," as\nthe existing slot type. All slot types that share an ",(0,t.jsx)(s.code,{children:"identifier"})," will be merged according to the ",(0,t.jsx)(s.strong,{children:"Merge Behavior"})," of\neach field as outlined above."]}),"\n",(0,t.jsx)(s.h3,{id:"example-1",children:"Example"}),"\n",(0,t.jsxs)(s.p,{children:["Curios natively provides data for the ",(0,t.jsx)(s.code,{children:"ring"})," slot, which defaults the size to 1. In order to increase the size to 2,\ncreate a ",(0,t.jsx)(s.code,{children:"ring.json"})," slot registration file in the datapack with the contents:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "size": 2\n}\n'})}),"\n",(0,t.jsx)(s.p,{children:"This will merge the size data of this registration with the existing registration provided by Curios, keeping all of the\nother data intact while increasing the number of slots to 2."})]})}function h(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>r});var t=n(7294);const i={},o=t.createContext(i);function r(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f0f42f24.900f6d9d.js b/assets/js/f0f42f24.900f6d9d.js
new file mode 100644
index 0000000..195c79c
--- /dev/null
+++ b/assets/js/f0f42f24.900f6d9d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkillusivesoulworks_docs=self.webpackChunkillusivesoulworks_docs||[]).push([[602],{8155:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>l,toc:()=>a});var t=n(5893),i=n(1151);const o={sidebar_position:1},r="Slot Types",l={id:"curios/slots/slot-register",title:"Slot Types",description:"A tutorial on how to register and modify slot types that are recognized by Curios.",source:"@site/docs/curios/slots/slot-register.md",sourceDirName:"curios/slots",slug:"/curios/slots/slot-register",permalink:"/curios/slots/slot-register",draft:!1,unlisted:!1,editUrl:"https://github.com/illusivesoulworks/docs/edit/main/docs/curios/slots/slot-register.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Slots",permalink:"/category/slots"},next:{title:"Entity Slot Types",permalink:"/curios/slots/entity-register"}},d={},a=[{value:"Overview",id:"overview",level:2},{value:"Directory",id:"directory",level:2},{value:"Syntax",id:"syntax",level:2},{value:"replace (boolean)",id:"replace-boolean",level:3},{value:"size (integer)",id:"size-integer",level:3},{value:"operation ("SET"
|"ADD"
|"REMOVE"
)",id:"operation-setaddremove",level:3},{value:"order (integer)",id:"order-integer",level:3},{value:"icon (string)",id:"icon-string",level:3},{value:"add_cosmetic (boolean)",id:"add_cosmetic-boolean",level:3},{value:"use_native_gui (boolean)",id:"use_native_gui-boolean",level:3},{value:"render_toggle (boolean)",id:"render_toggle-boolean",level:3},{value:"drop_rule ("DEFAULT"
|"ALWAYS_DROP"
|"ALWAYS_KEEP"
|"DESTROY"
)",id:"drop_rule-defaultalways_dropalways_keepdestroy",level:3},{value:"validators (string[])",id:"validators-string",level:3},{value:"Example",id:"example",level:2},{value:"Modifying a Slot Type",id:"modifying-a-slot-type",level:2},{value:"Example",id:"example-1",level:3},{value:"Localization",id:"localization",level:2},{value:"Example",id:"example-2",level:3}];function c(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{id:"slot-types",children:"Slot Types"}),"\n",(0,t.jsx)(s.p,{children:"A tutorial on how to register and modify slot types that are recognized by Curios."}),"\n",(0,t.jsx)(s.h2,{id:"overview",children:"Overview"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The recommended way to register a slot type is through a datapack. If a user or developer is unfamiliar with datapacks,\nit is recommended to read through the ",(0,t.jsx)(s.a,{href:"https://minecraft.fandom.com/wiki/Data_pack",children:"wiki page"})," in order to understand\nthe concept and structure before proceeding to the rest of this page."]}),"\n",(0,t.jsxs)(s.p,{children:["Alternatively, users can instead choose to use the ",(0,t.jsx)(s.a,{href:"../configuration#slot-configuration",children:"Curios configuration"})," to create\nand modify slot types. There are fewer features than those offered in the datapack method, but some users may find the\nprocess to be more straightforward."]}),"\n",(0,t.jsxs)(s.p,{children:["If using one of the ",(0,t.jsx)(s.a,{href:"./preset-slots",children:"Preset Slot Types"}),", this step can be skipped since Curios natively provides the\nneeded datapack registration."]}),"\n",(0,t.jsxs)(s.admonition,{type:"info",children:[(0,t.jsx)(s.p,{children:(0,t.jsx)(s.strong,{children:"Why are my registered slot types not appearing?"})}),(0,t.jsxs)(s.p,{children:["Registering slot types makes them available for use; however, they are ",(0,t.jsx)(s.em,{children:"not"})," added to any entities (including players)\nby default. In order to add them to an entity, please refer to ",(0,t.jsx)(s.a,{href:"/curios/slots/entity-register",children:"the next step"})," on adding slot\ntypes to entities."]})]}),"\n",(0,t.jsx)(s.h2,{id:"directory",children:"Directory"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The file should be a ",(0,t.jsx)(s.code,{children:".json"})," file with the ",(0,t.jsx)(s.code,{children:"identifier"})," for the slot type to be registered as the name. This file\nshould be located in the ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/"})," folder of the datapack."]}),"\n",(0,t.jsxs)(s.p,{children:["Example: Registering a ",(0,t.jsx)(s.code,{children:"head"})," slot type requires creating a ",(0,t.jsx)(s.code,{children:"head.json"})," file located in ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/"}),"\nso the final path should look like ",(0,t.jsx)(s.code,{children:"~/data/(namespace)/curios/slots/head.json"}),"."]}),"\n",(0,t.jsx)(s.admonition,{type:"note",children:(0,t.jsxs)(s.p,{children:["The ",(0,t.jsx)(s.code,{children:"(namespace)"})," field should be replaced by the namespace chosen for this portion of the datapack. If this is a part\nof a mod, the namespace is usually the mod ID. If this is part of a user-defined datapack, then the namespace can be\nanything that is lowercased with no special characters."]})}),"\n",(0,t.jsx)(s.h2,{id:"syntax",children:"Syntax"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The structure of the ",(0,t.jsx)(s.code,{children:".json"})," file for the slot type consists of a top-level JSON object that holds various fields\nrelated to that slot type."]}),"\n",(0,t.jsx)(s.p,{children:"All fields are optional unless otherwise noted. Each field denotes certain merging behavior which defines how the\nfield is merged between all data files that include it."}),"\n",(0,t.jsxs)(s.h3,{id:"replace-boolean",children:[(0,t.jsx)(s.strong,{children:"replace"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"true"}),", replaces data from lower-priority datapacks."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"false"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"size-integer",children:[(0,t.jsx)(s.strong,{children:"size"})," (integer)"]}),"\n",(0,t.jsx)(s.p,{children:"The number of slots of this slot type to give by default."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"1"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The highest size will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"operation-setaddremove",children:[(0,t.jsx)(s.strong,{children:"operation"})," (",(0,t.jsx)(s.code,{children:'"SET"'}),"|",(0,t.jsx)(s.code,{children:'"ADD"'}),"|",(0,t.jsx)(s.code,{children:'"REMOVE"'}),")"]}),"\n",(0,t.jsxs)(s.p,{children:["Whether to use ",(0,t.jsx)(s.code,{children:"size"})," to set, add, or remove from the total number of slots."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"SET"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"order-integer",children:[(0,t.jsx)(s.strong,{children:"order"})," (integer)"]}),"\n",(0,t.jsx)(s.p,{children:"The order the slots will appear in the native Curios GUI, lower numbers appear first."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"1000"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The lowest order will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"icon-string",children:[(0,t.jsx)(s.strong,{children:"icon"})," (string)"]}),"\n",(0,t.jsx)(s.p,{children:"The location of the icon to use for the slot type."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"curios:slot/empty_curios_slot"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," The last icon will be used."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"add_cosmetic-boolean",children:[(0,t.jsx)(s.strong,{children:"add_cosmetic"})," (boolean)"]}),"\n",(0,t.jsx)(s.p,{children:"The location of the icon to use for the slot type."}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"false"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"true"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"true"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"use_native_gui-boolean",children:[(0,t.jsx)(s.strong,{children:"use_native_gui"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"false"}),", does not add the slot type to the native Curios GUI."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"true"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"false"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"render_toggle-boolean",children:[(0,t.jsx)(s.strong,{children:"render_toggle"})," (boolean)"]}),"\n",(0,t.jsxs)(s.p,{children:["When ",(0,t.jsx)(s.code,{children:"false"}),", does not allow the slot type to toggle its rendering."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:"true"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," ",(0,t.jsx)(s.code,{children:"false"})," if any data file sets this field to ",(0,t.jsx)(s.code,{children:"false"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"drop_rule-defaultalways_dropalways_keepdestroy",children:[(0,t.jsx)(s.strong,{children:"drop_rule"})," (",(0,t.jsx)(s.code,{children:'"DEFAULT"'}),"|",(0,t.jsx)(s.code,{children:'"ALWAYS_DROP"'}),"|",(0,t.jsx)(s.code,{children:'"ALWAYS_KEEP"'}),"|",(0,t.jsx)(s.code,{children:'"DESTROY"'}),")"]}),"\n",(0,t.jsxs)(s.p,{children:["Whether to drop, keep, destroy, or follow the ",(0,t.jsx)(s.code,{children:"keepCurios"})," configuration setting."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'"DEFAULT"'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," N/A"]}),"\n"]}),"\n",(0,t.jsxs)(s.h3,{id:"validators-string",children:[(0,t.jsx)(s.strong,{children:"validators"})," (string[])"]}),"\n",(0,t.jsxs)(s.p,{children:["The list of registered predicates from the Curios API used by this slot type to validate item insertions. For more\ninformation about validators, please see the page on ",(0,t.jsx)(s.a,{href:"../items/assign-slots#validators",children:"slot assignments"}),"."]}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"default:"})," ",(0,t.jsx)(s.code,{children:'["curios:tag"]'})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"merging:"})," Each entry is added into the final array."]}),"\n"]}),"\n",(0,t.jsxs)(s.admonition,{type:"info",children:[(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.strong,{children:["Which ",(0,t.jsx)(s.code,{children:"operation"})," value should I use?"]})}),(0,t.jsxs)(s.p,{children:["In most cases, ",(0,t.jsx)(s.code,{children:'"SET"'})," (also the default if no value is defined) will accomplish the desired result. It denotes that a\nslot type should have a certain amount of slots by default, with the highest value among all consumers being used.\n",(0,t.jsx)(s.code,{children:'"ADD"'}),"and ",(0,t.jsx)(s.code,{children:'"REMOVE"'})," are inherent slot modifiers and are based on the amount of slots specified by all ",(0,t.jsx)(s.code,{children:'"SET"'}),"\noperations, the result of which can change based on the mods/datapacks loaded."]})]}),"\n",(0,t.jsx)(s.h2,{id:"example",children:"Example"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "order": 20,\n "size": 4,\n "icon": "curios:slot/empty_custom_slot",\n "add_cosmetic": true\n}\n'})}),"\n",(0,t.jsxs)(s.p,{children:["This slot type will have a relatively low order of 20, which will make it appear higher than most slots. It also has\nsize of 4 which means that it will register 4 slots to any given entity by default. For the GUI, it uses an icon\nlocated at ",(0,t.jsx)(s.code,{children:"curios:slot/empty_custom_slot"}),". It also has added a cosmetic slot so there will be an additional slot for\ncosmetic items next to it in the Curios GUI."]}),"\n",(0,t.jsx)(s.h2,{id:"modifying-a-slot-type",children:"Modifying a Slot Type"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["The process of modifying a slot type is identical to registering a new slot type, except using the same ",(0,t.jsx)(s.code,{children:"identifier"})," as\nthe existing slot type. All slot types that share an ",(0,t.jsx)(s.code,{children:"identifier"})," will be merged according to the ",(0,t.jsx)(s.strong,{children:"Merge Behavior"})," of\neach field as outlined above."]}),"\n",(0,t.jsx)(s.h3,{id:"example-1",children:"Example"}),"\n",(0,t.jsxs)(s.p,{children:["Curios natively provides data for the ",(0,t.jsx)(s.code,{children:"ring"})," slot, which defaults the size to 1. In order to increase the size to 2,\ncreate a ",(0,t.jsx)(s.code,{children:"ring.json"})," slot registration file in the datapack with the contents:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "size": 2\n}\n'})}),"\n",(0,t.jsx)(s.p,{children:"This will merge the size data of this registration with the existing registration provided by Curios, keeping all the\nother data intact while increasing the number of slots to 2."}),"\n",(0,t.jsx)(s.h2,{id:"localization",children:"Localization"}),"\n",(0,t.jsx)(s.hr,{}),"\n",(0,t.jsxs)(s.p,{children:["By default, slot types do not come with localizations for the slot name. Only ",(0,t.jsx)(s.a,{href:"/curios/slots/preset-slots",children:"Preset Slot Types"})," come\nwith native localizations, provided by Curios itself. For other slot types, a resource pack with a language file will\nbe necessary in order to properly localize the slot name. If you are unfamiliar with resource packs, it is recommended\nto read through the ",(0,t.jsx)(s.a,{href:"https://minecraft.wiki/w/Resource_pack",children:"wiki page"})," in order to understand the concept and\nstructure."]}),"\n",(0,t.jsxs)(s.p,{children:["The localization key for slot types follow the format ",(0,t.jsx)(s.code,{children:"curios.identifier.name"})," with ",(0,t.jsx)(s.code,{children:"name"})," being the ",(0,t.jsx)(s.code,{children:"identifier"}),"\nregistered for the slot type. For example, the ",(0,t.jsx)(s.code,{children:"ring"})," slot's localization key would be ",(0,t.jsx)(s.code,{children:"curios.identifier.ring"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"example-2",children:"Example"}),"\n",(0,t.jsxs)(s.p,{children:["To localize a slot type with the identifier ",(0,t.jsx)(s.code,{children:"custom"})," to the ",(0,t.jsx)(s.code,{children:"en_us"})," localization, a ",(0,t.jsx)(s.code,{children:"assets/(namespace)/lang"})," folder\nneeds to be created in the resource pack with a ",(0,t.jsx)(s.code,{children:"en_us.json"})," inside with the contents:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-json",children:'{\n "curios.identifier.custom": "Custom Slot"\n}\n'})})]})}function h(e={}){const{wrapper:s}={...(0,i.a)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>r});var t=n(7294);const i={},o=t.createContext(i);function r(e){const s=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(o.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.ab3bbfbc.js b/assets/js/runtime~main.8cbf8782.js
similarity index 98%
rename from assets/js/runtime~main.ab3bbfbc.js
rename to assets/js/runtime~main.8cbf8782.js
index b2948d6..49f554a 100644
--- a/assets/js/runtime~main.ab3bbfbc.js
+++ b/assets/js/runtime~main.8cbf8782.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,f,t,r,d={},o={};function c(e){var a=o[e];if(void 0!==a)return a.exports;var f=o[e]={exports:{}};return d[e].call(f.exports,f,f.exports,c),f.exports}c.m=d,e=[],c.O=(a,f,t,r)=>{if(!f){var d=1/0;for(i=0;i{
"size": 2
}
This will merge the size data of this registration with the existing registration provided by Curios, keeping all of the -other data intact while increasing the number of slots to 2.
This will merge the size data of this registration with the existing registration provided by Curios, keeping all the +other data intact while increasing the number of slots to 2.
+By default, slot types do not come with localizations for the slot name. Only Preset Slot Types come +with native localizations, provided by Curios itself. For other slot types, a resource pack with a language file will +be necessary in order to properly localize the slot name. If you are unfamiliar with resource packs, it is recommended +to read through the wiki page in order to understand the concept and +structure.
+The localization key for slot types follow the format curios.identifier.name
with name
being the identifier
+registered for the slot type. For example, the ring
slot's localization key would be curios.identifier.ring
.
To localize a slot type with the identifier custom
to the en_us
localization, a assets/(namespace)/lang
folder
+needs to be created in the resource pack with a en_us.json
inside with the contents:
{
"curios.identifier.custom": "Custom Slot"
}