Custom Blocks, Items, Furniture, ResourcePack & more
1.21.1 clients crossbow not having overrides on 1.21.4+ servers
.png not removed from Textures in Pack-section with map formatting
CustomBlock with StorageMechanic not allowing shift+place interactions
Missing BlockLocker dependency in paper-plugin.yml
Potential nullpointer for FurnitureBeds on older servers
Interacting with FurnitureDoor not blocking follow-up interactions/placing
Bad Hitbox-rotation for open FurnitureDoors
Rotating Furniture with Axiom snapping back
Issue with using Short & other Number types in PersistentData
NullPointers for experimental "reimplement_note_blocks" setting
Bad max-resolution feedback in PackValidator for Glyphs
Incorrect drop logic for NexoFurniture using SHULKER type StorageMechanic
Issues placing NexoFurniture with ShulkerHitbox next to eachother
Issues with saving ItemConfig values when item uses ItemTemplates
Automatic custommodeldata & custom_variation not being saved to config when using ItemTemplates
NexoConverter changes to NexoItem-Configs not always saved to file
Allow StorageMechanic in all CustomBlock-Mechanics (Carpentry included)
Restructure large parts of NMS-logic into a shared class to lower filesize & repeated code
Internal code & naming changes & refactors
Allow explicit empty list in FurnitureHitbox to override ItemTemplates
Allow inlining & single string-instance for all FurnitureHitbox types
Swap Custom- & Command-Mechanics to Durations (2s, 20t, 1m)
Add trim_material support to NexoItem configs
Add Components.profile & Components.unset_components for 1.21.2+ Servers
Add Nexo/recipes/disabled_recipes.yml to disable Vanilla recipes
Add Plugin.formatting.villagers to disable formatting of Items in Villager Menus
Add require_supporting to Custom String-type blocks (break when connecting block is broken)
Support for 1.21.11
Add kinetic_weapon, piercing_weapon, attack_reach, damage_type, use_effects, minimum_attack_charge, swing_animation
Updated Wiki entry for these components found here
Custom Nautilus & Camel Husk Saddles
Custom Nautilus Armor
Large performance optimizations for Furniture
Mainly benefits Custom Furniture sounds & entity collision checks
Also improved for larger servers with larger playercounts and loads of furniture
Recipe-Permissions not working
Furnace-Recipe permisssion check not working
Invalid Recipe handling for filling ingredients in Recipe Showcase
Placing blocks against furniture not working
Custom-Mechanic event not defaulting unspecified event-type params to all
AttributeModifiers not applying to NexoItems
Charged- & Firework model not working with Nexo-generated ItemModels
PotionContents#customColor being reset by ItemUpdater
Bad NexoItem dropped from Connectable Furniture using ITEM_MODEL type
Incorrect behaviour from templates using <lore> placeholder
Furniture-crops not breaking when farmland_required and farmland is trampled
Modifying Drop in NExoFurnitureBreakEvent not reflected in final drop
Â
Expose title in StorageMechanic
Add StorageMechanic#storageContent
Deprecated & ScheduleForRemoval FurnitureHelper methods, moved into NexoFurniture
Add NexoItems#registerUpdateCallback, lets plugins hook into Nexo to alter pre/post ItemUpdater behaviour of Nexo
Â
Evolution-Mechanic delay -> duration
Removed exclude_modelengine_shaders setting
Inlined Pack.import.modelengine setting
Move some Item-properties to TriState over Boolean?
Make Plugin.formatting.chat_standard_tags not format system-chats if disabled
Add Plugin.formatting.translatable to disable handling of TranslatableComponents
Fixes issue of %s not being formatted
Rename directional_type to type in Directional-Mechanic
Add setting to disable Dialog formatting
Simplified setup for Directional Blocks
No need for dummy NexoItems anymore
Automatically set the custom-variations and all based on defined DirectionalType
Old format is still supported
You can also reuse custom_variation of the parent & 1 child-block (Logs need 3 variations not 4, etc)
Â
NexoITems used in LootTables missing properties
Add /nexo dumpitem command
If no argument, prints out mainhand/offhand of sending player
Can specify a NexoItem ID or player(s) to print out helf item-info for
Add Directory-based files in NexoInventory
Adds new NexoInventory.type to inventory.yml, defaults to FILE
Changing to DIRECTORY makes the NexoInventory organize everything into the corresponding folder structure as found in plugins/Nexo/items
Folder-icon can be customized with NexoInventory.directory_icon
Add Search-button to NexoInventory(1.21.6+)
Can be customized with NexoInventory.search_icon in inventory.yml
Make icon-settings in inventory.yml support ItemModels directly
No need for referencing a NexoItem if you provide an ItemModel in the Nexo ResourcePack
Referenced like all other ResourcePack files, namespace:key
Some Nexo-Subcommands lacking permission nodes
No longer require nexo.command permission to use nexo commands
If set to false, will block all commands
Blocking/Pulling-Model not working properly when prefer_item_models is enabled
Bunch of fixes and tweaks for NexoInventory
Recipe-listeners registering twice on reloading Nexo
ClickAction CLICK-event not supporting left/right/middle clicks
Bad while-loop in take command causing server holdup
Bad conversion of textures lists with single entries in Pack-sections
ArmorEffectrequire_full_set not working as intended
CustomBlock not setting Custom Variation properly for Directional Blocks
Â
Attempt to use newest supported NMS version if "unknown" or too new
Means in general Nexo will work on latest release automatically
Optimizations to CustomBlock-sounds & PDC usage
Optimize FurnitureLight packet-handling
Disable NexoRecipes with permissions from being used in Crafter
Swap away from seconds/ticks in favour of Durations in most places
Durations are formatted like, 2.2s or 10t
seconds, ticks, minutes, hours, days, weeks, months
Applies to ArmorEffect/PotionEffect durations
JukeboxPlayable length_in_seconds -> durations for sounds.yml
properties.delay in FurnitureMechanic
Consumable consume_seconds -> consume_duration
Use Cooldown seconds -> duration
Â
Add PlaceholderAPI-Tag<papi:placeholder>)
These are "client-side" so usage will, like glyphs, not modify the actual tag
- Placing blocks against Decorated Pots & Cauldrons not working
- Improve stream checks for performance (<\@taiyouh >)
- Missing custom Chorus-Block info from blockinfo command
- Parsing of some Conditional ItemModel properties
- Items with ItemTemplates having injectId false and not working
- Invalid dismounting for FurnitureSeats on <1.21.4 servers
- Missing TintSource when merging existing ItemModels
 * Caused items using Leather to not be dyeable with for example ModelEngine
- WorldGuard-Flag issue, interact taking priority over nexo-furniture-interact etc
- Optimize SaplingTask
- Zip External Packs not always merging & obfuscating Overlays properly
- Items with MaxDamage component not losing durability when undamaged
- Glyphs not correctly applying the global shadow property from setitngs.yml if unspecified in tag
- Concurrency issues for Folia servers
Â
- Dropped support for 1.20.4, 1.20.5, 1.20.6, 1.21 (not 1.21.1)
- Optimizations to ItemStack packet-handling to reduce lag & desync
- Moved NexoInventory out of `settings.yml` and into `inventory.yml`
- Move away from CommandAPI for commands
 * Easier to maintian & faster updater with new releases
- Simplify Soulbound Mechanic <\@yeahakis>
- FurnitureSeats now only exist whilst players sit on the furniture
 * Spawn when player interacts with furniture, remove it when they dismount
 * Less entities in world with a lot of seat-furnitureÂ
Â
- 1.21.9 & 1.21.10 support
- Add support for reloading Dialogs without a server-restart
 * New Dialogs will require a full restart to be registered
- Â Add global FurnitureProperties via `default_properties` to mechanics.yml for furniture
- Add setting to change output-path of Nexo's ResourcePack, defaults to `plugins/Nexo/pack/pack.zip`
 * Can be a single entry or a list of multiple entries to copy to
- Add Pack.composite_models` to automatically merge in ItemModels into your NexoItem
- Players being timed out due to bad packet-handling & recursive issue
- Recipe save-command not working if files are missing
- Furnace-recipes not supporting permissions
- Vanilla dye-recipes not working for furniture
- Minor 1.20.4/1.20.6 Nullpointer Exceptions
- Issues with some tools in Axiom & Nexo CustomBlocks
- Namespaced enchantments not being supported
- Custom Mob-Armor not properly auto-setting allowed_entity_types
- `oversized_in_gui` not transferred when merging resourcepacks
- ItemTemplates not properly merging all properties onto items using them
- tintSource sometimes not set for ItemModels
- HideTablist & scoreboard background settings not working on some client-versions
- Issues with Nexo sometimes transforming components when it shouldnt
- Jukebox mechanic not working for furniture & blocks
- Merchant Menu issue due to improper styling set on some items causing disconnect
- Placing furniture against wall LimitedPlacing furniture not working
- NoteBlocks mining slow even when noteblock mechanic is disabled in Nexo
- Merge overrides into ItemModels found in PackOverlays aswell
- `Components.equippable.model` renamed to `asset_id`
- FurnitureSeats swapped to Custom Entities
- Dismounting FurnitureSeats now puts you ontop of the furniture
- Change logic for handling of NexoPostPackGeneratedEvent to fix large packs not being merged in
- Add `default_shadow` to glyphs for per-glyph shadow control aswell
- Add Template Placeholders
- Add support for Weapon, BlocksAttacks, BreakSound, CanPlaceOn/CanBreak Components
- Add `delay_hitbox_toggle` & `automatic_close_delay` option for FurnitureDoor Mechanic
 * Close-Delay is a duration; 2s (seconds), 3m (minutes), 4t(ticks) etc
- Folia related issues
- Issue with loading FurnitureMechanics on first-time startup
- NexoMechanicsRegisteredEvent not firing post onEnable
- Revert change to Kotlin Coroutines for now
 * Needs more work for issues not discovered in devbuilds
### [Fixes]
- Catch errors better during bootstrapping to prevent plugin not loading
- Issues with AssetCache Pack on first-time startup
- Issues with Consumable-component from 1.10
- Items not updating properties of consumable & some others properly
- ItemModel handling of Select-component type missing property-field
- Issue with repairable component ant empty list definition
- GlyphInfo output being colored incorrectly
- Native Memory leak from PacketEvents handling on very large servers
- ResourcePack serialization issues for more complex ItemModels
- LifeSteal-Mechanic not working for projectiles
- Long startup time due to slow scan for old datapacks
- NexoConverter not converting old chat-section automatically
- Improve 1.21.6+ pre-join ResourcePack error-handling
- Bad removal of some RequiredPack ItemModels
- Formatting of unmodified Player-Chat messages, parsing all MiniMessage tags
 * If this is wanted, `Plugin.formatting.chat_standard_tags` has been added to `settings.yml`
- Placing Furniture with lights overriding adjacent hitboxes
- NexoItems with loaded projectiles being removed when dropping the item
### [Changes]
- Optimize config-loading to not load all configs uneccesarily
- Add `Plugin.packets.disable_glyph_handler` setting to disable all handling of glyphs in packets
  * This includes types not covered by formatting settings
- Improve handling of "Invalid Nexo Furniture"
  * Forces a hitbox and visual item from settings.yml via a fake mechanic
- Make recipes no longer restricted to 1 file per type
  * Now all shaped-recipes are in `Nexo/recipes/shaped/`, etc..
  * Can make as many files as you want and name them whatever you want
- Convert old recipe-format automatically
- Remove sub-properties for durability component
  * Should use related values in tool & weapon components for durability
- Swap away from CompletableFuture to Kotlin Coroutines
### [API]
- Support using NexoBlockPlaceEvent etc for listening for all sub-custom block type events
 * This triggers anytime a NexoNoteBlockPlaceEvent, NExoStringBlockPlaceEvent, etc is called
- Add AdventureUtils#injectTagResolver
### [Features]
- Add Campfire recipe-type
- Add `/nexo reset_custom_modeldata`
  * Removes all set CustomModelData from your NexoItem Configs
- Add `Pack.generation.prefer_item_models`
  * Defaults to false for now (keep current CustomModelData logic)
  * Will by default use ItemModels over CustomModelData for Custom Items
- Add `cancel_event` to CustomMechanic & clickAction to stop the source-event if applicable
- Automatically assign custom_variation for custom-blocks if missing
- Support for NexoBlocks & NexoFurniture in Axiom
  * Requires latest version of [AxiomPaperPlugin](<https://modrinth.com/plugin/axiom-paper-plugin/versions>) & Axiom v5 of the mod
- [Furniture Door Mechanic](<https://docs.nexomc.com/mechanics/furniture-mechanic/door-mechanic>)
  * New **Large Wooden Door** default NexoItem included, made by @six.pngÂ
  * DefaultPack contains the assets, example for ItemConfig on the docs link above
  * Mechanic subject to changes and new features in coming devbuilds
If you enjoy Nexo and the work I do, please consider leaving a review on :mcmodels_smash: [MCModels](<https://mcmodels.net/products/13172/nexo>) or [Polymart](<https://polymart.org/product/6901/nexo/>)
- 1.21.2+ servers using jukebox-songs and/or custom paintings not loading due to bad datapack
- Missing BStats metrics
- Error when removing FurnitureLights & FurnitureBeds on chunk-unload
- NexoPack not properly merging in WaypointStyles
- Send Glyph-Tabcompletion based on permissions
- PlayerInventory title not formatting in øang-files
- PackObfuscator resetting oversized_in_gui
- Playerheads nto properly scaling, showing texture/skin and oversizing on 1.21.6+
- Tablist/Scoreboard shader for 1.21.6+ clients
- Crossbow pulling animation on 1.21.6+ not working
- FurnitureLights being removed on chunk-updates
- Rotation of furniture ignoring onSneak property in WorldGuard regions
- Various fixes to S3 PackServer
- Backpack Mechanic dupe with decorated pots
- Issues with removing barriers on non-player furniture kills
- Folia issues with Custom Blocks
- Improve Packet-Handliong during Configuration Stage (1.21.6+)
 * Ensures packets are handled as early as possible, fixing scenarios where it sometimes did not on joining
- GIF-Shader causing ResourcePack not to load on 1.21.6+
- Moving item in hotbar resetting formatting on 1.21.5+
- Nexo not supporting new ItemModel Components and properties
- Wind Burst enchantment breaking Custom Blocks
- GIFs not displaying properly until atleast one reload
- Stonecutter recipes not supporting permissions & MiscMechanic#allowed_in_vanilla_recipes
- OraxenConverter not working properly
-Â MiscMechanic#allowed_in_vanilla_recipes blocking CustomRecipes in Nexo
- Falling CustomBlocks always dropping even if not broken (@minusten)
- Structures & blocks able to grow into where furniture-hitboxes should be
- General optimization of Packet & Furniture systems
- Automatically set allowed_entities for Equippable Mob-Armors
- Bump Kotlin to 2.2.0
- Swap JukeboxPlayable away from Datapack to Bootstrap registry for 1.21.6+ servers
 * Means less datapacks as the files are directly added to registries during startup
- Make Custom-Block step-sound not apply for mobs
- Remove need for template: true in NexoItems used as ItemTemplates
- Allow multiple ItemTemplates in a NexoItem
- Improve logging of Glyphs used in language-files when not using default-font
- Renamed s3.key to s3.unique_key
 * Nexo by default will set the key to your ResourcePacks hash
 * Can make a static URL that always changes by setting this unique_key in settings
- Disable SaplingTask if sapling_growth_check_delay  is -1 in mechanics.yml
- 1.21.8 support
- Add prevent_item_frames to MiscMechanic to block placing a NexoItem in ItemFrames
- Add Misc.default_allow_in_vanilla_recipes Setting
 * Lets you set if  all NexoItems by default should, or should not, be usable based on their material in vanilla recipes
 * Can override per-item using the MiscMechanic
 * Defaults to false, which is a change from how Nexo currently handles it
- Handle Glyph-Tags in Dialogs
- Support for DeathProtection- & CustomData-Components (1.21.1+)
- Custom Dialogs
- Custom Paintings
 * Add Components.painting_variant to NexoItems
- Furniture Seat/Bed entities not teleported with furniture
- 1.20.4 not loading properly & block breaking issues
- Bunch of minor packet errors
- Scoreboard not  handling glyphs when updated
- Scoreboard handling not taking method into account when writing properties
- Scoreboard/Team color always being white
- Lang-file containing vanilla unmodified-keys not handling placeholders
- Animated Glyphs not working for Text Displays with SeeThrough enabled
- Minor IA converter fixes and tweaks
- CustomRecipes not accepting an item when it has vanilla-recipes disabled via MiscMechanic
- Furnace RecipeBuilder not working
- Bad handling of glyphs in Bossbar
- Handling of Glyph-Tags in "nametags" and other places not properly formatting
- Escape Menu not transforming for some labels
- Global-lang not applying to anything but en_us
- Backpacks opening if dropped at the same time
- "Damageable" error for 1.20.4
- ShowItem HoverEvents not transforming Item-data
- Several issues handling various legacy-text tags
- Anvil-Rename text being blank for some inputs
- Hide Scoreboard/Tablist shaders not working
- Fix Custom Falling Blocks dropping incorrect item
- Placing blocks against furniture with shulker-hitbox removing adjacent block
Â
- Remove converter-command
- Minor NexoConverter fixes
- Reduce amount of unneeded component-transformations
- Add support for 1.21.6 & 1.21.7
- Custom Ghast Harness (1.21.6+)
- Ghast.type Furniture Hitbox (1.21.6+)
 * Allows for collision-hitboxes not restricted to 1x1x1 block-grids
- Significantly improve sending ResourcePack during configuration phase (1.21.7+)
- Improve performance of glyph-system, minimize uneeded checks, etc..
- Clean up old PackSquash Cached packs, add Pack.generation.packsquash.cache_size
- Add Pack.oversized_in_gui & Pack.hand_swap_animation for new ItemModel properties
- Set ERROR_ITEM on Invalid NexoFurniture to visually show better, broken furniture
- Bow & Crossbow pulling for 1.21.4+
- IA Converter issue on 1.20.6
- Placing of furniture on 1.20.6
- EmojiBook only displaying 1 Glyph per page
- Nullpointers & Dyeable issue on 1.21.1
- Add Lang-file validation for using Glyphs not from default font
 * Setting can toggle this off, mainly for informing about escape menu glyph usage
- Move Glyph `permission`, `placeholders` &  `is_emoji` properties out of  `chat`-section
 * `myglyph.chat.permission` ->  `myglyph.permission`
 * Make NexoConverter auto-convert glyph-configs for this change
- Rename `plugins/Nexo/languages/` to `plugins/Nexo/messages/`
- Add `languages.yml` for translation files
 * Keys registered here will be used for ResourcePack Language files
 * Can be used instead of such JSON files inside resourcepack
- Support for `<lang>` tag in Nexo with custom translation-keys possible
 * Define language-keys in a resourcepack-lang file or `languages.yml`
 * Can be used in chat, items, titles, and anywhere text renders
- Furniture Hardness support
 * Defaults to 0, or insta-break
 * `hardness` is the property, higher value means longer to break
- Animated Glyphs / GIFs
 * Can be used in chat, items, text-display entities and anywhere text renders
- Issues parsing Glyph-tags in TAB
- Bad setting-id for `Glyphs.default_font`
- Furniture-Lights not working due to converter overriding it
- CustomName/Display Name not being formatted for items
- Handle glyph-tags & placeholders in commands
- Folia not being supported after swapping to Paper Plugin
- Fixed blocks getting deleted when placing against FIXED furniture with an interaction hitbox above
- GlyphInfo command now displays formatted unicodes if using a non-default font
- Resolved ReferenceGlyph indexing issues
- Fixed bow/crossbow pull model rendering
- Further optimized furniture
- Corrected dropped item type for connectable furniture
- Glyph-Shadow tag not working
- Anvil-handling for 1.21.1 and below
- Sapling-Mechanic not growing schematics
- BoneMeal not working to speed up Sapling growth
- Furniture unload issue during chunk-unload
- Glyph-Hover text not working
  * Can be changed in settings.yml
  * `<glyph_placeholder>` & `<glyph_id>` are placeholders
- Issue generating Nexo-Pack from previous devbuild,
- Comments & changes to NexoItem configs being removed,
- ItemsAdder converter issue with moving resourcepack files correctly in some cases
- ResourcePack failing to generate under restrictive network situations
- Glyphs not being parsed in packets sent from PacketEvents
Â
- Custom-Mechanic BREAK type not applying for Custom-Blocks being broken
- Removed EcoItem support
- Shade dependencies inside Nexo (less runtime downloads)
- Improved packet handling with toggle settings for bossbars, scoreboards, and chat
  * BossBar handling is off by default if MythicHUD or similar is detected
- Added `Glyphs.default_permission` and `Glyphs.default_font` in settings.yml
  * Acts as fallback for glyphs missing specific values
  * Permission can use `<glyphid>` placeholder
Glyph- & ShiftTags parsed in item & lore from any plugin or command
- Swap the default Glyph-Font to `nexo:default`
- Or*xen & ItemsAdder converter structure changes
  * Nexo now converts from plugins/Nexo/converter/(ItemsAdder or Oraxen) anytime they exist
  * No longer tries to format Or*xen files in Nexo/items & Nexo/pack every reload
- Remove old CustomBlock Datapack & use fancy LifeCycleEvents to replace it
Â
- Add `nexo.resourcepack.bypass` permission for bypassing mandatory-packs,
- Add `Mechanics.furniture.properties.offset_against_blocks`
  * Makes the furniture not offset visually when placed against a slab, carpet, etc
- Add `Pack.throwing_model` to auto-generate ItemModel for Custom Tridents
- Add `Mechanics.trident.damage` to customize trident-projectile damage,
- Add `Mechanics.armor_effects.reset_on_unequip` to remove effects when a piece is removed,
- New `shadow` argument for GlyphTags
  * Supports HEX or RGB colors for shadows or none (e.g., `<glyph:example:shadow:#FFFEFEFE>`)
- Fully reworked dyeable item system (MC 1.21.1+)
  * Any item with, `Pack.dyeable_model` /  A default `color` is set / naturally dyeable material, can be dyed:
- Merged dyed/undyed NexoItems into one
  * `arm_chair` and `arm_chair_dyeable` → `arm_chair`
  * Updated default configs here
- Added `nexoConverter.furnitureConverter` to `converter.yml` to convert old placed furniture if ID changes
- Convert Nexo to a PaperPlugin
- Fixed blocks getting deleted when placing against FIXED furniture with an interaction hitbox above
- GlyphInfo command now displays formatted unicodes if using a non-default font
- Resolved ReferenceGlyph indexing issues
- Fixed bow/crossbow pull model rendering
- Further optimized furniture
- Corrected dropped item type for connectable furniture
- Glyph-Shadow tag not working
- Anvil-handling for 1.21.1 and below
- Sapling-Mechanic not growing schematics
- BoneMeal not working to speed up Sapling growth
- Furniture unload issue during chunk-unload
- Glyph-Hover text not working
  * Can be changed in settings.yml
  * `<glyph_placeholder>` & `<glyph_id>` are placeholders
- Issue generating Nexo-Pack from previous devbuild,
- Comments & changes to NexoItem configs being removed,
- ItemsAdder converter issue with moving resourcepack files correctly in some cases
- ResourcePack failing to generate under restrictive network situations
- Glyphs not being parsed in packets sent from PacketEvents
Â
- Custom-Mechanic BREAK type not applying for Custom-Blocks being broken
- Removed EcoItem support
- Shade dependencies inside Nexo (less runtime downloads)
- Improved packet handling with toggle settings for bossbars, scoreboards, and chat
  * BossBar handling is off by default if MythicHUD or similar is detected
- Added `Glyphs.default_permission` and `Glyphs.default_font` in settings.yml
  * Acts as fallback for glyphs missing specific values
  * Permission can use `<glyphid>` placeholder
Glyph- & ShiftTags parsed in item & lore from any plugin or command
- Swap the default Glyph-Font to `nexo:default`
- Or*xen & ItemsAdder converter structure changes
  * Nexo now converts from plugins/Nexo/converter/(ItemsAdder or Oraxen) anytime they exist
  * No longer tries to format Or*xen files in Nexo/items & Nexo/pack every reload
- Remove old CustomBlock Datapack & use fancy LifeCycleEvents to replace it
Â
- Add `nexo.resourcepack.bypass` permission for bypassing mandatory-packs,
- Add `Mechanics.furniture.properties.offset_against_blocks`
  * Makes the furniture not offset visually when placed against a slab, carpet, etc
- Add `Pack.throwing_model` to auto-generate ItemModel for Custom Tridents
- Add `Mechanics.trident.damage` to customize trident-projectile damage,
- Add `Mechanics.armor_effects.reset_on_unequip` to remove effects when a piece is removed,
- New `shadow` argument for GlyphTags
  * Supports HEX or RGB colors for shadows or none (e.g., `<glyph:example:shadow:#FFFEFEFE>`)
- Fully reworked dyeable item system (MC 1.21.1+)
  * Any item with, `Pack.dyeable_model` /  A default `color` is set / naturally dyeable material, can be dyed:
- Merged dyed/undyed NexoItems into one
  * `arm_chair` and `arm_chair_dyeable` → `arm_chair`
  * Updated default configs here
- Added `nexoConverter.furnitureConverter` to `converter.yml` to convert old placed furniture if ID changes
- Convert Nexo to a PaperPlugin
- Various Paper 1.21.5 & Folia issues
- Glyph Chat-placeholders not enclosing color correctly
- Multi-Bitmap & Reference glyph issue with last index
- Breaking top of a tall StringBlock not removing bottom
- Add `nexo:block/tall_plant` parent-model for use with tall StringBlocks
- Connectable furniture not attaching end-piece correctly against a corner until updated
- Custom Chorus-Type block breaking from flowing water
- Provided ItemModels with non-default hand-swap property not being respected
- Invalid scale value causing Crossbow/Bow inaccurate pulling models
- BrewingRecipe-builder not working
- add "self" option to SoundAction for playing sounds at player or player location
- Furniture Barrier-Hitbox issue with multi-world setups
 * Blocks sometimes being removed if the coordinates match up
- Custom blocks/furniture still dropping when drop-section has specified `loots: []`
- Nexo-Items not being allowed in MythicMobs Equipment section
 * `- nexo:itemid` SLOT is the format (`nexo itemid` will not work)
- Optimize furniture more cuz ynot
- Move most handling of Glyphs in Chat to packets instead
 * Removes need for ChatHandler setting
- Custom  Tridents
 * Includes Forest Trident by Six
Note: same as earlier with some crucial fixes for older versions
- Various Folia-related issues
- Not able to enable mob-furniture-collision checks
- Lore not accepting blank "" strings
- Nullpointer when using CustomModelData component and not in Pack
- Improve BlockLocker-Compatibility
- Shulker FurnitureHitboxes not removed with furniture
- CHORUSBLOCK issues with resourcepack
- Chorus CustomBlocks not showing correct model ingame placed
- hide_scoreboard_numbers setting not working
- WorldEdit tabcompletion & accepting input
- Shulker FurnitureHitboxes not working
- Stringblock removing block beneath when broken
- PlayerHead & certain other ItemModels not merging properly
- SelfHost PackServer not working
- Merging/repairing damaged custom armor not outputting custom armor item
- `CustomBlock is_falling` spawning a drop when placed
- Settings not reloading properly
- Pack not sending to players if they joined before pack was uploaded
 * only if send_on_reload was disabled
- No NexoBlockEvent's called for generic customblocks (Carpentry mainly)
- Sync backpacks for each inventory action to prevent packet manip
- Sapling Mechanic for STRINGBLOCK not working
- Main-hand not swinging when bone-mealing sapling stringblocks
- Add particle effect to stringblock-mechanic sapling-growth
- More furniture optimization
- Rework WorldEdit compatibility logic
- Add `visible` arg to ShulkerHitbox for debugging
 - offset length direction visible
- Rewrite MythicMobs drop-compatibility
- Trigger Cooldowns, if item has component, for certain actions
  * Placing Furniture/Custom Block, opening Backpacks, Certain spell & other misc mechanics
- Allow furniture hitbox type to be specified with a generif suffix instead of own section:
  * This is in addition to the normal current format
myitem:
Mechanics:
furniture:
hitbox:
- 0,0,0 BARRIER #or B
- 0,1,0 1,1 INTERACTION #or I
- 0,2,0 1.1 1.1 SHULKER #or S
- Connectable-Furniture
- Various Folia-related issues
- Not able to enable mob-furniture-collision checks
- Lore not accepting blank "" strings
- Nullpointer when using CustomModelData component and not in Pack
- Improve BlockLocker-Compatibility
- Shulker FurnitureHitboxes not removed with furniture
- CHORUSBLOCK issues with resourcepack
- Chorus CustomBlocks not showing correct model ingame placed
- hide_scoreboard_numbers setting not working
- WorldEdit tabcompletion & accepting input
- Shulker FurnitureHitboxes not working
- Stringblock removing block beneath when broken
- PlayerHead & certain other ItemModels not merging properly
- SelfHost PackServer not working
- Merging/repairing damaged custom armor not outputting custom armor item
- `CustomBlock is_falling` spawning a drop when placed
- Settings not reloading properly
- Pack not sending to players if they joined before pack was uploaded
 * only if send_on_reload was disabled
- No NexoBlockEvent's called for generic customblocks (Carpentry mainly)
- Sync backpacks for each inventory action to prevent packet manip
- Sapling Mechanic for STRINGBLOCK not working
- Main-hand not swinging when bone-mealing sapling stringblocks
- Add particle effect to stringblock-mechanic sapling-growth
- More furniture optimization
- Rework WorldEdit compatibility logic
- Add `visible` arg to ShulkerHitbox for debugging
 - offset length direction visible
- Rewrite MythicMobs drop-compatibility
- Trigger Cooldowns, if item has component, for certain actions
  * Placing Furniture/Custom Block, opening Backpacks, Certain spell & other misc mechanics
- Allow furniture hitbox type to be specified with a generif suffix instead of own section:
  * This is in addition to the normal current format
myitem:
Mechanics:
furniture:
hitbox:
- 0,0,0 BARRIER #or B
- 0,1,0 1,1 INTERACTION #or I
- 0,2,0 1.1 1.1 SHULKER #or S
- Connectable-Furniture
- Various Folia-related issues
- Not able to enable mob-furniture-collision checks
- Lore not accepting blank "" strings
- Nullpointer when using CustomModelData component and not in Pack
- Improve BlockLocker-Compatibility
- Shulker FurnitureHitboxes not removed with furniture
- CHORUSBLOCK issues with resourcepack
- Chorus CustomBlocks not showing correct model ingame placed
- hide_scoreboard_numbers setting not working
- WorldEdit tabcompletion & accepting input
- Shulker FurnitureHitboxes not working
- Stringblock removing block beneath when broken
- PlayerHead & certain other ItemModels not merging properly
- SelfHost PackServer not working
- Merging/repairing damaged custom armor not outputting custom armor item
- `CustomBlock is_falling` spawning a drop when placed
- Settings not reloading properly
- Pack not sending to players if they joined before pack was uploaded
 * only if send_on_reload was disabled
- No NexoBlockEvent's called for generic customblocks (Carpentry mainly)
- Sync backpacks for each inventory action to prevent packet manip
- Sapling Mechanic for STRINGBLOCK not working
- Main-hand not swinging when bone-mealing sapling stringblocks
- Add particle effect to stringblock-mechanic sapling-growth
- More furniture optimization
- Rework WorldEdit compatibility logic
- Add `visible` arg to ShulkerHitbox for debugging
 - offset length direction visible
- Rewrite MythicMobs drop-compatibility
- Trigger Cooldowns, if item has component, for certain actions
  * Placing Furniture/Custom Block, opening Backpacks, Certain spell & other misc mechanics
- Allow furniture hitbox type to be specified with a generif suffix instead of own section:
  * This is in addition to the normal current format
myitem:
Mechanics:
furniture:
hitbox:
- 0,0,0 BARRIER #or B
- 0,1,0 1,1 INTERACTION #or I
- 0,2,0 1.1 1.1 SHULKER #or S
- Connectable-Furniture
Note: Same as the earlier jar with a few crucial fixes
- Various Folia-related issues
- Not able to enable mob-furniture-collision checks
- Lore not accepting blank "" strings
- Nullpointer when using CustomModelData component and not in Pack
- Improve BlockLocker-Compatibility
- Shulker FurnitureHitboxes not removed with furniture
- CHORUSBLOCK issues with resourcepack
- Chorus CustomBlocks not showing correct model ingame placed
- hide_scoreboard_numbers setting not working
- WorldEdit tabcompletion & accepting input
- Shulker FurnitureHitboxes not working
- Stringblock removing block beneath when broken
- PlayerHead & certain other ItemModels not merging properly
- SelfHost PackServer not working
- Merging/repairing damaged custom armor not outputting custom armor item
- `CustomBlock is_falling` spawning a drop when placed
- Settings not reloading properly
- Pack not sending to players if they joined before pack was uploaded
 * only if send_on_reload was disabled
- No NexoBlockEvent's called for generic customblocks (Carpentry mainly)
- Sync backpacks for each inventory action to prevent packet manip
- Sapling Mechanic for STRINGBLOCK not working
- Main-hand not swinging when bone-mealing sapling stringblocks
- Add particle effect to stringblock-mechanic sapling-growth
- More furniture optimization
- Rework WorldEdit compatibility logic
- Add `visible` arg to ShulkerHitbox for debugging
 - offset length direction visible
- Rewrite MythicMobs drop-compatibility
- Trigger Cooldowns, if item has component, for certain actions
  * Placing Furniture/Custom Block, opening Backpacks, Certain spell & other misc mechanics
- Allow furniture hitbox type to be specified with a generif suffix instead of own section:
  * This is in addition to the normal current format
myitem:
Mechanics:
furniture:
hitbox:
- 0,0,0 BARRIER #or B
- 0,1,0 1,1 INTERACTION #or I
- 0,2,0 1.1 1.1 SHULKER #or S
- Connectable-Furniture
- Breaking string on block, removes below block
- Pickblock on 1.21.4 duping items in non-creative
- NexoMechanicsRegisteredEvent being called next-tick on reload
 * Caused custom mechanics to not register on reloads
- Message Click-Action using legacy formatting
- `armor_effects` mechanic `requires_full_set` not working
- Undefined drop/loots section not causing base-item to drop
- PreJoin Pack-sending not working
- StringBlock `placeable_on_water` not working
- CustomBlock Block-breaking speed bad calculations
 * Inconsistent speeds based on hardness & tool used
- FurnitureHitbox being sent to all worlds
- Unloading/Loading world not properly refreshing Furniture-Hitboxes
- Improve Furniture BarrierHitbox & FurnitureLight sending by using custom packets
 * Fixes conflicts with other plugins and nexo reading the one it sends twice
- Optimize NexoItem updating of Tile-Entities
- Optimize various Furniture checks
- 1.21.5 Support
- Bed-Mechanic for Furniture
 * Add Double-Bed and Double-Bed Dyeable default item-configs