# Performance improves
Let events won't be triggered when no listeners requested the event.
# Scripting
Use 'Cancelable' and 'NoCancelable' to prevent calling the request methods with the suffix 'Nr'.
# Molang
Basic molang parsing and translating.
# Minecraft
Update to '1.21.11' version.
# Tech details
Add specified type of identity in metadata.\
Make more generic type to the event type system for more clearing specify the next event type.\
More DSL supporting.\
Ordering templates orders and components orders to make more readable and maintainable.\
# Bug fixes
Fix wrong effective blocks group in ConiumItemPickaxeTemplate.\
1. Fix bug of bedrock script unable to run.
2. Fix bug of 'setTitle' invalid in 'onScreenDisplay' in bedrock script.
3. Fix issue of 'PLAYER' arg cannot transform from arg 'ITEM_USAGE_CONTEXT'.
4. Add 'itemUse' to WorldBeforeEvents in bedrock script.
# Conium event
1. Renamed events, remove suffixes 'event' in the events list.
2. Move more event trigger to intermediary.
3. Add 'attachPreparation' in event context, used to pre-vary raw inputted args.
4. Add dynamic register APIs for item, block and entity.
5. Add more minecraft class import.
6. Clear all event subscribes on reloading data packet
## New event support
Add events support:
1. ITEM_USE
2. ITEM_USED
3. RECEIVE_CHUNK
3. RECEIVED_CHUNK
# Bedrock event
1. Add 'dimension' field to bedrock entity. (``Entity#dimension``)
2. Use 'runCommand' to execute 'runCommandAsync' method. (``Entity.runCommandAsync``)
3. Let bedrock entity can use raycast to get a block hit. (``Entity.getBlockFromViewDirection``)
4. Make bedrock world(dimension) able to create the explosions. (``Dimension.createExplosion``)
5. Renamed 'BedrockWorld' to correctly name 'BedrockDimension' to prevent ambiguity.
## New event support
Add event support:
1. itemUseBeforeEvent
2. itemUseAfterEvent
# Configuration
Add config file ``config/conium.json`` used to toggle conium features, currently toggleable: ``enable_debug`` and ``enable_bedrock_script``.
# Conium script
1. Use static delegate and extend function to make minecraft methods and members remap to the meaningful name.
2. Update fluxia version to '1.1.4-fix3'.
# Bedrock script APIs
1. Add ``unsubscribe`` method in bedrock event.
2. Supported to after event of ``itemUseOn``.
3. Upgrade structuring-translator version.
4. Let bedrock script APIs can cancel cascade events in before events.
5. Add bedrock script APIs facade type reference.
# Performance optimization
Use kotlin package indexes to import classes to script context.
# Bug fixes
1. Fix bug of unable to load bedrock APIs in typescript.
2. Fix bug of always trigger fire extinguishing event and extinguished event when entity in rain.
## Event contexts
Now can use method 'preRequestNr' and 'requestNr' to replace 'preRequest' and 'request' to request the event context without returning a boolean value.
# Block entity
Supported load block entities from data driven, defined data using block template 'data' and could dynamic change values in game running by scripts.
# Bug fixes
1. Fix bug of unable to use Minecraft classes
2. Fix bug of some useful classes not import in common init script.
# Others
1. Add hitokoto in console log
2. Optimization performances
3. Update libraries version
4. Add discord server in modmenu.
5. Replaced homepage to modrinth.
## Event context
Modified ways to attach forever events, incoming a event type to ConiumEvent constructor and auto attach events, don't attach events manually since this version.
## Interaction
In conium '1.0.0-alpha6' will input wrong identity when data-driven interactions, fixed in this version.
## Bedrock script
Fluxia can translate for loop and while loop now.
Add type 'Set' for javascript stdlib supporting, must specify a reified argument type otherwise cannot be eval.
# Data driven
Add item templates:
1. 'force_mining_speed'
# Versions
Update to minecraft version '1.21.4'.
Update to kotlin version '2.1.0'.
# Bug fixes
Fix bug of crash client when client player interaction to synchronized data in '1.0.0-alpha6'.
# Others
Add character banner in logging.
Performance optimizations.
## Event context
1. The 'identity' of event context that input to 'arising' and 'presaging' have actual type now.
2. Add more dynamic args transformer and more arg types
3. Add method 'preRequest' in 'ConiumEventContextBuilder', used to make 'presage' trigger.
4. Methods 'request' in 'ConiumEventContextBuilder' can input two lambdas now, first is 'arise', seconds is 'presage'.
5. Add 'target' and 'targetTo' method in 'ConiumEventContext' used to filter the identity to trigger context.
## Data driven interactions
See the samples, the 'glint' key in [data define](https://github.com/cao-awa/Conium/blob/main/sample/datapacks/tests/data/awa/item/conium.json) and [interaction.kts](https://github.com/cao-awa/Conium/blob/main/sample/datapacks/tests/data/awa/script/interaction.kts) script.
This sample let an item change glint status in hand, when player is creative mode, use the item on block will make this item be glint, otherwise then be not glint.
Dynamic args can get any value from transforming others values now.
For example, even if the event context input has only present 'ItemPlacementContext', if you want get 'ServerWorld':
```kts
request(
PLACE_BLOCK,
SERVER_WORLD
).arising { _, world ->
// Actions here.
true
}
```
you can also get other any value where the transform is supported, even the value are not directly push to context.
# Other
1. Optimized performances.
# Planning
More entity components and Molang, script APIs, first is conium schame entity components and script APIs.
For bedrock schema and corresponding conium schema templates:
1. 'dimension'
2. 'pushable'
The entity supported 'component_groups' but not be switchable now.
# Other
1. Optimized performances.
# Planning
More entity components and Molang, script APIs, first is conium schame entity components and script APIs, delaying the bedrock schama entity components.
For bedrock schema and corresponding conium schema templates:
1. 'minecraft:damage', 'minecraft:durability' is in 'tool', named as 'attack_damage', 'durability'
2. 'can_destroy_in_creative'
3. 'max_count'
4. 'food'
5. 'rarity'
6. 'use_action'
The 'using_converts_to' in bedrock food component is moved to 'convert_to' in 'consumable'.