
🔌Nexo 1.4
Custom Blocks, Items, Furniture, ResourcePack & more
[Fixes]
- 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
[Changes]
- 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
[Features]
- 1.21.5 Support
- Bed-Mechanic for Furniture
 * Add Double-Bed and Double-Bed Dyeable default item-configs
[Fixes]
- Anti-Cheat support for walking on Furniture-Hitboxes
- CustomBlock PickBlock not working for 1.21.4
- Nexo overriding manually provided CustomArmor files
- Various 1.20.4 server-issues
- Not allowing Furniture-lights inside Furniture-Interaction Hitboxes
- Directional CustomBlocks not properly stripping into another Directional CustomBlock
- Scoreboard connection issue due to bad scoreboards from third-party plugins
- Certain Tooltip properties not hidden when using ItemFlags
- Legacy Inventory-Titles breaking due to shifts forcing custom font
- PickBlock not working for barrier hitbox furniture on 1.21.3 and below
- Disconnect issues from plugins providing "null" values in Scoreboards
- Nexo not scanning every Glyph-file before auto-assigning chars, leading to duplicates
- PlayerHead models not working on 1.21.4 if changed, rescaled etc (flat head textures)
- Improve ItemConverters for IA and Oraxen
- Chests, Entities and other blocks that hold NexoItems get updated
- Bundle-Content being reset in NexoItems on updating
- Shift-Glyphs always being negative values / move left
- FurnitureHitboxes dissapearing during some chunk-refreshes (mainly worldedit)
- WorldEdit tabcompletion for CustomBlocks not working
- Entire pack not loading in some cases when provided a bad file and pack-reading is set to lenient
Â
[Changes]
- Improve CustomArmor file generation for COMPONENT armor
- No longer require Pack.CustomArmor to specify layer1 & layer2 property for all armor items
 * HELMET & CHESTPLATE need layer1, LEGGINGS & BOOTS need layer2
- Handle Stone/Wood replacement sound on packet level
 * Fixes issue where playing block.stone.X in other plugins/commands would be silent
- Update ResourcePack Creative-library to support 1.21.4 files
 * Decreases ResourcePack load-times
 * No more hacky fix for converting 1.21.3 files to 1.21.4 format
- Remove Adventure from SpigotLibraryLoader to lower startup-time (bundled in Paper)
- Rework & optimize Furniture-Packet logic
 * send less packets, use less memory, faster allocation
- Rework CustomBlock-API for upcoming Addon
[Features]
- Allow placing ItemFrames, Paintings, ArmorStands & other "unstable" blocks/entities ontop of Furniture
- Add `default_rotatable_on_sneak` to furniture-section in mechanics.yml
- Add `category`-property to recipes for RecipeBook
- Add ReferenceGlyphs
 * Lets you make a "Sub Glyph" of another to reference certain unicodes
- Expand Furniture-interaction logic with more WorldGuard-Flags & API
 * Can now deny all interactions, but specifically allow sitting, toggling lights, running clickactions etc in a region
- Support for new Custom Elytra, Â Wolf-Armor, Horse-Armor & Llama-"armor" (1.21.2+ only)
 * Follows same logic as normal custom armor
 * Adds a `elytra`, `horse_armor`, `wolf_armor` & `llama_armor` field to `Pack.CustomArmor`
 * By default it will look for `armorname_elytra`, `armorname_horse_armor`, `armorname_wolf_armor` & `armorname_llama_armor` for the PNGs if not specified in `Pack.CustomArmor`-fields
- Add Forest Elytra Default NexoItem
- Add Nexo Horse-, Wolf- & Llama Armor Item-Configs & textures
 * Update Docs with info on [Custom Elytras](https://docs.nexomc.com/configuration/custom-armors/custom-elytras-1.21.2+) & [Mob-Armor](https://docs.nexomc.com/configuration/custom-armors/components)
[Fixes]
- Furniture placeable inside non-full interaction hitbox furniture
- Blocks placeable in interaction-hitbox furniture
- Various minor IA-Converter issues
- Composite-models in ItemModels not being obfuscated
- Items loading twice on startup
- CustomArmor-textures not working when helmet is 3d Model
- Overriding vanilla consumable-component if not specified in config
- ItemUpdater not setting lore if old-item had no lore
- Minor Folia issues
- Overrides not merged if non-default base-model provided
- NexoItems using JIGSAW & other blocks not showing correctly on 1.21.4
- Long loading times due to Trims CustomArmor
- Rotation & light-toggle issues for interaction-hitbox furniture
- NoteBlockDatapack not adding 1.21.4 wood-types, causing slow mining on Pale-Oak blocks
- Custom step-sound for furniture async issue
- Issue with LimitedPlacing radius checks
- S3 & LobFile PackServer issues
- Issues with repairable-component
- Glyph tabcompletion not working
- Incorrect drop-amounts in some cases
- GlyphTags not working in Scoreboard
- Chorus customblock sounds not working
- Stone step/fall sounds not working
- PickBlock not working on 1.21.4 for furniture & custom blocks
- Improve MythicMobs drop-hook
- Incorrect interaction-point for interaction-hitbox furniture interactions
[Changes]
- Allow decimal custom-block hardness values
- Dont reload recipes on reload due to paper-issue
 * Server is resending all recipes for each recipe, causing large amounts of lag. Unfixable on our end
 * Server-restart required for recipe-changes to take effect
- Change syntax for give & take commands, `/nexo give <itemid> [amount] [player(s)]`
- Restructure CustomBlock sections in `mechanics.yml`
 * `noteblock`, `stringblock`, `chorusblock`-sections moved under a shared `custom_blocks` section
 * `tool_types` property moved out of sub-mechanics and into `custom_blocks`- section. Can be defined in subblock aswell
 * Move `custom_block_sounds` under shared one in `custom_blocks`
[Features]
- Improved Glyph-backend
- Rewrite Packet-Handler to significantly improve read/write performance
- Transform glyph & shift-tags in Toast Popup
- Allow making multi-bitmap glyphs directly in one Glyph
 * Removes need for bitmaps.yml
 * A glyph can take a list of unicodes
 * Can be assigned automatically by setting a `columns: X` and `rows: Y` in Glyph-config
 * [More info here](https://docs.nexomc.com/configuration/glyphs#multi-bitmap-glyphs)
- Add bitmapIndex to glyph-tag, `<glyph:glyphid:X> / <glyph:glyphid:X..Y>
 * Displays the char with said index, can be a range aswell
- Improve memory-usage & generation-times for larger resourcepacks
[Features]
- Folia Support
- PackSquash integration
 * Download from their GitHub
 * More info can be found on docs
- WorldGuard `nexo-furniture-interact` flag to override other flags, defaults to "undefined"
- Optimize ResourcePack generation times, caching & filesizes
- Add LobFile PackServer
 * Requires API-Key from your LobFile account
- Add S3 PackServer type
- Drop Spigot Server Support
[Fixes]
- ItemModel not working with Pack-Obfuscation
- Bunch of minor ItemsAdder- & NexoConverter issues
- IA Converter breaking NexoItems on 1.20.4 servers
- CustomArmor issues when not using automatic layer-texture system
- Issues with datapacks enabling & custom armor using TRIMS
- ModelEngine-furniture not breaking when hitting ModelEngine hitbox
- Resourcepack sending when both on_join & pre_join are disabled
- PackValidation not excluding ItemModel files for <1.21.3-servers
- Various PackObfuscation issues
- TrimPattern being reset when updating NexoItem
- Add brewing recipe-builder command
- Disable formatting of displaynames in anvils
- Furniture step-sound in non-solid hitbox
- Placing blocks inside furniture-barriers sometimes
- Warn if texture would lower the mipmap-level on the client
- Custom-Block mining-speed not calculating Attributes from other sources
- Issues saving recipes
- Renamed items losing customname when enchanted in anvil
- Parent-Model Display-properties not inherited when overriding texture
- Entities with WIND_CHARGED exploding custom blocks on death
[Features]
- ItemsAdder v4 -> Nexo Converter
 * Ensure you follow the guide here: https://docs.nexomc.com/migrate/itemsadder-nexo
 * There might still be some issues & bugs, please report these if you find them
- Improve performance & handling of item-lookups & API
- Add Furniture Shulker-type hitbox
 * Collision-hitbox, like barrier, but with options for length & scale like interaction
 * https://docs.nexomc.com/mechanics/furniture-mechanic#hitboxes
- BrewingStand recipes
- Make ItemFlags hide Tooltips for 1.20.5+ servers
- `group` property for recipes
 * Groups all shared group-id recipes in RecipeBook
- Add `Glyphs.shift_font` setting to specify the font used for shifts
[Fixes]
- Custom Blocks not placeable against iron trapdoor whilst sneaking
- CustomBlock dropping at wrong location
- Async entity checks
- Breeze WindCharges breaking custom blocks
- Using TRIMS CustomArmor breaking recipes
- Improve Furniture Barrier-Hitbox performance, flickering and passthrough
- Stone place-sound played twice
- Minor fix to LimitedPlacing-replacability
- Issue with desynced furniture-hitbox
- Entities spawned on furniture taking falldamage
- Placing furniture against trapdoors
- Pasting with WorldEdit removing furniture barrier-hitboxes in given chunks
- Pack Mcmeta not merging properly between packs
- Various issues with ModelEngine Compatibility
- Furniture-offset not correct on slabs when furniture-config has translation defined
- Various issues with Drops
- CustomBlock-sounds not playing correctly when using block.stone/wood.X
- ModelEngine-pack not working for 1.21.4+ servers when Pakc.obfuscation is SIMPLE or FULL
- Generation of player-head models on 1.21.4
- NexoChorusBlockPlaceEvent not being called
- Cancelling regular noteblock events with `reimplement_noteblock_features` enabled
- Placing blocks on prohibited locations while using offhand & sneak
- FurnitureMechanic#isInteractable not handling sneaking + rotation correctly
 * Made furniture not placeable against eachother in certain scenarios
- VersionPatcher not finding certain models on 1.21.4 servers
- ItemUpdater not updating TrimPattern for CustomArmor
[Features]
- Add CHORUSBLOCK-type CustomBlock for transparent blocks & leaves
- Restructure Light-Mechanic LINK
- Add Lights#toggled_item_model, reference new JSON-Model in assets/namespace/models/item/x.json (namespace:x)
- Add `Pack.import.from_url` to import a ResourcePack into Nexo from a URL
- New way to define Custom Armor Layer Textures LINK
 * The old automatic system will still work and is the default if no such section is defined
[Fixes]
- Bunch more issues for 1.21.4 compatibility
- Issue with CustomBlocks marked as "falling" for third-party plugins
- Issues with Furniture & WorldEdit Copy/Pasting & Selecting
- Bad obfuscation of vanilla-override resourcepack-models
- Formatting glyph-tags in Entity Nametags
- Shifts not using custom-font
- Improve waterlogging of furniture
- Best-tool AXE defaulting to PICKAXE
- Issue reading ModelEngine ResourcePack on latest devbuilds
- Metrics not registering (Cause of huge dip on BStats)
- Kicking players not working when on Furniture
[API]
- Add ChorusBlockMechanic
- Add Events for ChorusBlockMechanic
- Add ChorusBlock methods to NexoBlocks-Class
[Features]
- Add `Mechanics.furniture.waterloggable` - Place furniture underwater and have barrier hitboxes waterlogged
- Add `Mechanics.furniture.lights_model` - Different NexoItem displayed when lights are 'on'
- Add `Mechanics.custom_block.immovable` - Prevent CustomBlock moved by pistons
- Handle Glyphs in chat on a packet-level for improved chat-handling
[Fixes]
- Optimize Furniture-handling for improved performance on large servers
- Furniture not showing when a chunk is reloaded
- Furniture-PickBlock feature not working in Creative Mode
- Furniture being "equippable" when using ARMOR materials
- Offset FurnitureSeat when furniture is placed on slabs,carpet etc
- Stacking furniture on Slabs, carpet & snow not correcting offset
- Step/fall sound not working for furniture
- `/nexo take`-command not working
- Bad rotation when sitting on a FurnitureSeat inside a Furniture-barrierhitbox
- TRIMS-CustomArmor not enabling datapack always & bad namespacing
- Sort-order for `Pack.import.external_pack_order`
- NexoInventory not supporting non-default fonts
- DyeCommand not working without NexoLibs
- CustomBlock Hit-sounds not working
- Filter out ItemModels from RequiredPack on 1.21.4 servers
- TTF-fonts overriding Nexo-shifts
- FoodComponent-replacement not working for 1.21.1
- Bow-pulling animations & model-tinting for 1.21.4 servers
- Various other 1.21.4 ResourcePack issues
- Snowfall overriding furniture-hitbox
- Logstrip mechanic not working
- WindCharges exploding Custom Blocks
- Issues with drop-amount and fortune-tools
- Issues placing lilypad & frogspawn on furniture barrier.hitbox
- NexoItems with imported Crucible/MMOItem items not assigning CustomModelData correctly
[Misc]
- Make Nexo generate models from itemid with lowercase
- Make NexoLibs optional to avoid Libby-handling of dependencies
 * More stable, requires rare manual updates
- Add some misc-settings
 * `Pack.generation.minimize_json` - compacts model-files
 * `Pack.import.model_engine.exclude_shaders` - excludes core-shaders as they might break the pack
[API]
- Cancelling NexoBlockBreakEvents not cancelling associated BlockBreakEvent
- Add `NexoFurniture#findTargetFurniture`
- Fix NexoFurnitureInteractEvent triggering twice
- Minor Drop-API changes
[Features]
- Improved performance of furniture-handling & glyph-handling
- Setting to block third-party resourcepacks from overriding Nexo's
- `Misc.block_other_resourcepacks`, defaults to false
- Setting to disable Glyph-packet handling `Plugin.formatting.packets`
- Format glyphs & shifts in more spots via packets
- Tablist, footer/header & player-entries, BossBars
- EntityData, TextDisplays, nametags etc
- Resourcepack Prompt screen
- Disconnect/Kick-screen reason, Server List MOTD, ServerLinks
- Add setting to mechanics.yml to disable furniture custom soundsAllow placing furniture on slabs, carpet with correct spacing
- Barrier-hitboxes will not be corrected but interaction-hitbox will
- Allow Furniture barrier-hitboxes to be defined via integer-ranges
- in_explosion for loot-drops, drops item when a custom-block explodes, defaults to false
- Will drop even for blast-resistant blocks
[Fixes]
- Players kicked due to uncatched errors in packet-handling
- Attempt to format legacy-text in packets
- Pack-overlays containing ItemModel overriding nexo-generated ones
- Minor issues in formatting some text in some packets
- Overlays not overriding vanilla files properly
- Glyphs not being properly replaced in some cases
- Inproper furniture-hitbox spacing check
- AdventureMode players allowed to break furniture
- Use reference to shift-font for all fonts
- Make "null" components remove from base-item
- Prevent furniture from being consumable & equippable
- If base is leather horse/player armor or potions
- Middle-click (pickblock) not working for stringblock-blocks
- NexoStringBlockInteractEvent not being called
- Swap dyeable nexo-furniture defaults to use FILLED_MAP
- POTION/TIPPED_ARROW override ItemName
- CustomBlockMechanic#blast_resistant not working
- Dupe with Backpack mechanic item using BUNDLE
- Bad rotation for FIXED furniture when placed on bottom-wall
- Bad "reuse-custommodeldata" check
- Not checking placement perms for placing blocks against furniture
- Nexo-generated models missing Display-properties
- Existing furniture not retaining color when converted from Oraxen
- Teleporting furniture not updating hitboxes
- Drop axiom-compat in favor of teleport-handling
- Spigot & 1.20.4 oopsies
[Features]
- Allow not caching items
- Mainly useful for MMOItems imported that have randomized stats
- Add `/nexo dye` command
- Supports HEX (#123456), RGB(255,255,255) & NamedTextColors(red,blue,...)
[Fixes]
- Issue with sometimes loading certain libraries
- Default/Required packs not downloading due to broken token
- Fail-safe added, wont happen in the future
- Various visual bugs for items & armor when cross-play 1.21.3 & 1.21.4 using ViaVersion
- give-command throwing error when amount is above max-stack-size
- Tweaks to default item-configs
- Sapling-mechanic not being converted in OraxenConverter
- Kicking not working due to furniture-hitbox check
- Namespaced custom-armor not properly registering
- Notify when ModelEngine auto-import failed
- Improve performance
[Fixes]
- Default assets not downloading due to broken token
- Furniture FIXED placed on wall not correctly offset
- Update/convert Nexo items held by entities & armor-stands on load
- GlyphHandler not always parsing Nexo-tags
- Support language-tags in GlyphHandler
- Interacting with furniture removing adjacent blocks if holding non-block item
- Client kicked when afking on furniture
- Will still "spam" console, recommend enabling allow-flight in server.properties
- 99% of hacked clients bypass this, the setting breaks more than it fixes tbh
- Furniture-Seats not updating if offset changed on reload
- Textures above 512x512 being flagged if used partially in uv-mapping
- FurnitureMechanic#rotatable now can be specified to only work when sneaking
- Ignoring light_emission property for models
- Prefix not changing on reload
- Minor Spigot tomfooleries
[Fixes]
- Bunch of resourcepack issues for 1.21.4
- Placing furniture ontop of other furniture
- "interactable" furniture requires sneak+click
- Spamming interact with furniture allowing walking through hitbox
- Mobs ignoring furniture-hitbox
- Optimize furniture-hitbox performance
- Furniture not being able to be rotated with complex hitboxes
- Directional-subblocks not inheriting model-peoperty from parent if undefined
- Improve feedback when two items use the same CustomModelData
- Minor issues with crop/evolution mechanic
- OraxenConverter improperly setting material for non-armor helmets
- Obfuscation not handling textures & parent-models
- Significantly improve obfuscation & validation times for large packs
- Automated pull/damage override-predicates using incorrect values
- Â Tweak default language-files
[API]
- Fix setting NexoFurnitureInteractEvent#useFurniture to DENY not preventing interactions
- Add NexoFurnitureInteractEvent#blockFace
[Fixes]
- Fix false-positives in popular Anti-Cheats (Vulcan & Spartan)
- Shield, armor & dyeable items not correctly showing on 1.21.4
- Placing furniture against furniture not working
- Breaking furniture "using" item held in hand
- Incorrect behaviour when placing furniture against other furniture
- Incorrect behaviour when placing against "interactable furniture"
- OraxenConverter not importing all glyphs (Broken escape menus etc)
- Reusing ItemTemplate overriding Pack-info for a given item
- Reloading Nexo not fetching missing pack/.assetCache
- Optimize ResourcePack handling
[New]
- Support for 1.21.4
- Add setting to control initial CustomModelData value
- Add
ConfigTools.remove_invalid_furniture
to remove invalid furniture on entity-load
[Fixes]
- Optimize Furniture Packet-sending
- Toggling lights not updating for surrounding players
- Furniture-lights overriding blocks (client-side only / ghost blocks)
- Furniture-clickaction running twice (mainhand + offhand)
- Components not set properly for 1.20.4-1.21.1
- PackValidator not accounting for paletted_permutations
- Water flowing through furniture barrier-hitboxes
- Parse Optifine-MCMeta files properly
- Minor issues with vanilla noteblocks
- TRIMS-datapack not auto-enabling on paper servers
- Â
[API]
- NexoFurnitureBreakEvent not properly cancelling
- Expose packurl & hash in NexoPackUploadEvent