* feat: implement boat placement
- add boat item handler for all boat/raft types
- raycast with fluid handling to place on water or blocks
- filter entities with can_hit predicate (vanilla parity)
- check space is empty before spawning
- decrement item unless creative mode
* feat: add boat entity with damage handling
- create BoatEntity struct implementing EntityBase
- implement can_hit() and is_collidable() for boats
- implement damage handling that drops boat item on destroy
- update boat item to spawn BoatEntity instead of generic Entity
* fix: boat damage wobble and attack sounds match vanilla
Boats now accumulate damage with wobble animation that decays over time.
Attack sounds play for all hittable entities, not just living entities.
* feat: add boat riding and vehicle movement packets
* feat: complete boat implementation matching vanilla
- add underwater check (60 ticks) and max 2 passengers limit
- add paddle animation metadata and handler
- implement proper land dismount with offset calculation
- add riding_cooldown field to entity
* fix: clippy warnings for boat implementation
* refactor: use loot tables for boat item drops
* fix: collapse nested if to satisfy clippy
* style: fix cargo fmt formatting for collapsible if
* fix: boat dismount places player correctly beside vehicle
- implement vanilla's dismount position calculation with
getDismountHeight, canDismountInBlock, and pose fallback
(standing → crouching → swimming)
- fix packet ordering race: use enqueue_packet for teleport so it
arrives after CSetPassengers (send_packet_now bypassed the queue)
- pre-set awaiting_teleport before CSetPassengers to block stale
movement packets during async dismount calculation
- send CSetPassengers directly to dismounting player, broadcast to
others (matching vanilla's targeted packet behavior)
- use DELTA|ROT position flags for teleport (vanilla preserves
current look direction with relative rotation)
- add riding cooldown (60 ticks) to prevent immediate re-mount
- reset sneaking state after player dismount
- fix water detection to check specifically for water/flowing_water
fluids (Fluid::from_state_id returns EMPTY for air blocks)
- revert broken loot table refactor for boat item drops (boats use
hardcoded entity-to-item mapping, not loot tables)
- add get_dismount_height helper on World matching vanilla's
BlockView.getDismountHeight()
- ignore movement packets while awaiting teleport confirmation in
handle_position and handle_position_rotation
* style: fix cargo fmt formatting
* refactor: use loot tables for boat item drops
add loot table entries to entities.json for all 20 boat/raft types
and use the existing loot table system instead of hardcoded mapping.
* fix: resolve rebase conflicts and clippy warnings
* fix: regenerate codegen to include boat loot tables
Its works, but block state ids are currently not mapped, meaning that when using the current default world gen the client mostly will disconnect due to a not found block state id, vanilla version compatible worlds should work
Registry data is now loaded dynamically for automatic future-proofing, ending the need for manual struct updates. Access to specific values now requires explicit data lookups.
I did not update density functions because i'm too lazy to refactor a bunch of things because Mojang decided to remove "initial_density_without_jaggedness", but i will in the future
* Fix redstone wire when interacting with glass and non-full blocks
* Use is_solid_block to determine whether redstone wire should be blocked
* Fix: incorrect uses of BlockState.is_solid()
* run cargo fmt
* split state_flags into 2 u8's and remove BlockState.blocks_wire() methods
* Resolve clippy warning
* Revert state_flags back to a single u16
---------
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
* Added some Simplified Chinese translations.
This is my first Pumpkin PR, and it means the world to me. (≧∇≦)🎃
* Added Simplified Chinese
* Added Simplified Chinese
* Custom translations!
Added to TextComponents custom translations, allowing to send commands in the current player locale.
* Ignoring locale's typos
* Paired reorder_substitutions with vanilla
Changed how reorder substitutions work to match how vanilla allows to join next and numeral substitutions.
* 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>