# Table of Contents - [Home | Nexo](#home-nexo) - [Version Support | Nexo](#version-support-nexo) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Recipes | Nexo](#recipes-nexo) - [FAQ | Nexo](#faq-nexo) - [Video Tutorials | Nexo](#video-tutorials-nexo) - [ItemModels vs. CustomModelData | Nexo](#itemmodels-vs-custommodeldata-nexo) - [ItemsAdder → Nexo | Nexo](#itemsadder-nexo-nexo) - [NexoProxy | Nexo](#nexoproxy-nexo) - [ModelEngine - custom mobs | Nexo](#modelengine-custom-mobs-nexo) - [Text Effects by Akis | Nexo](#text-effects-by-akis-nexo) - [PlaceholderAPI | Nexo](#placeholderapi-nexo) - [Carpentry | Nexo](#carpentry-nexo) - [ScaffoldingExtension | Nexo](#scaffoldingextension-nexo) - [Emotes & Glyphs | Nexo](#emotes-glyphs-nexo) - [MythicMobs - custom mobs | Nexo](#mythicmobs-custom-mobs-nexo) - [Custom Harness (1.21.6+) | Nexo](#custom-harness-1-21-6-nexo) - [MythicCrucible | Nexo](#mythiccrucible-nexo) - [Custom Paintings | Nexo](#custom-paintings-nexo) - [Core Shaders | Nexo](#core-shaders-nexo) - [Nexo Creative Inventory | Nexo](#nexo-creative-inventory-nexo) - [MMOItems | Nexo](#mmoitems-nexo) - [Custom Saddles (1.21.5+) | Nexo](#custom-saddles-1-21-5-nexo) - [Oraxen → Nexo | Nexo](#oraxen-nexo-nexo) - [Custom Music Discs | Nexo](#custom-music-discs-nexo) - [Sounds | Nexo](#sounds-nexo) - [ResourcePack | Nexo](#resourcepack-nexo) - [Custom Player Armors | Nexo](#custom-player-armors-nexo) - [Multi-Bitmap Glyph | Nexo](#multi-bitmap-glyph-nexo) - [Anti-Cheat Plugins | Nexo](#anti-cheat-plugins-nexo) - [Commands | Nexo](#commands-nexo) - [Custom Block Mechanics | Nexo](#custom-block-mechanics-nexo) - [Reference Glyph | Nexo](#reference-glyph-nexo) - [Animated Glyphs | Nexo](#animated-glyphs-nexo) - [DialogAction | Nexo](#dialogaction-nexo) - [Trims Based (1.20+) | Nexo](#trims-based-1-20-nexo) - [Custom Trident | Nexo](#custom-trident-nexo) - [Custom Mechanic | Nexo](#custom-mechanic-nexo) - [API | Nexo](#api-nexo) - [Custom Elytras | Nexo](#custom-elytras-nexo) - [Component Based | Nexo](#component-based-nexo) - [Other Mechanics | Nexo](#other-mechanics-nexo) - [2D Player Heads | Nexo](#2d-player-heads-nexo) - [Custom Mob Armor | Nexo](#custom-mob-armor-nexo) - [DialogType | Nexo](#dialogtype-nexo) - [Plugin settings | Nexo](#plugin-settings-nexo) - [Stripped Log Mechanic | Nexo](#stripped-log-mechanic-nexo) - [Directional Mechanic | Nexo](#directional-mechanic-nexo) - [Dialogs | Nexo](#dialogs-nexo) - [ClickAction Mechanic | Nexo](#clickaction-mechanic-nexo) - [Glyphs | Nexo](#glyphs-nexo) - [Special Item Appearance | Nexo](#special-item-appearance-nexo) - [Vendors | Nexo](#vendors-nexo) - [Custom GUIs & HUDs | Nexo](#custom-guis-huds-nexo) - [DialogBase | Nexo](#dialogbase-nexo) - [StringBlock Mechanic | Nexo](#stringblock-mechanic-nexo) - [ChorusBlock Mechanic | Nexo](#chorusblock-mechanic-nexo) - [RangeDispatch ItemModel | Nexo](#rangedispatch-itemmodel-nexo) - [Composite ItemModel | Nexo](#composite-itemmodel-nexo) - [Condition ItemModel | Nexo](#condition-itemmodel-nexo) - [MultiPack Feature | Nexo](#multipack-feature-nexo) - [Reference ItemModel | Nexo](#reference-itemmodel-nexo) - [Empty ItemModel | Nexo](#empty-itemmodel-nexo) - [Select ItemModel | Nexo](#select-itemmodel-nexo) - [Items | Nexo](#items-nexo) - [Light Mechanic | Nexo](#light-mechanic-nexo) - [Seat Mechanic | Nexo](#seat-mechanic-nexo) - [Bed Mechanic | Nexo](#bed-mechanic-nexo) - [ItemModel Builder | Nexo](#itemmodel-builder-nexo) - [Furniture Placements | Nexo](#furniture-placements-nexo) - [Door Mechanic | Nexo](#door-mechanic-nexo) - [NoteBlock Mechanic | Nexo](#noteblock-mechanic-nexo) - [Scaffolding | Nexo](#scaffolding-nexo) - [Text-Entities | Nexo](#text-entities-nexo) - [Farming Mechanic | Nexo](#farming-mechanic-nexo) - [Hitbox | Nexo](#hitbox-nexo) - [Connectable Furniture | Nexo](#connectable-furniture-nexo) - [Barrier Hitbox | Nexo](#barrier-hitbox-nexo) - [Interaction Hitbox | Nexo](#interaction-hitbox-nexo) - [Ghast Hitbox | Nexo](#ghast-hitbox-nexo) - [Shulker Hitbox | Nexo](#shulker-hitbox-nexo) - [Furniture States | Nexo](#furniture-states-nexo) - [Components | Nexo](#components-nexo) - [Furniture Mechanic | Nexo](#furniture-mechanic-nexo) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [FAQ | Nexo](#faq-nexo) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Oraxen → Nexo | Nexo](#oraxen-nexo-nexo) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Anti-Cheat Plugins | Nexo](#anti-cheat-plugins-nexo) - [Vendors | Nexo](#vendors-nexo) - [Scaffolding | Nexo](#scaffolding-nexo) - [Plugin settings | Nexo](#plugin-settings-nexo) - [Furniture Mechanic | Nexo](#furniture-mechanic-nexo) --- # Home | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/readme.md) . What is Nexo?[](https://docs.nexomc.com/#what-is-nexo) ------------------------------------------------------- Nexo is an all-in-one Minecraft plugin that makes it easy for server admins to add their own items, blocks, armor, and furniture. By using simple file-based configuration, Nexo automatically handles Resource Pack generation. Nexo then dispatches the pack to all players on the server, allowing everyone to see the custom models and textures set up by the admin. This documentation contains a complete list of features, as well examples of what Nexo can do. If you need further assistance, please join the Discord server with a proof of purchase. Nexo has been tested on **Paper & Folia**. Supported versions can be found at [Version Support](https://docs.nexomc.com/version-support) [NextVersion Support](https://docs.nexomc.com/version-support) Last updated 24 days ago --- # Version Support | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/version-support.md) . Nexo aims to support the latest releases of Minecraft as soon as possible. Below is a detailed list of which server-versions Nexo currently supports. Version Status Notes 26.2 ✅ **Supported** Nexo 1.25+ 26.1-26.1.2 ✅ **Supported** Nexo 1.22+ 1.21.11 ✅ **Supported** Nexo 1.16+ 1.21.10 ✅ **Supported** Nexo 1.13+ 1.21.8 ✅ **Supported** Nexo 1.10+ 1.21.5 ✅ **Supported** 1.21.4 ✅ **Supported** 1.21.1-1.21.3 ⚠️ **Unsupported** Official support removed as of Nexo 1.25+ Can be used on Nexo 1.24 & older 1.20.4, 1.20.6 ⚠️ **Unsupported** Official support removed as of Nexo 1.13+ Can be used on Nexo 1.12 & older 1.20.5, 1.21, 1.21.2, 1.21.6, 1.21.7, 1.21.9 🛑 **Unsupported** These versions are labelled as "**Unsupported"** because they were quickly followed by a new release to fix bugs. There is no reason to use any of these versions in favor of the above-mentioned ones. Nexo might still work on these releases but in no way is it ideal to use [PreviousHome](https://docs.nexomc.com/) [NextFAQ](https://docs.nexomc.com/general-usage/faq) Last updated 24 days ago --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.nexomc.com/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.nexomc.com/version-support.md). # Version Support Nexo aims to support the latest releases of Minecraft as soon as possible.\\ Below is a detailed list of which server-versions Nexo currently supports. | Version | Status | Notes | | --- | --- | --- | | 26.2 | ✅ [**Supported**](https://docs.nexomc.com/version-support.md#user-content-fn-1) | Nexo 1.25+ | | 26.1-26.1.2 | ✅ [**Supported**](https://docs.nexomc.com/version-support.md#user-content-fn-2) | Nexo 1.22+ | | 1.21.11 | ✅ [**Supported**](https://docs.nexomc.com/version-support.md#user-content-fn-3) | Nexo 1.16+ | | 1.21.10 | ✅ [**Supported**](https://docs.nexomc.com/version-support.md#user-content-fn-4) | Nexo 1.13+ | | 1.21.8 | ✅ [**Supported**](https://docs.nexomc.com/version-support.md#user-content-fn-5) | Nexo 1.10+ | | 1.21.5 | ✅ **Supported** | | | 1.21.4 | ✅ **Supported** | | | | | | | 1.21.1-1.21.3 | ⚠️ [**Unsupported**](https://docs.nexomc.com/version-support.md#user-content-fn-6) | Official support removed as of Nexo 1.25+
Can be used on Nexo 1.24 & older | | 1.20.4, 1.20.6 | ⚠️ [**Unsupported**](https://docs.nexomc.com/version-support.md#user-content-fn-7) | Official support removed as of Nexo 1.13+
Can be used on Nexo 1.12 & older | | | | | | 1.20.5, 1.21, 1.21.2, 1.21.6, 1.21.7, 1.21.9 | 🛑 [**Unsupported**](https://docs.nexomc.com/version-support.md#user-content-fn-8) | These versions are labelled as "**Unsupported"** because they were quickly followed by a new release to fix bugs. There is no reason to use any of these versions in favor of the above-mentioned ones. Nexo might still work on these releases but in no way is it ideal to use | \[^1\]: Nexo 1.25+ \[^2\]: Nexo 1.22+ \[^3\]: Nexo 1.16+ \[^4\]: Nexo 1.13+ \[^5\]: Nexo 1.10+ \[^6\]: Official support removed as of Nexo 1.25+\\ Can be used on Nexo 1.24 & older \[^7\]: Official support removed as of Nexo 1.13+\\ Can be used on Nexo 1.12 & older \[^8\]: These versions are labelled as "\*\*Unsupported"\*\* because they were quickly followed by a new release to fix bugs. There is no reason to use any of these versions in favor of the above-mentioned ones.\\ \\ Nexo might still work on these releases but in no way is it ideal to use --- # Unknown \# Nexo ## Nexo - \[Home\](https://docs.nexomc.com/readme.md) - \[Version Support\](https://docs.nexomc.com/version-support.md) - \[FAQ\](https://docs.nexomc.com/general-usage/faq.md): A summary of the most common questions about Nexo - \[ItemModels vs. CustomModelData\](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata.md) - \[Video Tutorials\](https://docs.nexomc.com/general-usage/video-tutorials.md) - \[Commands\](https://docs.nexomc.com/general-usage/commands.md): A simple explanation to use the plugin commands - \[Recipes\](https://docs.nexomc.com/general-usage/recipes.md) - \[Oraxen → Nexo\](https://docs.nexomc.com/migrate/oraxen-nexo.md) - \[ItemsAdder → Nexo\](https://docs.nexomc.com/migrate/itemsadder-nexo.md) - \[Scaffolding\](https://docs.nexomc.com/addons/scaffolding.md) - \[ScaffoldingExtension\](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension.md) - \[Custom GUIs & HUDs\](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds.md) - \[Emotes & Glyphs\](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs.md) - \[Carpentry\](https://docs.nexomc.com/addons/carpentry.md) - \[NexoProxy\](https://docs.nexomc.com/addons/nexo-proxy.md) - \[Core Shaders\](https://docs.nexomc.com/addons/core-shaders.md): Core shader addons for Nexo - \[Text Effects by Akis\](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis.md) - \[Nexo Creative Inventory\](https://docs.nexomc.com/addons/nexo-creative-inventory.md) - \[Plugin settings\](https://docs.nexomc.com/configuration/plugin-settings.md): Various options impacting the plugin in its generality - \[ResourcePack\](https://docs.nexomc.com/configuration/resourcepack.md) - \[MultiPack Feature\](https://docs.nexomc.com/configuration/resourcepack/multipack-feature.md) - \[Items\](https://docs.nexomc.com/configuration/items.md) - \[ItemModel Builder\](https://docs.nexomc.com/configuration/items/itemmodel-builder.md) - \[Reference ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/reference-itemmodel.md) - \[RangeDispatch ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/rangedispatch-itemmodel.md) - \[Select ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/select-itemmodel.md) - \[Condition ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/condition-itemmodel.md) - \[Composite ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/composite-itemmodel.md) - \[Empty ItemModel\](https://docs.nexomc.com/configuration/items/itemmodel-builder/empty-itemmodel.md) - \[Components\](https://docs.nexomc.com/configuration/items/components.md) - \[2D Player Heads\](https://docs.nexomc.com/configuration/items/2d-player-heads.md) - \[Special Item Appearance\](https://docs.nexomc.com/configuration/items/item-appearance.md) - \[Custom Mob Armor\](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+.md) - \[Custom Harness (1.21.6+)\](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-harness-1.21.6+.md) - \[Custom Saddles (1.21.5+)\](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-saddles-1.21.5+.md) - \[Custom Player Armors\](https://docs.nexomc.com/configuration/custom-armors.md) - \[Custom Elytras\](https://docs.nexomc.com/configuration/custom-armors/custom-elytras-1.21.2+.md) - \[Component Based\](https://docs.nexomc.com/configuration/custom-armors/components.md) - \[Trims Based (1.20+)\](https://docs.nexomc.com/configuration/custom-armors/trims.md) - \[Glyphs\](https://docs.nexomc.com/configuration/glyphs.md): How to add new glyphs to the game? - \[Animated Glyphs\](https://docs.nexomc.com/configuration/glyphs/animated-glyphs.md) - \[Multi-Bitmap Glyph\](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph.md) - \[Reference Glyph\](https://docs.nexomc.com/configuration/glyphs/reference-glyph.md) - \[Sounds\](https://docs.nexomc.com/configuration/sounds.md) - \[Custom Paintings\](https://docs.nexomc.com/configuration/custom-paintings.md) - \[Custom Music Discs\](https://docs.nexomc.com/configuration/custom-music-discs.md) - \[Dialogs\](https://docs.nexomc.com/configuration/dialogs.md) - \[DialogType\](https://docs.nexomc.com/configuration/dialogs/dialogtype.md) - \[DialogBase\](https://docs.nexomc.com/configuration/dialogs/dialogbase.md) - \[DialogAction\](https://docs.nexomc.com/configuration/dialogs/dialogaction.md) - \[Furniture Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic.md) - \[Hitbox\](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox.md) - \[Barrier Hitbox\](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox/barrier-hitbox.md) - \[Interaction Hitbox\](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox/interaction-hitbox.md) - \[Shulker Hitbox\](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox/shulker-hitbox.md) - \[Ghast Hitbox\](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox/ghast-hitbox.md) - \[Text-Entities\](https://docs.nexomc.com/mechanics/furniture-mechanic/text-entities.md) - \[Connectable Furniture\](https://docs.nexomc.com/mechanics/furniture-mechanic/connectable-furniture.md) - \[Furniture States\](https://docs.nexomc.com/mechanics/furniture-mechanic/furniture-states.md) - \[Furniture Placements\](https://docs.nexomc.com/mechanics/furniture-mechanic/furniture-placements.md) - \[Seat Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic/seat-mechanic.md) - \[Bed Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic/bed-mechanic.md): Feature added in Nexo 1.4 - \[Light Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic/light-mechanic.md) - \[Farming Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic/farming-mechanic.md) - \[Door Mechanic\](https://docs.nexomc.com/mechanics/furniture-mechanic/door-mechanic.md) - \[Custom Block Mechanics\](https://docs.nexomc.com/mechanics/custom-block-mechanics.md) - \[ChorusBlock Mechanic\](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic.md) - \[NoteBlock Mechanic\](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic.md): How to add your own blocks to the game - \[Stripped Log Mechanic\](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic.md) - \[Directional Mechanic\](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/directional-mechanic.md) - \[StringBlock Mechanic\](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic.md) - \[Custom Trident\](https://docs.nexomc.com/mechanics/custom-trident.md) - \[ClickAction Mechanic\](https://docs.nexomc.com/mechanics/clickaction-mechanic.md): Run commands, play sounds, or send messages when a player clicks a block or furniture. - \[Custom Mechanic\](https://docs.nexomc.com/mechanics/custom-mechanic.md): This mechanism allows you to realize an extremely customizable mechanism without programming - \[Other Mechanics\](https://docs.nexomc.com/mechanics/all-mechanics.md): The different mechanics available by default and their configurations sorted by category - \[Anti-Cheat Plugins\](https://docs.nexomc.com/compatibility/anti-cheat-plugins.md) - \[PlaceholderAPI\](https://docs.nexomc.com/compatibility/placeholderapi.md) - \[ModelEngine - custom mobs\](https://docs.nexomc.com/compatibility/modelengine-custom-mobs.md): How to merge resourcepacks? - \[MythicMobs - custom mobs\](https://docs.nexomc.com/compatibility/mythicmobs-custom-mobs.md): MythicMobs allows you to create custom mobs and bosses with advanced skills and attributes - \[MythicCrucible\](https://docs.nexomc.com/compatibility/crucible.md): Crucible is an addon for MythicMobs - \[MMOItems\](https://docs.nexomc.com/compatibility/mmoitems.md) - \[Vendors\](https://docs.nexomc.com/community-guides/vendors.md): Guide for vendors and others wanting to make Third-Party packs for Nexo - \[API\](https://docs.nexomc.com/community-guides/api.md) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.nexomc.com/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.nexomc.com/readme.md). # Home ## What is Nexo? Nexo is an all-in-one Minecraft plugin that makes it easy for server admins to add their own items, blocks, armor, and furniture.\\ By using simple file-based configuration, Nexo automatically handles Resource Pack generation. Nexo then dispatches the pack to all players on the server, allowing everyone to see the custom models and textures set up by the admin. This documentation contains a complete list of features, as well examples of what Nexo can do.\\ If you need further assistance, please join the Discord server with a proof of purchase. {% hint style="info" %} Nexo has been tested on \*\*Paper & Folia\*\*. Supported versions can be found at \[Version Support\](/version-support.md) {% endhint %} --- # Recipes | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/general-usage/recipes.md) . Recipes can be created directly in the relevant file within the `Nexo/recipes` directory, or through the ingame RecipeBuilder. The RecipeBuilder can be accessed with the command `/nexo recipes builder`. Drag your desired items into the crafting slots to create your recipe. Make sure to set the "output" slot to the item you want to give. Each Recipe-type has its own folder in `plugins/Nexo/recipes`, meaning you can organize recipes inside each folder into different files, sub-folders, etc. The RecipeBuilder will store recipes inside `plugins/Nexo/recipes/X/X_recipes.yml`, X being the type (shaped, shapeless, etc.) ### Available Recipe Types:[](https://docs.nexomc.com/general-usage/recipes#available-recipe-types) * SHAPELESS - Allows each ingredient to be put in any slot * SHAPED - Requires ingredients to be in a specific shape * FURNACE - Recipe for the Furnaces * BLASTING - Recipe for the Blast Furnace * SMOKING - Recipe for the Smoker * STONECUTTING - Recipe for the Stone Cutter * BREWING - Recipe for the Brewing Stand * SMITHING - Recipe for the Smithing Table - This is added via [NexoAddon](https://nexoaddon.gitbook.io/docs/recipes/smithing-recipe) ### Disabling Recipes[](https://docs.nexomc.com/general-usage/recipes#disabling-recipes) There is also a new file for disabling recipes in `Nexo/recipes/disabled_recipes.yml` . In this file, simply add the Recipe-Key, `minecraft:vanilla_recipe` , and Nexo will disable it. Recipe-Type Examples:[](https://docs.nexomc.com/general-usage/recipes#recipe-type-examples) -------------------------------------------------------------------------------------------- ### Shapeless[](https://docs.nexomc.com/general-usage/recipes#shapeless) `amount` in result specifies how many of said item you should get. It is not available for ingredients. ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-90e54fc2d86abe76e13a0de2d61d66ed422bc0f2%252Fshapeless.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=48683dfe&sv=2) * * * ### Shaped[](https://docs.nexomc.com/general-usage/recipes#shaped) You can also use Minecraft tags and Nexo items in recipes ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-f035118487f0a07b75b3f15cb858f3116a2d2ae3%252Fshaped.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=de22b2bd&sv=2) * * * ### Furnace + Blasting + Smoking[](https://docs.nexomc.com/general-usage/recipes#furnace--blasting--smoking) ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-2c5aae7085bf7df68c7fabdadeff70f124f93923%252Fsmelting.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=f9898ecf&sv=2) * * * ### Stonecutting[](https://docs.nexomc.com/general-usage/recipes#stonecutting) ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-3a6ef6e38dbc2d19f47af8f882c12a952bb5dc4a%252Fstonecutting.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b3e7330e&sv=2) * * * ### Brewing[](https://docs.nexomc.com/general-usage/recipes#brewing) ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-b75850869a0ccda74edd2258a0d8232a93348f74%252Fbrewing.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=2c422131&sv=2) [PreviousCommands](https://docs.nexomc.com/general-usage/commands) [NextOraxen → Nexo](https://docs.nexomc.com/migrate/oraxen-nexo) Last updated 8 months ago * [Available Recipe Types:](https://docs.nexomc.com/general-usage/recipes#available-recipe-types) * [Disabling Recipes](https://docs.nexomc.com/general-usage/recipes#disabling-recipes) * [Recipe-Type Examples:](https://docs.nexomc.com/general-usage/recipes#recipe-type-examples) * [Shapeless](https://docs.nexomc.com/general-usage/recipes#shapeless) * [Shaped](https://docs.nexomc.com/general-usage/recipes#shaped) * [Furnace + Blasting + Smoking](https://docs.nexomc.com/general-usage/recipes#furnace--blasting--smoking) * [Stonecutting](https://docs.nexomc.com/general-usage/recipes#stonecutting) * [Brewing](https://docs.nexomc.com/general-usage/recipes#brewing) Copy grass_block_shapeless: result: minecraft_type: GRASS_BLOCK amount: 2 ingredients: A: minecraft_type: MOSS_CARPET B: minecraft_type: DIRT C: minecraft_type: DIRT Copy forest_axe: result: nexo_item: forest_axe ingredients: A: tag: minecraft:leaves B: minecraft_type: STICK shape: - _AA - _BA - _B_ Copy raw_iron_block_to_iron: result: minecraft_type: IRON_INGOT amount: 9 input: minecraft_type: RAW_IRON_BLOCK cookingTime: 100 experience: 20 Copy stripped_spruce_log: result: minecraft_type: STRIPPED_SPRUCE_LOG input: minecraft_type: SPRUCE_LOG Copy diamond: result: minecraft_type: DIAMOND input: minecraft_type: GLASS_BOTTLE ingredient: nexo_item: rainbow_ingot --- # FAQ | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/general-usage/faq.md) . 📦 ResourcePack[](https://docs.nexomc.com/general-usage/faq#resourcepack) -------------------------------------------------------------------------- #### Can I still use my own resourcepack with Nexo?[](https://docs.nexomc.com/general-usage/faq#can-i-still-use-my-own-resourcepack-with-nexo) Yes, you can merge any resourcepacks into the ResourcePack generated by Nexo. You can do so by simply adding the .zip or folder to `Nexo/pack/external_packs` and the plugin will merge it into the final ResourcePack and send it to all players. Check out the [ResourcePack](https://docs.nexomc.com/configuration/resourcepack) page for a detailed explanation * * * 🪨 Bedrock (Geyser)[](https://docs.nexomc.com/general-usage/faq#bedrock-geyser) -------------------------------------------------------------------------------- #### Does Nexo support Bedrock players?[](https://docs.nexomc.com/general-usage/faq#does-nexo-support-bedrock-players) Yes, through the [Scaffolding](https://docs.nexomc.com/addons/scaffolding) \-addon. Nexo builds a Java ResourcePack, which Bedrock players connecting through [Geyser](https://geysermc.org/) cannot read on their own. Scaffolding converts your entire Nexo setup into a Bedrock-compatible pack plus Geyser mappings automatically, deploys it to Geyser, and keeps it in sync as you change your content. #### What converts to Bedrock and what doesn't?[](https://docs.nexomc.com/general-usage/faq#what-converts-to-bedrock-and-what-doesnt) Most content converts: items (2D and 3D), custom blocks, player armor, glyphs and emotes, sounds, custom GUIs and vanilla HUD/GUI reskins. **Furniture** and **ModelEngine** need the bundled **ScaffoldingExtension** installed in Geyser. A few things do not convert yet, such as dyeable models and furniture, custom mob armor, custom paintings and custom HUD plugins like MythicHUD.\\ See the Scaffolding support tables for the full, up-to-date list. #### Why does something look off for Bedrock players?[](https://docs.nexomc.com/general-usage/faq#why-does-something-look-off-for-bedrock-players) Bedrock renders differently from Java, so a few things (glyph sharpness, custom GUI alignment) are approximate rather than pixel-perfect. Scaffolding is also in early access. If something looks wrong, report it in our Discord with a screenshot and the item, block or furniture involved. * * * 🔧 Configuration[](https://docs.nexomc.com/general-usage/faq#configuration) ---------------------------------------------------------------------------- #### How do I reference a ResourcePack file in a config?[](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Minecraft ResourcePacks follow a defined and consistent structure. ResourcePack files are also split into sub-categories; **sounds, textures, models, fonts, etc..** A full list of it can be found on the [Minecraft Wiki](https://minecraft.wiki/w/Resource_pack#Directory_structure) , more info on ResourcePacks in [ResourcePack](https://docs.nexomc.com/configuration/resourcepack) The **namespace** is just another way to sort said sub-categories between different usecases. The **filepath** is the remaining path to your file itself When you then want to make a reference to said file in say a NexoItem, this is how you do it; Here is an example to reference a given PNG Texture **or** a JSON Model. This is the exact same for sounds, fonts etc. Only difference is the immediate folder after the namespace is not textures **ItemModels:** assets/**NAMESPACE**/items/**PATH/FILE**.json -> `item_model: NAMESPACE:PATH/FILE` **Models:** assets/**NAMESPACE**/models/**PATH/FILE**.json `model: NAMESPACE:PATH/FILE` **Textures:** assets/**NAMESPACE**/textures/**PATH/FILE**.png `texture: NAMESPACE:PATH/FILE` **Sounds:** assets/**NAMESPACE**/sounds/**PATH/FILE**.ogg `sound: NAMESPACE:PATH/FILE` If your file is inside `assets/minecraft/...` , meaning your namespace is **minecraft**, specifying it in a config is optional. If no namespace is defined, it will assume you mean **minecraft** #### NoteBlocks & Tripwires aren't working correctly?[](https://docs.nexomc.com/general-usage/faq#noteblocks-and-tripwires-arent-working-correctly) Nexo uses NoteBlocks and TripWires for custom blocks, and thus disables all their vanilla behaviour. Noteblock-mechanic does have an option to re-enable this without losing custom blocks, if you go to Nexo/`mechanics.yml` If you do not care about Custom Blocks, you can also just disable the noteblock & stringblock-mechanics in `mechanics.yml` #### Why can't I hear Stone/Wood sounds?[](https://docs.nexomc.com/general-usage/faq#why-cant-i-hear-stone-wood-sounds) Nexo replaces these sounds with empty ones in order to correctly play Custom Block sounds. Nexo will however, play a clone of the vanilla sound whenever the sound would normally play. Majority of the time when you cannot hear these sounds, is when you have a ResourcePack sent by Nexo, but you are on a server without Nexo. Like a Velocity/Bungee network where Server A has Nexo, but Server B does not. The fastest fix is to disable `custom_block_sounds` in `mechanics.yml` for CustomBlock & Furniture. #### What is a Duration & how do I use it?[](https://docs.nexomc.com/general-usage/faq#what-is-a-duration-and-how-do-i-use-it) A duration is a dynamic way to specify time in a variety of ways. Normally plugins require you to specify in ticks or seconds only. Nexo allows you to more easily define a length of time with a Duration Format. An example is [Sounds](https://docs.nexomc.com/configuration/sounds) which has a `duration` inside `jukebox_playable` to set the sound-length. The format for duration is a value + a suffix stamp for the DurationUnit. Some DurationUnits support non-integer values and will automatically format this into the correct values. `duration: 20t` - 20 ticks `duration: 20ms` - 20 milliseconds `duration: 20.2s` - 20 seconds & 40 ticks `duration: 20.1m` - 20 minutes and 6 seconds You also have hours, days, weeks & months [PreviousVersion Support](https://docs.nexomc.com/version-support) [NextItemModels vs. CustomModelData](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata) Last updated 20 days ago * [📦 ResourcePack](https://docs.nexomc.com/general-usage/faq#resourcepack) * [🪨 Bedrock (Geyser)](https://docs.nexomc.com/general-usage/faq#bedrock-geyser) * [🔧 Configuration](https://docs.nexomc.com/general-usage/faq#configuration) assets/nexo/textures/item/nexo\_defaults/forest\_axe.png Copy myitem: Pack: # assets/minecraft/models/item/paper.json model: minecraft:item/paper.json # assets/nexo/textures/item/nexo_defaults/forest_axe.png texture: nexo:item/nexo_defaults/forest_axe --- # Video Tutorials | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/general-usage/video-tutorials.md) . Nexo itself only has written documentation in the form of this wiki. There is however a community made set of videos, primarily by _Turretedash7,_ for a large numbers of the features found in Nexo. You can find a playlist for all the videos [here](https://www.youtube.com/playlist?list=PLDQSwTgJzz5SG3UUNVXpI5H0kp0s9KL-q) **These tutorials are community made so information in them might be outdated.** As Nexo updates frequently. some things might be different, removed or added after the publication of a specific video-guide, so recommend checking the relevant wiki-page if you encounter issues It is recommended to use them as a starting guide until you get to know Nexo. Especially if you find written guides harder to follow to begin with. [PreviousItemModels vs. CustomModelData](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata) [NextCommands](https://docs.nexomc.com/general-usage/commands) Last updated 6 months ago --- # ItemModels vs. CustomModelData | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata.md) . ### What is an ItemModel?[](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#what-is-an-itemmodel) In 1.21.4, Mojang added a feature to specify the ItemModel of an item. In short an ItemModel is the **base model** of an item, which decides when to show what. ResourcePacks can be split into a few different types of files: ItemModels - Tells the client when to show what for an item Models - All the visual data of an item, cubes, uv-mappings etc Textures - The textures used by Models and other files An ItemModel in short just says "when X condition is satisfied, show this Model to the player" By default an item using PAPER as its material will use the vanilla ItemModel **minecraft:paper** When an item uses CustomModelData it then adds a custom entry into this vanilla ItemModel that says; "When an item with this ItemModel has the CustomModelData X, show this Model". This is the ways custom items have been done ever since it was introduced, as there was no better way. It works fine in most cases but can cause some issues and conflicts when merging a lot of files together. Now we can change the base ItemModel itself, and not rely on overriding the vanilla one. For servers which only support 1.21.4+ clients, this is the ideal way to handle it. It will cause no conflicts, open up for more customizability and stability, and is the intended way to do custom models. ### How do I start using custom ItemModels?[](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#how-do-i-start-using-custom-itemmodels) Nexo makes the process of swapping away from CustomModelData to ItemModels very easy. 1. Ensure you take a backup of your `Nexo/items` - folder 2. Go into `Nexo/settings.yml` and set `Pack.generation.prefer_item_models: true` 3. Go into your server and run the command `/nexo reset_custom_model_data` 4. Run the command `/nexo reload` And that is it, your NexoItems should now all be swapped to their own custom ItemModel\\ Copy myitem: Pack: model: mymodel Components: item_model: nexo:mymodel This ItemModel can be used on any item with any material in any plugin (that supports ItemModels) and will never conflict. Nexo will by default not set `Components.item_model` in the config. It will by default use `nexo:item_id` but you can set it to something else manually if you want to. ### When should I not use a custom ItemModel?[](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#when-should-i-not-use-a-custom-itemmodel) The only real time you should not use a custom ItemModel over CustomModelData is if your server tries to support clients older than 1.21.4. There is also some downsides when you have plugins which are still to allow such new features, and rely exclusively on CustomModelData for its features [PreviousFAQ](https://docs.nexomc.com/general-usage/faq) [NextVideo Tutorials](https://docs.nexomc.com/general-usage/video-tutorials) Last updated 7 months ago * [What is an ItemModel?](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#what-is-an-itemmodel) * [How do I start using custom ItemModels?](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#how-do-i-start-using-custom-itemmodels) * [When should I not use a custom ItemModel?](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata#when-should-i-not-use-a-custom-itemmodel) --- # ItemsAdder → Nexo | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/migrate/itemsadder-nexo.md) . This article explains how to migrate your ItemsAdder config to Nexo. The process will be mostly automatic, but first follow the steps below. This page covers migrating to Nexo from ItemsAdder v4. If you are on ItemsAdder v3.x, you must update ItemsAdder before migrating to Nexo. 1 **Put Nexo JAR in your server's** `**plugins**` **folder** 2 **Copy the contents of** `**plugins/ItemsAdder**` **into** `**plugins/Nexo/converter/ItemsAdder**` The `plugins/Nexo/converter/ItemsAdder` folder does not exist by default, so create the required folders yourself. Also make sure to keep the folder `plugins/ItemsAdder`, as this will be used later for the conversion process. On server reload, Nexo will empty the data from the `plugins/Nexo/converter/ItemsAdder` folder into a valid Nexo config and remove the folder. This step may be repeated for as many ItemsAdder packs as you would like to add, even at a future date. 3 **Take a backup** It is recommended to make a backup of your server's world folders before swapping to Nexo, as there might be small oversights leading to minor loss of furniture/custom blocks.\\ 4 **Remove ItemsAdder and LoneLibs .jar files** Make sure to only delete the jar files - keep the folder `plugins/ItemsAdder`.\\ 5 **Start your server** 6 **Check console for conversion issues. And finally, test that the migration has worked by testing items, glyphs, and anything else that may be on your server!** ResourcePack content from ItemsAdder is all bundled into `Nexo/pack/external_packs/ItemsAdder/namespace/...` Items are moved into `Nexo/items/itemsadder/...` Glyphs/Font Images are moved in `Nexo/glyphs/itemsadder/namespace/...` ### Known issues[](https://docs.nexomc.com/migrate/itemsadder-nexo#known-issues) Nexo won't be able to migrate everything, as some features are not compatible across both plugins. For example, non-Display Entity furniture placed in your world before conversion will NOT be automatically converted.\\ [PreviousOraxen → Nexo](https://docs.nexomc.com/migrate/oraxen-nexo) [NextScaffolding](https://docs.nexomc.com/addons/scaffolding) Last updated 7 months ago --- # NexoProxy | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/nexo-proxy.md) . NexoProxy is a [Velocity](https://papermc.io/software/velocity) plugin addon for Nexo that solves common ResourcePack and Glyph headaches caused by proxy networks. Features[](https://docs.nexomc.com/addons/nexo-proxy#features) --------------------------------------------------------------- ### Blocking Duplicate ResourcePacks[](https://docs.nexomc.com/addons/nexo-proxy#blocking-duplicate-resourcepacks) When players switch between backend servers on your network, Velocity normally unloads and reloads the ResourcePack even if it is identical on both servers. NexoProxy detects this and **blocks the duplicate send**, so players experience no interruption. It also handles obfuscated NexoPacks: if the underlying pack content is identical across two servers, the duplicate send is still blocked even when the obfuscated file hashes differ. ### Glyph Tags in Velocity Plugins[](https://docs.nexomc.com/addons/nexo-proxy#glyph-tags-in-velocity-plugins) NexoProxy adds support for using Nexo's `` tags inside other Velocity plugins such as [Velocitab](https://modrinth.com/plugin/velocitab) and [TAB](https://hangar.papermc.io/NEZNAMY/TAB) , letting you display Nexo glyphs in tab lists, scoreboards, and other proxy-side UI without any extra configuration. Setup[](https://docs.nexomc.com/addons/nexo-proxy#setup) --------------------------------------------------------- 1. Drop `NexoProxy.jar` into your Velocity `plugins/` folder. 2. Make sure Nexo is installed on your backend servers as normal. 3. No additional configuration is required — duplicate pack detection and glyph tag support are active automatically. Pack blocking requires the proxy to already know a backend server's ResourcePack details. This information is sent over a plugin message channel, which can only be opened once at least one player is present on that server. This means the very first player to join a given backend server will always receive the pack normally, as the proxy has no way to block it yet. Every player after that will benefit from duplicate blocking, provided all backend servers share the same Nexo setup and therefore produce the same pack. Note that obfuscation is not a concern here: NexoProxy compares the unobfuscated pack hash, so identical packs are correctly recognised as duplicates even when their obfuscated hashes differ. [PreviousCarpentry](https://docs.nexomc.com/addons/carpentry) [NextCore Shaders](https://docs.nexomc.com/addons/core-shaders) Last updated 2 months ago * [Features](https://docs.nexomc.com/addons/nexo-proxy#features) * [Blocking Duplicate ResourcePacks](https://docs.nexomc.com/addons/nexo-proxy#blocking-duplicate-resourcepacks) * [Glyph Tags in Velocity Plugins](https://docs.nexomc.com/addons/nexo-proxy#glyph-tags-in-velocity-plugins) * [Setup](https://docs.nexomc.com/addons/nexo-proxy#setup) --- # ModelEngine - custom mobs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/modelengine-custom-mobs.md) . ModelEngine creates a resourcepack which contains all the models and textures for its custom entities Nexo will automatically import ModelEngines resourcepack, and merge it into its own. Nexo will also remove any Core-Shaders in the pack by default, due to history of breaking packs You can make Nexo Auto-Import ModelEngine with shaders by disabling `Pack.import.modelengine.exclude_shaders` [PreviousPlaceholderAPI](https://docs.nexomc.com/compatibility/placeholderapi) [NextMythicMobs - custom mobs](https://docs.nexomc.com/compatibility/mythicmobs-custom-mobs) Last updated 1 year ago --- # Text Effects by Akis | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis.md) . * **Uses the** `**rendertype_text**` **shader meaning some plugins will not work with it (e.g. MythicHud)** * This might not work on newer versions, an alternative can be found [here](https://modrinth.com/resourcepack/thesalts-text-effects) Text Effects Shader[](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#text-effects-shader) ------------------------------------------------------------------------------------------------------------ This shader adds vibrant and dynamic text effects to your server, making your content more engaging. Currently, it offers the following effects: * **No Shadow** * **Rainbow** * **Wobble** * **Rainbow + Wobble** * **Jump** * **Rainbow + Jump** * **Blinking** Stay tuned for more updates as we continue to enhance the variety of effects available. Text animations are a fantastic way to bring life and excitement to your server's content. How to add to Nexo[](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#how-to-add-to-nexo) ---------------------------------------------------------------------------------------------------------- * Download the shaders from either [Modrinth](https://modrinth.com/resourcepack/text-effects-by-akis) or [Github](https://github.com/AkisYTB3/Text-Effects-by-Akis) * Drop into Nexo/pack/external\_packs * Run `/n rl` or restart server * Enjoy! How to use[](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#how-to-use) ------------------------------------------------------------------------------------------ * Copy the color code for the shader you wanna use * Paste it where you wanna use it * And the text will have the effect you selected :) Effects and their Hex codes[](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#effects-and-their-hex-codes) ---------------------------------------------------------------------------------------------------------------------------- **Effect** **Hex Color** **No Shadow** `#4e5c24` **Rainbow** `#e6fffe` **Wobble** `#e6fffa` **Rainbow + Wobble** `#e6fbfe` **Jump** `#e6fbfa` **Rainbow + Jump** `#e6f7fe` **Blinking** `#e6f7fa` [PreviousCore Shaders](https://docs.nexomc.com/addons/core-shaders) [NextNexo Creative Inventory](https://docs.nexomc.com/addons/nexo-creative-inventory) Last updated 3 months ago * [Text Effects Shader](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#text-effects-shader) * [How to add to Nexo](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#how-to-add-to-nexo) * [How to use](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#how-to-use) * [Effects and their Hex codes](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis#effects-and-their-hex-codes) --- # PlaceholderAPI | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/placeholderapi.md) . Nexo has an integration with PlaceholderAPI to let you use some parts throughout other plugins. **Glyphs** can be used via **%nexo\_glyphid%**, this will return the **** for any Glyph not using the font _minecraft:default_ in its config. If one does, the raw unicode is returned. **%nexo\_shift\_X%** can be used to shift elements. This returns a unicode as Nexo adds it to every font. &#xNAN;**%nexo\_pack\_hash%** returns the current hash of the Nexo ResourcePack ### PlaceholderAPI Tag[](https://docs.nexomc.com/compatibility/placeholderapi#placeholderapi-tag) Nexo also adds a "PlaceholderAPI Tag". This can be used like most modern MiniMessage style tags. &#xNAN;**** or ****. This will work in any plugin, much like the Nexo Glyph & Shift tags. [PreviousAnti-Cheat Plugins](https://docs.nexomc.com/compatibility/anti-cheat-plugins) [NextModelEngine - custom mobs](https://docs.nexomc.com/compatibility/modelengine-custom-mobs) Last updated 8 months ago --- # Carpentry | Nexo ![Page cover](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-ddf67d3ea7a420359f34144a8909b1ee33bfa28b%252Fimage.png%3Falt%3Dmedia&width=1248&dpr=3&quality=100&sign=4f4a5cbe&sv=2) For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/carpentry.md) . This is an addon for Nexo that adds several new CustomBlock types. It allows for custom doors, trapdoors, stairs, slabs and transparent blocks. Below will be examples for each of the different types [Voxel Shop](https://voxel.shop/product/7640/carpentry-nexo-addon) | [MCModels](https://mcmodels.net/products/13997/carpentry) | [NexoMC](https://nexomc.com/products/carpentry) ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-ddf67d3ea7a420359f34144a8909b1ee33bfa28b%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=4f4a5cbe&sv=2) Default Ashen Oak wood-set included in Carpentry's Default Items Note that each of the types are currently limited to only 4 variations. If you are unsure how to reference a ResourcePack-File in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) ### Custom Stairs[](https://docs.nexomc.com/addons/carpentry#custom-stairs) ### Custom Slabs[](https://docs.nexomc.com/addons/carpentry#custom-slabs) ### Custom Doors[](https://docs.nexomc.com/addons/carpentry#custom-doors) Door-setup is a bit different than the other blocks, as it requires two configs. This is because the item-model in hand will look incorrect if it uses the block-parent-models The second config is just so that Nexo generates the necessary models If you provide your own json-model, you can skip the second config\\ ItemConfig for held item: ItemConfig for placed-block: ### Custom Trapdoors[](https://docs.nexomc.com/addons/carpentry#custom-trapdoors) ### Custom Transparent[](https://docs.nexomc.com/addons/carpentry#custom-transparent) This type allows for transparent blocks, useful for leaves etc. For normal blocks that do not require transparency, use [NoteBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) The BlockTypes below here require a 1.21.10+ server ### Custom Chain[](https://docs.nexomc.com/addons/carpentry#custom-chain) This type allows for custom chains, like iron or copper ones. The config is very basic and only requires you to have a Texture for it ### Custom Lantern[](https://docs.nexomc.com/addons/carpentry#custom-lantern) This type allows for custom chains, like copper & normal ones. The config is very basic and only requires you to have a Texture for it ### Custom Bars[](https://docs.nexomc.com/addons/carpentry#custom-bars) This type allows for custom bars, like iron bars in vanilla. The config is very basic and only requires you to have a Texture for it [PreviousEmotes & Glyphs](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs) [NextNexoProxy](https://docs.nexomc.com/addons/nexo-proxy) Last updated 24 days ago * [Custom Stairs](https://docs.nexomc.com/addons/carpentry#custom-stairs) * [Custom Slabs](https://docs.nexomc.com/addons/carpentry#custom-slabs) * [Custom Doors](https://docs.nexomc.com/addons/carpentry#custom-doors) * [Custom Trapdoors](https://docs.nexomc.com/addons/carpentry#custom-trapdoors) * [Custom Transparent](https://docs.nexomc.com/addons/carpentry#custom-transparent) * [Custom Chain](https://docs.nexomc.com/addons/carpentry#custom-chain) * [Custom Lantern](https://docs.nexomc.com/addons/carpentry#custom-lantern) * [Custom Bars](https://docs.nexomc.com/addons/carpentry#custom-bars) Copy custom_stair: material: PAPER itemname: Custom Stair Pack: parent_model: block/stairs texture: nexo:items/carpentry_blocks/ashen_oak_planks #textures: # Example if one wants different textures # bottom: block/reinforced_deepslate_bottom # side: block/reinforced_deepslate_side # top: block/reinforced_deepslate_top Mechanics: custom_block: type: STAIR custom_variation: 1 # 1-4 are available Copy custom_slab: material: PAPER itemname: Custom Slab Pack: parent_model: block/slab texture: nexo:items/carpentry_blocks/ashen_oak_planks #textures: # Example if one wants different textures # bottom: block/reinforced_deepslate_bottom # side: block/reinforced_deepslate_side # top: block/reinforced_deepslate_top Mechanics: custom_block: type: SLAB custom_variation: 1 # 1-4 are available Copy custom_door: material: PAPER itemname: Custom Door Pack: parent_model: item/generated # This is used for the item when held in hand # The texture to use for the item in hand texture: nexo:items/carpentry_blocks/ashen_oak_door_icon Mechanics: custom_block: type: DOOR custom_variation: 1 # 1-4 are available model: custom_door_placed # The itemid of the second config, that generates the block-model Copy custom_door_placed: # Handles the generation of the model the placed blocks should use # This is the same as all other block-types use in their Pack section # But split apart due to how held door-items work Pack: parent_model: block/door_bottom_left # Default parent-model for doors textures: bottom: nexo:items/carpentry_blocks/ashen_oak_door_bottom top: nexo:items/carpentry_blocks/ashen_oak_door_top # Extra properties to prevent item from being "registered" as a NexoItem injectId: false excludeFromInventory: true excludeFromCommands: true Copy custom_trapdoor: material: PAPER itemname: Custom Trapdoor Pack: parent_model: block/template_orientable_trapdoor_bottom texture: nexo:items/carpentry_blocks/ashen_oak_trapdoor Mechanics: custom_block: type: TRAPDOOR custom_variation: 1 # 1-4 are available Copy custom_grate: material: PAPER itemname: Custom Grate Pack: parent_model: block/cube_all texture: nexo:items/carpentry_blocks/ashen_oak_leaves Mechanics: custom_block: type: GRATE custom_variation: 1 # 1-4 are available Copy custom_chain: material: PAPER itemname: Custom Chain Pack: parent_model: block/template_chain texture: my_texture/path Mechanics: custom_block: type: CHAIN Copy custom_lantern: material: PAPER itemname: Custom Lantern Pack: parent_model: block/template_lantern texture: my_texture/path Mechanics: custom_block: type: LANTERN Copy custom_bars: material: PAPER itemname: Custom Bars Pack: parent_model: block/template_bars texture: my_texture/path Mechanics: custom_block: type: BARS --- # ScaffoldingExtension | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension.md) . **Furniture** and **ModelEngine** models are not drawn by the resource pack alone. Geyser does not render either on Bedrock by default, so Scaffolding ships a companion Geyser extension, the **ScaffoldingExtension**, that recreates them. It is a Geyser-Extension (not as a plugin) and is built against the Geyser `2.11.0` API. Install it by dropping `ScaffoldingExtension.jar` into Geyser's `extensions/` folder and restarting. Scaffolding generates the mapping files it reads and deploys them automatically: directly into Geyser's folders when Geyser runs on the same server, and over the sync transport when Geyser sits on a **proxy or runs standalone** (see Setup). Without the ScaffoldingExtension, items, blocks, armor and glyphs still convert and show, but **furniture and ModelEngine models will not render** for Bedrock players. ### NexoFurniture[](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension#nexofurniture) NexoFurniture is placed as an **ItemDisplay-entity** that carries the furniture's **ItemModel**. Geyser does not render display entities on Bedrock, so without the extension furniture is invisible to Bedrock players. With the extension installed, Scaffolding converts the furniture's model like any other, and the extension makes the display entity appear: * It renders in the world at the correct **position, rotation and scale**. * Transform interpolation is kept, so furniture that animates its transform moves smoothly. * Each model's display transform is written to a mapping file (`furniture_mappings/*.yml`) that the extension re-applies. * Dyeable furniture is the one gap: Bedrock cannot get tint from the item ### ModelEngine[](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension#modelengine) [ModelEngine](https://www.mythiccraft.io/) gives mobs custom models and animations. On Bedrock these are recreated by the extension, working together with the plugin: * **Plugin side** tracks each active MEG model whose blueprint was converted, and mirrors its state to Bedrock viewers over a plugin-message channel: spawn and despawn on range, position and look, current animation, bone visibility, scale, hurt-tint and the model's hitbox. * **Extension side** spawns one model entity per tracked model, rendered as its custom Bedrock entity, and applies that streamed state. ModelEngine hides the base mob from clients, so the position is streamed rather than followed. A single mob can carry several models, each tracked independently. **Riding MEG mounts:** Bedrock sends no jump or sneak input while riding, so camera pitch stands in. Look up to jump or ascend, look straight down to sneak or descend, and start sneaking to dismount Rotations are the one rough edge: models generally render correctly, but a few can show wrong rotations in rare cases (see [Scaffolding](https://docs.nexomc.com/addons/scaffolding) ) [PreviousScaffolding](https://docs.nexomc.com/addons/scaffolding) [NextCustom GUIs & HUDs](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds) Last updated 6 days ago * [NexoFurniture](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension#nexofurniture) * [ModelEngine](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension#modelengine) --- # Emotes & Glyphs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs.md) . Nexo glyphs and emotes convert automatically, so they show up in chat, names and menus for Bedrock players just like on Java. In most cases there is nothing to configure. The one thing worth knowing is that Bedrock sizes glyphs differently, which can make some icons look blurry. This page explains why and how to fix it. ### Glyphs not working under Geyser-Velocity/Geyser-Standalone[](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#glyphs-not-working-under-geyser-velocity-geyser-standalone) When using Geyser-Velocity or Geyser-Standalone, it is required to have a properly configured [Floodgate](https://geysermc.org/wiki/floodgate/setup?platform=proxy-servers) setup. It is also required on all your backend servers together with the Scaffolding plugin, ### Why some glyphs look blurry[](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#why-some-glyphs-look-blurry) On Java, the size a glyph shows at and the size of its image file are two separate things. You can take a large, detailed image and tell Java to display it small, and it stays sharp. Bedrock cannot separate the two. It shows a glyph at whatever size its image is displayed, and that display size is also what decides how sharp it looks: * Bigger means larger and sharper. * Smaller means smaller and blockier. So on Bedrock a detailed image that is meant to show as a small icon can end up looking blurry, because shrinking it also softens it. When that happens, you adjust the glyph's display size in `glyphs.yml`. ### Tweaking individual glyphs & fonts[](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#tweaking-individual-glyphs-and-fonts) `plugins/Scaffolding/glyphs.yml` lets you set the display size of a glyph, either for a single glyph or for a whole font. The file is created for you with commented examples on first run, and most servers never need to touch it. You set the size using whichever of these is easiest: Option What it does **scale** Resize the glyph by a factor. `2.0` makes it twice as big (larger and sharper), `0.5` makes it half. **height** Set an exact display height in pixels. This overrides `scale`. **supersample** Use the glyph's full-resolution image instead of its small Java size. This is the sharpest option, but it also makes the glyph render larger. Good for big logos or menu icons. There are two sections in the file: `fonts:` (keyed by font name) and `glyphs:` (keyed by glyph id). A setting under `glyphs:` takes priority over a setting under `fonts:` for the same glyph. #### Which option to pick[](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#which-option-to-pick) * **An icon looks blurry:** it is rendering too small for its detail. Raise `scale`, set a larger `height`, or turn on `supersample`. * **An icon is too big:** lower `scale` or set a smaller `height`. Keep in mind it will also get a little softer as it shrinks. * **A whole emote font is off:** set a single `scale` under `fonts:` for that font instead of editing each glyph. Saving `glyphs.yml` reconverts on its own, so your changes apply on the next pack build without any extra command. [PreviousCustom GUIs & HUDs](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds) [NextCarpentry](https://docs.nexomc.com/addons/carpentry) Last updated 2 minutes ago * [Glyphs not working under Geyser-Velocity/Geyser-Standalone](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#glyphs-not-working-under-geyser-velocity-geyser-standalone) * [Why some glyphs look blurry](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#why-some-glyphs-look-blurry) * [Tweaking individual glyphs & fonts](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs#tweaking-individual-glyphs-and-fonts) plugins/Scaffolding/glyphs.yml Copy fonts: emojis:discord_emojis: scale: 1.0 glyphs: pink_heart: height: 16 some_big_logo: supersample: true --- # MythicMobs - custom mobs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/mythicmobs-custom-mobs.md) . MythicMobs is a plugin for making highly customizable mobs and bosses. This page explains how you can make said mobs drop a NexoItem or equip them with a NexoItem Below is an example config of how to define Equipment & Drops (also applies to DropTables) Copy ExampleMob: Type: WITHER_SKELETON Equipment: - IRON_HELMET HEAD - nexo:forest_sword HAND - nexo:forest_shield OFFHAND Drops: - nexo forest_chestplate 1to2 1.0 - #nexo itemid amount probability [PreviousModelEngine - custom mobs](https://docs.nexomc.com/compatibility/modelengine-custom-mobs) [NextMythicCrucible](https://docs.nexomc.com/compatibility/crucible) Last updated 1 year ago --- # Custom Harness (1.21.6+) | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-harness-1.21.6+.md) . With the new Happy Ghast entity, there is a new type of Equipment, the Harness. Nexo allows you to easily register custom harnesses like [Custom Saddles (1.21.5+)](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-saddles-1.21.5+) . To do so simply follow the general pattern for all NexoEquipment. Below is an example; Copy forest_harness: type: PAPER itemname: "Forest Harness" Pack: parent_model: item/generated texture: nexo:items/nexo_armor/forest_harness_icon CustomArmor: harness: nexo:items/nexo_armor/forest_harness Components: equippable: allowed_entity_types: [ HAPPY_GHAST ] slot: BODY If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Here `Pack.CustomArmor.harness` points to where we put the texture for the harness itself, with `Pack.texture` the icon. We also have to set the `allowed_entity_types` in our EquippableComponent for Nexo to properly handle the remaining properties [PreviousCustom Mob Armor](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+) [NextCustom Saddles (1.21.5+)](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-saddles-1.21.5+) Last updated 9 months ago --- # MythicCrucible | Nexo ![Page cover](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fgit.mythiccraft.io%2Fuploads%2F-%2Fsystem%2Fproject%2Favatar%2F51%2Funknown.png%3Fwidth%3D64&width=1248&dpr=3&quality=100&sign=c955cef4&sv=2) For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/crucible.md) . ### Import a MythicCrucible item into your NexoItem[](https://docs.nexomc.com/compatibility/crucible#import-a-mythiccrucible-item-into-your-nexoitem) The compatibility with Crucible allows you to import items created with MythicMobs & Crucible and use them as a base for your Nexo-items (you will keep everything configured with Crucible and add your own mechanics, textures, 3d models, etc). Copy example_crucible: itemname: "Test" crucible_id: my_crucible_itemid ### MythicCrucible Items in Nexo Furniture/CustomBlock drops[](https://docs.nexomc.com/compatibility/crucible#mythiccrucible-items-in-nexo-furniture-customblock-drops) You can also specify a crucible to be dropped directly when breaking a furniture or a custom block. You just need to specify the `crucible_item` like below; Copy myitemid: Mechanics: custom_block: type: NOTEBLOCK drop: loots: - crucible_item: my_crucible_itemid amount: 1..3 #Optional furniture: drop: loots: - crucible_item: my_crucible_itemid amount: 1..3 #Optional ### MythicCrucible in Nexo-Recipes[](https://docs.nexomc.com/compatibility/crucible#mythiccrucible-in-nexo-recipes) You can also make a recipe in Nexo that takes a Crucible Item as an ingredient or as the result. Like with drops, you just need to specify the `crucible_item` Below is an example of a shaped recipe using a CrucibleItem. Using the RecipeBuilders ingame should also do this for you if the item you use is an CrucibleItem [PreviousMythicMobs - custom mobs](https://docs.nexomc.com/compatibility/mythicmobs-custom-mobs) [NextMMOItems](https://docs.nexomc.com/compatibility/mmoitems) Last updated 2 months ago * [Import a MythicCrucible item into your NexoItem](https://docs.nexomc.com/compatibility/crucible#import-a-mythiccrucible-item-into-your-nexoitem) * [MythicCrucible Items in Nexo Furniture/CustomBlock drops](https://docs.nexomc.com/compatibility/crucible#mythiccrucible-items-in-nexo-furniture-customblock-drops) * [MythicCrucible in Nexo-Recipes](https://docs.nexomc.com/compatibility/crucible#mythiccrucible-in-nexo-recipes) Copy myrecipeid: result: crucible_item: my_crucible_itemid ingredients: A: crucible_item: my_crucible_itemid shape: - ___ - ___ - _A_ --- # Custom Paintings | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-paintings.md) . Nexo only generates the Datapack for 1.21.5+ servers. You can still use Custom Paintings on 1.21.1-1.21.4, but you will need to make the datapack manually. As of 1.21 you can now make custom paintings via datapacks. Nexo streamlines this process by automating the generation of this datapack based on a `Nexo/paintings.yml` file. Here is an example of adding a custom painting: Copy paintings: nexo:custom_painting: author: boy0000 title: Custom Painting asset_id: nexo:custom_painting # This is the path to the PNG, namespace:path width: 1 # The width of your painting, in number of blocks it takes up height: 1 # The height of your painting, in number of blocks it takes up random_place: true # Will place at random from the vanilla painting items nexo:animated_painting: author: boy0000 title: Animated Custom Painting asset_id: nexo:animated_painting width: 1 height: 1 Then you simply put the Texture of your painting inside Nexo's ResourcePack where your asset\_id points to. All Painting-Textures are in `assets/NAMESPACE/textures/painting/PATH` The config-format is as with everything else `NAMESPACE:PATH` For our above example it means we must put the texture inside `assets/nexo/textures/painting/custom_painting.png` Make sure to fully restart your server after adding a new Painting, as they are only registered on startup. ### Animated Paintings[](https://docs.nexomc.com/configuration/custom-paintings#animated-paintings) You can also make animated paintings using an MCMETA-file. The width & height properties are the pixel-size of each frame in your PNG. Below is a basic example, [Minecraft Wiki](https://minecraft.wiki/w/Resource_pack#Texture_animation) has a more in-depth explanation.\\ This file needs to be named the same as your texture + .mcmeta For our above example it means we must put the texture inside `assets/nexo/textures/painting/animated_painting.png.mcmeta` Static Painting & Animated Painting using MCMeta ### NexoItem[](https://docs.nexomc.com/configuration/custom-paintings#nexoitem) When your Custom Painting has been registered, you can make a custom NexoItem which will place the given painting. Below is a basic example [PreviousSounds](https://docs.nexomc.com/configuration/sounds) [NextCustom Music Discs](https://docs.nexomc.com/configuration/custom-music-discs) Last updated 6 months ago * [Animated Paintings](https://docs.nexomc.com/configuration/custom-paintings#animated-paintings) * [NexoItem](https://docs.nexomc.com/configuration/custom-paintings#nexoitem) animated\_painting.png.mcmeta Copy { "animation": { "width": 256, "height": 256, "frametime": 1 } } Copy custom_painting: itemname: Custom Painting material: PAINTING Components: painting_variant: nexo:custom_painting animated_painting: itemname: Animated Painting material: PAINTING Components: painting_variant: nexo:animated_painting --- # Core Shaders | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/core-shaders.md) . There's a couple core shader addons made for Nexo that are very simple to add by just drag and dropping them into `Nexo/pack/external_packs` [PreviousNexoProxy](https://docs.nexomc.com/addons/nexo-proxy) [NextText Effects by Akis](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis) Last updated 7 months ago --- # Nexo Creative Inventory | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/nexo-creative-inventory.md) . NCI is a client-side Fabric mod that integrates with the Nexo plugin to show Nexo-defined items and blocks directly in the vanilla Creative inventory. It removes the need to browse `/nexo inventory` for most Creative workflow use cases. NCI updates dynamically when the server sends refreshed registry data (for example, after `/nexo reload`). Features[](https://docs.nexomc.com/addons/nexo-creative-inventory#features) ---------------------------------------------------------------------------- * Adds Nexo item groups to Creative inventory tabs. * Adds synced Nexo items to the Creative search tab. * Refreshes tab contents automatically after server-side Nexo registry changes. * Works client-side only (server runs Nexo plugin; client runs this mod). Installation[](https://docs.nexomc.com/addons/nexo-creative-inventory#installation) ------------------------------------------------------------------------------------ 1. Install the appropriate Fabric Loader for the selected NCI version. 2. Download the appropriate Fabric API for the selected NCI version. 3. Download and place the NCI `.jar` in your client `mods` folder, along with the Fabric API `.jar`. 4. Join a server running Nexo `1.21+`. 5. Ensure the player account has the `nexo.command.inventory` permission node, then use `/n rl items` to rescan and resend items to NCI clients. Server Requirements[](https://docs.nexomc.com/addons/nexo-creative-inventory#server-requirements) -------------------------------------------------------------------------------------------------- * Nexo inventory sync must be enabled (default behavior for Nexo `1.21+`). * The player must have permission node `nexo.command.inventory`. * The feature is intended for Creative users. Usage[](https://docs.nexomc.com/addons/nexo-creative-inventory#usage) ---------------------------------------------------------------------- 1. Join a compatible multiplayer server. 2. Enter Creative mode. 3. Open Creative inventory and use the page selector to move between vanilla tabs and Nexo tabs. 4. Use the Creative search tab to find synced Nexo items quickly. Versioning[](https://docs.nexomc.com/addons/nexo-creative-inventory#versioning) -------------------------------------------------------------------------------- Release artifacts are named with both mod version and minecraft version values: * `NCI-v-.jar` Protocol and Behavior Notes[](https://docs.nexomc.com/addons/nexo-creative-inventory#protocol-and-behavior-notes) ------------------------------------------------------------------------------------------------------------------ * Client/server registry sync uses protocol negotiation by version range. * Client advertises its minimum and maximum supported protocol versions. * Server responds with the highest mutually supported protocol version. * If there is no shared protocol version, sync is rejected as incompatible. * Permission denial is handled separately and also prevents sync. Troubleshooting[](https://docs.nexomc.com/addons/nexo-creative-inventory#troubleshooting) ------------------------------------------------------------------------------------------ * No Nexo tabs visible: * Confirm server is running Nexo `1.21+`. * Confirm your client is in Creative mode. * Confirm your account has `nexo.command.inventory`. * Confirm Fabric Loader/Fabric API and Minecraft versions match this release. * Items outdated after reload: * Reconnect if the server did not push a fresh registry packet. * Mod loads but nothing syncs: * Check client logs for Nexo handshake/protocol warnings. Development[](https://docs.nexomc.com/addons/nexo-creative-inventory#development) ---------------------------------------------------------------------------------- Build locally with: Output artifacts are written to `build/libs/`. Credits and Distribution[](https://docs.nexomc.com/addons/nexo-creative-inventory#credits-and-distribution) ------------------------------------------------------------------------------------------------------------ Suggested/developed by [ZoeWithTheE](https://github.com/ZoeWithTheE) and implemented by [Boy0000](https://github.com/Boy0000) . Public release channels: * [Modrinth](https://modrinth.com/mod/nci) * [GitHub](https://github.com/ZoeWithTheE/NCI) * [Patreon Early Access](https://www.patreon.com/cw/MNIZ/membership) License[](https://docs.nexomc.com/addons/nexo-creative-inventory#license) -------------------------------------------------------------------------- This repository is currently under a proprietary license. See the [LICENSE](https://github.com/ZoeWithTheE/NCI/blob/master/LICENSE) agreement for usage and redistribution terms. [PreviousText Effects by Akis](https://docs.nexomc.com/addons/core-shaders/text-effects-by-akis) [NextPlugin settings](https://docs.nexomc.com/configuration/plugin-settings) Last updated 5 months ago * [Features](https://docs.nexomc.com/addons/nexo-creative-inventory#features) * [Installation](https://docs.nexomc.com/addons/nexo-creative-inventory#installation) * [Server Requirements](https://docs.nexomc.com/addons/nexo-creative-inventory#server-requirements) * [Usage](https://docs.nexomc.com/addons/nexo-creative-inventory#usage) * [Versioning](https://docs.nexomc.com/addons/nexo-creative-inventory#versioning) * [Protocol and Behavior Notes](https://docs.nexomc.com/addons/nexo-creative-inventory#protocol-and-behavior-notes) * [Troubleshooting](https://docs.nexomc.com/addons/nexo-creative-inventory#troubleshooting) * [Development](https://docs.nexomc.com/addons/nexo-creative-inventory#development) * [Credits and Distribution](https://docs.nexomc.com/addons/nexo-creative-inventory#credits-and-distribution) * [License](https://docs.nexomc.com/addons/nexo-creative-inventory#license) Copy ./gradlew clean build --- # MMOItems | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/mmoitems.md) . ### Import an MMOItem into your NexoITem[](https://docs.nexomc.com/compatibility/mmoitems#import-an-mmoitem-into-your-nexoitem) The compatibility with MMOItem allows you to import items created with this plugin and use them as a base for your Nexo-items (you will keep everything configured with MMOItem and add your own mechanics, textures, 3d models, etc). Copy example_mmoitem: itemname: "Test" mmoitem: type: SWORD id: FALCON_BLADE level: 10 # Optional tier: RARE # Optional match_level: true # Optional ### MMOItems in NexoFurniture & Custom Block drops[](https://docs.nexomc.com/compatibility/mmoitems#mmoitems-in-nexofurniture-and-custom-block-drops) You can also specify an mmoitem to be dropped directly when breaking a furniture or a custom block. You just need to specify the `mmoitems_id` & `mmoitems_type` in drop like shown below; Copy myitemid: Mechanics: custom_block: type: NOTEBLOCK drop: loots: - mmoitems_id: FALCON_BLADE mmoitems_type: SWORD amount: 1..3 #Optional furniture: drop: loots: - mmoitems_id: FALCON_BLADE mmoitems_type: SWORD amount: 1..3 #Optional ### MMOItems in Nexo-Recipes[](https://docs.nexomc.com/compatibility/mmoitems#mmoitems-in-nexo-recipes) You can also make a recipe in Nexo that takes an MMOItem as an ingredient or as the result. Like with drops, you just need to specify the `mmoitems_id` & `mmoitems_type` Below is an example of a shaped recipe using an MMOItem. Using the RecipeBuilders ingame should also do this for you if the item you use is an MMOItem [PreviousMythicCrucible](https://docs.nexomc.com/compatibility/crucible) [NextVendors](https://docs.nexomc.com/community-guides/vendors) Last updated 3 months ago * [Import an MMOItem into your NexoITem](https://docs.nexomc.com/compatibility/mmoitems#import-an-mmoitem-into-your-nexoitem) * [MMOItems in NexoFurniture & Custom Block drops](https://docs.nexomc.com/compatibility/mmoitems#mmoitems-in-nexofurniture-and-custom-block-drops) * [MMOItems in Nexo-Recipes](https://docs.nexomc.com/compatibility/mmoitems#mmoitems-in-nexo-recipes) Copy myrecipeid: result: mmoitems_id: FALCON_BLADE mmoitems_type: SWORD ingredients: A: mmoitems_id: FALCON_BLADE mmoitems_type: SWORD shape: - ___ - ___ - _A_ --- # Custom Saddles (1.21.5+) | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-saddles-1.21.5+.md) . When using COMPONENT type CustomArmor, Nexo allows you to easily create custom saddles for various mobs. The list of supported entities are: **camel, donkey, horse, mule, pig, skeleton\_horse, strider, zombie\_horse, nautilus & camel\_husk** Similar to all other CustomArmor sections, the pattern is \`mobtype\_saddle\`. Copy forest_saddle: itemname: Forest Saddle type: SADDLE Pack: texture: nexo:items/forest_armor/forest_saddle_icon CustomArmor: pig_saddle: nexo:items/forest_armor/forest_pig_saddle horse_saddle: nexo:items/forest_armor/forest_horse_saddle Components: equippable: slot: BODY allowed_enity_types: [ PIG, HORSE ] If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Here `Pack.CustomArmor.x_saddle` points to where we put the texture for the harness itself, with `Pack.texture` the icon. We also have to set the `allowed_entity_types` in our EquippableComponent for Nexo to properly handle the remaining properties [PreviousCustom Harness (1.21.6+)](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-harness-1.21.6+) [NextCustom Player Armors](https://docs.nexomc.com/configuration/custom-armors) Last updated 8 months ago --- # Oraxen → Nexo | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/migrate/oraxen-nexo.md) . This article explains how to migrate your Oraxen config to Nexo. The process will be mostly automatic, but first follow the steps below.\\ 1 **Put Nexo JAR in your server's** `**plugins**` **folder** 2 **Copy the contents of** `**plugins/Oraxen**` **into** `**plugins/Nexo/converter/Oraxen**` The `plugins/Nexo/converter/Oraxen` folder does not exist by default, so create the required folders yourself. Also make sure to keep the folder `plugins/Oraxen`, as this will be used later for the conversion process. On server reload, Nexo will empty the data from the `plugins/Nexo/converter/Oraxen` folder into a valid Nexo config and remove the folder. This step may be repeated for as many Oraxen packs as you would like to add, even at a future date. 3 **Take a backup** It is recommended to make a backup of your server's world folders before swapping to Nexo, as there might be small oversights leading to minor loss of furniture/custom blocks.\\ 4 **Remove Oraxen .jar file** Make sure to only delete the jar files - keep the folder `plugins/Oraxen`.\\ 5 **Start your server** 6 **Check console for conversion issues. And finally, test that the migration has worked by testing items, glyphs, and anything else that may be on your server!** ### Resource Packs[](https://docs.nexomc.com/migrate/oraxen-nexo#resource-packs) There are small changes in how ResourcePacks work between Oraxen and Nexo. The main change is that Nexo does not have shortcut folders for `pack/models` etc. Instead, Nexo follows the file structure used in vanilla Minecraft resource packs. For example, instead of using `pack/models`, Nexo uses `pack/assets/minecraft/models` (etc.) This system allows for the easier importing of vanilla Minecraft resource packs. You may add any resource pack .zip or ResourcePack-folder (MyPack/assets/...) to `pack/external_packs` and it will be included in the final pack. ### Items[](https://docs.nexomc.com/migrate/oraxen-nexo#items) When a player joins, any Oraxen items in their inventory will be converted to Nexo items. These will also be scanned and converted where there have been changes to the config, most notably in how NoteBlock, StringBlock and Furniture-Mechanics are defined. ### Furniture[](https://docs.nexomc.com/migrate/oraxen-nexo#furniture) Placed Oraxen furniture will be automatically converted to Nexo furniture when they load. There might be some issues with item frame furniture due to Nexo only supporting ItemDisplay furniture. These can be manually replaced, although an automatic conversion feature may be added in a future Nexo update. Main config changes here are with how seats, lights, and [hitboxes](https://docs.nexomc.com/mechanics/furniture-mechanic/hitbox) are defined. Nexo allows for multiple interaction hitboxes, seats, and lights. Read [Furniture Mechanic](https://docs.nexomc.com/mechanics/furniture-mechanic) for more info. ### Custom Blocks[](https://docs.nexomc.com/migrate/oraxen-nexo#custom-blocks) Custom blocks will be converted to Nexo, however there is a difference in the custom-variation calculation between Oraxen and Nexo. When importing OraxenItems, Nexo will correct this custom-variation. Example: `custom_variation: 1` -> `custom_variation: 51` There are also some minor changes in how these mechanics are defined. Examples can be found at [NoteBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) and [StringBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic) . **If there are any issues in the conversion process, let the developers know!** [PreviousRecipes](https://docs.nexomc.com/general-usage/recipes) [NextItemsAdder → Nexo](https://docs.nexomc.com/migrate/itemsadder-nexo) Last updated 7 months ago * [Resource Packs](https://docs.nexomc.com/migrate/oraxen-nexo#resource-packs) * [Items](https://docs.nexomc.com/migrate/oraxen-nexo#items) * [Furniture](https://docs.nexomc.com/migrate/oraxen-nexo#furniture) * [Custom Blocks](https://docs.nexomc.com/migrate/oraxen-nexo#custom-blocks) --- # Custom Music Discs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-music-discs.md) . Nexo streamlines the process of adding custom music discs to your server. You will need one valid OGG file, for your sound & a NexoItem referencing it. ### Registering your sound[](https://docs.nexomc.com/configuration/custom-music-discs#registering-your-sound) To begin you will need to register your sound. This is essentially what [Sounds](https://docs.nexomc.com/configuration/sounds) explains. All Sound-OGG files go into the **sounds-folder** in the ResourcePack. If unsure how ResourcePacks work & how to structure files, read through [ResourcePack](https://docs.nexomc.com/configuration/resourcepack) & [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) In short, navigate to `plugins/Nexo/sounds.yml` and add a basic entry for your sound Copy sounds: - id: namespace:my.sound # This is a key which will be used in the NexoItem sound: namespace:my/sound # This references your OGG file and where you put it stream: true # Optional, defaults to false. Enable for long sounds jukebox_playable: comparator_output: 15 # Optional, defaults to 15, must be in 1..15 range: X # Optional, If omitted, the sound will have a variable range. duration: 2.5s description: Description Now make sure you put the OGG file in the right spot. Above we have referenced `namespace:my/sound` -> `assets/namespace/sounds/my/sound.ogg` inside `plugins/Nexo/pack/` ### Making the Custom Music Disc NexoItem[](https://docs.nexomc.com/configuration/custom-music-discs#making-the-custom-music-disc-nexoitem) Now that the sound is all done we just need to make a very basic NexoItem that references the ID of our sound above. There is a slight difference in how the Jukebox Playable-Component is written depending on your server-version. [Components](https://docs.nexomc.com/configuration/items/components) will show you the one for your server. For setting a custom texture/model on your NexoItem, you can define it under the Pack section. [PreviousCustom Paintings](https://docs.nexomc.com/configuration/custom-paintings) [NextDialogs](https://docs.nexomc.com/configuration/dialogs) Last updated 3 months ago * [Registering your sound](https://docs.nexomc.com/configuration/custom-music-discs#registering-your-sound) * [Making the Custom Music Disc NexoItem](https://docs.nexomc.com/configuration/custom-music-discs#making-the-custom-music-disc-nexoitem) Copy my_music_disc: itemname: My Music Disc material: PAPER Pack: texture: namespace:discs/my_music_disc Components: jukebox_playable: song_key: namespace:my.sound --- # Sounds | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/sounds.md) . Nexo allows you to register custom sounds that can be used in `/playsound`or other plugins The most basic of sounds can be configured like below by editing `plugins/Nexo/sounds.yml` Copy sounds: - id: block.custom.mysound # id: namespace:id sound: nexo:mysound.ogg # References assets/nexo/sounds/mysound.ogg #sounds: # Optional, list of sounds where a random will be selected # - mysound.ogg # - mysound2.ogg If you are unsure how to reference a Sound OGG-file in a ConfigFile[How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) There are also some more properties you can tweak if needed, but for majority of cases, the above default will be enough. A detailed explanation of each property can be found [here](https://minecraft.wiki/w/Sounds.json) Copy #https://minecraft.wiki/w/Sounds.json sounds: - id: nexo:music.something sound: nexo:music/something.ogg sounds: # Alternative if you have more than 1 sound-file - nexo:music/something.ogg - nexo:music/something2.ogg stream: true # Optional, defaults to false preload: true # Optional, defaults to false volume: 1f # Optional, defaults to 1f pitch: 1f # Optional, defaults to 1f weight: 1 # Optional, defaults to 1 attenuation_distance: 13 # Optional, defaults to 16 jukebox_playable: # Optional, Used for registering a custom music-disc sound comparator_output: 15 # Optional, defaults to 15, must be in 1..15 range: X # Optional, If omitted, the sound will have a variable range. duration: 2.5s description: Description There is also `jukebox_playable`which is used to register sounds used in custom music discs Nexo will generate the necessary datapack for this, which you can then reference in [JukeboxPlayable-Component](https://docs.nexomc.com/configuration/items#components) of your item #### Replacing sounds[](https://docs.nexomc.com/configuration/sounds#replacing-sounds) If you wanna replace sounds already in minecraft, you can do so by doing [PreviousReference Glyph](https://docs.nexomc.com/configuration/glyphs/reference-glyph) [NextCustom Paintings](https://docs.nexomc.com/configuration/custom-paintings) Last updated 3 months ago Copy sounds: - id: block.glass.place # removes vanilla sound sounds: [] replace: true - id: block.glass.break # replaces vanilla sound with custom sound sound: nexo:customglasssound replace: true --- # ResourcePack | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/resourcepack.md) . If you are unsure how to reference a ResourcePack-file in a config-file [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) * * * 🗂️ ResourcePack-Structure[](https://docs.nexomc.com/configuration/resourcepack#resourcepack-structure) -------------------------------------------------------------------------------------------------------- The ResourcePack in Nexo follows the vanilla structure but also letting you import and automatically merge full ResourcePacks This is in an effort to make importing third-party ResourcePacks a lot easier. Below is an example of the new structure. Copy 📁Nexo └── 📁pack └── 📁assets │ ├── 📁minecraft │ │ ├── 📁models │ │ │ ├── 📁item │ │ │ │ └── 📑paper.json │ │ │ └── 📑custom_model.json │ │ └── 📁textures │ │ └── 🖼️something.png │ └── 📁custom_namespace │ └── 📁models │ └── 📑custom.json │ └── 📁external_packs ├── 📁DefaultPack.zip ├── 📁custom_resourcepack.zip └── 📁custom_resourcepack2 └── 📁assets └── 📁custom_namespace2 Goal is to let users merge resourcepacks in via either ZIPs or directories, outside of the normal assets folder. This would dynamically merge in any conflicting files, like a paper.json or sounds.json, instead of migrating it to Nexo-configs to be generated. Meaning that pack-import instructions on your end now boils down to: Put `my_pack.zip` inside `Nexo/pack/external_packs` * * * 🎭 Obfuscation[](https://docs.nexomc.com/configuration/resourcepack#obfuscation) --------------------------------------------------------------------------------- Nexo has a built-in way to "obfuscate" the content of your resource-pack. This is done by randomizing all file-names in an attempt to make it very hard and annoying to try and take stuff from it for pirates. It comes with three modes, `NONE`, `SIMPLE`, `FULL` **NONE** - Self-explanatory, does not obfuscate pack in any way **SIMPLE** - Obfuscates filenames only `namespace:model/path.json` -> `namespace:bba2d60b-8e3e-4051-9734-fef92766777f` **FULL** - Obfuscates namespace & filename; `namespace:model/path.json` -> `c491303e-ba1e-4037-a59d-62b5fdfb6bb8:bba2d60b-8e3e-4051-9734-fef92766777f` * * * 📦 PackSquash-Integration[](https://docs.nexomc.com/configuration/resourcepack#packsquash-integration) ------------------------------------------------------------------------------------------------------- Nexo allows you to run PackSquash on the resourcepack without manually reuploading the pack. Simply download the latest [PackSquash](https://github.com/ComunidadAylas/PackSquash/releases) build and drop it in `plugins/Nexo/pack/packsquash` . Then drop your **packsquash.toml** in the same directory, an example can be found [here](https://gist.github.com/Boy0000/92149d2704b6086473fccb4d771c42b4) . If you want it in another location, you can specify a path for the binary & settings To enable Nexo's PackSquash-integration simply enable `Pack.generation.packsquash.enabled` in settings.yml. Then when the pack generates, it will start the PackSquash process. If it suceeds you should see somehting like the below. ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-0a8e2c268aa67d66b76766007f34ae11ebd28ed4%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3c4bdd0&sv=2) Example of successful PackSquash process If it failed you should see some detailed info about which file and a reason for it. If Nexo's debug-mode is enabled, it will output info about all successful files aswell Depending on your TOML-configuration & ResourcePack size & complexity, the PackSquash process might take some time. Nexo will cache the output so that if the ResourcePack does not change, the PackSquash process will not need to be ran again * * * 🌐 PackServer[](https://docs.nexomc.com/configuration/resourcepack#packserver) ------------------------------------------------------------------------------- Nexo supports several ways to upload & dispatch the ResourcePack it generates. Set the type via `Pack.server.type` in `settings.yml`. ### NONE[](https://docs.nexomc.com/configuration/resourcepack#none) Does not send any ResourcePack to players. Use this on backend servers that should not dispatch a pack. ### POLYMATH[](https://docs.nexomc.com/configuration/resourcepack#polymath) A dedicated upload server hosted by the Nexo team (Germany). The pack is uploaded and served automatically. ### SELFHOST[](https://docs.nexomc.com/configuration/resourcepack#selfhost) Hosts the ResourcePack directly from your server machine. Requires an open port and a reachable public address. ### LOBFILE[](https://docs.nexomc.com/configuration/resourcepack#lobfile) Uploads the pack to [LobFile](https://lobfile.com/) . Requires an API key. ### S3[](https://docs.nexomc.com/configuration/resourcepack#s3) Uploads the pack to any S3-compatible object storage (AWS S3, Cloudflare R2, Hetzner Object Storage, etc.). ### Custom PackServer[](https://docs.nexomc.com/configuration/resourcepack#custom-packserver) The `NexoPackServer` interface can be implemented by third-party plugins and registered via `PackServerRegistry`, allowing you to add your own upload/dispatch logic. * * * 🔗 Cross-Server/Proxy ResourcePacks[](https://docs.nexomc.com/configuration/resourcepack#cross-server-proxy-resourcepacks) --------------------------------------------------------------------------------------------------------------------------- For Velocity proxy networks, use [NexoProxy](https://docs.nexomc.com/addons/nexo-proxy) — a Velocity plugin that blocks duplicate ResourcePack sends when players switch between backend servers. * * * 📥 Importing[](https://docs.nexomc.com/configuration/resourcepack#importing) ----------------------------------------------------------------------------- Nexo lets you import Third-Party ResourcePacks in several ways. The recommended one is shown above, by adding a directory or .zip to `plugins/Nexo/pack/external\_packs` There is also `Plugin.import.from_location` in settings.yml, letting you specify a directory/zip relative to your plugins folder There is also `Plugin.import.from_url` in settings.yml, letting you specify any url that Nexo will download a directory/zip from and include [PreviousPlugin settings](https://docs.nexomc.com/configuration/plugin-settings) [NextMultiPack Feature](https://docs.nexomc.com/configuration/resourcepack/multipack-feature) Last updated 2 months ago * [🗂️ ResourcePack-Structure](https://docs.nexomc.com/configuration/resourcepack#resourcepack-structure) * [🎭 Obfuscation](https://docs.nexomc.com/configuration/resourcepack#obfuscation) * [📦 PackSquash-Integration](https://docs.nexomc.com/configuration/resourcepack#packsquash-integration) * [🌐 PackServer](https://docs.nexomc.com/configuration/resourcepack#packserver) * [NONE](https://docs.nexomc.com/configuration/resourcepack#none) * [POLYMATH](https://docs.nexomc.com/configuration/resourcepack#polymath) * [SELFHOST](https://docs.nexomc.com/configuration/resourcepack#selfhost) * [LOBFILE](https://docs.nexomc.com/configuration/resourcepack#lobfile) * [S3](https://docs.nexomc.com/configuration/resourcepack#s3) * [Custom PackServer](https://docs.nexomc.com/configuration/resourcepack#custom-packserver) * [🔗 Cross-Server/Proxy ResourcePacks](https://docs.nexomc.com/configuration/resourcepack#cross-server-proxy-resourcepacks) * [📥 Importing](https://docs.nexomc.com/configuration/resourcepack#importing) Copy Pack: generation: packsquash: enabled: true executable_path: plugins/Nexo/pack/packsquash/packsquash settings_path: plugins/Nexo/pack/packsquash/packsquash.toml Copy Pack: server: type: POLYMATH polymath: server: atlas.nexomc.com secret: nexomc Copy Pack: server: type: SELFHOST selfhost: port: 8082 public_address: "http://your.ip.or.domain" dispatch_threads: 10 Copy Pack: server: type: LOBFILE lobfile: api_key: YOUR-API-KEY Copy Pack: server: type: S3 s3: public_url: "https://fsn1.your-objectstorage.com" endpoint_url: "https://fsn1.your-objectstorage.com" region: eu-central-1 bucket: nexo-storage access_key: ACCESS secret_key: SECRET url_expiration: 7d path_style: false chunked_encoding: true --- # Custom Player Armors | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-armors.md) . Just like other items, armor have a texture for when it is held or in your inventory, but also a texture for when a player equips it. Nexo comes with two ways to add custom armor: COMPONENT & TRIMS. COMPONENT is for all 1.21.2+ servers and is the optimal choice for all supported servers. TRIMS is designed around the Armor-Trim system added in Minecraft 1.20, and will not work on earlier versions. **Component** method is recommended for all servers 1.21.2+ in every scenario. There is no benefit to using Trims or Shader-methods for these servers. **Armor-Trim** method is recommended if your server is 1.21.1 and only allows 1.20+ players. It has the benefit of not breaking with shaders / requiring extra mods to work. It requires the use of CHAINMAIL armor [PreviousCustom Saddles (1.21.5+)](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-saddles-1.21.5+) [NextCustom Elytras](https://docs.nexomc.com/configuration/custom-armors/custom-elytras-1.21.2+) Last updated 10 months ago --- # Multi-Bitmap Glyph | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph.md) . If you have a texture consisting of several emotes or a texture larger than the allowed 256x256, you can make it a multi-bitmap. This means you can, tie several unicodes to one image. In your glyph you can specify an amount of rows and columns your glyph needs. This will make nexo assign unicodes based on your needs. If you are unsure how to reference a Texture in a Glyph config[How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Example for using a 512x512 texture: Copy myglyph: #texture: required/ui/menu_items #ascent: 37 #height: 256 rows: 2 # Tells Nexo this glyph should have 2 rows when assigning unicodes/chars columns: 2 # Tells Nexo this glyph should have 2 columns when assigning unicodes/chars This will make nexo assign 4 unicodes for this glyph, which will be displayed when used. It should be noted that some cases newlines are not supported. An example is in lore, where it would not correctly align your glyph. A workaround is by using an "range index" in your glyph-tag. Example for using in lore of your NexoItem: Copy myitem: lore: - "" - "" This would correctly align your glyph in lore. In cases where newlines are supported, you dont need to specify such a range. Nexo would by default append that to the text and align it. [PreviousAnimated Glyphs](https://docs.nexomc.com/configuration/glyphs/animated-glyphs) [NextReference Glyph](https://docs.nexomc.com/configuration/glyphs/reference-glyph) Last updated 9 months ago --- # Anti-Cheat Plugins | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/compatibility/anti-cheat-plugins.md) . Nexo might cause conflicts with Anti-Cheat plugins when standing on [Furniture Mechanic](https://docs.nexomc.com/mechanics/furniture-mechanic) . NexoFurniture uses ClientSide hitboxes, meaning these plugins will think the player is floating/flying. Nexo has built-in support for the most common ones, like Vulkan & Spartan/Vacan**\*****.** The settings for these can be found in `mechanics.yml` under `Furniture.anti_cheat`. For other plugins like _LPX_ & _Polar Anti-Cheat_, there is no built-in support for these. There is an unofficial third-party addon you can download which should fix this: [NexoPolarBridge](https://github.com/SLNE-Development/NexoPolarBridge) [PreviousOther Mechanics](https://docs.nexomc.com/mechanics/all-mechanics) [NextPlaceholderAPI](https://docs.nexomc.com/compatibility/placeholderapi) Last updated 4 months ago --- # Commands | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/general-usage/commands.md) . 📋 Getting Started[](https://docs.nexomc.com/general-usage/commands#getting-started) ------------------------------------------------------------------------------------- All the nexo-commands can be found under `/nexo` or it's aliases `/n` `/nx` 🎁 Getting/Removing items[](https://docs.nexomc.com/general-usage/commands#getting-removing-items) --------------------------------------------------------------------------------------------------- ### 📦 Nexo Inventory[](https://docs.nexomc.com/general-usage/commands#nexo-inventory) The main benefit of this method is that it allows you to see all the items at the same time in categories based on your `Nexo/items/filename.yml` You can grab copies of items here but cannot give it to other players. #### Usage: `/nexo inventory` or `/nexo inv`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-inventory-or-nexo-inv) #### Permission: `nexo.command.inventory`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.inventory) ### 🎯 Give Item[](https://docs.nexomc.com/general-usage/commands#give-item) This command will be mainly useful if you want to give an item to another player or when you want to automate the give #### Usage: `/nexo give [amount] [player]`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-give-less-than-item-greater-than-amount-player) #### Permission: `nexo.command.give`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.give) ### 🫳 Drop Item[](https://docs.nexomc.com/general-usage/commands#drop-item) This command will be useful if you want to drop an item to another player #### Usage: `/nexo drop [amount] [player]`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-drop-less-than-item-greater-than-amount-player) #### Permission: `nexo.command.drop`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.drop) ### 🫴 Take Item[](https://docs.nexomc.com/general-usage/commands#take-item) This command will be useful if you want to remove an item from a player #### Usage: `/nexo take [player]`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-take-less-than-item-greater-than-player) #### Permission: `nexo.command.take`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.take) ### 🖨️ Dump Item[](https://docs.nexomc.com/general-usage/commands#dump-item) This command is useful for debugging a NexoItem or held item to find the Data & Components on it #### Usage: `/nexo dumpitem `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-dumpitem-less-than-itemid-greater-than) #### Permission: `nexo.command.dumpitem`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.dumpitem) * * * 🎨 Dyeing Items[](https://docs.nexomc.com/general-usage/commands#dyeing-items) ------------------------------------------------------------------------------- This command allows you to dye the item in your hand, whether it's a dyeable Nexo item or just a normal dyeable item. #### Usage: `/nexo dye `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-dye-less-than-color-greater-than) `color` can be dye names (red, green), rgb (`0,255,0` for pure green), or hex (`0xFF0000` or `#00FFFF`) #### Permission: `nexo.command.dye`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.dye) * * * 🔧 Recipe Commands[](https://docs.nexomc.com/general-usage/commands#recipe-commands) ------------------------------------------------------------------------------------- This command allows you to add new recipes to the configuration directly from the game using recipes builder. For more information on how to use it, see [Recipes](https://docs.nexomc.com/general-usage/recipes) . #### Usage:[](https://docs.nexomc.com/general-usage/commands#usage) #### Permission: `nexo.command.recipes`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.recipes) * * * 📩 Manual Pack Sending[](https://docs.nexomc.com/general-usage/commands#manual-pack-sending) --------------------------------------------------------------------------------------------- This command allows you to send the pack to a group of players. Useful if the automatic sending failed or for testing #### Usage: `/nexo pack `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-pack-less-than-player-greater-than) #### Permission: `nexo.command.pack`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.pack) * * * ⬆️ Updating Items and Furnitures[](https://docs.nexomc.com/general-usage/commands#updating-items-and-furnitures) ----------------------------------------------------------------------------------------------------------------- This command allows you to update furnitures and items. Useful if the auto update failed or if you disabled it in settings #### Usage:[](https://docs.nexomc.com/general-usage/commands#usage-1) #### Permission: `nexo.command.update`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.update) * * * 🔍 Item Info[](https://docs.nexomc.com/general-usage/commands#item-info) ------------------------------------------------------------------------- This command allows you to print general info about a Nexo Item for debugging. An example of the output: #### Usage: `/nexo iteminfo `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-iteminfo-less-than-itemid-greater-than) #### Permission: `nexo.command.iteminfo`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.iteminfo) 🔍 Glyph Info[](https://docs.nexomc.com/general-usage/commands#glyph-info) --------------------------------------------------------------------------- This command allows you to print general info about a Nexo Glyph for debugging. An example of the output: #### Usage: `/nexo glyphinfo `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-glyphinfo-less-than-glyphid-greater-than) #### Permission: `nexo.command.glyphinfo`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.glyphinfo) 🟩 Block Info[](https://docs.nexomc.com/general-usage/commands#block-info) --------------------------------------------------------------------------- This command allows you to print general info about a Nexo Block for debugging. An example of the output for a noteblock: this is different for other block types #### Usage: `/nexo blockinfo `[](https://docs.nexomc.com/general-usage/commands#usage-nexo-blockinfo-less-than-iteminfo-greater-than) #### Permission: `nexo.command.blockinfo`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.blockinfo) * * * 🙂 Emoji List[](https://docs.nexomc.com/general-usage/commands#emoji-list) --------------------------------------------------------------------------- This command opens a book with all the emojis (glyphs with `is_emoji: true`). #### Usage: `/nexo emojis`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-emojis) #### Permission: `nexo.command.emojis`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.emojis) * * * 🔄 Reload[](https://docs.nexomc.com/general-usage/commands#reload) ------------------------------------------------------------------- This command allows you to reload Nexo configurations. Reloading items updates any changes you might have made, and updates all old copies players might have. Reloading pack regenerates the resourcepack, and if `Pack.dispatch.send_on_reload` is enabled in `settings.yml`, will be dispatched to all players. #### Usage[](https://docs.nexomc.com/general-usage/commands#usage-2) #### Permission: `nexo.command.reload`[](https://docs.nexomc.com/general-usage/commands#permission-nexo.command.reload) * * * 🐛 Debug Mode[](https://docs.nexomc.com/general-usage/commands#debug-mode) --------------------------------------------------------------------------- This command just toggles the debug-state of Nexo. In case you run into a bug or an error, you might be asked to toggle this to provide support with a more full error-log of the bug. #### Usage: `/nexo debug`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-debug) #### Permissions: `nexo.command.debug`[](https://docs.nexomc.com/general-usage/commands#permissions-nexo.command.debug) * * * ℹ️ Nexo Version[](https://docs.nexomc.com/general-usage/commands#nexo-version) ------------------------------------------------------------------------------- This command simply shows you the version of Nexo. If using devbuilds, we might ask you to give us the full jar-file name. #### Usage: `/nexo version`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-version) #### Permissions: `nexo.command.version`[](https://docs.nexomc.com/general-usage/commands#permissions-nexo.command.version) * * * ❌ Reset Custom Model data[](https://docs.nexomc.com/general-usage/commands#reset-custom-model-data) ---------------------------------------------------------------------------------------------------- This command deletes the custom\_model\_data from all of your Nexo Items. Mainly useful for swapping Nexo to a "ItemModel" based system for 1.21.4+ servers. You can get more info about the difference between ItemModels and CustomModelDatas, and why ItemModels are the recommended choice at [ItemModels vs. CustomModelData](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata) #### Usage: `/nexo reset_custom_model_data`[](https://docs.nexomc.com/general-usage/commands#usage-nexo-reset_custom_model_data) #### Permissions: `nexo.command.resetcmd`[](https://docs.nexomc.com/general-usage/commands#permissions-nexo.command.resetcmd) [PreviousVideo Tutorials](https://docs.nexomc.com/general-usage/video-tutorials) [NextRecipes](https://docs.nexomc.com/general-usage/recipes) Last updated 7 months ago * [📋 Getting Started](https://docs.nexomc.com/general-usage/commands#getting-started) * [🎁 Getting/Removing items](https://docs.nexomc.com/general-usage/commands#getting-removing-items) * [📦 Nexo Inventory](https://docs.nexomc.com/general-usage/commands#nexo-inventory) * [🎯 Give Item](https://docs.nexomc.com/general-usage/commands#give-item) * [🫳 Drop Item](https://docs.nexomc.com/general-usage/commands#drop-item) * [🫴 Take Item](https://docs.nexomc.com/general-usage/commands#take-item) * [🖨️ Dump Item](https://docs.nexomc.com/general-usage/commands#dump-item) * [🎨 Dyeing Items](https://docs.nexomc.com/general-usage/commands#dyeing-items) * [🔧 Recipe Commands](https://docs.nexomc.com/general-usage/commands#recipe-commands) * [📩 Manual Pack Sending](https://docs.nexomc.com/general-usage/commands#manual-pack-sending) * [⬆️ Updating Items and Furnitures](https://docs.nexomc.com/general-usage/commands#updating-items-and-furnitures) * [🔍 Item Info](https://docs.nexomc.com/general-usage/commands#item-info) * [🔍 Glyph Info](https://docs.nexomc.com/general-usage/commands#glyph-info) * [🟩 Block Info](https://docs.nexomc.com/general-usage/commands#block-info) * [🙂 Emoji List](https://docs.nexomc.com/general-usage/commands#emoji-list) * [🔄 Reload](https://docs.nexomc.com/general-usage/commands#reload) * [🐛 Debug Mode](https://docs.nexomc.com/general-usage/commands#debug-mode) * [ℹ️ Nexo Version](https://docs.nexomc.com/general-usage/commands#nexo-version) * [❌ Reset Custom Model data](https://docs.nexomc.com/general-usage/commands#reset-custom-model-data) Copy /nexo recipe builder # Start building a new recipe /nexo recipe save # Save your recipe /nexo recipe show all # See all your recipes /nexo recipe show # Check a specific recipe Copy /nexo update furniture # Update furniture in a radius /nexo update item # Update the Nexo items in a players inventory Copy ItemID: my_cool_item # this is the ID of the item CustomModelData: 1000 # the custommodeldata of the item Material: PAPER # the material used for the item Model Name: minecraft:my_cool_item # the name of the model, in the final pack you can find this in minecraft/models/my_cool_item.json Copy GlyphID: required # this is the ID of the glyph Texture: minecraft:required/exit_icon.png # the texture path of the glyph Font: minecraft:default # the font that the glyph uses Unicode: ꐏ # the character used for displaying the glyph (you should use ) Copy ItemID: my_cool_block # this is the ID of the item that the block is tied to Intrument: PIANO # this is the instrument the noteblock uses Note: 1 # the note Powered: false # the powered state Copy /nexo reload # Refresh everything - items, recipes, and pack /nexo reload items # Just update items /nexo reload pack # Rebuild and resend the resource pack /nexo reload recipes # Reload recipe configurations /nexo reload configs # Reload configs /nexo reload dialogs # Reload Dialog configs (new dialogs require a restart) --- # Custom Block Mechanics | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-block-mechanics.md) . Nexo has several options for making Custom Blocks. They all come with a few restrictions due to the nature of how custom blocks can be implemented. NOTEBLOCK type custom blocks are for normal 1x1x1 blocks like Stone, Dirt etc... It uses the vanilla NoteBlock and thus disables most of the redstone functionality for it CHORUSBLOCK type custom blocks are based on the Chorus Plant block. It is mainly used for transparent blocks, like leaves. The hitbox is not a normal 1x1x1 so it is adviced to only use this for transparent block needs STRINGBLOCK type custom blocks are for plants, decoration etc... It uses the vanilla TripWire block and thus disables most of the redstone functionality for it On all Paper-Servers you are HEAVILY recommended to disable block-updates for the types of custom blocks you plan to use. These can be found in \`MyServerFolder/configs/paper-global.yml\` Due to the nature of Custom Blocks, these for the most part completely disable the original blocks vanilla functionality. NOTEBLOCK-type does have an option to "reimplement" the functionality, but it has some minor flaws. STRINGBLOCK-type completely disables vanilla functionality. If you want either of these, you will likely have to disable these mechanics. [PreviousDoor Mechanic](https://docs.nexomc.com/mechanics/furniture-mechanic/door-mechanic) [NextChorusBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic) Last updated 7 months ago --- # Reference Glyph | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/glyphs/reference-glyph.md) . Reference-glyphs are used when you want to "reference" a part of a Multi-Bitmap Glyph. For example if you have a multi-bitmap glyph with 10 emojis, you can reference a specific one like follows If you are unsure how to reference a Texture in a Glyph config[How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Copy multi_bitmap: texture: spritesheet rows: 2 columns 5 #index is the row and column number first_emoji: reference: multi_bitmap index: 1 ... tenth_emoji: reference: multi_bitmap index: 10 [PreviousMulti-Bitmap Glyph](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph) [NextSounds](https://docs.nexomc.com/configuration/sounds) Last updated 9 months ago --- # Animated Glyphs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/glyphs/animated-glyphs.md) . With Nexo you can make Animated Glyphs, or GIFs, which you can use to animate GUIs or gif-emotes. It is very simple, Nexo does most of the hard work to convert the GIF-file to a compatible format. Simply put your GIF-file in the resourcepack. As an example we will use `Nexo/pack/assets/nexo/textures/gifs/necoflap.gif` ### Gif-Glyph Config[](https://docs.nexomc.com/configuration/glyphs/animated-glyphs#gif-glyph-config) Copy necoflap: gif: nexo:gifs/necoflap.gif ascent: 9 height: 11 #frame_count: X Optional, mainly used for limiting larger GIFs #offset: X Mainly if the GIF is not overlapping frames perfectly Unlike normal Glyphs, font cannot be customized, as Nexo sets it for you. Texture-property is based on the `gif`\-property and can be customized that way If you are unsure how to reference a Texture in a Glyph config[How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) GIFs rely on Core Shaders and might break on version updates. Large GIFs might also cause lag if the frame-count is really high, consider optimizing GIFs you intend to use Example of GIFs in Chat & on Text Displays [PreviousGlyphs](https://docs.nexomc.com/configuration/glyphs) [NextMulti-Bitmap Glyph](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph) Last updated 9 months ago --- # DialogAction | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/dialogs/dialogaction.md) . DialogActions are divided in two types, **Static & Dynamic**. Static-actions do not depend on the value of an input field. Dynamic-actions can be used in conjunction with the value of input fields. ### Static Actions[](https://docs.nexomc.com/configuration/dialogs/dialogaction#static-actions) Types of static-actions are [OPEN\_URL](https://minecraft.wiki/w/Dialog#open_url) , [RUN\_COMMAND](https://minecraft.wiki/w/Dialog#run_command) , [SUGGEST\_COMMAND](https://minecraft.wiki/w/Dialog#suggest_command) , [CHANGE\_PAGE](https://minecraft.wiki/w/Dialog#change_page) , [CLIPBOARD](https://minecraft.wiki/w/Dialog#copy_to_clipboard) , [SHOW\_DIALOG](https://minecraft.wiki/w/Dialog#show_dialog) and [CUSTOM](https://minecraft.wiki/w/Dialog#custom) Copy action: type: RUN_COMMAND command: "nexo inventory" ### Dynamic Actions[](https://docs.nexomc.com/configuration/dialogs/dialogaction#dynamic-actions) Dynamic actions are actions that can be used with values of input fields in the dialog. For example run a command with text from the DialogInput Text field The types of dynamic actions are [DYNAMIC\_RUN\_COMMAND](https://minecraft.wiki/w/Dialog#dynamic/run_command) & [DYNAMIC\_CUSTOM](https://minecraft.wiki/w/Dialog#dynamic/custom) [PreviousDialogBase](https://docs.nexomc.com/configuration/dialogs/dialogbase) [NextFurniture Mechanic](https://docs.nexomc.com/mechanics/furniture-mechanic) Last updated 1 year ago * [Static Actions](https://docs.nexomc.com/configuration/dialogs/dialogaction#static-actions) * [Dynamic Actions](https://docs.nexomc.com/configuration/dialogs/dialogaction#dynamic-actions) --- # Trims Based (1.20+) | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-armors/trims.md) . As of Nexo 1.25+, this is deprecated and will be removed in the future. Use [Component Based](https://docs.nexomc.com/configuration/custom-armors/components) If using trims as your custom-armor type, most things is handled automatically for you. TRIMS method requires using CHAINMAIL as the base-item. Nexo then generates a datapack based on your configured custom armors. Due to it requiring a datapack, the server needs to do a full restart any time you add/remove an armor-set. After changing `CustomArmor.armor_type` to `TRIMS` you need to: 1. Start your server to let datapack be generated 2. Stop your server 3. Start it again to enable the previously generated datapack How to configure your armor?[](https://docs.nexomc.com/configuration/custom-armors/trims#how-to-configure-your-armor) ---------------------------------------------------------------------------------------------------------------------- Make sure that the itemID of your NexoItem follows the pattern `armorname_armortype`. For the rest of the above set it would be `ruby_chestplate`, `ruby_leggings` and `ruby_boots`. Make sure your armor-layer files follow the format of **armorname**\_armor\_layer\_1/2.png. In the example below, we would need a **ruby**\_armor\_layer\_1.png & **ruby**\_armor\_layer\_2.png If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Copy ruby_helmet: displayname: "Ruby Helmet" material: CHAINMAIL_HELMET Pack: parent_model: "item/generated" # Optional, if not specified, Nexo searches for any texture # with the filename armorname_armor_layer_X.png #CustomArmor: # layer1: default/armors/ruby_armor_layer_1.png # layer2: default/armors/ruby_armor_layer_2.png texture: default/armors/ruby_helmet A trim-pattern is also necessary for the armor to display correctly. Nexo will automatically assign it if it has not been manually specified. You can optionally manually assign the `trim_pattern` if you want to. The value should be `nexo:armorname`, so in our example; [PreviousComponent Based](https://docs.nexomc.com/configuration/custom-armors/components) [NextGlyphs](https://docs.nexomc.com/configuration/glyphs) Last updated 24 days ago Copy ruby_helmet: trim_pattern: nexo:ruby --- # Custom Trident | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-trident.md) . Nexo allows you to make custom tridents and trident-projectiles. This feature will work best on 1.21.4+ servers but will also work on lower ones The Trident-mechanic is pretty straight-forward, but also has some optional properties, mainly applicable to lower versions. By default any item using TRIDENT as it's material is a Custom Trident The Trident-Mechanic is not strictly necessary unless one wants to tweak the properties ### Properties[](https://docs.nexomc.com/mechanics/custom-trident#properties) `thrown_item_model` - The ItemModel to show on the Trident-projectile. Unspecified defaults to `Components.item_model` if specified. `thrown_item` - Refers to the NexoItem to display for the Projectile. Defaults to the item of this mechanic if unspecified `display_transform` - Lets you set the Transform the model should use `rotation` - Lets you rotate the base yaw/pitch of the projectile `damage` - The base-damage the Trident will do when hitting an entity, defaults to 8 `sounds` - The sounds the Trident should make, defaults to replicating vanilla. #### Trident Sounds[](https://docs.nexomc.com/mechanics/custom-trident#trident-sounds) Copy forest_trident: Mechanics: trident: sounds: throw: my.throw.sound hit: # Optional format for specifying volume and/or pitch sound: my.hit.sound volume: 1.1 pitch: 1.0 # Optional, defaults to 1.0 #hit_ground: my.hit_ground.sound ##return: my.return.sound If you are unsure how to reference a ResourcePack-File in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Showcasing Forest Trident ItemModel (1.21.4+) NexoItem (1.21.1+) For 1.21.4+ servers there are two approaches you can take, one being manually making the ItemModel, or let Nexo do it for you. You will need 2 **Models** and 1 **NexoItem-Config** at minimum. **Simple Method** The simplest method is to let Nexo generate the **ItemModel** for you. For this you will need a NexoItem-Config like shown below. This specified a model & throwing\_model in Pack, which Nexo will use when making the ItemModel. The throwing\_model is usually the same as the model, but flipped in hand in programs like BlockBench **Manual Method** If you want to manually provide the **ItemModel** you will need a simplified config like below; The Forest Trident Nexo comes with uses a unified ItemModel to dictate when to show what model. This is mainly for displaying a different model when held/icon/throwing. Like the normal trident-item, which has a 2d Icon in GUIs, then also held in hand one way when throwing and normal. Below is the example Forest-Trident **ItemModel** Nexo comes with: This has a different **Model** based on the condition if the item is being used or not. This then goes into `assets/nexo/items/forest_trident.json` and is referenced in the NexoItem like below As shown above this **ItemModel** then links to two separate normal JSON-**Models**: `assets/nexo/models/item/nexo_tools/forest_trident.json` `assets/nexo/models/item/nexo_tools/forest_trident_throwing.json` ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-803cae643d5a6a4e8ddf8087a4365fb307c5ca69%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=8e9e4aca&sv=2) Forest Trident with the normal default Model ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-c84b2a34f6d66063a0a9c3ddad208007d916449e%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=bfa5b797&sv=2) Forest Trident in the "throwing" model, rotated [PreviousStringBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic) [NextClickAction Mechanic](https://docs.nexomc.com/mechanics/clickaction-mechanic) Last updated 24 days ago Copy forest_trident: itemname: Forest Trident material: TRIDENT Pack: model: nexo:item/nexo_tools/forest_trident throwing_model: nexo:item/nexo_tools/forest_trident_throwing Mechanics: trident: display_transform: HEAD Copy forest_trident: itemname: Forest Trident material: TRIDENT Components: item_model: nexo:forest_trident Mechanics: trident: display_transform: HEAD Copy { "model": { "type": "minecraft:condition", "property": "minecraft:using_item", "on_false": { "type": "minecraft:model", "model": "nexo:item/nexo_tools/forest_trident" }, "on_true": { "type": "minecraft:model", "model": "nexo:item/nexo_tools/forest_trident_throwing" } } } Copy forest_trident: itemname: Forest Trident material: TRIDENT Pack: model: nexo:item/nexo_tools/forest_trident Mechanics: trident: thrown_item: forest_trident_throwing display_transform: HEAD forest_trident_thrown: excludeFromCommands: true excludeFromInventory: true Pack: model: nexo:item/nexo_tools/forest_trident_throwing --- # Custom Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-mechanic.md) . How does it work?[](https://docs.nexomc.com/mechanics/custom-mechanic#how-does-it-work) ---------------------------------------------------------------------------------------- This mechanic is for items only and does not work with blocks/furniture. For that check the [clickAction mechanic](https://docs.nexomc.com/mechanics/clickaction-mechanic) . The mechanics let you create subsections composed of 3 parts: * **Event**: when is this mechanic triggered? e.g. when you right-click on a block * **Conditions**: a set of conditions that must be satisfied. e.g. having a permission * **Actions**: a set of actions to perform. e.g. send a command or a message An optional settings called one\_usage allows you to imitate the use of an item at 1. A comprehensive example[](https://docs.nexomc.com/mechanics/custom-mechanic#a-comprehensive-example) ----------------------------------------------------------------------------------------------------- Copy myitem: Mechanics: custom: test: one_usage: false event: "CLICK:right:all" conditions: - '#player.hasPermission("example.permission")' actions: - "[console] give cooked_beef 1" In this example, the subsection `test` defines a custom mechanic triggered when someone right click (on a block or in the air). If this player has the permission `example.permission`, the console will perform the give command and replace by the player name. The item won't be consumed (one\_usage: false). Available events[](https://docs.nexomc.com/mechanics/custom-mechanic#available-events) --------------------------------------------------------------------------------------- ### CLICK:click\_type:target\_type,[](https://docs.nexomc.com/mechanics/custom-mechanic#click-click_type-target_type) ### INV\_CLICK:click\_type:context\_type[](https://docs.nexomc.com/mechanics/custom-mechanic#inv_click-click_type-context_type) ### DROP, PICKUP, BREAK, EQUIP, UNEQUIP, INV\_CLICK, DEATH, DROP\_ALL[](https://docs.nexomc.com/mechanics/custom-mechanic#drop-pickup-break-equip-unequip-inv_click-death-drop_all) Available conditions[](https://docs.nexomc.com/mechanics/custom-mechanic#available-conditions) ----------------------------------------------------------------------------------------------- ### Permission-Condition[](https://docs.nexomc.com/mechanics/custom-mechanic#permission-condition) Available actions[](https://docs.nexomc.com/mechanics/custom-mechanic#available-actions) ----------------------------------------------------------------------------------------- ### Command-Action[](https://docs.nexomc.com/mechanics/custom-mechanic#command-action) This action lets you run a command either from console or as the player ### Message-Action[](https://docs.nexomc.com/mechanics/custom-mechanic#message-action) ### ActionBar-Action[](https://docs.nexomc.com/mechanics/custom-mechanic#actionbar-action) ### Sound-Action[](https://docs.nexomc.com/mechanics/custom-mechanic#sound-action) This action lets you play a sound at a location or at a target with customizable values **source -** The source of the sound ([List of sources](https://jd.advntr.dev/api/4.21.0/net/kyori/adventure/sound/Sound.Source.html) ) **volume** - The volume to play the sound with **pitch** - The pitch to play the sound with **self** - If the sound sound be played at the Player and not at a location Followed by the sound-key to play [PreviousClickAction Mechanic](https://docs.nexomc.com/mechanics/clickaction-mechanic) [NextOther Mechanics](https://docs.nexomc.com/mechanics/all-mechanics) Last updated 9 months ago * [How does it work?](https://docs.nexomc.com/mechanics/custom-mechanic#how-does-it-work) * [A comprehensive example](https://docs.nexomc.com/mechanics/custom-mechanic#a-comprehensive-example) * [Available events](https://docs.nexomc.com/mechanics/custom-mechanic#available-events) * [CLICK:click\_type:target\_type,](https://docs.nexomc.com/mechanics/custom-mechanic#click-click_type-target_type) * [INV\_CLICK:click\_type:context\_type](https://docs.nexomc.com/mechanics/custom-mechanic#inv_click-click_type-context_type) * [DROP, PICKUP, BREAK, EQUIP, UNEQUIP, INV\_CLICK, DEATH, DROP\_ALL](https://docs.nexomc.com/mechanics/custom-mechanic#drop-pickup-break-equip-unequip-inv_click-death-drop_all) * [Available conditions](https://docs.nexomc.com/mechanics/custom-mechanic#available-conditions) * [Permission-Condition](https://docs.nexomc.com/mechanics/custom-mechanic#permission-condition) * [Available actions](https://docs.nexomc.com/mechanics/custom-mechanic#available-actions) * [Command-Action](https://docs.nexomc.com/mechanics/custom-mechanic#command-action) * [Message-Action](https://docs.nexomc.com/mechanics/custom-mechanic#message-action) * [ActionBar-Action](https://docs.nexomc.com/mechanics/custom-mechanic#actionbar-action) * [Sound-Action](https://docs.nexomc.com/mechanics/custom-mechanic#sound-action) Copy myitem: Mechanics: custom: mycustom: conditions: - "HAS_PERMISSION:some.permission" Copy myitem: Mechanics: custom: mycustom: event: "CLICK:right:all" actions: - "[console] minecraft:give minecraft:paper 2" - "[player] minecraft:give minecraft:paper 2" Copy myitem: Mechanics: custom: mycustom: event: "CLICK:right:all" actions: - "[message] some message with MiniMessage support" Copy myitem: Mechanics: custom: mycustom: event: "CLICK:right:all" actions: - "[actionbar] some message with MiniMessage support" Copy myitem: Mechanics: custom: mycustom: event: "CLICK:right:all" actions: - "{source=AMBIENT volume=0.1 pitch=1} [sound] namespace:soundkey" --- # API | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/community-guides/api.md) . ### Repository & Dependencies[](https://docs.nexomc.com/community-guides/api#repository-and-dependencies) Copy repositories { maven("https://repo.nexomc.com/releases") } dependencies { compileOnly("com.nexomc:nexo:") //Nexo 1.X -> 1.X.0 } JavaDocs[](https://docs.nexomc.com/community-guides/api#javadocs) ------------------------------------------------------------------ Nexo has JavaDocs published at [https://jd.nexomc.com](https://jd.nexomc.com/) . These will be updated whenever changes to the API are made, which is not too often. Custom Items[](https://docs.nexomc.com/community-guides/api#custom-items) -------------------------------------------------------------------------- Nexo has its own ItemBuilder class which handles building its custom items. The [NexoItems](https://jd.nexomc.com/latest/com/nexomc/nexo/api/NexoItems.html) \-class contains most of the methods you would need to handle items. Copy ItemBuilder itemBuilder = NexoItems.itemFromId(itemID); ItemStack itemStack = itemBuilder.build(); String itemId = NexoItems.idFromItem(itemStack); Nexo loads items in an async task, thus getting them in your plugins onEnable will likely fail You can listen for the NexoItemsLoadedEvent to be sure the items are registered #### Modifying how Nexo updates a NexoItem[](https://docs.nexomc.com/community-guides/api#modifying-how-nexo-updates-a-nexoitem) Nexo will update any NexoItem on several actions to ensure its data is up-to-date. If your plugin should override any property on the Item which Nexo resets, follow the steps below. You need to register an UpdateCallback which lets you run logic on any item Nexo updates. This should be registered during NexoItemsLoadedEvent as shown below; Kotlin Java Custom Blocks[](https://docs.nexomc.com/community-guides/api#custom-blocks) ---------------------------------------------------------------------------- The [NexoBlocks](https://jd.nexomc.com/latest/com/nexomc/nexo/api/NexoBlocks.html) \-class contains all the methods available for placing, removing and checking for custom blocks in Nexo. ### Furniture[](https://docs.nexomc.com/community-guides/api#furniture) The [NexoFurniture](https://jd.nexomc.com/latest/com/nexomc/nexo/api/NexoFurniture.html) \-class contains all the methods available for placing, removing and checking for furniture in Nexo. In addition to this you can return the [FurnitureMechanic](https://jd.nexomc.com/latest/com/nexomc/nexo/mechanics/furniture/FurnitureMechanic.html) of the Furniture to get specific properties of it if needed. Custom Mechanics[](https://docs.nexomc.com/community-guides/api#custom-mechanics) ---------------------------------------------------------------------------------- Nexo allows you to add your own mechanics to the plugin, new ones or extending existing ones An example repository can be found [here](https://github.com/Nexo-MC/NexoExampleMechanic) , with examples for both Java and Kotlin You can register your mechanic in your onEnable or wherever you want. This will register it when Nexo registers its own Mechanics, and parse them for items Mechanics consist of a Mechanic class with properties and methods. MechanicFactory consists of parsing method for global Mechanic properties & linking item -> mechanic **NexoMechanicsRegisteredEvent** - Called when Nexo loads/reloads Mechanics **NexoItemsLoadedEvent** - Called when Nexo finishes loading/reloading NexoItems Custom PackServer[](https://docs.nexomc.com/community-guides/api#custom-packserver) ------------------------------------------------------------------------------------ If you want a PackServer type that Nexo does not provide, you can make an addon that registers one. Make a class that extends `NexoPackServer` and override the methods you need. Kotlin Java To register this with Nexo, you simply call `PackServerRegistry.register(type, packServer)` [PreviousVendors](https://docs.nexomc.com/community-guides/vendors) Last updated 2 months ago * [Repository & Dependencies](https://docs.nexomc.com/community-guides/api#repository-and-dependencies) * [JavaDocs](https://docs.nexomc.com/community-guides/api#javadocs) * [Custom Items](https://docs.nexomc.com/community-guides/api#custom-items) * [Custom Blocks](https://docs.nexomc.com/community-guides/api#custom-blocks) * [Furniture](https://docs.nexomc.com/community-guides/api#furniture) * [Custom Mechanics](https://docs.nexomc.com/community-guides/api#custom-mechanics) * [Custom PackServer](https://docs.nexomc.com/community-guides/api#custom-packserver) Copy @EventHandler fun NexoItemsLoadedEvent.onLoaded() { NexoItems.registerUpdateCallback(Key.key("namespace:key"), object : UpdateCallback { override fun preUpdate(itemStack: ItemStack): ItemStack? { // return null to skip updating return null } override fun postUpdate(itemId: String, itemStack: ItemStack, preUpdateItemStack: ItemStack): ItemStack { // Apply changes after Nexo finishes updating the item return itemStack } }) } Copy @EventHandler public void onItemsLoaded(NexoItemsLoadedEvent event) { NexoItems.registerUpdateCallback( Key.key("namespace", "key"), new UpdateCallback() { @Override public ItemStack preUpdate(ItemStack itemStack) { // return null to skip updating return null; } @Override public ItemStack postUpdate(String itemId, ItemStack itemStack, ItemStack preUpdateItemStack) { // Apply changes after Nexo finishes updating the item return itemStack; } } ); } Copy NexoBlocks.place(itemID, location) Copy NexoFurniture.place(itemID, location, @Nullable player) Copy class MyPackServer : NexoPackServer { override fun uploadPack(): CompletableFuture override fun sendPack(player: Player) override fun start() override fun stop() override fun packUrl(): String override fun packInfo(): ResourcePackInfo? } Copy public class PackServer extends NexoPackServer { @Override public CompletableFuture uploadPack() @Override public void sendPack(Player player) @Override public void start() @Override public void stop() @Override public String packUrl() @Override @Nullable public ResourcePackInfo packInfo() } --- # Custom Elytras | Nexo ![Page cover](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-ec7032bc21cfb2d46ab8af8b44e442bd36495476%252Fimage.png%3Falt%3Dmedia&width=1248&dpr=3&quality=100&sign=85176aa8&sv=2) For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-armors/custom-elytras-1.21.2+.md) . This is a sub-feature of using COMPONENT based CustomArmor, letting you make custom textured elytras. The pattern for adding it is exactly the same as explained in [CustomArmor](https://docs.nexomc.com/configuration/custom-armors/components) \-section, with some slight differences. The Equippable-Component model-property is suffixed with \_elytra, and the itemid follows the scheme `armorname_elytra` Here is a config example: Copy forest_elytra: itemname: "Forest Elytra" material: ELYTRA Pack: texture: nexo:item/nexo_armor/forest_elytra_icon Components: equippable: slot: CHEST asset_id: nexo:forest_elytra If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-ec7032bc21cfb2d46ab8af8b44e442bd36495476%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=85176aa8&sv=2) Forest Elytra included with Nexo [PreviousCustom Player Armors](https://docs.nexomc.com/configuration/custom-armors) [NextComponent Based](https://docs.nexomc.com/configuration/custom-armors/components) Last updated 9 months ago --- # Component Based | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-armors/components.md) . If using COMPONENT as your custom-armor type, you are not limited in any way, unlike TRIMS It also has the benefit of not needing to be based on an armor-item, use PAPER if you want to. Every downside there has been to earlier methods is now gone, no restrictions. How to configure your armor?[](https://docs.nexomc.com/configuration/custom-armors/components#how-to-configure-your-armor) --------------------------------------------------------------------------------------------------------------------------- Make sure that the itemID of your NexoItem follows the pattern `armorname_armortype`. For the rest of the above set it would be `forest_chestplate`, `forest_leggings` and `forest_boots`. Make sure your armor-layer files follow the format of **armorname**\_armor\_layer\_1/2.png. In the example below, we would need a **forest**\_armor\_layer\_1.png & **forest**\_armor\_layer\_2.png If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) Copy forest_helmet: material: PAPER # Can be any material, armor-item or anything else Pack: # Optional, if not specified, Nexo searches for any texture # with the filename armorname_armor_layer_X.png #CustomArmor: # layer1: nexo:item/nexo_armors/forest_armor_layer_1 # layer2: nexo:item/nexo_armors/forest_armor_layer_2 texture: nexo:item/nexo_armors/forest_helmet An Equippable-Component is also necessary for the armor to display correctly. Nexo will automatically assign it if it has not been manually specified. You can optionally manually assign the component if you want to. The value should be `nexo:armorname`, so in our example; Copy forest_helmet: Components: equippable: slot: HEAD asset_id: nexo:forest If using a 3D model for your helmet, do not specify Components.equippable.asset\_id ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-35753b3978265e132fe6816d97aee2da06e0c48f%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=8da196d6&sv=2) Forest Armor Sets Nexo comes with (Player, Wolf, Horse & Llama) [PreviousCustom Elytras](https://docs.nexomc.com/configuration/custom-armors/custom-elytras-1.21.2+) [NextTrims Based (1.20+)](https://docs.nexomc.com/configuration/custom-armors/trims) Last updated 24 days ago --- # Other Mechanics | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/all-mechanics.md) . Miscellaneous[](https://docs.nexomc.com/mechanics/all-mechanics#miscellaneous) ------------------------------------------------------------------------------- ### Backpack[](https://docs.nexomc.com/mechanics/all-mechanics#backpack) This allows you to turn any item into a backpack. This mechanic might cause duplication issues! If you find any please open a [bug-report](https://docs.nexomc.com/mechanics/all-mechanics) and we will fix them as soon as possible!\\ Copy backpack: itemname: backpack material: PAPER Components: max_stack_size: 1 Mechanics: backpack: rows: 4 title: "Backpack" #Optional, Default: "Backpack" open_sound: "entity.shulker.open" #Optional, Default: "entity.shulker.open" close_sound: "entity.shulker.close" #Optional, Default: "entity.shulker.close" blacklist: #Optional, add which items are not allowed nexo_items: - item_id - item_id2 materials: - DIAMOND ### Misc Mechanic[](https://docs.nexomc.com/mechanics/all-mechanics#misc-mechanic) On 1.20.5+ use the new [FireResistant-Component](https://docs.nexomc.com/configuration/items) instead of **burns\_in\_x** This mechanic has a bunch of small changes you can make to your item. What they each do should be pretty self-explanatory. ### Commands[](https://docs.nexomc.com/mechanics/all-mechanics#commands) This allows you to execute commands (as the console, a player or op player). If this option is not often the most elegant it has the merit of simplifying a lot of things. You can create a cooldown between usages, check if the player has a specific permission and use the item (understand decrease its amount by one when the command is performed). ### Armor Effects[](https://docs.nexomc.com/mechanics/all-mechanics#armor-effects) This allows you to bind a Potion Effect to an armor (or a hat) so that when you equip it you'll get the effect. [Here](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/potion/PotionEffectType.html) is a list of all potion effect types available. You can also make an effect only apply if the entire set it equipped. ### clickAction[](https://docs.nexomc.com/mechanics/all-mechanics#clickaction) This mechanic allows you to run various events when a player clicks a block or furniture. It is very customizable, so it also has a [dedicated tutorial page](https://docs.nexomc.com/mechanics/clickaction-mechanic) . ### ItemType[](https://docs.nexomc.com/mechanics/all-mechanics#itemtype) With this mechanic, you can change the item type detected by NexoBlocks. Make sure to use a type declared [inside the block mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic#global-configuration) . ### Soulbound[](https://docs.nexomc.com/mechanics/all-mechanics#soulbound) With this mechanic, you can avoid the players to lose their item when they die. ### Custom mechanic[](https://docs.nexomc.com/mechanics/all-mechanics#custom-mechanic) This mechanic allows you to customize events, conditions and actions. Since it is a quite rspecial mechanic, it has its [dedicated tutorial page](https://docs.nexomc.com/mechanics/custom-mechanic) . Farming[](https://docs.nexomc.com/mechanics/all-mechanics#farming) ------------------------------------------------------------------- ### Harvesting[](https://docs.nexomc.com/mechanics/all-mechanics#harvesting) Harvesting allows you to recolt and replant automatically wheat in a certain radius. ### Smelting[](https://docs.nexomc.com/mechanics/all-mechanics#smelting) Smelting allows you to instantly melt iron and gold ores when you mine them. This supports fortune and silktouch. [PreviousCustom Mechanic](https://docs.nexomc.com/mechanics/custom-mechanic) [NextAnti-Cheat Plugins](https://docs.nexomc.com/compatibility/anti-cheat-plugins) Last updated 3 months ago * [Miscellaneous](https://docs.nexomc.com/mechanics/all-mechanics#miscellaneous) * [Backpack](https://docs.nexomc.com/mechanics/all-mechanics#backpack) * [Misc Mechanic](https://docs.nexomc.com/mechanics/all-mechanics#misc-mechanic) * [Commands](https://docs.nexomc.com/mechanics/all-mechanics#commands) * [Armor Effects](https://docs.nexomc.com/mechanics/all-mechanics#armor-effects) * [clickAction](https://docs.nexomc.com/mechanics/all-mechanics#clickaction) * [ItemType](https://docs.nexomc.com/mechanics/all-mechanics#itemtype) * [Soulbound](https://docs.nexomc.com/mechanics/all-mechanics#soulbound) * [Custom mechanic](https://docs.nexomc.com/mechanics/all-mechanics#custom-mechanic) * [Farming](https://docs.nexomc.com/mechanics/all-mechanics#farming) * [Harvesting](https://docs.nexomc.com/mechanics/all-mechanics#harvesting) * [Smelting](https://docs.nexomc.com/mechanics/all-mechanics#smelting) Copy myitem: Mechanics: misc: breaks_from_cactus: true burns_in_fire: true burns_in_lava: true disable_vanilla_interactions: false can_strip_logs: false piglins_ignore_when_equipped: false compostable: false allow_in_vanilla_recipes: true Copy myitem: Mechanics: commands: cooldown: 5 # example cooldown in seconds. This is optional permission: "my.awesome.perm" # required permission. This is optional one_usage: true # should the amount decrease when used? Default: false console: # e.g. to kill the player - "kill %p%" player: # e.g. the player performs /spawn - "spawn" opped_player: # e.g. the player gives himself a diamond sword - "give diamond_sword 1" Copy myitem: Mechanics: armor_effects: night_vision: # the potion effect type duration: 10t amplifier: 0 ambient: true # Makes potion effect produce more, translucent, particles. particles: true # whether this effect has particles or not icon: true # whether this effect has an icon or not Copy myitem: Mechanics: armor_effects: night_vision: requires_full_set: true ... Copy myitem: Mechanics: itemtype: value: SUPER_MATERIAL # your itemType Copy myitem: Mechanics: soulbound: lose_chance: 0 Copy myitem: Mechanics: harvesting: cooldown: 10000 # 10 seconds between usages radius: 5 # blocks surrounding the clicked block height: 3 # high Copy myitem: Mechanics: smelting: enabled: true play_sound: true --- # 2D Player Heads | Nexo ![Page cover](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-0a9a9a741b611715300a0e4ffe38ce50f2078fd2%252Fimage.png%3Falt%3Dmedia&width=1248&dpr=3&quality=100&sign=b5bb07c5&sv=2) For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/items/2d-player-heads.md) . 2D Player Heads are used by a lot of servers to display the players skin in a stylish way. As this is a very popular feature there are conflicts when several plugins use the Player-Head resourcepack files. With the Pack here from [NexoAssets](https://mcmodels.net/products/14834/2d-player-heads) you can easily create 2D Player-Heads. It uses ItemModels, hence only supports **1.21.4+**, but wont conflict with any other ResourcePack It comes with a premade Nexo-setup, making it easy to add, but all it contains is a ResourcePack added as a Nexo ExternalPack. **Example command for getting the items:** 1x1 PlayerHead: Copy /minecraft:give player_head[item_model="nexo:2d_player_head",profile={"name":"boy0000"}] 2x2 PlayerHead Copy /minecraft:give player_head[item_model="nexo:2d_player_head_large",profile={"name":"boy0000"}] ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-080856cd6e1284ca309fbe6a21cc8d18e251e639%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=2cd700ee&sv=2) 1x1 & 2x2 PlayerHeads for Boy0000 & Sixsoul (NexoAssets) [PreviousComponents](https://docs.nexomc.com/configuration/items/components) [NextSpecial Item Appearance](https://docs.nexomc.com/configuration/items/item-appearance) Last updated 5 months ago --- # Custom Mob Armor | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+.md) . Nexo allows you to automate the generation of several types of mob-armor. Mainly Wolf-Armor, Horse-Armor & Llama-Armor. These follow the same pattern as [Component Based](https://docs.nexomc.com/configuration/custom-armors/components) Player Armor, with the ItemID- & Armor-pattern Texture being `armorname_wolf_armor`_,_ `armorname_horse_armor` & `armorname_llama_armor` . Copy forest_wolf_armor: itemname: "Forest Wolf Armor" material: WOLF_ARMOR Pack: texture: nexo:item/nexo_armor/forest_wolf_armor_icon CustomArmor: wolf_armor: nexo:item/nexo_armor/forest_wolf_armor forest_llama_armor: itemname: "Forest Llama Carpet" material: PAPER Pack: texture: nexo:item/nexo_armor/forest_llama_armor_icon CustomArmor: llama_armor: nexo:item/nexo_armor/forest_llama_armor forest_horse_armor: itemname: "Forest Horse Armor" material: DIAMOND_HORSE_ARMOR Pack: texture: nexo:item/nexo_armor/forest_horse_armor_icon CustomArmor: horse_armor: nexo:item/nexo_armor/forest_horse_armor forest_nautilus_armor: itemname: "Forest Nautilus Armor" material: DIAMOND_NAUTILUS_ARMOR Pack: texture: nexo:item/nexo_armor/forest_nautilus_armor_icon CustomArmor: horse_armor: nexo:item/nexo_armor/forest_nautilus_armor If you are unsure how to reference a TextureFile in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) [PreviousSpecial Item Appearance](https://docs.nexomc.com/configuration/items/item-appearance) [NextCustom Harness (1.21.6+)](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+/custom-harness-1.21.6+) Last updated 8 months ago --- # DialogType | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/dialogs/dialogtype.md) . The core of a Dialog is the type of Dialog you want to use. The options are [CONFIRM](https://minecraft.wiki/w/Dialog#confirmation) , [LIST](https://minecraft.wiki/w/Dialog#dialog_list) , [MULTI](https://minecraft.wiki/w/Dialog#multi_action) , [NOTICE](https://minecraft.wiki/w/Dialog#notice) & [LINK](https://minecraft.wiki/w/Dialog#server_links) The default type is NOTICE #### DialogAction[](https://docs.nexomc.com/configuration/dialogs/dialogtype#dialogaction) Most types have one or more **DialogActions,** which looks as shown below Copy action: label: "Action Label" tooltip: "Action Tooltip" width: 150 #### Notice Type[](https://docs.nexomc.com/configuration/dialogs/dialogtype#notice-type) Copy type: NOTICE action: ... #### Confirmation Type[](https://docs.nexomc.com/configuration/dialogs/dialogtype#confirmation-type) Contains two properties, **yes & no**, both which are **DialogActions** Copy type: CONFIRM yesButton: ... noButton: ... #### Dialog List Type[](https://docs.nexomc.com/configuration/dialogs/dialogtype#dialog-list-type) Contains a **DialogAction** property, `exitAction`. It also contains `buttonWidth`, `columns` & `dialogs` properties **buttonWidth -** The width of this button, between 1 -> 1024, defaults to 150 **columns** - The number of columns, must be 0 or above, defaults to 2 **dialogs** - A list of Dialog-IDs to display #### Multi Action Type[](https://docs.nexomc.com/configuration/dialogs/dialogtype#multi-action-type) **exitAction -** A **DialogAction** **actions -** A list of **DialogActions** **columns -** The number of columns, must be 0 or above, defaults to 2 #### Server Links Type[](https://docs.nexomc.com/configuration/dialogs/dialogtype#server-links-type) **buttonWidth -** The width of this button, between 1 -> 1024, defaults to 150 **columns** - The number of columns, must be 0 or above, defaults to 2 **exitAction -** A **DialogAction** [PreviousDialogs](https://docs.nexomc.com/configuration/dialogs) [NextDialogBase](https://docs.nexomc.com/configuration/dialogs/dialogbase) Last updated 10 months ago Copy type: LIST buttonWidth: 150 columns: 2 dialogs: - "my_dialog" exitAction: ... Copy type: MULTI columns: 2 exitAction: ... actions: [ ... ] Copy type: LINK exitAction: ... columns: 2 buttonWidth: 150 --- # Plugin settings | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/plugin-settings.md) . Item configurations[](https://docs.nexomc.com/configuration/plugin-settings#item-configurations) ------------------------------------------------------------------------------------------------- Nexo configuration is mainly divided into 3, items, resourcepack & glyphs. These folders contain the majority of custom configurations you need. Formatting[](https://docs.nexomc.com/configuration/plugin-settings#formatting) ------------------------------------------------------------------------------- Nexo has some settings for toggling its handling of various packets. Most of these are for transforming Glyph-Tags in packets that handle text or Items. Some of these can in some cases cause desync or other issues for some servers. These can be toggled of in such cases without much downside. ResourcePack[](https://docs.nexomc.com/configuration/plugin-settings#resourcepack) ----------------------------------------------------------------------------------- ### Obfuscation[](https://docs.nexomc.com/configuration/plugin-settings#obfuscation) Obfuscation works by renaming all models, textures and files into random namespaces and paths This is to make it very hard for someone to just download and use your pack outside of your server. It comes with three modes, SIMPLE, FULL & NONE There is also an option to cache the obfuscated pack. This makes it so unless there are changes, Nexo will not reobfuscate the ResourcePack. This makes it so players do not have to redownload the ResourcePack every time your server starts.\\ Copy Pack: obfuscation: type: FULL cache: true **NONE** does no obfuscation on the ResourcePack Copy 📁ResourcePack └── 📁assets └── 📁custom_namespace └── 📁models └── 📑custom_model.json **SIMPLE** only obfuscates individual filenames, but retains the original pack-structure **FULL** obfuscates the entire path ### PackServer[](https://docs.nexomc.com/configuration/plugin-settings#packserver) The ResourcePack Nexo generates needs to be hosted somewhere before it can be sent to players. Nexo has two built-in server-options, POLYMATH & SELFHOST **POLYMATH** is Nexo's own remote server It is located in Germany and can therefore be slower depending on your server's location and players download speed SELFHOST is a locally hosted server on the machine and can therefore be faster if your players are closer to it. You will need to manually configure the IP-address to your servers. ### Dispatch[](https://docs.nexomc.com/configuration/plugin-settings#dispatch) This section is for handling when the pack should be sent to players. Misc[](https://docs.nexomc.com/configuration/plugin-settings#misc) ------------------------------------------------------------------- ### Hiding Scoreboard & Tablist[](https://docs.nexomc.com/configuration/plugin-settings#hiding-scoreboard-and-tablist) This option lets you hide the red scoreboard numbers. This might not work for 1.21.8+ servers due to changes in core shaders by Mojang Nexo Inventory[](https://docs.nexomc.com/configuration/plugin-settings#nexo-inventory) --------------------------------------------------------------------------------------- Nexo has a `inventory.yml` which can be configured to tweak how the NexoInventory works. It lets you change between two types for sorting the inventory, FILE & DIRECTORY. FILE is the default and organized everything into one main-page where each item-config file is shown on the main menu. DIRECTORY organizes the menu into subpages, following the structure you have inside `plugins/Nexo/items` You can also specify the menu\_layout to tweak the individual buttons irrespective of the type above. This lets you set the slot a button is in, the icon/item to display with it and the title of the sub-page it opens. By default Nexo sorts slots by a-z of filenames & icon defaults to the first item in the config. You specify it like below, with it referencing the path to the item. The path depends on if you use FILE or DIRECTORY. If using FILE, the path is just the `filename`. If using DIRECTORY it is the entire path `folder.filename` The NexoInventory also has some other features & buttons which can be customized like below. This can reference a NexoItem or an ItemModel directly from the ResourcePack [PreviousNexo Creative Inventory](https://docs.nexomc.com/addons/nexo-creative-inventory) [NextResourcePack](https://docs.nexomc.com/configuration/resourcepack) Last updated 7 months ago * [Item configurations](https://docs.nexomc.com/configuration/plugin-settings#item-configurations) * [Formatting](https://docs.nexomc.com/configuration/plugin-settings#formatting) * [ResourcePack](https://docs.nexomc.com/configuration/plugin-settings#resourcepack) * [Obfuscation](https://docs.nexomc.com/configuration/plugin-settings#obfuscation) * [PackServer](https://docs.nexomc.com/configuration/plugin-settings#packserver) * [Dispatch](https://docs.nexomc.com/configuration/plugin-settings#dispatch) * [Misc](https://docs.nexomc.com/configuration/plugin-settings#misc) * [Hiding Scoreboard & Tablist](https://docs.nexomc.com/configuration/plugin-settings#hiding-scoreboard-and-tablist) * [Nexo Inventory](https://docs.nexomc.com/configuration/plugin-settings#nexo-inventory) Copy 📁ResourcePack └── 📁assets └── 📁custom_namespace └── 📑02a61ae4-2457-4dfa-91af-9598cd52fd9e.json Copy 📁ResourcePack └── 📁assets └── 📁0d003f53-e176-4e74-a895-d392c82f50be └── 📁models └── 📑02a61ae4-2457-4dfa-91af-9598cd52fd9e.json Copy Pack: server: type: SELFHOST selfhost: public_address: 0.0.0.0 # Set to your server's IP port: 8082 # Set to a port you have opened on your server polymath: server: atlas.mineinabyss.com secret: mineinabyss Copy Pack: dispatch: # Sends the Resourcepack before the players loads into the server # Might cause issues with large packs due to long download/load times send_pre_join: true send_on_join: false send_on_reload: true # Sends the pack to players after using reload-command delay: -1 # Delay before pack is sent, does not apply to PreJoin dispatches mandatory: true # If declining the ResourcePack should kick the player prompt: "<#fa4943>Accept the pack to enjoy a full Nexo<#fa4943>experience" Copy hide_scoreboard_numbers: true hide_scoreboard_background: true Copy nexo_inventory: menu_title: search_title: NexoInventory Search style_default_names: true type: FILE menu_rows: 6 menu_layout: my_item: slot: 1 icon: itemid title: ItemID Copy next_page_icon: next_page_icon previous_page_icon: previous_page_icon exit_icon: cancel_icon search_icon: nexo:search_icon directory_icon: nexo:directory_icon --- # Stripped Log Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic.md) . What is this?[](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic#what-is-this) -------------------------------------------------------------------------------------------------------------------------------- This mechanic allows you to strip custom logs in to stripped version, like in vanilla. ### Configuration[](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic#configuration) Copy my_block: Mechanics: custom_block: type: NOTEBLOCK custom_variation: 2 log_strip: stripped_log: stripped_log #block that will change in to drop: bark #additonal drop after right click mechanic [https://youtu.be/ohiGtlz\_whoyoutu.be](https://youtu.be/ohiGtlz_who) [PreviousNoteBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) [NextDirectional Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/directional-mechanic) Last updated 1 year ago * [What is this?](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic#what-is-this) * [Configuration](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic#configuration) --- # Directional Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/directional-mechanic.md) . This mechanic allows you to place blocks and have them change their texture depending on the direction in which they are placed, like for example logs. There are 4 types of directional blocks: **LOG, BARREL, FURNACE & DROPPER** **LOG** is made up of 3 Custom Block variations, to mimic behaviour of a vanilla log **BARREL** is made up of 6 Custom Block variations. It s used for when you need a block to be rotatable in all 6 directions (north, west, south, east, up & down) **FURNACE** is made up of 4 Custom Block variations. It is for when you want a block that rotates to face the player with a front in the 4 horizontal directions (north, south, east, west) **DROPPER** is made up of 6 Custom Block variations. It is for the same purpose as **Furnace** but with support for up & down facings as well. Every sub-block can have a `model` property, which Nexo will use to determine what to display. If there is no `model` property on the sub-block, Nexo will use the model from the parent-block. Models are also automatically rotated depending on the direction in which the block is placed. This means you can use the same model, and it will be rotated accordingly. If the sub-block has a model defined, it will not be rotated, allowing you to use different models for different directions. ### Configuration[](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/directional-mechanic#configuration) The most basic of configuration setups for a directional blocks is reusing the same model and having it be rotated accordingly. Below is such an example Nexo will here automatically generate 3 fake dummy-items for each direction and assign a `custom_variation` for each. The config will then look something like this after This applies to the three other types aswell; BARREL, FURNACE & DROPPER. You can also set a model explicitly for each rotation like shown in DROPPER example. If this is done, Nexo will not apply the standard rotations to it. [PreviousStripped Log Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/stripped-log-mechanic) [NextStringBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic) Last updated 3 months ago Copy custom_log: Mechanics: custom_block: type: NOTEBLOCK directional: type: LOG Copy custom_log: Mechanics: custom_block: type: NOTEBLOCK directional: type: LOG y_variation: 1 x_variation: 2 z_variation: 3 custom_variation: 1 #This can be the same as y-variation to save 1 block-slot --- # Dialogs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/dialogs.md) . Nexo simplifies the process of adding new Dialogs to your server. Instead of needing to make a datapack, you can do it all in a YAML file inside `plugins/Nexo/dialogs` . Dialogs are made up of a few different parts. A [DialogType](https://docs.nexomc.com/configuration/dialogs/dialogtype) - Specifies properties at the root of the Dialog A [DialogBase](https://docs.nexomc.com/configuration/dialogs/dialogbase) - The content of the Dialog ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2F548966760-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FTAoAxayP9PrBtX9UQ5wa%252Fuploads%252Fgit-blob-edb99a380f781cec33008822a74bc1a3ced6104b%252Fimage.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=6d4500c7&sv=2) Example of Dialog using all available methods Copy type: NOTICE action: label: "Notice Label" tooltip: "Notice Tooltip" width: 150 action: type: RUN_COMMAND command: "nexo inventory" base: title: "Title" externalTitle: "External Title" canCloseWithEscape: true afterAction: CLOSE bodies: message_body: type: MESSAGE message: "Some Message allowing MiniMessage" width: 200 item_body: type: ITEM description: "Some Description" #description: # contents: "Some description" # width: 200 showDecorations: true showTooltip: true width: 16 height: 16 inputs: text_key: type: TEXT width: 200 label: "Text Input Label" labelVisible: true maxLength: 32 initial: "Initial Input Text" multilineOptions: maxLines: 1 height: 32 bool_key: type: BOOL label: "Boolean Input Label" initial: true onTrue: "some_action" onFalse: "some_action" number_key: type: NUMBER width: 200 label: "Number Input Label" labelFormat: "options.generic_value" start: 0 end: 1 initial: 0.5 step: 0.1 single_key: type: SINGLE width: 200 label: "Single Input Label" labelVisible: true options: option_1: display: "First Option" initial: true option_2: display: "Second Option" initial: false [PreviousCustom Music Discs](https://docs.nexomc.com/configuration/custom-music-discs) [NextDialogType](https://docs.nexomc.com/configuration/dialogs/dialogtype) Last updated 1 year ago --- # ClickAction Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/clickaction-mechanic.md) . To get started, create a basic [Custom Block](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) or [Furniture](https://docs.nexomc.com/mechanics/furniture-mechanic) . Next, under the mechanics section, you can add the default clickAction mechanic under any CustomBlock or Furniture-Mechanic Copy myitem: Mechanics: furniture/custom_block: clickActions: - conditions: - '#player.hasPermission("test.permission")' actions: - '[console] say hello !' With this setup, players will only trigger the console command `say hello ` action if they have the permission `test.permission`. If you are not using conditions, you need to place brackets where they would be: Copy myitem: Mechanics: furniture/custom_block: clickActions: - conditions: [] actions: - '[console] say hello !' ### Conditions[](https://docs.nexomc.com/mechanics/clickaction-mechanic#conditions) Conditions are VERY configurable. You can use any of the "get" methods for Player or Server. A list of all methods you can use can be found on Papers Javadocs [![Logo](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fjd.papermc.io%2Fpaper%2Ffavicon.ico&width=20&dpr=3&quality=100&sign=7e20e0d9&sv=2)Player (paper-api 1.21.8-R0.1-SNAPSHOT API)jd.papermc.io](https://jd.papermc.io/paper/1.21.8/org/bukkit/entity/Player.html) [![Logo](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fjd.papermc.io%2Fpaper%2Ffavicon.ico&width=20&dpr=3&quality=100&sign=7e20e0d9&sv=2)Server (paper-api 1.21.8-R0.1-SNAPSHOT API)jd.papermc.io](https://jd.papermc.io/paper/1.21.8/org/bukkit/Server.html) TIP! Click "CTRL + F" and search "get" to find valid methods. Additionally, the Spring Documentation is a good resource for understanding how to use condition expressions. [![Logo](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fdocs.spring.io%2Ffavicon.ico&width=20&dpr=3&quality=100&sign=544ea29e&sv=2)6. Spring Expression Language (SpEL)docs.spring.io](https://docs.spring.io/spring-framework/docs/3.0.x/reference/expressions.html) You can also do a negative check by prefixing the condition with `!` . as an example; This will run the action when the player does not have the **test.permission** permission. #### Condition Examples[](https://docs.nexomc.com/mechanics/clickaction-mechanic#condition-examples) `#server.getOnlinePlayers().size() > 10` `#server.getAllowEnd()` `#server.getDefaultGameMode()` `#player.world.name == 'world'` `#player.hasPermission("test.permission")` `#player.gamemode.name() == 'ADVENTURE'` ### Actions[](https://docs.nexomc.com/mechanics/clickaction-mechanic#actions) `[console] ` `[player] ` `[message] ` `[actionbar] ` `{source=SOURCE volume=VOLUME pitch=PITCH} [sound] ` #### Action Examples[](https://docs.nexomc.com/mechanics/clickaction-mechanic#action-examples) `[console] say hello` `[player] say hello` `[message] Hello!` `[actionbar] Hello from the actionbar!` `{source=AMBIENT volume=0.1 pitch=1} [sound] minecraft:block.shulker_box.close` [PreviousCustom Trident](https://docs.nexomc.com/mechanics/custom-trident) [NextCustom Mechanic](https://docs.nexomc.com/mechanics/custom-mechanic) Last updated 4 months ago * [Conditions](https://docs.nexomc.com/mechanics/clickaction-mechanic#conditions) * [Actions](https://docs.nexomc.com/mechanics/clickaction-mechanic#actions) Copy myitem: Mechanics: furniture/custom_block: clickActions: - conditions: - '!#player.hasPermission("test.permission")' actions: - '[console] say hello !' --- # Glyphs | Nexo ![Page cover](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fi.imgur.com%2FT76ianD.png&width=1248&dpr=3&quality=100&sign=180731d1&sv=2) For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/glyphs.md) . What is a glyph?[](https://docs.nexomc.com/configuration/glyphs#what-is-a-glyph) --------------------------------------------------------------------------------- A glyph is a textured unicode symbol. It can be used in any place text is rendered ingame (chat, item name, lore and more). They can be used to do very, very powerful things (custom inventories, extra bars) but their simplest use is to be emoji. Configuring a Glyph[](https://docs.nexomc.com/configuration/glyphs#configuring-a-glyph) ---------------------------------------------------------------------------------------- You can then add your section to any YAML file from the glyphs directory. A glyph has a few main properties, `texture`, `ascent`, `height` and `font` The texture is the path and name of the texture file in the format of `namespace:path` `height` is the scale of your glyph, height must also never be lower than ascent. `ascent` is the vertical offset of your glyph, and must be equal or lower than height. `font` is the font you want to use. If unspecified, it will use the Default Font in settings.yml at `Glyphs.default_font` Unless you need the Glyph for the Escape Menu, as this place only supports the `minecraft:default` font, to use a custom font to limit conflicts & unintended uses You can also set a `permission` towards your Glyph to limit who can use it. If unspecified, Nexo will use the default permission defined in settings.yml at `Glyphs.default_permission` . You can specify `` or ` which Nexo will then replace for you Glyphs can also have `placeholders` which can be used to make more chat-friendly use-cases This is defined as a list of strings and will let players use shorthands for a given Glyph Copy heart: texture: default/chat/heart ascent: 8 height: 8 #font: namespace:fontname Optional, unspecified uses font in settings.yml #permission: nexo.glyph.heart Optional, unspecified uses permission in settings.yml #placeholders: # - "<3" If you are unsure how to reference a ResourcePack-file in a config-file [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) If your texture is above 256x256 resolution you need to either downscale it or make a [Multi-Bitmap Glyph](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph) ### How to use the Glyph[](https://docs.nexomc.com/configuration/glyphs#how-to-use-the-glyph) Nexo implements a custom MiniMessage tag for each glyph, which lets you use it more or less anywhere You can use and it will display your glyph, naturally replace glyphid with your Glyphs ID. Above this would be `heart` This tag can then be used in tablists, scoreboards, titles, chat prefixes via LuckPerms or otherwise. It is advised to use the Glyph-Tag over raw unicodes whenever possible\\ The Glyph-tag also have some optional arguments you can pass. For [Multi-Bitmap Glyph](https://docs.nexomc.com/configuration/glyphs/multi-bitmap-glyph) 's you can specify the index to display. For example if you make a 2x2 Glyph, you can do `` or `` to display only those parts of the Glyph. If you want your Glyph to be colorable, you can do `` or `` This will make your Glyph accept any previous color that might apply, and not force it to white or normal As of 1.21.4 there is also a new "shadow-color" tag, letting you change the color and alpha-value of the Glyphs-shadow You can use this by using the argument shadow, or s, like this; `` All these arguments can be combined, letting you specify a specific Bitmap-Index, make it colorable and change the shadow ### Custom GUIs[](https://docs.nexomc.com/configuration/glyphs#custom-guis) With Nexo-glyphs you can create custom textured GUI's Nexo does not handle the GUI-Inventory itself, only the visual part of it. Simply make a glyph like shown below: Then in the Inventory-Title you just put `` and Nexo will handle the rest. This applies to the vast majority of places you would want to use a glyph. If the tag does not work you can use the [PlaceholderAPI Placeholder](https://docs.nexomc.com/configuration/glyphs#placeholderapi) To adjust the horizontal position of your texture/glyph in the inventory, use the shift-tag. For example; `` for moving 8 pixels back, and `` for moving 211 pixels forward. ### Emoji List[](https://docs.nexomc.com/configuration/glyphs#emoji-list) To make a glyph appear under `/nexo emojis` you need to specify that it is one, like below. If not specified, this will default to `false` It will also, by default, only show emojis the player has the permission for. In `settings.yml` you can toggle the `only_show_emojis_with_permission` setting. This will show all emojis to every player, and adds a hover-message indicating if they have permission or not. ![img](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fcdn.discordapp.com%2Fattachments%2F758785982005903431%2F1002564595099111474%2Funknown.png&width=300&dpr=3&quality=100&sign=edbf1509&sv=2) The placeholders can be used in chat by players with the required permission (if permission is specified, it is not mandatory). How to make glyphs tabcomplete?[](https://docs.nexomc.com/configuration/glyphs#how-to-make-glyphs-tabcomplete) --------------------------------------------------------------------------------------------------------------- Simply set `tabcomplete: true` in the chat-section. If not specified, this will default to `false` By default tabcompletion will use the raw unicode. This only works for glyphs using the Default-font (used if none is specified). If you want it to use the chat placeholders, you can do so by disabling `unicode_completions` in settings.yml. PlaceholderAPI[](https://docs.nexomc.com/configuration/glyphs#placeholderapi) ------------------------------------------------------------------------------ ### What's my glyph placeholder?[](https://docs.nexomc.com/configuration/glyphs#whats-my-glyph-placeholder) The section name is the glyph id. In this example the glyph id is `heart`, the placeholder is `%nexo_glyphid%`, so in this example: `%nexo_heart%` Glyph-ID is the first line in any glyphs config, it is not the texturename or the placeholder. you can also do shifts using PAPI by doing `%nexo_shift_-8%` or `%nexo_shift_8%` Do note if the font of a Glyph isnt `minecraft:default` this will just default to using a Glyph-Tag, not unicodes [PreviousTrims Based (1.20+)](https://docs.nexomc.com/configuration/custom-armors/trims) [NextAnimated Glyphs](https://docs.nexomc.com/configuration/glyphs/animated-glyphs) Last updated 9 months ago * [What is a glyph?](https://docs.nexomc.com/configuration/glyphs#what-is-a-glyph) * [Configuring a Glyph](https://docs.nexomc.com/configuration/glyphs#configuring-a-glyph) * [How to use the Glyph](https://docs.nexomc.com/configuration/glyphs#how-to-use-the-glyph) * [Custom GUIs](https://docs.nexomc.com/configuration/glyphs#custom-guis) * [Emoji List](https://docs.nexomc.com/configuration/glyphs#emoji-list) * [How to make glyphs tabcomplete?](https://docs.nexomc.com/configuration/glyphs#how-to-make-glyphs-tabcomplete) * [PlaceholderAPI](https://docs.nexomc.com/configuration/glyphs#placeholderapi) * [What's my glyph placeholder?](https://docs.nexomc.com/configuration/glyphs#whats-my-glyph-placeholder) Copy customshop: texture: required/ui/menu_items #font: minecraft:my_font # Optional, defaults to minecraft:default ascent: 37 height: 256 Copy heart: texture: default/chat/heart is_emoji: true Copy myemoji: #font: minecraft:default tabcomplete: true placeholders: - "<3" permission: "nexo.emoji.heart" --- # Special Item Appearance | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/items/item-appearance.md) . ### Invisible Item[](https://docs.nexomc.com/configuration/items/item-appearance#invisible-item) To make an invisible item with Nexo, you can use the Nexo provided ItemModel `nexo:empty`. This will render nothing for that Item no matter where it is used. Here is a basic config-example for an invisible NexoItem Copy invisible_item: Components: item_model: nexo:empty You can also use this in any other plugin, assuming they allow you to specify the ItemModel of your Item. ### Oversized Items in GUI (1.21.6+)[](https://docs.nexomc.com/configuration/items/item-appearance#oversized-items-in-gui-1.21.6) As of 1.21.6+, Mojang made changes to how items render in the GUI. By default they are no longer allowed to go beyond their 16x16 grid, but added an option called `oversized_in_gui` to ItemModels to return this behaviour. This works best when using ItemModels ([ItemModels vs. CustomModelData](https://docs.nexomc.com/general-usage/faq/itemmodels-vs.-custommodeldata) ). In Nexo you can use this for your items by following the below example; Copy my_oversized_item: material: PAPER Pack: oversized_in_gui: true model: my_oversized_model Components: item_model: nexo:my_oversized_item In Nexo 1.17+ there is `Pack.generation.force_oversized_in_gui` which can be used to change the default state of every item if you dont want to specify it for individual items Here we do not use CustomModelData as that would apply to all items using PAPER. If you are not sure what an ItemModel is, think of it as the **base model** of an item. By default all items using the material PAPER will use **minecraft:paper.** By specifying our own ItemModel here, we are changing the base-model of our item, preventing any conflicts or issues, and Nexo can properly mark the config ### Use a different model for Inventory Icon vs Equipped/In-Hand[](https://docs.nexomc.com/configuration/items/item-appearance#use-a-different-model-for-inventory-icon-vs-equipped-in-hand) If you want to say have an item with a 2D icon in the inventory but when worn on head or held in your hand, it uses a 3D model or another 2D icon, you can do so by following the below You need to provide an ItemModel that specifies when to show what model. Here is an example using a `mymodel_icon` model for the GUI and a "fallback" for everything else. This approach can be used for most other contexts, which you can find [here](https://minecraft.wiki/w/Items_model_definition#display_context) . This is not a detailed guide on ItemModels, but you can do very complex things with them beyond this. You can put this inside `Nexo/pack/assets/namespace/items/mymodel.json` . Then you can make your NexoItem-config, which will reference this ItemModel * * * All the methods below support a `BLANK_texture(s)` as well as models if all you have is a PNG For example for a 2D bow with different pulling-stages. ### Dyeable Items[](https://docs.nexomc.com/configuration/items/item-appearance#dyeable-items) ### Blocking Model (Shields)[](https://docs.nexomc.com/configuration/items/item-appearance#blocking-model-shields) ### Pulling Models (Bows / Crossbow)[](https://docs.nexomc.com/configuration/items/item-appearance#pulling-models-bows-crossbow) ### Charged Model (Crossbow)[](https://docs.nexomc.com/configuration/items/item-appearance#charged-model-crossbow) ### Cast Model (Fishing Rods)[](https://docs.nexomc.com/configuration/items/item-appearance#cast-model-fishing-rods) ### Damaged Model (Based on durability)[](https://docs.nexomc.com/configuration/items/item-appearance#damaged-model-based-on-durability) ### Composite Models[](https://docs.nexomc.com/configuration/items/item-appearance#composite-models) [Previous2D Player Heads](https://docs.nexomc.com/configuration/items/2d-player-heads) [NextCustom Mob Armor](https://docs.nexomc.com/configuration/custom-mob-armor-1.21.2+) Last updated 24 days ago * [Invisible Item](https://docs.nexomc.com/configuration/items/item-appearance#invisible-item) * [Oversized Items in GUI (1.21.6+)](https://docs.nexomc.com/configuration/items/item-appearance#oversized-items-in-gui-1.21.6) * [Use a different model for Inventory Icon vs Equipped/In-Hand](https://docs.nexomc.com/configuration/items/item-appearance#use-a-different-model-for-inventory-icon-vs-equipped-in-hand) * [Dyeable Items](https://docs.nexomc.com/configuration/items/item-appearance#dyeable-items) * [Blocking Model (Shields)](https://docs.nexomc.com/configuration/items/item-appearance#blocking-model-shields) * [Pulling Models (Bows / Crossbow)](https://docs.nexomc.com/configuration/items/item-appearance#pulling-models-bows-crossbow) * [Charged Model (Crossbow)](https://docs.nexomc.com/configuration/items/item-appearance#charged-model-crossbow) * [Cast Model (Fishing Rods)](https://docs.nexomc.com/configuration/items/item-appearance#cast-model-fishing-rods) * [Damaged Model (Based on durability)](https://docs.nexomc.com/configuration/items/item-appearance#damaged-model-based-on-durability) * [Composite Models](https://docs.nexomc.com/configuration/items/item-appearance#composite-models) Copy { "model": { "type": "select", "property": "display_context", "cases": [\ {\ "when": "gui",\ "model": {\ "type": "model",\ "model": "namespace:mymodel_icon" // The model to display for the GUI\ }\ }\ ], "fallback": { "type": "model", "model": "namespace:mymodel" //The model that is used everywhere else } } } Copy myitem: itemname: "My Item" Components: item_model: namespace:mymodel Copy myitem: Pack: model: example dyeable_model: example_dyeable #texture: example #dyeable_texture: example_dyeable Copy myitem: Pack: model: example_shield blocking_model: example_shield_blocking #texture: example_shield #blocking_texture: example_shield_blocking Copy myitem: Pack: model: default/combat_bow pulling_models: - default/combat_bow_pulling_0 - default/combat_bow_pulling_1 - default/combat_bow_pulling_2 #texture: default/combat_bow #pulling_textures: # - default/combat_bow_pulling_0 # - default/combat_bow_pulling_1 # - default/combat_bow_pulling_2 Copy myitem: Pack: model: default/custom_bow pulling_models: - default/custom_bow_pulling_0 - default/custom_bow_pulling_1 - default/custom_bow_pulling_2 charged_model: default/custom_bow_pulling_2 firework_model: default/custom_bow_charged #Optional #texture: default/combat_bow #pulling_textures: # - default/combat_bow_pulling_0 # - default/combat_bow_pulling_1 # - default/combat_bow_pulling_2 #charged_texture: default/custom_bow_pulling_2 #firework_texture: default/custom_bow_charged #Optional Copy myitem: Pack: model: default/fishing_rod cast_model: default/fishing_rod_cast #texture: default/fishing_rod #cast_texture: default/fishing_rod_cast Copy myitem: Pack: model: default/diamond_sword damaged_models: - default/diamond_sword_damaged1 - default/diamond_sword_damaged2 - default/diamond_sword_damaged3 Copy myitem: Pack: model: default/diamond_sword composite_models: - default/background - default/item - default/overlay --- # Vendors | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/community-guides/vendors.md) . Below is the recommended way to add content to Nexo in a "drag & drop" format For these examples I will make it as a store named "NexoMC" ### ResourcePack[](https://docs.nexomc.com/community-guides/vendors#resourcepack) For including a ResourcePack, the ideal way is to use an "External Pack" Nexo allows for merging multiple full resourcepacks, so to avoid conflicts, it is the best approach Using proper namespaces is also ideal, not stuffing everything into the default minecraft-namespace `Nexo/pack/external_packs/NexoMC/assets/nexomc/models/item/some_model.json` This allows you to minimize possible conflicts with other packs and items others might have made Copy 📁Nexo └── 📁pack └── 📁external_packs ├── 📁RequiredPack.zip #Nexo Default ├── 📁DefaultPack.zip #Nexo Default └── 📁NexoMC └── 📁assets └── 📁nexomc ├── 📁models | └── ... └── 📁textures └── ... ### Items[](https://docs.nexomc.com/community-guides/vendors#items) Nexo also improves the structuring of items abit by allowing subfolders inside `Nexo/items` This means the recommended way to add premade itemconfigs is the following `Nexo/items/NexoMC/nexo_christmas_furniture.yml` Copy 📁Nexo └── 📁items └── 📁NexoMC ├── 📄 christmas_furniture.yml └── 📄 easter_armor.yml There are also some config-changes compared to Oraxen, mainly to [Furniture](https://docs.nexomc.com/mechanics/furniture-mechanic) & [Custom-Block](https://docs.nexomc.com/mechanics/custom-block-mechanics) mechanics. 🟨`itemid.Mechanics.furniture.display_entity_properties` -> `itemid.Mechanics.furniture.properties` `🟨itemid.displayname` -> `itemid.itemname` 🟨`itemid.customname` to use old "DisplayName" logic from 1.20.4< 🟨 Furniture Hitbox-structure has changed, refer to [docs](https://docs.nexomc.com/mechanics/furniture-mechanic#hitboxes) 🟨 Custom-Blocks has changed, refer to [NoteBlock](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) /[StringBlock](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic) ❌ `itemid.Mechanics.furniture.type` Nexo only supports Display-Entities ❌ `itemid.Pack.generate_model` is determined automatically ✔️ `itemid.Components.item_model` can be used on 1.21.2+ to avoid entire `itemid.Pack` ✔️ `itemid.Pack.texture` can be used if you only have a single texture ✔️ `itemid.Pack.textures` accepts a single texture, a list of textures or a map of texture-key to texture ### Glyphs[](https://docs.nexomc.com/community-guides/vendors#glyphs) There are no big changes to glyphs, but it allows for multiple namespaces now Same as with resourcepacks, you should use a separate namespace where you can [PreviousMMOItems](https://docs.nexomc.com/compatibility/mmoitems) [NextAPI](https://docs.nexomc.com/community-guides/api) Last updated 1 year ago * [ResourcePack](https://docs.nexomc.com/community-guides/vendors#resourcepack) * [Items](https://docs.nexomc.com/community-guides/vendors#items) * [Glyphs](https://docs.nexomc.com/community-guides/vendors#glyphs) Copy santa_claus: texture: nexomc:santa_claus font: nexomc:christmas_glyphs ... --- # Custom GUIs & HUDs | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds.md) . On Java, custom GUIs comes down to two things, and Scaffolding reproduces both on Bedrock: 1. **Custom GUIs** are a glyph (a unicode character defined in a font file) placed in the **title** of a custom inventory. 2. **HUD overrides** are replaced vanilla HUD textures, such as the hearts, hotbar or armor bar. Scaffolding reads these straight from the pack's fonts and textures, so it is not tied to any one plugin's glyph setup. Conversion is automatic in the common case. **Alignment is approximate** Bedrock and Java lay their screens out differently, and Bedrock gives far less control over placement. The automatic conversion gets most screens close, but it is **not guaranteed pixel-perfect**, and some GUIs can show **larger inconsistencies**. Simple, chest-based screens convert best; dense or heavily custom layouts are the most likely to need a manual nudge. Anything the automatic placement gets wrong can be corrected by hand, see [Tweaking a GUI manually](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#tweaking-a-gui-manually) . ### Custom GUI backgrounds[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#custom-gui-backgrounds) A custom inventory background on Java is a tall glyph placed in the container's title. Bedrock has no title glyph, so Scaffolding takes that glyph's texture and draws it onto the Bedrock screen instead, shown only while that container is open. This is **automatic** for every glyph Nexo uses as a background in a GUI title: * The texture is placed on the matching Bedrock screen, sized and positioned to line up with the slot grid. * It shows only while that container is open, matched by the container title. * Any `` in front of the glyph in the Java title is folded into the overlay's placement, since Bedrock cannot shift title text itself. * `autoBackgrounds` in `gui.yml` toggles the whole feature (on by default, see below). Only glyphs actually used in a Nexo GUI title are turned into overlays, so a random tall glyph elsewhere in your pack does not become a stray background. Anything Nexo does not put in a title, a GUI from another plugin for instance, has to be added by hand. ### Tweaking a GUI manually[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#tweaking-a-gui-manually) Everything the automatic conversion decides can be overridden per GUI in `plugins/Scaffolding/gui.yml`. Most setups never need this; reach for it when a background sits a few pixels off, renders at the wrong size, or when you want a glyph that was not picked up automatically. Scaffolding writes the file for you on the first conversion if it does not exist, seeded with: * your **auto-detected backgrounds**, commented out, ready to uncomment and override * every other **tall glyph** as a commented candidate you can enable Once the file exists it is never rewritten, so your edits are safe. Delete it if you want a fresh, re-seeded copy. **GUI Visualizer** A visual tool for working out the alignment, instead of guessing at numbers, is available at [https://nexomc.com/tools/gui-visualizer](https://nexomc.com/tools/gui-visualizer) . After editing `gui.yml`, run `/scf reload -f` and have your Bedrock players reconnect. Bedrock only re-downloads the pack on reconnect. #### Settings[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#settings) Two top-level keys, both optional: Setting Default Purpose `autoBackgrounds` `true` Detect GUI backgrounds from your Nexo inventory titles. Set to `false` to show only the entries you list in this file. `minHeight` `32` Minimum glyph height, in pixels, for a glyph to be listed as a commented candidate when the file is generated. Does not affect conversion. #### Entries[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#entries) Each entry is keyed by its glyph id and overrides the automatic overlay for that glyph. Only `glyph` is required, every other field falls back to the automatic value. Field Default Purpose `glyph` required The Nexo glyph whose texture is drawn. Its texture and unicode are resolved from Nexo, so the id is all you need. `match_literal` the glyph Java title, written with Nexo tags such as `""`. The overlay shows only while the open container's title contains it. `match_title` \- Same as above but a raw literal string, with no tag resolution. Use it when the title carries no Nexo tag. `shift` `0` Horizontal nudge in pixels, mirroring the `` in front of the glyph on Java. Positive moves right. `size` auto `"W,H"`. `"162px,54px"` is fixed UI pixels, `"100,100"` or `"100%,100%"` is a percentage of the parent panel. Prefer pixels: they align to Bedrock's 18px slot grid without drift. `offset` auto `"x,y"` pixel offset from the anchor. Positive x moves right, positive y moves down. `anchor` `center` Where the image attaches to the screen. `center` for window art, `top_left` and the other JSON-UI anchors for HUD pieces. `layer` `13` Draw order. `13` sits above the slot backgrounds and below the item icons; raise it to draw over items, lower it to hide behind them. `screen` `container` Which Bedrock screen the art is injected into, see the table below. An entry with no match, or with a `match_literal` that cannot be resolved (a typo'd glyph id, for example), is **always visible** on that screen. Scaffolding logs a warning when this happens. #### Screens[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#screens) `screen` Where it draws `container` / `chest` Chest and double chest, the default for custom inventories. `shulker_box` Shulker box. `inventory` The whole survival inventory screen. `player_inventory` The inventory window's top half only. `crafting_table` Crafting table window. `furnace`, `blast_furnace`, `smoker` The 176x166 window of each smelting screen. `enchanting` Enchanting table. `anvil` Anvil. `smithing_table` Smithing table. `grindstone` Grindstone. `brewing_stand` Brewing stand. `villager` The right panel of the trading screen. `hud` The in-game HUD, drawn on top of everything. #### Commands[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#commands) Command What it does `/scf gui list` List the active overlays, auto-detected and from `gui.yml`, with the screen and title match each one uses. `/scf gui import [screen]` Append an entry for a glyph to `gui.yml` and reconvert. Size and offset are left to auto-detect. #### Advanced: injection points[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#advanced-injection-points) Bedrock's own screen and control names occasionally move between game versions. If an update breaks a screen, the injection point can be repointed per entry without waiting for a Scaffolding update. Field Purpose `ui_file` Bedrock JSON-UI file to patch, for example `ui/chest_screen.json`. `namespace` JSON-UI namespace of that file, for example `chest`. `root` A single control to insert the overlay into. `roots` A list of controls, for screens with more than one panel (small/large chest). `array` Name of the child array on the control, `controls` on every vanilla screen. `layer_bias` Layer offset compensating the root's own depth, so `layer` means the same everywhere. A malformed `gui.yml` is ignored entirely and a single bad entry is skipped, in both cases with a warning in the console. Conversion carries on either way, so a typo can never break your pack. ### Sizing a glyph[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#sizing-a-glyph) Bedrock renders a glyph at its baked pixel size, so size and sharpness move together — a bigger bake is larger _and_ sharper, a smaller bake is smaller _and_ blockier. Override that bake per font or per glyph in `plugins/Scaffolding/glyphs.yml`. Most setups never touch this file. Two sections, both keyed by id: `fonts:` (by font key) and `glyphs:` (by glyph id). A `glyphs:` entry wins over a `fonts:` entry for the same glyph. Every field is optional. Field Purpose `scale` Multiply the glyph's Java height. `2.0` = twice as tall, and sharper. `height` Pin an explicit baked height in px. Overrides `scale`. `supersample` Bake from the full-resolution source texture instead of the Java height. Sharpest, but renders larger — good for big or UI glyphs. ### Vanilla GUI overrides[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#vanilla-gui-overrides) If your pack reskins a **vanilla container screen** (by replacing its texture), Scaffolding reproduces that on the matching Bedrock screen too. This is controlled by `vanillaBackground.convertOverrides` in `config.yml` (on by default; turn it off if you do not reskin vanilla content and want a smaller pack). `vanillaBackground.hideBackground` (also on by default) hides Bedrock's own window background behind those reskins, so nothing vanilla peeks out from under your art. Turn it off to keep the gray panel drawn behind it. **Supported screens, if present in your pack:** * Chest, double-chest and ender chest * Shulker box * Furnace, blast furnace and smoker * Crafting table * Player inventory * Enchanting table * Anvil * Brewing stand * Villager trading **Hopper, dropper and dispenser are not supported** These Bedrock screens are hard-coded and cannot be customized via a resourcepack at the moment, so they cannot be altered. They are noted in the conversion log and left as vanilla for Bedrock players. ### Vanilla HUD overrides[](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#vanilla-hud-overrides) Retextures of the vanilla HUD are converted to their Bedrock equivalents. Bedrock scales each texture to fit its on-screen element, so the source resolution does not matter. **Converted HUD elements include:** * Hotbar and the selected-slot box * Hearts (health, absorption, frozen, vehicle/mount) * Hunger, Armor, air & experience bars * Mob-effect status backgrounds * Locator bar A few Java-only HUD states have **no Bedrock counterpart** and are left out (and noted in the log): poisoned/withered/hardcore hearts, the crosshair and attack indicators, the jump/ride bar, per-effect status icons and offhand slots. **Custom HUD plugins are not supported yet** This only covers retextures of the **vanilla** HUD. Custom HUDs added by plugins such as **MythicHUD** are **not supported at the moment**. [PreviousScaffoldingExtension](https://docs.nexomc.com/addons/scaffolding/scaffoldingextension) [NextEmotes & Glyphs](https://docs.nexomc.com/addons/scaffolding/emotes-and-glyphs) Last updated 12 days ago * [Custom GUI backgrounds](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#custom-gui-backgrounds) * [Tweaking a GUI manually](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#tweaking-a-gui-manually) * [Sizing a glyph](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#sizing-a-glyph) * [Vanilla GUI overrides](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#vanilla-gui-overrides) * [Vanilla HUD overrides](https://docs.nexomc.com/addons/scaffolding/custom-guis-and-huds#vanilla-hud-overrides) Copy autoBackgrounds: true minHeight: 32 # Nudge an auto-detected background 4px up my_menu: glyph: my_menu match_literal: "" screen: container offset: "0,-4" # A glyph that is not in any GUI title, pinned to the furnace screen at a fixed size forge_overlay: glyph: forge_overlay match_literal: "" screen: furnace size: "176px,166px" --- # DialogBase | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/dialogs/dialogbase.md) . Dialogs have a base which contains the content of the Dialog. Below are the propeties you can use **title -** The title of the Dialog, is always visible on the screen **externalTitle** - Name used for buttons that link to this Dialog, defaults to title **canCloseWithEscape** - If the Dialog can be dismissed with Escape Key **afterAction** - Operation performed on the dialog after click or submit actions. \* **NONE -** Keeps the current dialog screen open \* **CLOSE (Default) -** Close and return to the previous non-dialog screen (if any) \* **WAIT\_FOR\_RESPONSE -** Replaces the current screen with a "Waiting for Response" **bodies** - List of DialogBodies to add to the Dialog Screen **inputs** - List of DialogInputs to add to the Dialog Screen ### [DialogBody](https://minecraft.wiki/w/Dialog#Body_format) [](https://docs.nexomc.com/configuration/dialogs/dialogbase#dialogbody) A DialogBody describes content that is positioned between the title and the inputs of the Dialog Screen. These are fairly simple and come in two types, MESSAGE & ITEM **Message-Type** takes a width-property and a string for the message This message supports MiniMessage and Nexo Glyphs- & Shift-tags **Item-Type** has a few more properties. **description -** Takes a MiniMessage String and optionally a width (defaults to 200) **showDecorations -** When true, shows the count & durability-bar on the item **showTooltip -** When true, shows the tooltip when hovering over the item **width -** Horizontal size of the element, must be between 1 & 256, defaults to 16 **height -** Vertical size of the element, must be between 1 & 256, defaults to 16 To make a DialogBody you can follow the below example, specifying a key/id for the Body-element and its properties; Copy base: bodies: message_body: type: MESSAGE message: "Some Message allowing MiniMessage" width: 200 item_body: type: ITEM description: "Some Description" #description: # contents: "Some description" # width: 200 showDecorations: true showTooltip: true width: 16 height: 16 ### [DialogInput](https://minecraft.wiki/w/Dialog#Input_control_format) [](https://docs.nexomc.com/configuration/dialogs/dialogbase#dialoginput) DialogInputs are rendered below the DialogBody-elements and have numerous actions for receiving information from players. There are four types of Inputs, [TEXT](https://minecraft.wiki/w/Dialog#text) , [BOOL](https://minecraft.wiki/w/Dialog#boolean) , [NUMBER](https://minecraft.wiki/w/Dialog#number_range) & [SINGLE](https://minecraft.wiki/w/Dialog#single_option) . #### Text-Input[](https://docs.nexomc.com/configuration/dialogs/dialogbase#text-input) A simple text-input field with a few properties **width -** The width of the text input field, between 1 & 1024, defaults to 200 **labelVisible -** Controls if the label is visible for the input-field **maxLength** - The max length of the text input **initial** - The initial value in the input-field when the Dialog is opened **multiLineOptions -** Optional, specifies that the field should be multiline #### Boolean-Input[](https://docs.nexomc.com/configuration/dialogs/dialogbase#boolean-input) A checkbox returning a string value depending on its state **onTrue -** The string value to return when checked, default is "true" **onFalse -** The string value to return when unchecked, defaults to "false" **initial -** The initial state of the checkbox #### NumberRange-Input[](https://docs.nexomc.com/configuration/dialogs/dialogbase#numberrange-input) A number slider used for returning a number-value **width -** The width of the slider, between 1 & 1024, defaults to 200 **labelFormat -** A translation key used for building the label **start -** The lowest value of the slider **end -** The highest value of the slider **step -** The incremental value for each notch on the slider, if unspecified, slider has no notches **initial -** The initial value between start & end for the slider when Dialog is shown #### SingleOption-Input[](https://docs.nexomc.com/configuration/dialogs/dialogbase#singleoption-input) **labelVisible -** If the label should be visible on the button or not **width -** The width of the button **options -** A list of SingleOptions the button can have. Contains a **display** text field & an **initial-field** [PreviousDialogType](https://docs.nexomc.com/configuration/dialogs/dialogtype) [NextDialogAction](https://docs.nexomc.com/configuration/dialogs/dialogaction) Last updated 1 year ago * [DialogBody](https://docs.nexomc.com/configuration/dialogs/dialogbase#dialogbody) * [DialogInput](https://docs.nexomc.com/configuration/dialogs/dialogbase#dialoginput) Copy inputs: text_key: type: TEXT width: 200 label: "Text Input Label" labelVisible: true maxLength: 32 initial: "Initial Input Text" multilineOptions: maxLines: 1 height: 32 Copy inputs: bool_key: type: BOOL label: "Boolean Input Label" initial: true onTrue: "true" onFalse: "false" Copy inputs: number_key: type: NUMBER width: 200 label: "Number Input Label" labelFormat: "options.generic_value" start: 0 end: 1 initial: 0.5 step: 0.1 Copy inputs: single_key: type: SINGLE width: 200 label: "Single Input Label" labelVisible: true options: option_1: display: "First Option" initial: true option_2: display: "Second Option" initial: false --- # StringBlock Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic.md) . STRINGBLOCK-type allows for up-to **127** custom blocks. One per `custom_variation` Another quirk with this CustomBlock is that it has 2 different hitbox-states All variations after 64 will have a smaller hitbox than those before. How does it work?[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#how-does-it-work) -------------------------------------------------------------------------------------------------------------------- This is a type of CustomBlock best aimed at plants, rocks and other foliage. It uses the vanilla TripWire block and therefore will disable all normal behaviour TripWires might have. How do I create a StringBlock?[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#how-do-i-create-a-stringblock) ---------------------------------------------------------------------------------------------------------------------------------------------- If you are unsure how to reference a ResourcePack-File in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) ### Nexo Resourcepack configuration[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#nexo-resourcepack-configuration) Below is an example of how to configure the model/texture to use. `block/cross` is what normal vanilla plants use and allows for converting a 2d-texture into a block. If you want an example, look at RoseBushes in-game. Copy jasmine_flower: itemname: "Jasmine Flower" material: PAPER Pack: parent_model: "block/cross" texture: custom/flowers/jasmine_flower.png # .png extension is not mandatory ### StringBlock Mechanic Configuration[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#stringblock-mechanic-configuration) To use this mechanic you need to tell nexo which model to use (to use the generated one, just put the id name of your item). Then you need to use custom\_variation that is not already used by another decoration. You can also configure the hardness of the block, which specifies how long a block should take to break. `drop.best_tool` allows you to specify which tool should be best. An example would be PICKAXE for a small stone Sub-Properties[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#sub-properties) --------------------------------------------------------------------------------------------------------------- ### Placeable On Water[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#placeable-on-water) `placeable_on_water` lets you make a stringblock only placeable when placed on water. This aims to mimic how Lilypads work in vanilla. Defaults to false * * * ### Requires Supporting[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#requires-supporting) `requires_supporting` will make the block "unstable" and make it break when the block beneath it is broken. Defaults to false ### Random Place[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#random-place) This takes a list of strings representing other stringblock-mechanics. It will then select a random one to place when placing this item. * * * ### Tall Plants[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#tall-plants) Nexo has a `is_tall` - property which makes the STRINGBLOCK take up two spaces, similar to Tall Grass. This requires using a specific parent-model and two separate textures, for the top and bottom block. Nexo also provides a default parent-model for use with this. Below is an example config using two different PNGs * * * ### Sapling[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#sapling) You can also add some randomness to the growth, or just increase the delay between checks. Go into `mechanics.yml` and under stringblock-mechanic, adjust `sapling_growth_check_delay` This is in ticks, so 20 = 1 second. For your sapling to work and grow make sure you have created a `schematics` folder in Nexo and copy all your schems from FAWE into the schematics folder. If this is not done, your sapling will not work at all. * * * ### Stackable[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#stackable) This lets you make a block which can be stacked, much like Pink Petals. This will alter the model shown and the drop amount given when it is broken. Below is an example using carrots. If you only have Textures and not Models, you will need to either make them or make dummy NexoItems that then generates this Model for you. * * * ### BlockLocker[](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#blocklocker) You can use this to allow protection via [BlockLocker](https://www.spigotmc.org/resources/blocklocker.3268/) Valid protectionTypes are CONTAINER, DOOR, ATTACHABLE ![](https://docs.nexomc.com/~gitbook/image?url=https%3A%2F%2Fcdn.discordapp.com%2Fattachments%2F958524021035647046%2F961424759718047784%2Funknown.png&width=768&dpr=3&quality=100&sign=d658b050&sv=2) [PreviousDirectional Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic/directional-mechanic) [NextCustom Trident](https://docs.nexomc.com/mechanics/custom-trident) Last updated 6 months ago * [How does it work?](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#how-does-it-work) * [How do I create a StringBlock?](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#how-do-i-create-a-stringblock) * [Nexo Resourcepack configuration](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#nexo-resourcepack-configuration) * [StringBlock Mechanic Configuration](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#stringblock-mechanic-configuration) * [Sub-Properties](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#sub-properties) * [Placeable On Water](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#placeable-on-water) * [Requires Supporting](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#requires-supporting) * [Random Place](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#random-place) * [Tall Plants](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#tall-plants) * [Sapling](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#sapling) * [Stackable](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#stackable) * [BlockLocker](https://docs.nexomc.com/mechanics/custom-block-mechanics/stringblock-mechanic#blocklocker) Copy jasmine_flower: Mechanics: custom_block: type: STRINGBLOCK custom_variation: 2 model: jasmine_flower hardness: 2 drop: silktouch: false Copy placeable_on_water: Mechanics: custom_block: type: STRINGBLOCK placeable_on_water: true Copy placeable_on_water: Mechanics: custom_block: type: STRINGBLOCK requires_supporting: true Copy random_place: Mechaincs: custom_block: type: STRINGBLOCK custom_variation: 1 random_place: - random_place - random_place2 - random_place3 random_place2: Mechanics: custom_block: type: STRINGBLOCK custom_variation: 2 random_place3: Mechanics: custom_block: type: STRINGBLOCK custom_variation: 3 Copy plant: Pack: parent_model: nexo:block/tall_plant textures: bottom: bottom_texture top: top_texture Mechanics: custom_block: type: STRINGBLOCK is_tall: true Copy sapling: Mechanics: custom_block: type: STRINGBLOCK sapling: grows_naturally: true # if you want only the player can grow it natural_growth_time: 6000 #in ticks grows_from_bonemeal: true bonemeal_growth_speedup: 1250 grow_sound: block.grass.break min_light_level: 4 requires_water_source: false #if you want it to need water schematic: schemTest #structure that will put # this also allows you to use a list of schematics: # schematic: # - schem: palmTree1 # chance: 0.5 # - schem: palmTree2 # chance: 0.5 replace_blocks: false copy_biomes: false copy_entities: false Copy stackable: material: PAPER Pack: model: item/carrot Mechanics: custom_block: type: STRINGBLOCK model: block/carrots_stage0 stackable: - model: block/carrots_stage1 - model: block/carrots_stage2 - model: block/carrots_stage3 Copy Mechanics: custom_block: type: STRINGBLOCK blocklocker: can_protect: true protection_type: CONTAINER --- # ChorusBlock Mechanic | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic.md) . CHORUSBLOCK-type allows for up-to **63** custom blocks. One per `custom_variation` ### Creating your first block[](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic#creating-your-first-block) If you are unsure how to reference a ResourcePack-File in a NexoItem config; [How do I reference a ResourcePack file in a config?](https://docs.nexomc.com/general-usage/faq#how-do-i-reference-a-resourcepack-file-in-a-config) #### Parent-Model[](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic#parent-model) The Nexo-item root configuration is the same as for any item (you can use any material like a diamond for example) and set an itemname, etc. It is recommended to not use a block for your material, sticking to such materials as PAPER For the pack section you can use your own model or texture for your block. If all you have is a texture, you can specify a parent\_model and Nexo will generate the needed files for you. A Normal 1x1x1 block uses "block/cube\_all" Copy my_block: itemname: "My block" material: PAPER Pack: parent_model: "block/cube_all" texture: my_block_texture.png ### CustomBlock Mechanic configuration[](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic#customblock-mechanic-configuration) To use this mechanic you need to tell to Nexo which model to use (to use the generated one, just put the name id of your item). You then need to use custom\_variation which is not already used by another block. Valid custom\_variation is 1..63 Copy my_block: Mechanics: custom_block: type: CHORUSBLOCK custom_variation: 2 model: my_block drop: silktouch: false minimal_type: STONE loots: - nexo_item: my_block probability: 1.0 [PreviousCustom Block Mechanics](https://docs.nexomc.com/mechanics/custom-block-mechanics) [NextNoteBlock Mechanic](https://docs.nexomc.com/mechanics/custom-block-mechanics/noteblock-mechanic) Last updated 9 months ago * [Creating your first block](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic#creating-your-first-block) * [CustomBlock Mechanic configuration](https://docs.nexomc.com/mechanics/custom-block-mechanics/chorusblock-mechanic#customblock-mechanic-configuration) --- # RangeDispatch ItemModel | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/items/itemmodel-builder/rangedispatch-itemmodel.md) . A **RangeDispatch ItemModel**, is a set of conditions based on a numerical property on the Item, that decided when to show what Model. This is what normally is used for CustomModelData as shown in [ItemModel Builder](https://docs.nexomc.com/configuration/items/itemmodel-builder) \-example. There are other ways to use this as it has several properties it can use for this condition. Recommend to check the [Minecraft Wiki](https://minecraft.wiki/w/Items_model_definition#range_dispatch) for an always up-to-date list. Below is an example for showing a different Model based on the amount of the item it is. Copy custom_diamond: ItemModel: type: range_dispatch property: count entries: - threshold: 1 model: type: model #References assest/namespace/models/single_custom_diamond.json model: namespace:single_custom_diamond - threshold: 2 model: type: model model: namespace:double_custom_diamond # Since the next threshold is 10, it means the client will use the previous one # until it reaches the next threshold, which here is 10 - threshold: 10 model: type: model model: namespace:big_custom_diamond # A Fallback ItemModel in case none of the entries match fallback: type: model model: namespace:custom_diamond You can also chain these to use different ItemModel-types inside each threshold-entry here for very complex items [PreviousReference ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/reference-itemmodel) [NextSelect ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/select-itemmodel) Last updated 5 months ago --- # Composite ItemModel | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/items/itemmodel-builder/composite-itemmodel.md) . A **Composite ItemModel**, is a list of ItemModels that should be layered over eachother. Recommend to check the [Minecraft Wiki](https://minecraft.wiki/w/Items_model_definition#composite) for an always up-to-date list. Below is an example for showing an Item with a Model background Copy custom_diamond: ItemModel: type: composite models: - type: model model: namespace:custom_diamond - type: model model: namespace:background You can also chain these to use different ItemModel-types inside each composite-entry here for very complex items [PreviousCondition ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/condition-itemmodel) [NextEmpty ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/empty-itemmodel) Last updated 5 months ago --- # Condition ItemModel | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/items/itemmodel-builder/condition-itemmodel.md) . A **Condition ItemModel**, is a true/false statement to determine what to show the client. Vanilla makes use of this in Bows to show a different one when its being used/pulled and not. There are other ways to use this as it has several properties it can use for this condition. Recommend to check the [Minecraft Wiki](https://minecraft.wiki/w/Items_model_definition#condition) for an always up-to-date list. Below is an example for showing a different Model if an item is broken vs when not; Copy custom_sword: ItemModel: type: condition property: broken on_true: type: model model: namespace:custom_sword_broken on_false: type: model model: namespace:custom_sword You can also chain these to use different ItemModel-types inside the true/false ItemModels here for very complex items [PreviousSelect ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/select-itemmodel) [NextComposite ItemModel](https://docs.nexomc.com/configuration/items/itemmodel-builder/composite-itemmodel) Last updated 5 months ago --- # MultiPack Feature | Nexo For the complete documentation index, see [llms.txt](https://docs.nexomc.com/llms.txt) . This page is also available as [Markdown](https://docs.nexomc.com/configuration/resourcepack/multipack-feature.md) . The Multipack feature allows for sending additional ResourcePacks to players with the base-pack. Each pack is defined as a **template**, which can be required, optional, or enabled by default. Players can toggle optional templates on/off, and Nexo re-sends the appropriate packs automatically. How it works[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#how-it-works) -------------------------------------------------------------------------------------------------- * Templates are standalone resource packs stored in `plugins/Nexo/pack/template_packs/` (or at a custom path). * On startup/reload, each template is read, built, and hosted alongside the main pack. * When a player joins, they receive the main Nexo pack plus any template packs that are enabled for them (required ones + their personal selections). * Templates can declare conflicts with each other, meaning enabling one automatically disables the conflicting template(s). * * * Configuration[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#configuration) ---------------------------------------------------------------------------------------------------- All multipack configuration lives in `plugins/Nexo/multipack.yml`. Templates are defined under the `templates:` key, and the optional GUI menu under `menu:`. Copy templates: my_template: required: false # Always sent to all players, cannot be toggled default: true # Enabled by default for new players conflicts_with: # Disables these templates when this one is enabled - other_template path: "" # Optional: custom path to the pack folder or zip # Defaults to plugins/Nexo/pack/template_packs/ other_template: required: false default: false conflicts_with: my_template # Can also be a single string menu: # See the GUI / Menu section below ### Template options[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#template-options) Option Type Default Description `required` boolean `false` Always sent to every player; cannot be toggled off `default` boolean `false` Enabled by default for players who have never toggled it `conflicts_with` string or list `[]` IDs of templates to disable when this one is enabled `path` string `""` Path to the pack. Accepts absolute paths, paths relative to `template_packs/`, or paths relative to the Nexo data folder. Defaults to `template_packs/` Pack folder structure[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#pack-folder-structure) -------------------------------------------------------------------------------------------------------------------- Place each template pack as a folder or zip inside `plugins/Nexo/pack/template_packs`. This follows the same logic as [🗂️ ResourcePack-Structure](https://docs.nexomc.com/configuration/resourcepack#resourcepack-structure) If the pack has no `pack.mcmeta`, Nexo generates one based on the server's version. * * * GUI / Menu[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#gui-menu) -------------------------------------------------------------------------------------------- Nexo includes a built-in inventory GUI for players to browse and toggle their template selections without needing commands. The menu is configured under the `menu:` key in `multipack.yml`. ### Opening the menu[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#opening-the-menu) * Permission: `nexo.command.multipack.menu` * Permission for opening for others: `nexo.command.multipack.menu.other` Changes made inside the GUI are **batched**, meaning packs are only re-sent once when the inventory is closed, not on every click. ### Menu configuration[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#menu-configuration) #### Slot options[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#slot-options) Option Type Default Description `offset.x` / `offset.y` integer `1` Column (1–9) and row (1–rows) of the top-left cell of the slot `size.x` / `size.y` integer `1` Width and height in cells. Useful for decorative multi-cell slots `all_slots_except_first_empty` boolean `false` When `true`, only the top-left cell is interactive; all others display an invisible placeholder that copies the base item's data components `base_item` item section — Fallback item used when a state has no own item defined. Required unless every action state defines its own item `action` section — Defines what happens when the slot is clicked (see below) * * * ### Action types[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#action-types) #### TOGGLE[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#toggle) Displays one of two items depending on whether the target template is currently enabled, and flips it on click. `enabled_item` and `disabled_item` are merged on top of `base_item` if one is defined, so shared properties (e.g. lore) can be put in `base_item` and only the differences in each state item. Required templates cannot be toggled — clicking their slot does nothing. #### CYCLING[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#cycling) Cycles through a list of templates on each click, enabling exactly one at a time. Useful for mutually-exclusive choices like 2D vs 3D tools. **Simple form** — template IDs only, inherits `base_item` for the display: **Rich form** | each entry can carry its own item, merged on top of `base_item`: On click, the currently-enabled entry is disabled and the next one in the list is enabled (wrapping around). All other entries in the cycle are set to `false`. * * * ### Item definition[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#item-definition) Items in `base_item`, `enabled_item`, `disabled_item`, and cycling entries support three formats: **Nexo item** | references an existing Nexo item by ID: **Item model** | An ItemModelBuilder, refer to [ItemModel Builder](https://docs.nexomc.com/configuration/items/itemmodel-builder) for details. Can be used to create simple custom items without needing to set up a full Nexo item. **Inline item** | a standard Nexo `ItemParser` section (material, display\_name, lore, etc.): * * * Commands[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#commands) ------------------------------------------------------------------------------------------ MultiPack commands are under `/nexo multipack` and require the `nexo.command.multipack` permission. ### Open GUI[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#open-gui) Opens the interactive template selection menu. If no `menu:` section is configured in `multipack.yml`, a warning is shown instead. * Permission: `nexo.command.multipack.menu` * Permission for targeting others: `nexo.command.multipack.menu.other` ### List templates[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#list-templates) Shows all configured templates and their current state (enabled/disabled) for the executing player. Required and default templates are labeled. ### Toggle a template[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#toggle-a-template) Toggles the given template on or off for the player (or targeted players). Re-applies packs immediately after toggling. Required templates cannot be toggled. * Permission: `nexo.command.multipack.toggle` * Permission for targeting others: `nexo.command.multipack.toggle.others` ### Debug[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#debug) Prints detailed debug info: loaded templates, raw PDC selections, resolved enabled set, and per-template state flags. * Permission: `nexo.command.multipack.debug` * Permission for targeting others: `nexo.command.multipack.debug.others` * * * Examples[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#examples) ------------------------------------------------------------------------------------------ ### Toggling on/off a larger Music/SoundFX Pack | 2D/3D Tools[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#toggling-on-off-a-larger-music-soundfx-pack-or-2d-3d-tools) A common use case is offering players a choice to enable an addon for custom music, or swapping between 2D & 3D Tools `**multipack.yml**`**:** Players can switch between them in-game: Enabling `3d_tools` automatically disables `2d_tools` due to the conflict, and packs are re-sent immediately. * * * ### Full GUI example[](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#full-gui-example) A 3-row menu with a music toggle and a 2D/3D cycling slot: [PreviousResourcePack](https://docs.nexomc.com/configuration/resourcepack) [NextItems](https://docs.nexomc.com/configuration/items) Last updated 3 months ago * [How it works](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#how-it-works) * [Configuration](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#configuration) * [Template options](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#template-options) * [Pack folder structure](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#pack-folder-structure) * [GUI / Menu](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#gui-menu) * [Opening the menu](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#opening-the-menu) * [Menu configuration](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#menu-configuration) * [Action types](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#action-types) * [Item definition](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#item-definition) * [Commands](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#commands) * [Open GUI](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#open-gui) * [List templates](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#list-templates) * [Toggle a template](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#toggle-a-template) * [Debug](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#debug) * [Examples](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#examples) * [Toggling on/off a larger Music/SoundFX Pack | 2D/3D Tools](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#toggling-on-off-a-larger-music-soundfx-pack-or-2d-3d-tools) * [Full GUI example](https://docs.nexomc.com/configuration/resourcepack/multipack-feature#full-gui-example) Copy /nexo multipack /nexo multipack menu /nexo multipack menu Copy menu: title: "My Resourcepack Menu" rows: 3 # 1–6 slots: my_slot: offset: 5,2 # Column (x: 1–9) and row (y: 1–) of the top-left cell size: 1,1 # How many cells wide/tall this slot occupies (defaults to 1×1) # Only the top-left cell is interactive, remaining cells show an invisible copy all_slots_except_first_empty: false base_item: # Fallback item shown when the action's state has no own item material: PAPER display_name: "My Pack" action: # See action types below Copy action: type: TOGGLE target: my_template # Template ID to toggle enabled_item: # Item shown when the template is ON material: LIME_DYE display_name: "Music Pack | Enabled" disabled_item: # Item shown when the template is OFF material: GRAY_DYE display_name: "Music Pack | Disabled" Copy action: type: CYCLING targets: - 2d_tools - 3d_tools Copy action: type: CYCLING targets: - id: 2d_tools material: PAPER itemname: "2D Tools" - id: 3d_tools material: IRON_SWORD itemname: "3D Tools" Copy base_item: nexo_item: my_item_id Copy base_item: item_model: type: "composite" models: - type: model model: "item/diamond_sword" - type: model model: "item/diamond" Copy base_item: material: PAPER itemname: "My Pack" lore: - "Click to toggle" Copy /nexo multipack /nexo multipack menu /nexo multipack menu Copy /nexo multipack list Copy /nexo multipack toggle