fix: batch recipe registration into one resource reload
Development builds
Latest builds
fix: fire onInventoryTake/onInventoryPlace on cursor swap (#10010)
fix: <item.slot> returned -1 on ~onDragDrop (#10011)
fix: armor trims lost when the item updater rebuilds items
fix: a lot of mechanic / furniture bug fixes and recipe code cleanup
fix: item, recipe, furniture and pack generation bugs
View 17 more changes
- - The toggleFurnitureLights mechanic never worked at all; it is now recognised.
- - A recipe with no ingredients no longer breaks every recipe loaded after it.
- - Augment socket items are no longer always rejected when a slot has no set limit.
- - Lore template lines using <lore.stats> now actually appear on the item.
- - One bad skill line no longer stops the whole item from loading.
- - consumeAmmo and reloadAmmo no longer error when no extra skill is configured.
- - Pack generation no longer fails for bows and crossbows with custom pull stages.
- - Wings armour now uses its own texture instead of the leggings one.
- - Mushroom stem custom blocks now get their model file in the right place.
- - Setting wrap to 0 on an item placeholder no longer freezes the server.
- - The augment icon placeholder no longer errors when no slot number is given.
- - Unbreaking now works properly; it previously did nothing at low levels and made items unbreakable at high ones.
- - Furniture listactive with a type filter now shows the real count instead of 0.
- - Opening a furnace item repeatedly no longer slows the server down over time.
- - Crafted items can no longer silently disappear when the inventory is nearly full.
- - Reloading no longer stacks up duplicate item update listeners each time.
- - Font image names containing numbers now resolve correctly.
fix: furniture variables not saving or reading back
View 7 more changes
- - Variables set on furniture no longer vanish instantly; previously they only worked if the furniture had a Variables section, KeepVariablesOnDrop, or a timer skill
- - Furniture variables now survive chunk unloads and restarts on all furniture
- - Reading a variable while targeting a furniture hitbox or seat now resolves the furniture
- - furnitureSetVar in ~onPlace now applies to the furniture being placed
- - Seats are no longer treated as furniture, which ran ~onTimer once per seat and spawned extra hitboxes
- - ~onSit skills can now read furniture variables
- - One corrupt variable no longer wipes the rest on chunk load
chore: cleanup bunch of debug lines and generate a basic packsquash config file if it doesnt exists
fix: vanilla items in custom equippable slots, duplicate augment listeners on reload (#380, #293)
View 1 more changes
- (i forgot to push these before the downtime)
testing ci
fix: augment item loss in menu slots, lore template conditions, Nexo lore italics (#372, #374, #361)
feat: add augment item mechanic
Fix incomplete recipe outputs
fix: add 26.2 and 26.1.x rows to pack-format table
fix(items): expose slot context to item skill placeholders
feat: add ~onOffhandEquip and ~onOffhandUnequip item triggers
fix(crafting): use vanilla choices and preserve result names
fix: add TransmuteRecipeHelper for better version handling to avoid NoClassDef Errors
Add configurable hitbox dimensions to furniture states
fix: smithing failed with a Mythic BaseItem that has durability (#334)
fix: ~onHeld/~onUnheld still not firing when moving items in your inventory
Refactor recipe registration
increment version
fix: connectable furniture now connects in every direction
View 7 more changes
- - ITEM_FRAME furniture (and Placement: HANGING) never detected direction, so rows only joined east/west however you placed them.
- - ARMOR_STAND furniture and non-FIXED Transform displays had facing inverted, so ConnectionModels.Left and .Right were swapped. Swap them back if you tuned around it.
- - A corner reported the wrong direction to its neighbours, breaking the rest of the run.
- - Outer corner models could overwrite inner ones.
- - Furniture with Barriers could not see its neighbours, and matched itself through its own barrier blocks.
- - Rotating a piece left it on its old connection model.
- - Changing a State permanently lost the connection model. States setting their own Model still take priority.
fix: NPE regenerating items with no Display name
API improvements to item updater and augments
View 3 more changes
- added `/crucible items copyto ITEM_ID` command, which will copy relevant data such as stat ratios, augments, enchants and levels to a new item.
- - API: `ItemUpdateManager::copyItemData`
- added static `<data.KEY{default=...}>` placeholders to the `Skills` section **on items**, which are read from `ItemData.KEY: ...` upon loading the plugin. Allows dynamic skills on similar items without any runtime placeholder parsing.
fix: batch recipe removal on reload to avoid per-recipe resource reload hang
5.13.0 RELEASE
fix: if you are using furnitures, you SHOULD update.
feat: add ~onPowered and ~onUnpowered triggers for custom blocks (#170)
View 20 more changes
- Custom blocks can now run skills when their redstone power state changes:
- - `~onPowered` fires once when the block gains power
- - `~onUnpowered` fires once when it loses all power
- - Detects anything that would power a door or piston: levers, buttons, pressure plates, redstone dust, torches, repeaters, comparators, observers, redstone blocks
- - Edge-triggered, not per-tick: a skill fires one time per state change, and again when the state flips back
- - Skills run at the block's location; <skill.var.block-internalid> holds the block type id
- Example, an alarm block that plays sounds when a lever is flipped:
- ```yaml
- AlarmBlock:
- Id: MUSHROOM_STEM
- Type: BLOCK
- Display: 'Alarm Block'
- CustomBlock:
- Type: MUSHROOM
- Id: 130
- CustomBlockSkills:
- - command{c="say Alarm ON at <skill.var.block-internalid>"} ~onPowered
- - sound{s=block.anvil.hit;v=1;p=1} @origin ~onPowered
- - sound{s=block.note_block.pling;v=1;p=1} @origin ~onUnpowered
- ```
fix: fire MythicCrucibleGeneratePackEvent after the pack is fully written (#236)
fix: item ~onInteract firing twice per right-click (#280)
feat: validate generated packs, import packs from URLs, and skip unchanged deploys
View 4 more changes
- - Pack generation now checks for broken texture references and reports them in the console
- - Files that aren't real PNGs (e.g. renamed JPEGs) are detected and auto-converted
- - Resource packs can now be imported straight from URLs (Import.FromUrl)
- - Regenerating an identical pack no longer re-uploads it or re-sends it to players (Deployment.SkipUnchanged)
fix: PackSquash dropping overlay directories from squashed pack (#378)
fix: register item.* placeholders under scope prefixes so caster.item.* resolves (#383)
Made it so you can use item.stat outside of just lore and stuff
feat: add ~onRandomTick support for furniture entities
feat: add ~onRandomTick skill trigger for custom blocks
View 4 more changes
- Adds ~onRandomTick:X trigger for CustomBlockSkills.
- Chance per tick cycle = randomTickSpeed / X, read from the server's
- gamerule. Default X is 4096, matching vanilla random tick probability.
- Tracked on place, untracked on break/explosion. Unloaded chunks skipped.
fix: held item skills persisting after hand item changes
fix: item stat modifiers not applying for newly defined stats
feat: support multiline augment tooltips (#330)
View 8 more changes
- Allow the augment Tooltip field to accept a YAML list for multiline
- descriptions. Single-string tooltips remain backwards compatible.
- Example:
- Augmentation:
- Type: GEM
- Tooltip:
- - "First line of description"
- - "Second line of description"
feat: add ~onAugmentation skill trigger (#311)
View 1 more changes
- Adds a new skill trigger that fires when an augment is successfully applied to an item, enabling skills to react to augmentation events. Supports aliases: ~onAugmentation, ~onAugment, ~augmented, ~augmentation.
fix: #354
fix: #358
chore: improve ItemUpdateManager detection speed and performance
perf: faster pack generation, similar to MEG
fix (potentially): #349 and some api stuff
fix: #341
fix: #326
fix: #359
fix: #323 and couple papi initialization issues
fix: GlowingFrame not working for furniture states (#342)
fix: #329
fix: #332
fix: #333
fix: #353
Updated IngredientsLeftover to support :num and :-num - to subtract dura normal to set dura
Add runtime item filter support for Crucible hasitem/consumeitem
add ~onDragDrop trigger
fix: lore templates not splitting wrapped lines on newline
View 1 more changes
- Template lore lines containing \n from text wrapping (e.g. wrap=24) were passed as a single component instead of being split into separate lore lines. Added split("\n") in LoreSection.apply() to match the inline lore behavior in CrucibleItem.generateLore().