
CraftEngine 0.0.62
serverside mod framework for custom items, blocks, recipes and more
This version is the last stable release prior to the "Furniture Refactoring and Block Entity" update. It primarily includes several major bug fixes and minor feature updates.
New Features
- Added default examples for chessboard blocks
- Added compatibility with fake players from the Leaves server
- Added overwritable-item-name and overwritable-lore features
- Added direct PDC (Persistent Data Container) data type support
- Added item updater functionality
Bug Fixes
- Fixed an issue where the unbreakable data type was not working properly
- Fixed an error caused by the smithing table post-processor
- Fixed an issue where the client-bound-model of items could not override global settings
- Fixed a network protocol error caused by the global palette
- Fixed an issue where the function to remove vanilla recipes stopped working after the recipe refactoring in version 0.0.61
- Fixed display issues for Endermen holding custom blocks and custom block minecarts
- Fixed an issue where stackable method updates did not send block update packets to nearby players
- Fixed errors caused by WorldEdit usage during the startup phase by some plugins
- Fixed dropbox cache writing issues
Optimizations
- Adjusted the model orientation of flower baskets in the default configuration
- Updated the wiki links in the comments of config.yml
- Improved ID matching for namespaces when using get/give commands
- Added pre-parsing for item names and descriptions to improve overall item construction performance
- Improved handling of mining speed with incorrect tools
- Improved GUI click performance
New Features
- Added support for 1.21.8
- Added brewing recipe UI
- Allowed using items from other plugins in recipes
- Added tag support in item settings
correct-tools
- Added recipe result post-processor
- Added
double_high_block_item
item behavior - Added lore data for items with separator and custom priority support
- Added MythicMobs skill casting support
- Added recipe option
show-notification
to control recipe discovery messages - Added support for using craftengine items in vanilla datapacks
Bug Fixes
- Fixed craft-remaining-item not working in crafter
- Fixed incorrect recipe results showing in crafter
- Fixed Folia-related exceptions when giving items
- Fixed double-block placement on snow
- Fixed rare cases of client-bound-data/material handling
- Fixed interactions between certain items and entities
Optimizations
- Improved hide-tooltip implementation logic
- Added resource pack language file merging functionality
- Improved the speed of reloading recipes
⚠️ Important Compatibility Changes
In the 0.0.61 update, we introduced the double_high_block_item
behavior to fix some weird behaviors when placing double high blocks for instance doors. To fix that just replace the block_item
with double_high_block_item
.
New Features
- Added support for 1.21.7
- Added Russian (ru_ru) localization
- Added new item data types: attribute-modifiers and hide-tooltip
- Implemented armor stand trimming support (compatible from 1.20 to latest)
- Added brewing and smithing_trim recipe types
- Added warnings for unset template parameters
- Added client-bound-data support for advancements and recipe books
- Added vanilla item model override support
- play_sound function now supports target selectors
Bug Fixes
- Fixed world generation failing to correctly detect fluids
- Fixed compatibility issues with the latest BetterModel
- Fixed explosion-related processing errors
- Fixed select-type models incorrectly accepting non-matching parameter types
- Fixed block lighting issues in versions 1.20–1.21.1
- Fixed block/item ID mismatch causing key retrieval errors in 1.20–1.21.3
- Fixed button interactions sometimes failing and incorrectly placing blocks
- Fixed pressure plates not updating signals properly after breaking in 1.20–1.21.4
- Fixed creative mode breaking top doors dropping incorrect items
- Fixed client block tags being erroneously updated due to recipe reloading
- Fixed item frame entity data ID mismatch in 1.21.6–1.21.7
Optimizations
- Resource pack validator is now 200% faster
- Optimized resource pack sending system
⚠️ Important Compatibility Changes
In the 0.0.59.9 update, we introduced the smithing_trim recipe type. Because of this, some existing armor sets (like the default topaz set) now need the minecraft:trimmable_armor tag—otherwise, they won’t work with the smithing table for applying armor trims after this update.
templates:
default:armor/topaz:
material: chainmail_${part}
custom-model-data: 1000
data:
item-name: <!i><#FF8C00><i18n:item.topaz_${part}>
tooltip-style: minecraft:topaz
settings:
tags:
- default:topaz_tools
+ - minecraft:trimmable_armor
equipment:
asset-id: default:topaz
$$>=1.21.2:
slot: ${slot}
model:
template: default:model/armor_trim
We've added checks for missing template parameters in this update, so you might see some console warnings now. No worries though – just set default values for your templates or provide the missing parameters, and the warnings will go away.
appearances: type=top,waterlogged=false: state: ${base_block}[type=top,waterlogged=false] model: path: ${model_top_path} - generation: ${model_top_generation} + generation: ${model_top_generation:-null}
New Features
- Added support for special model type player_head
- Added resource pack atlas validation function; console will now display missing texture warnings
- Added German localization file (Thanks to TamashiiMon for the contribution)
- Expanded equippable component to support more equipment_layer types
- Implemented support for "::" region separator syntax in YAML files
- Added debug option to view configuration files after template application
- Added support for dyed firework star furniture
Bug Fixes
- Fixed false positives in texture existence checks caused by unapplied atlas paths
- Fixed incorrect application of equippable component in plugins for versions 1.21.2-1.21.3
- Fixed abnormal operation of Folia delayed scheduler
- Fixed smithing transform recipe not being registered in version 1.20.1
- Fixed furniture still being dyed when dye application was disabled
- Completely fixed waterlogged block behavior during piston movement; now achieves 100% vanilla parity
Optimizations
- Refactored resource pack obfuscated atlas generation algorithm
- Optimized block behavior handling logic through BlockState injection
- Refactored block drop system; now directly injects server-side logic instead of Bukkit events
- Improved default value parsing rules for template parameters
Changes
- Removed deprecated blockstates.yml configuration file
- Improved merge logic for JSON files under blockstates (now intelligently merges instead of overwriting)
New Features
- Added support for Minecraft 1.21.6
- Implemented happy_ghast collision type
- Added Redstone API for custom signal sources
- Introduced spectral arrow-based custom arrows
- Added new block behaviors:
trapdoor_block
,door_block
,fence_gate_block
slab_block
,stairs_block
,pressure_plate_block
sturdy_base_block
,stackable_block
- New item settings:
compost-probability
(composting chance)oversized-in-gui
(enlarged GUI display)hand-animation-on-swap
(hand animation when swapping)color-when-undyed
(default color for undyed items)
- Added YAML version conditional syntax (e.g.,
"$$>=1.20"
) - Resource pack enhancements:
resource-pack.exclude-core-shaders
option- Improved handling of hidden directories (ignores
.prefix
folders)
- Added configurations for:
- Palm wood based doors, trapdoors, stairs, slabs, fence_gate, pressure_plate
- Cap
- Pebble blocks
- Custom tridents (1.20-1.21.3)
Improvements
- Enhanced
waterlogged
block behavior:- Now works properly with dispensers
- Fixed visual glitches
- Optimized
migrate-templates
command - Sound options now support value ranges (e.g.,
volume: 0.9~1.0
) - Template system upgrades:
- Unspecified parameters now return
null
instead of parameter names - Fixed
map
type parameter shortcuts
- Unspecified parameters now return
- FAWE compatibility:
- Fixed
mask
application issues
- Fixed
- Linux support:
- Added symbolic link resolution
Bug Fixes
- Fixed projectile-related issues from previous optimizations:
- Custom arrows not functioning
- Loyalty tridents missing return animation
- Eliminated console warnings for vanilla loyalty tridents
- Fixed block lighting issues (1.20-1.21.1)
- Corrected barrier item ID display issues in /ce GUI (1.20.1-1.20.4)
- Fixed
strippable_block
behavior in 1.21.5+:- Now properly recognizes offhand items with
block_attack
component
- Now properly recognizes offhand items with
- Resolved Folia chunk loading issues:
- Furniture collision volumes now initialize correctly
- Addressed
client-bound-data
problems in 1.21.5+:- Fixed client-side cursor item desync
- Corrected enchantment table option synchronization
- Fixed template parameter parsing edge cases
- Resolved JSON formatting causing resource pack validation failures
Bug Fixes
- Fixed flint and steel making no sound when igniting custom blocks.
- Fixed interaction priority issue with decorated_pot when used by items with block_item behavior.
- Fixed plugin compatibility issues caused by Paper's plugin classloader isolation.
- Fixed hard collision not affecting other entities in 1.20.1-1.20.6.
- Fixed right_click events not triggering when interacting with entities.
- Fixed furnace failing to use correct recipes when conflicting with vanilla recipes.
- Fixed NPE in Skript expressions when referencing non-existent IDs.
- Fixed block break state sync conflicts with some NPC plugins.
New Features
- Added new item settings types:
invulnerable
,craft-remaining-item
,consume-replacement
,food
((for 1.20.1-1.20.4)). - Added
client-bound-material
option for items. - Added new item data types:
dyed-color
- Experimental Resource Pack Validator (checks for missing textures/models).
- YAML parser now detects and reports duplicate keys with their line numbers (helps debug config errors).
- Optimized network performance by reducing packet count for custom projectiles.
- Optimized packet handling for custom block lighting.
- Added MythicMobs drops/items support
Improvements
- Improved item construction speed by fully bypassing Bukkit API.
- Refactored the template system to make it more powerful
- Ensured thread-safe for furnace recipe handling
- Optimized config reload system - now completes
/ce reload
in 5ms (tested on i9-13900K)
⚠️ Breaking Changes You Must Know
New Template Syntax: Changed parameter format to ${param:-default}
(adds $ prefix and supports :-default_value)
Migration is Required: Run /ce debug migrate-templates
to convert existing template configs
Note: Migration isn't perfect - minor errors may occur with "{}" formatted config sections (should be easy to fix manually)
We apologize for the config format change caused by previous design limitations
Bug Fixes
- Resolved null pointer exception when interacting with custom cactus-based blocks using empty hand
- Corrected improper relocation path for imaging libraries
- Added template and example configuration files for custom elytra implementation
New Features
- Removed dependency on Ignite mod - CraftEngine now functions as a standalone solution
Changes
- Fabric mod module will be migrated to a dedicated repository to ensure comprehensive version support
Fixed Bugs:
- Fixed error handling ClientboundSetPlayerInventoryPacket
- Fixed FAWE issues on incompatible FAWE versions
- Fixed DropBox not working in some cases
- Fixed
right_click
event lackingposition
argument - Fixed 1.21.5 ignite mod
Breaking API Changes:
- CustomBlock and CustomFurniture classes have been converted to interfaces.
- LoadedFurniture in the craft-engine-bukkit module has been renamed to BukkitFurniture and now implements the Furniture interface.
Breaking Configuration Changes:
- Due to the new support for combined block behaviors, default configurations will be affected by this update. sugar_cane_block has been replaced with vertical_crop_block. For detailed default configuration changes, please refer to this commit: [3128fe3](https://github.com/Xiao-MoMi/craft-engine/commit/3128fe355122e2856fb5727fcccc4b68f35cf14d).
Fixed Bugs:
- Fixed client-side light remaining after breaking certain custom blocks.
- Fixed collision shapes not syncing with the client for some block types (e.g., cactus).
- Reimplemented self-host using Netty for improved stability.
- Fixed custom projectiles in always-loaded chunks not applying models correctly after restart.
- Fixed custom block tags causing water blocks to lose gravity and lava to appear as water in 1.20.5-1.21.1.
- Fixed torches and similar blocks placed on furniture breaking immediately (furniture was not designed to have support shape).
- Fixed container opening issues in early Paper 1.21.4 builds.
- Fixed replaceable blocks being able to replace themselves.
- Fixed debug stick not functioning properly.
New Features:
- Added support for combined block behaviors, allowing creation of new block types through customization.
- client-bound-data no longer requires server-side mods and now supports <arg> and <papi>.
- Enhanced <global> variable functionality, now supporting parameter passing within tags.
- <image> can now be used with other items and won't cause irreversible item corruption in creative mode (not guaranteed to work with ViaVersion).
- Added support-shape block setting.
- Added lamp_block behavior and redstone-related APIs.
- Added more condition and function types.
- Shift-clicking in the CE menu now directly gives items.
- Any item can now be used as a totem animation (requires 1.21.2+).
- Added legacy-model configuration for resource pack models compatible with 1.21.3 and below.
- Added support for merging external ZIP resource packs.
- Added blacklist for file extensions during resource pack merging.
- Refactored dependency downloads to further reduce plugin size.
- Added default configuration for copper_coil.
- Added blacklist configurations for bush_block and hanging_block.
Overview
- Introduced a memory-based resource pack generation system instead of a real file system, achieving approximately 300% faster pack generation speed.
- Implemented configuration file caching, improving configuration loading speed by approximately 20% compared to before.
- Added custom projectile item setting
- Improved item model generation for 1.21.2
- Added an option to allow dye recipes for some items
- Added original item storage for furniture
- Implemented custom data API for furniture
- Added client bound block tags for vanilla blocks
- Fixed item components not loaded on 1.20.5-1.20.6
- Refactored context system again
API Changes
- A lot of changes have been applied to class related to context
- Added full FAWE (FastAsyncWorldEdit) compatibility.
- Removed the deprecated delayed-serialization option, now replaced by the new cache-system.
- Added configurable injection method—choose between LevelChunkSection or Palette.
- Improved dependency management—dependencies are now downloaded only when required.
- Added full 1.21.5 component support
- Fixed team packet handling on 1.21.5
- Fixed using bone meal with dispenser on 1.21.5
- Fixed middle clicks on 1.21.5
- Fixed chunk data desync
- Refactored context system
- Block entity system implementation
- Optimized chunk system again by implementing fast injection and dirty flags.
- Added warning logs for potential errors in most configuration files to improve debugging.
- Resolved CraftBukkit compatibility issue caused by block-entity-based custom blocks.
- Fixed sound mappings generation by handling duplicate sound keys properly.
- Added 'grass_block' behavior
- Improved chunk system performance by introducing a cache system
- Added Skript support
- Added legacy AdvancedSlimePaper support of 1.20-1.21.3
- Some small bug fixs and improvements
- Refactored item sytem for the thrid time to make item operations faster.
- Fixed some known bugs. See github commits for more.