* fix: award xp when taking items from furnace output slot
adds experience tracking to all furnace-like block entities (furnace,
blast furnace, smoker). experience is accumulated when items are smelted
and awarded to the player when they extract items from the output slot.
- add ExperienceContainer trait for dyn-compatible xp extraction
- add experience_held field to furnace block entities (fixed-point)
- add FurnaceOutputSlot that awards xp on item take
- add award_experience method to InventoryPlayer trait
- add to_experience_container method to BlockEntity trait
closes#1432
* fix: use recipesused nbt format for furnace xp
- add recipe_id field to CookingRecipe struct
- track recipes used instead of raw xp
- spawn xp orbs on furnace break and hopper extraction
- add get_recipe_experience function to look up xp by recipe id
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* switch to btreemap to comply with lint
* amplifier i32 -> u8
* switch allow to expect lint
* remove many many unnecessary clippy lints
* dont use expect inside quotes
* improve tag v1
* improve tag v2
* fix typo and make BlockPredicate better
* improve get state from state id
* impl DataComponent
* make tag pub
* make component work
* apply clippy
* apply clippy
* remove unused crate
* apply to itemstack and no lifetime mark anymore
* Update tag.rs
* use Cow
* remove unnecessary lazy_static and Cow
* Update mod.rs
* Update mod.rs
* make DataComponent dyn
* remove unused crate
* fix error
* Update Cargo.toml
* Update Cargo.lock
* fix
* Update composter.rs
* update rust-version, remove unused crate, and merge
* Update furnace.rs
* fix: the fields of the struct CookingRecipe should be pub.
* Add furnace screen handler and slot
* Add furnace block entity
* Add furnace block
* fix bug
* add client-side sync
* fix furnace facing
* remove unused statements
* fix spelling error
* Listening for property changes and syncing them to the client-side.
* fix furnace lit state
* fix fuel should be placed at fuel slot in quick_move()
* fix spelling error
* remove unused comment
* fix: only one listener is needed.
* pumpkin-data: add recipe_remainder
* Set the bottom item as the remainder if it has one
* pumpkin-data && furnace:fix spelling error
* fix building error
* use_with_item is the same as normal_use
* fix quick_move()
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* improve tag v1
* improve tag v2
* fix typo and make BlockPredicate better
* improve get state from state id
* make tag pub
* Update tag.rs
* fix error
* Update hopper.rs
* Update hopper.rs
* feat: Add basic ChiseledBookshelf block
* feat: We now know what slot the player pressed
* feat: Add block entity
* feat: Implement logic
* fix: Make clippy happy
* feat: Refactor item interact system to be more like vanilla
* feat: Add ActionResult to non item function
* fix: Some cleanup
* fix: Make rust-fmt happy
* feat: Remove useless use_with_item functions
* fix: Broken block placement
* fix: Crash
* fix: Make clippy happy
* fix: Remove unused function
* fix: Noteblocks can be placed on eachother without sneaking
* feat: Add check for creative
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>