From 83526f8485e921153f452a42571263ea3cd85702 Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Sun, 30 Jan 2022 14:02:58 -0500 Subject: [PATCH 1/7] initial attempt at items guide --- source/guides/basics/custom-items.md | 148 +++++++++++++++++- .../basics/images/fancy_stick-basic.png | Bin 0 -> 9681 bytes .../basics/images/fancy_stick-crafting.png | Bin 0 -> 34676 bytes .../basics/images/fancy_sword-basic.png | Bin 0 -> 23592 bytes 4 files changed, 140 insertions(+), 8 deletions(-) create mode 100644 source/guides/basics/images/fancy_stick-basic.png create mode 100644 source/guides/basics/images/fancy_stick-crafting.png create mode 100644 source/guides/basics/images/fancy_sword-basic.png diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index 0b96690..c726d9d 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -1,26 +1,158 @@ Fancier Sticks: Making Custom Items (PLACEHOLDER ONLY) ----------------------------------- -**TODO: Write-up that introduces item script containers, and the general ideas of making custom items, mentioning recipes, name/lore, mechanisms, item flags, etc.** - -### Placeholder +```eval_rst +.. contents:: Table of Contents + :local: +``` -Until this page is written, you can view the [old tutorial video here](https://one.denizenscript.com/denizen/vids/Custom%20Items). +### What Are Custom Items -### Sample Script +Custom items are a way to store a various set of properties onto an item to create a new unique item in the game. Denizen provides the capabilities to save these unique items in item scripts so that they can be reused or uniquely referenced to in other scripts. These were briefly mentioned in [the mechanisms guide](/guides/basics/mechanisms) but this page will go into more detail. -Here's a quick sample of a modern item script. +### The Basic Structure +To start off with, this is the basic structure of an item script: ```dscript_green -my_item: +fancy_stick: type: item material: stick display name: <&b>Fancy stick! lore: - <&7>So fancy. + - <&7>Second line. +``` +In [the script editor](/guides/first-steps/script-editor), you can simply type `item` and use tab completion to generate the basic template of an item script at any time. + +An item script container has the type set to `item`. You also need to give it a valid existing Minecraft material for your item to be based off of, for example here we are using a stick. + +While not strictly required, most item script will also have a custom display name and custom lore. The display name works similarly to other container keys, the lore takes in a list as opposed to a single argument. Each line of lore is given on a new line prepended by a `-` (this is similar, but should not be confused with, how commands look). + +You can get this item in-game by typing `/ex give fancy_stick` + +![](images/fancy_stick-basic.png) + +### Adding More Properties + +There are several other properties that can be added to item scripts. + +As an example this would be how you would and enchantments: +```dscript_green +fancy_sword: + type: item + material: iron_sword + display name: <&b>Fancy indestructible sword! + enchantments: + - DAMAGE_UNDEAD:2 + - DURABILITY:3 +``` +Note that the enchantment names do differ than the ones that display in game, the names to use can be found on [spigots page](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html) + +You can get this item in-game by typing `/ex give fancy_sword` + +![](images/fancy_sword-basic.png) + +You can also add in custom data onto an item in the form of flags such as: +```dscript_green +special_hat_1: + type: item + material: iron_helmet + display name: <&b>A Special Hat + flags: + hat_type: 1 +special_hat_2: + type: item + material: iron_helmet + display name: <&b>A Special Hat 2.0 + flags: + hat_type: 2 +``` + +You can test this out by giving yourself the 2 items `/ex give special_hat_1` and `/ex give special_hat_2` and using `/ex narrate ` while holding the item to see the flag value. + + +As mentioned above [the mechanisms guide](/guides/basics/mechanisms) covers more on how properties work, but to reiterate you can apply mechanisms to items directly in the item script to add more unique properties that are not covered by other keys. For instance if you wanted the `fancy_sword` to be truly unbreakable you would do: +```dscript_green +fancy_sword: + type: item + material: iron_sword + display name: <&b>Fancy indestructible sword! + enchantments: + - DAMAGE_UNDEAD:2 + mechanisms: + unbreakable: true +``` + +As a warning, changes to an item script do not get automatically applied to instances of the item that have been created. For instance, if you are now updating this sword, the old sword would still have the same original properties. + +### Using Items Elsewhere + +As demonstrated previously, you can simply just provide the name of the item script into the give command and denizen will give you a copy of that item. This applies also to anywhere that specific items can be referenced. For instance, lets say we want an event to listen for when someone specifically uses the `fancy_sword` to hit something else, we can simply just do the following: +```dscript_green +fancy_sword_events: + type: world + events: + on player damages entity with:fancy_sword: + - narrate "You hit an with the fancy sword" +``` +You can test this out by hitting an entity with the fancy_sword and again with a normal one and see that nothing happens when using the normal one and only when using the fancy_sword. + +### Adding Crafting Recipes + +Custom items can also come with their own crafting recipes so that players can craft it in game. Let's add a crafting recipe to the fancy_sword: +```dscript_green +fancy_sword: + type: item + material: iron_sword + display name: <&b>Fancy indestructible sword! + enchantments: + - DAMAGE_UNDEAD:2 + mechanisms: + unbreakable: true + recipes: + 1: + type: shaped + input: + - obsidian|air|air + - air|obsidian|air + - air|air|iron_sword +``` +A few things to note: +- Each recipe needs a number, as an item can have multiple recipes. This should be increasing in numeric order +- The recipe needs a type, there are many ways to craft items, shaped is the most basic/common of using the crafting table +- The shaped recipe goes in this 3*3 grid with air taking up where you would want a specific empty spot +- The recipe will not show up in the recipe book after crafting until you either reconnect or use the `resend_recipes` mechanism (`/ex adjust resend_recipes`) + +You can try it out and see that you can now craft it +![](images/fancy_sword-crafting.png) + +As mentioned above, there are more kinds of crafting. To cover them briefly an example would be given of how the input would look. + +shapeless - taking a list of items as input but doesnt care about shape: +``` +type: shapeless +input: obsidian|obsidian|iron_sword +``` + +stonecutting - takes in only a single item on the stonecutter +``` +type: stonecutting +input: iron_sword +``` + +furnace/blast/smoker/campfire - smelting an item in the relevant block +``` +type: furnace +input: iron_sword ``` -You can get this item in-game by typing `/ex give my_item` +smithing - crafting an item on the smithing table, using 2 inputs (a base and an upgrade) as well as allowing to keep enchantments and display names +``` +type: smithing +base: iron_sword +retains: enchantments|display +upgrade: obsidian +``` ### Related Technical Docs diff --git a/source/guides/basics/images/fancy_stick-basic.png b/source/guides/basics/images/fancy_stick-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..440acb73ceb98ddbf5905bf34b9ac7239afa3f33 GIT binary patch literal 9681 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 Date: Sun, 30 Jan 2022 14:04:49 -0500 Subject: [PATCH 2/7] fixed typo in picture name --- ..._stick-crafting.png => fancy_sword-crafting.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename source/guides/basics/images/{fancy_stick-crafting.png => fancy_sword-crafting.png} (100%) diff --git a/source/guides/basics/images/fancy_stick-crafting.png b/source/guides/basics/images/fancy_sword-crafting.png similarity index 100% rename from source/guides/basics/images/fancy_stick-crafting.png rename to source/guides/basics/images/fancy_sword-crafting.png From 8dfa9f641ee770d0f586b4f79bf2faf778d93e4e Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Sun, 30 Jan 2022 14:15:42 -0500 Subject: [PATCH 3/7] added book details --- source/guides/basics/custom-items.md | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index c726d9d..b992368 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -129,31 +129,54 @@ You can try it out and see that you can now craft it As mentioned above, there are more kinds of crafting. To cover them briefly an example would be given of how the input would look. shapeless - taking a list of items as input but doesnt care about shape: -``` +```dscript_blue type: shapeless input: obsidian|obsidian|iron_sword ``` stonecutting - takes in only a single item on the stonecutter -``` +```dscript_blue type: stonecutting input: iron_sword ``` furnace/blast/smoker/campfire - smelting an item in the relevant block -``` +```dscript_blue type: furnace input: iron_sword ``` smithing - crafting an item on the smithing table, using 2 inputs (a base and an upgrade) as well as allowing to keep enchantments and display names -``` +```dscript_blue type: smithing base: iron_sword retains: enchantments|display upgrade: obsidian ``` +### Custom Books + +On related topic to item scripts, there are also book scripts. While they serve similar purpose as item scripts, they are their own unique container. +A book script is structured as follows: +```dscript_green +fancy_book: + type: book + title: The Fanciest of Books + author: Steve + signed: true + text: + - There once was a player named steve who ate a potatoHe liked it + - The end +``` + +Things to note here: +- The author does not have to be anyone real, you can put in whatever you want +- Signed makes this a signed book, you can set this to false to leave it unsigned +- Each line of text is a new page. You can insert new lines on a page using `` + +This is can be given in a similar fashion as other item scripts, as well as used in place of an item just like item scripts. +You can test this out with `/ex give fancy_book` + ### Related Technical Docs If you want to read a lot more about the custom items, here are a few technical guides you might consider... From b6a5ca1e55a88695db3fc193c60ba0b456c97015 Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Sun, 30 Jan 2022 14:23:25 -0500 Subject: [PATCH 4/7] made correction to book script --- source/guides/basics/custom-items.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index b992368..8ed594c 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -174,9 +174,26 @@ Things to note here: - Signed makes this a signed book, you can set this to false to leave it unsigned - Each line of text is a new page. You can insert new lines on a page using `` -This is can be given in a similar fashion as other item scripts, as well as used in place of an item just like item scripts. +This is can be given in a similar fashion as other item scripts. You can test this out with `/ex give fancy_book` +If you are looking to use this in events however, you would need to link it to an item script via the `book` key like so: +```dscript_green +fancy_book_item: + type: item + material: written_book + book: fancy_book +``` + +After than you can then use `fancy_book_item` in events such as: +```dscript_green +fancy_book_events: + type: world + events: + on player clicks block with:fancy_book_item: + - narrate "Opening the fancy book!!!" +``` + ### Related Technical Docs If you want to read a lot more about the custom items, here are a few technical guides you might consider... From 887e0d0bcb4e1f5af3b633b59c84a82674779030 Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Sun, 30 Jan 2022 15:00:37 -0500 Subject: [PATCH 5/7] fixing typos --- source/guides/basics/custom-items.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index 8ed594c..046a6c3 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -24,7 +24,7 @@ fancy_stick: ``` In [the script editor](/guides/first-steps/script-editor), you can simply type `item` and use tab completion to generate the basic template of an item script at any time. -An item script container has the type set to `item`. You also need to give it a valid existing Minecraft material for your item to be based off of, for example here we are using a stick. +An item script container has the type set to `item`. You also need to give it a valid existing Minecraft material for your item to be based off of; for example here we are using a stick. While not strictly required, most item script will also have a custom display name and custom lore. The display name works similarly to other container keys, the lore takes in a list as opposed to a single argument. Each line of lore is given on a new line prepended by a `-` (this is similar, but should not be confused with, how commands look). @@ -36,7 +36,7 @@ You can get this item in-game by typing `/ex give fancy_stick` There are several other properties that can be added to item scripts. -As an example this would be how you would and enchantments: +As an example this would be how you would add enchantments: ```dscript_green fancy_sword: type: item @@ -46,7 +46,7 @@ fancy_sword: - DAMAGE_UNDEAD:2 - DURABILITY:3 ``` -Note that the enchantment names do differ than the ones that display in game, the names to use can be found on [spigots page](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html) +Note that the enchantment names do differ than the ones that display in game, the names to use can be found on [Spigot's page](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html) You can get this item in-game by typing `/ex give fancy_sword` @@ -87,7 +87,7 @@ As a warning, changes to an item script do not get automatically applied to inst ### Using Items Elsewhere -As demonstrated previously, you can simply just provide the name of the item script into the give command and denizen will give you a copy of that item. This applies also to anywhere that specific items can be referenced. For instance, lets say we want an event to listen for when someone specifically uses the `fancy_sword` to hit something else, we can simply just do the following: +As demonstrated previously, you can simply just provide the name of the item script into the give command and denizen will give you a copy of that item. This applies also to anywhere that specific items can be referenced. For instance, let's say we want an event to listen for when someone specifically uses the `fancy_sword` to hit something else, we can simply just do the following: ```dscript_green fancy_sword_events: type: world @@ -123,12 +123,12 @@ A few things to note: - The shaped recipe goes in this 3*3 grid with air taking up where you would want a specific empty spot - The recipe will not show up in the recipe book after crafting until you either reconnect or use the `resend_recipes` mechanism (`/ex adjust resend_recipes`) -You can try it out and see that you can now craft it +You can try it out and see that you can now craft it: ![](images/fancy_sword-crafting.png) -As mentioned above, there are more kinds of crafting. To cover them briefly an example would be given of how the input would look. +As mentioned above, there are more kinds of crafting. To cover them briefly an example is given of how the input would look. -shapeless - taking a list of items as input but doesnt care about shape: +shapeless - taking a list of items as input but doesn't care about shape: ```dscript_blue type: shapeless input: obsidian|obsidian|iron_sword From f0f8637d18f1585cad5331427fb06b11530997e2 Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Mon, 16 Jan 2023 21:56:27 -0500 Subject: [PATCH 6/7] Made recommended changes, updated some information --- source/guides/basics/custom-items.md | 44 ++++++++++++++++------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index 046a6c3..59cff21 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -1,4 +1,4 @@ -Fancier Sticks: Making Custom Items (PLACEHOLDER ONLY) +Fancier Sticks: Making Custom Items ----------------------------------- ```eval_rst @@ -12,7 +12,7 @@ Custom items are a way to store a various set of properties onto an item to crea ### The Basic Structure -To start off with, this is the basic structure of an item script: +To start off with, this is how a basic item script looks like: ```dscript_green fancy_stick: type: item @@ -24,9 +24,9 @@ fancy_stick: ``` In [the script editor](/guides/first-steps/script-editor), you can simply type `item` and use tab completion to generate the basic template of an item script at any time. -An item script container has the type set to `item`. You also need to give it a valid existing Minecraft material for your item to be based off of; for example here we are using a stick. +An item script container has the type set to `item`. You will need to give it a valid ItemTag for your item to be based off of; for example here we are using a stick. -While not strictly required, most item script will also have a custom display name and custom lore. The display name works similarly to other container keys, the lore takes in a list as opposed to a single argument. Each line of lore is given on a new line prepended by a `-` (this is similar, but should not be confused with, how commands look). +While not strictly required, most item script will also have a custom display name and custom lore. The display name works similarly to other container keys, the lore takes in a list as opposed to a single argument. Each line of lore is given on a new line prepended by a `-` (similar to how a list of commands look in scripts). You can get this item in-game by typing `/ex give fancy_stick` @@ -43,10 +43,9 @@ fancy_sword: material: iron_sword display name: <&b>Fancy indestructible sword! enchantments: - - DAMAGE_UNDEAD:2 - - DURABILITY:3 + - smite:2 + - unbreaking:3 ``` -Note that the enchantment names do differ than the ones that display in game, the names to use can be found on [Spigot's page](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html) You can get this item in-game by typing `/ex give fancy_sword` @@ -78,7 +77,7 @@ fancy_sword: material: iron_sword display name: <&b>Fancy indestructible sword! enchantments: - - DAMAGE_UNDEAD:2 + - smite:2 mechanisms: unbreakable: true ``` @@ -87,7 +86,7 @@ As a warning, changes to an item script do not get automatically applied to inst ### Using Items Elsewhere -As demonstrated previously, you can simply just provide the name of the item script into the give command and denizen will give you a copy of that item. This applies also to anywhere that specific items can be referenced. For instance, let's say we want an event to listen for when someone specifically uses the `fancy_sword` to hit something else, we can simply just do the following: +Since item scripts are effectively new items, any place that accepts ItemTags will also accept item scripts in addition to any vanilla minecraft item. As demonstrated previously, you can simply just provide the name of the item script into the give command and denizen will give you a copy of that item. This applies also to anywhere that specific items can be referenced. For instance, let's say we want an event to listen for when someone specifically uses the `fancy_sword` to hit something else, we can simply just do the following: ```dscript_green fancy_sword_events: type: world @@ -95,7 +94,7 @@ fancy_sword_events: on player damages entity with:fancy_sword: - narrate "You hit an with the fancy sword" ``` -You can test this out by hitting an entity with the fancy_sword and again with a normal one and see that nothing happens when using the normal one and only when using the fancy_sword. +You can test this out by hitting an entity with the fancy_sword and again with a normal one. See that nothing happens when using the normal one and only when using the fancy_sword does the statement display. ### Adding Crafting Recipes @@ -106,7 +105,7 @@ fancy_sword: material: iron_sword display name: <&b>Fancy indestructible sword! enchantments: - - DAMAGE_UNDEAD:2 + - smite:2 mechanisms: unbreakable: true recipes: @@ -119,8 +118,8 @@ fancy_sword: ``` A few things to note: - Each recipe needs a number, as an item can have multiple recipes. This should be increasing in numeric order -- The recipe needs a type, there are many ways to craft items, shaped is the most basic/common of using the crafting table -- The shaped recipe goes in this 3*3 grid with air taking up where you would want a specific empty spot +- The recipe needs a type, there are many ways to craft items, shaped is the most basic/common which uses the crafting table +- The shaped recipe goes in this 3\*3 or 2\*2 grid with air taking up where you would want a specific empty spot if a 2\*2 shape is desired, simply adjust the input to match - The recipe will not show up in the recipe book after crafting until you either reconnect or use the `resend_recipes` mechanism (`/ex adjust resend_recipes`) You can try it out and see that you can now craft it: @@ -140,13 +139,13 @@ type: stonecutting input: iron_sword ``` -furnace/blast/smoker/campfire - smelting an item in the relevant block +furnace/blast/smoker/campfire - smelting an item in the relevant item from the script ```dscript_blue type: furnace input: iron_sword ``` -smithing - crafting an item on the smithing table, using 2 inputs (a base and an upgrade) as well as allowing to keep enchantments and display names +smithing - crafting an item on the smithing table, using 2 inputs (a base and an upgrade) as well as allowing to keep enchantments and display names ```dscript_blue type: smithing base: iron_sword @@ -154,10 +153,17 @@ retains: enchantments|display upgrade: obsidian ``` +brewing - use a brewing stand to convert and item with an ingredient into the item from the script. Note, neither the item in the script nor the input need to be a potion in any way. +```dscript_blue +type: brewing +input: iron_sword +ingredient: obsidian +``` + ### Custom Books On related topic to item scripts, there are also book scripts. While they serve similar purpose as item scripts, they are their own unique container. -A book script is structured as follows: +An example book script would be as follows: ```dscript_green fancy_book: type: book @@ -172,12 +178,14 @@ fancy_book: Things to note here: - The author does not have to be anyone real, you can put in whatever you want - Signed makes this a signed book, you can set this to false to leave it unsigned -- Each line of text is a new page. You can insert new lines on a page using `` +- Each line of text is a new page, not a new line on a page. You can insert new lines on a page using `` +- While text will automatically move to new lines if space is required, there is no guarantee that the text you write will fit on the page. This may take some trial and error to ensure the text you want to show does in fact fit its page. This is can be given in a similar fashion as other item scripts. You can test this out with `/ex give fancy_book` -If you are looking to use this in events however, you would need to link it to an item script via the `book` key like so: +Despite this being similar to item scripts, book scripts are not necessarily valid ItemTags in all situations, and thereby cannot be used in all the same ways that other ItemTags can be used, in particular when verifying that the book a player has is indeed a result of the script. +For instance if you are looking to use this in events, you would need to link it to an item script via the `book` key like so: ```dscript_green fancy_book_item: type: item From b0caede152cb0ddf08bd0b00c1c7ecd258647042 Mon Sep 17 00:00:00 2001 From: Zozer Firehood Date: Mon, 16 Jan 2023 22:04:44 -0500 Subject: [PATCH 7/7] updated to use color configs --- source/guides/basics/custom-items.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/guides/basics/custom-items.md b/source/guides/basics/custom-items.md index 59cff21..2f2f37a 100644 --- a/source/guides/basics/custom-items.md +++ b/source/guides/basics/custom-items.md @@ -17,10 +17,10 @@ To start off with, this is how a basic item script looks like: fancy_stick: type: item material: stick - display name: <&b>Fancy stick! + display name: <&[item]>Fancy stick! lore: - - <&7>So fancy. - - <&7>Second line. + - <&[lore]>So fancy. + - <&[lore]>Second line. ``` In [the script editor](/guides/first-steps/script-editor), you can simply type `item` and use tab completion to generate the basic template of an item script at any time. @@ -30,6 +30,8 @@ While not strictly required, most item script will also have a custom display na You can get this item in-game by typing `/ex give fancy_stick` +Note that the above sample uses the `item` and `lore` custom color codes defined in your Denizen/config.yml + ![](images/fancy_stick-basic.png) ### Adding More Properties @@ -41,7 +43,7 @@ As an example this would be how you would add enchantments: fancy_sword: type: item material: iron_sword - display name: <&b>Fancy indestructible sword! + display name: <&[item]>Fancy indestructible sword! enchantments: - smite:2 - unbreaking:3 @@ -56,13 +58,13 @@ You can also add in custom data onto an item in the form of flags such as: special_hat_1: type: item material: iron_helmet - display name: <&b>A Special Hat + display name: <&[item]>A Special Hat flags: hat_type: 1 special_hat_2: type: item material: iron_helmet - display name: <&b>A Special Hat 2.0 + display name: <&[item]>A Special Hat 2.0 flags: hat_type: 2 ``` @@ -75,7 +77,7 @@ As mentioned above [the mechanisms guide](/guides/basics/mechanisms) covers more fancy_sword: type: item material: iron_sword - display name: <&b>Fancy indestructible sword! + display name: <&[item]>Fancy indestructible sword! enchantments: - smite:2 mechanisms: @@ -103,7 +105,7 @@ Custom items can also come with their own crafting recipes so that players can c fancy_sword: type: item material: iron_sword - display name: <&b>Fancy indestructible sword! + display name: <&[item]>Fancy indestructible sword! enchantments: - smite:2 mechanisms: