* feat(player-data): Support saving and loading player NBT Data
* fix(player_data): ensure player data is save before continuing
* fix(player_data): implement NBTStorage for hunger data
* feat(player-data): allow setting world name in config
* fix(player-data): use correct method to retrieve world_name
* feat(player-data): move PlayerDataStorage to pumpkin-world
* fix(player-data): ci not building
* fix(player-data): ci not building
* feat(player-data): support inventory saving + review fix
* fix(player-data): forgot the format
* some fixes
* fix clippy
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* Major grammar sweep
* Remove extra backtick
* Use more specific terminology for chunk data storage
* Forgor to cargofmt
* Fix typo "thier"
* Fix typo "clousures"
* Try new terminology
* Forgor to cargofmt
* Use "Subchunks" instead of "Heterogeneous" for ChunkBlocks variant
* Fix variable name
* Forgor to change comment
* Add block builder
* Implement loot tables
* chaos snapshot
* LFG
* add oak fence
* lever facing
* Add trait for CardinalDirection
* fix clippy
* fix clippy
* reimplement partial state of loottable
* Implement neighbor block updates
* add oak door
* Fix crash on invalid state
* Fixes
* Add fences
* Add doors
* Refactor how we handle block properties when implemented in many places
* Remove old loot_table, moved to block generation
* Better Block Properties
* Add fence gates
* Update block_grouper and add logs
* Build tags instead and make it easier to define variants of blocks
* Save block states
* Allow nether fences to connect with fence gates
* Move away from hardcoded property names
* Clean up property remaps
* start refactor of blocks
* refactor block compile build
* refactor name map for property groups
* Make it so fences can't connect to the air part of a fence gate
* Use extractor instead of hard coded property names
* to_value and from_value should be stripped of "L" prefix
* Prefix isn't used anymore
* use hashes to verify uniqueness
* Don't declare IntProvider twice and fix typo
* remove some comments that don't apply anymore
* Move loot table so it's shared
* Futureproof Loot Tables
* Implement BlockStateProperty condition for LootTables
* Move experience to pumpkin_utils
* Add is_liquid
---------
Co-authored-by: kralverde <github@email.kralverde.dev>
Also broadcast current held item. The block progress is already correctly displayed and calculated for tools. But for some reason the destruction does not work, looking at vanilla code i have no idea what i'm doing wrong
Also rewrite how we handle tags. Now we can use tags everywhere we want!. I also decided to make the json assets pretty printed which is so much easier to debug, The decision was made because of the reason that we are moving to compile time assets, so pretty printing does not affect performance
* Added spawn egg functionality
* Readd changes from before merge
* Added basic attacks on mobs
* Fixed spawn rotation and position
* Updated entities.json
* Fixed entity registry
* Added correct bounding boxes per entity
* Various fixes
* use right data types in entity registry
* fix: clippy
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* Pick Item Changes
* Changed some logging
* Pick Item working for hotbar slots
* Basic functionality, changes needed to adhere to expected minecraft behaviour
* Clean up code
* Added todo for pick from entity
* Added item swapping
* Swapping and cleanup
* Fix for rebase
* Remove unused function
* Bugfix
* remove todo
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* Added chest and furnace
* Corrected interactive block functionality
* Fixed merge
* Added standard functions and player remove on destroy
* Added unique block standard functions
* Fix clippy
* Fix deadlock in standard function
* fix(pumpkin-inventory/src/drag_handler.rs): divide by 0
Please work
Also, commit made on mobile using Built-in GitHub editor 🔥
* fix(pumpkin-inventory/src/drag_handler.rs): syntax errors
we only used them for collect_vec. I think its worth the "effort" to write Vec type annotations ourself and have one big crate with way too may features we don't need less
* add pumpkin error handling for commands
* cleanup clear command
* fix so that all Container implementations follow the same order as the trait
* cleanup give command
* remove unnecessary function
* remove unnecessary function
* fix give command
* fix clear command
* fixup item placement logic
* cleanup clear command a little
* add cleaner registry parsing
* start adding recipes
* add tags, and some crafting things
* Fix echest command
* add partly working crafting interface
* add generated assets
* fix container commands and clippy lints
* fix issues with resolving recursive item tags for crafting
* add flatten3x3 function
* add shapeless crafting
* add tests to and fix recipe flattening function
* refactor recipe system a bit
* add rayon to speed up initial loading of recipes
* almost working after rebase
* add deserialization for new crafting type "transmute"
* make crafting work again
* make shapeless recipes not require all permutations
* fixed visual bug with when taking out ingredients for crafting
* add support for new tags system
* Update JSON Files to 1.21.2
* Update constants to 1.21.2
* Port c_login_success to 1.21.2
* Fix: damage type
* Overhaul Packet ID system
We now use Packet IDS from enums.
1. This is very very nice for seeing which Packets are already implemented and which not.
2. This lets us easly port to newer Minecraft version, In vanilla there are no Packet ids hardcoded, Packet IDs will be parsed from a enum like this
* Port all Packets to 1.20.2
* Update README badge to 1.20.2
* Change doc for the new packet id system
* feat: logs for when a player interacts with a block out of reach
* cleanup: used self.gameprofile instead of getting it from the client
* cleanup: better logging
* fix: added logging library
* cleanup:removed unused namespace
* cleanup: capitalisation and log levels
* fix: removed simple logging
* fix: removed todo! where not needed
* cleanup: removed duplicate dbg!
* Fix mistake in merging
* Fix my bad
* Merge repeated match arms
- Replaced all `std::sync::Mutex` by `parking_lot::Mutex` and refactored implementation accordingly
- Replaced all `Mutex<T> where T: Copy` by `crossbeam::AtomicCell<T>` and refactored implementation accordingly
This cleanup's goal is to make all `Server` functions only require &self. This means that `Server` can now be a `Arc<Server>` instead of `Arc<Mutex<Server>>`, which solves a lot of deadlock problems.