Commit Graph

2553 Commits

Author SHA1 Message Date
Mateus
e47061b44b fix: C_GLAZED_TERRACOTTAS ids (#2331)
Changed ids() in glazed_terracotta.rs from tag::Item to tag::Block
2026-07-01 09:07:49 +02:00
dongzh1
af712b714e fix(pumpkin-world): correct inverted liquid_block_count (#2316)
BlockPalette::liquid_block_count() returned the inverse of what it
should: the Homogeneous arm returned 0 when the section was liquid and
the full VOLUME (4096) when it was not, and the Heterogeneous arm summed
the counts of non-liquid blocks (filtering on !is_liquid).

Flip both arms to actually count liquid blocks, mirroring the correct
sibling non_air_block_count(): Homogeneous yields VOLUME when the single
block is liquid (0 otherwise) and Heterogeneous filters on is_liquid.

This value is sent to clients as the fluid count in chunk data
(MC 26.1+), so the inversion reported wrong fluid counts to players.
2026-06-30 19:23:17 +02:00
AnthonyDuong1
85c4ce0483 fix: creative fire ticks (#2308) 2026-06-30 19:20:24 +02:00
AnthonyDuong1
fbfc706f7b fix: air supply under water (#2317) 2026-06-30 19:18:01 +02:00
kedor
22c871ed9b fix(protocol): recipe book packet (#2318)
* fix recipe display to use itemStackTemplate parsing

* fix advancement packet
2026-06-30 19:13:16 +02:00
ZlordHUN
5eb7cc0e81 feat: Add Overworld Fossil Generation (#2319) 2026-06-30 19:08:44 +02:00
Alexander Medvedev
7ff990c468 fix: bedrock crafting 2026-06-29 21:20:40 +02:00
Alexander Medvedev
efa97ad174 fix: https://github.com/Pumpkin-MC/Pumpkin/issues/2283 2026-06-28 16:18:49 +02:00
Alexander Medvedev
8c5d6dc405 fix: bedrock SActorEvent packet 2026-06-28 13:26:32 +02:00
Niclas
28e8187f23 fix(plugin-api): expose data components to Rust plugins (#2306) 2026-06-28 09:35:52 +02:00
Alexander Medvedev
2f653f6336 feat: bedrock crafting 2026-06-27 22:16:21 +02:00
kedor
0eb7cb1a79 fix(advancement): Fix advancement tree and visibility (#2304)
* fix visibility evaluator

* fix a small issue with the placement of advancement
2026-06-27 20:42:35 +02:00
Alexander Medvedev
25048f5a6c fix: 2 bedrock packets 2026-06-27 17:44:55 +02:00
Alexander Medvedev
1dbfb75ecc fix: end spawning 2026-06-27 14:57:40 +02:00
Alexander Medvedev
03a90a40b1 chore: expand loot table 2026-06-27 10:35:46 +02:00
Alexander Medvedev
322b7af6ae chore: made tnt explosion bit faster 2026-06-26 21:43:00 +02:00
kedor
39596c1b9f feat: Advancement command (#2282)
* starting implementing the advancement command

* implementing globally of the advancement command

* fixing lib.rs

* implementing the new Advancement argument and updating the AdvancementArgs lifetime

* updating wit by adding advancement as command arg

* cargo fmt

* fixing the advancement
hooking the saving
spawn blocking task for IO task

* fixing the update of load to be async

* adding await to load for a test

* fix when save is disable

* making save_enable check first

* fix conflict

* update hash

* fix wit change

* fix column_pos

* adding rust documentation

* typos fix

* removing example

* invalid advancement packet

* fix itemstack parsing to use ItemStack Template ones

* changing enum type from i32 to VarInt

* fix packet by switching up the frame type and flags

* fixing packet and loading of the advancement

* cargo clippy

* update wit
2026-06-26 09:23:54 +02:00
BitForge
785de6d644 fix(inventory): prevent shield self-deadlock in prepare_hand_item_for_use (#2295)
When a player right-clicks with a shield already in the off-hand,
`prepare_hand_item_for_use` locks the ItemStack Mutex via `held`,
then tries to lock the same Mutex again through `get_or_insert`.
Tokio's Mutex is not reentrant, causing a permanent deadlock that
crashes the server 5 seconds later when the tick loop times out.

Add `PlayerInventory::is_already_equipped()` which uses Arc::ptr_eq
to detect when the item is already in the target slot, and skip the
redundant equip logic before any lock is attempted.

Closes #2288
2026-06-25 19:36:30 +02:00
Missing_Love
3b9c2bdf6d fix(player): fix newly joined players not seeing existing players in tab list (#2280)
* fix:tab_list

* fix:tab_list
2026-06-25 17:47:06 +02:00
SomeYellowGuy
e4bec2b14a fix(entity): split the types of wind charges (#2293) 2026-06-25 17:45:06 +02:00
Niclas
2fa7a1829b fix(protocol): encode and decode renamed item names (#2301) 2026-06-25 17:44:11 +02:00
Niclas
849cb05e07 fix(world): persist end portal block entity data (#2294) 2026-06-25 17:36:18 +02:00
dongzh1
86e41e1ebb feat(plugin): add PlayerRespawnEvent (#2296)
Adds a non-cancellable PlayerRespawnEvent fired from World::respawn_player
once a respawn destination (world, position, rotation) is determined,
exposing it to plugins through the WIT event API (host + guest). The
previous world, respawned world, position, yaw, pitch and whether the
player kept their data are provided. Bumps the pumpkin-plugin-wit
submodule to the matching event definition.

Closes #1714. Depends on Pumpkin-MC/pumpkin-plugin-wit#8.
2026-06-25 13:47:00 +02:00
Alexander Medvedev
9055a6133e fix: respawn packet data 2026-06-24 21:12:27 +02:00
Alexander Medvedev
2c0e981a85 fix: https://github.com/Pumpkin-MC/Pumpkin/issues/2253 2026-06-24 19:44:59 +02:00
Tunar Məmmədli
35c3ebf6b5 fix(math): prevent NaN from zero-length normalization (#2202)
* Guard vector normalization against zero length

* improve vector normalization
2026-06-24 19:18:48 +02:00
Alexander Medvedev
e9368fb80d fix: ci 2026-06-24 18:34:58 +02:00
kedor
ed0bf820f7 feat: Add the display position calculation of the advancements (#2256)
* generate the placement of the advancements to be display rightfully for the client

* fix typos with appropriate naming
2026-06-24 18:20:12 +02:00
Mark
8f7ec2464e fix(client): preserve vanilla modifier identifiers in synced updates (#1997)
* fix(attributes): Update modifier id to use string identifier instead of Uuid to prevent modifier duplication on client

* style: format enderman imports

* fix(entity): use vanilla enderman attacking modifier id

---------

Co-authored-by: Missing_Love <42416195+Q2297045667@users.noreply.github.com>
2026-06-24 18:12:43 +02:00
PigTurtle
eaf1bf3cbe fix(compile-times) replaced const arrays with statics (#2281)
the const [&T; 29873]s for block(state) mapping were being inlined ~300 times just to be deduplicated by LLVM.
They are now statics but are accessed via const fns.
This improves compile times by roughly 12 minutes.
2026-06-24 18:11:37 +02:00
PigTurtle
48dcc82985 chore(pumpkin/compile-times): remove unused module declarations from main.rs (#2284)
the modules are already declared in the lib part of the pumpkin crate and were being typechecked twice
2026-06-24 18:04:31 +02:00
Alexander Medvedev
d0d760de6a fix: bedrock 26.30 2026-06-24 18:03:08 +02:00
Alexander Medvedev
461a5eb768 fix: ci 2026-06-22 20:09:55 +02:00
Alexander Medvedev
a8669b8582 fix: typo 2026-06-22 19:52:35 +02:00
Alexander Medvedev
74beb9738a fix: https://github.com/Pumpkin-MC/Pumpkin/issues/2276 2026-06-22 19:28:25 +02:00
Alexander Medvedev
ca71ffcb6f fix: mappings-26.2to26.1 2026-06-22 18:32:27 +02:00
Alexander Medvedev
0c1cb25c05 feat: set camera for spectators 2026-06-22 17:57:36 +02:00
Alexander Medvedev
65fe9f0af0 feat: add bundles 2026-06-22 16:59:31 +02:00
dependabot[bot]
eaedfdc13b build(deps): bump actions/checkout from 6 to 7 (#2286)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 09:03:25 +02:00
Alexander Medvedev
ed8833d375 fix: ci 2026-06-21 21:58:59 +02:00
Alexander Medvedev
5f60d23804 feat: villager Professions 2026-06-21 21:54:10 +02:00
Alexander Medvedev
daa0111009 feat: add minecarts 2026-06-21 15:01:06 +02:00
Alexander Medvedev
c52531b37a feat: Implement Trident 2026-06-21 07:55:09 +02:00
perplexinglysimple
e0ec4f9569 fix: allow snow layers to be placed on top of leaves (#2246)
Snow placement checked is_side_solid (isSideSolidFullSquare / support
shape), which leaves override to be empty. Vanilla's SnowBlock#canPlaceAt
instead checks the snow_layer support tags and whether the block's
collision shape fully covers the top face — leaves have a full-cube
collision shape, so they should support snow layers.

Fixes #2218
2026-06-20 21:55:03 +02:00
Laptop59
11380eb38a feat(command): implement column pos argument type (#2237)
* initial commit

* added a new struct `ColumnPos` and suggestions for the new argument type

* remove examples that don't actually work
2026-06-20 21:49:21 +02:00
BitForge
c70b17d058 fix(entity): persist dropped items across reconnect (#1987)
* fix(entity): prevent duplicate items and drop animation replay on reconnect

When a player reconnects, spawn_world_entity_chunks unconditionally
created new entity instances from chunk NBT, even if those entities
already existed in the world (e.g. another player still tracking them).
This caused three bugs:

1. Drop animation replay: read_nbt_non_mut restores the original drop
   velocity from NBT, so the client renders items as if they were just
   dropped again.
2. Uncollectable ghost items: duplicate entities with different
   entity_ids but the same UUID desync client and server state, making
   items impossible to pick up.
3. Dupe glitch: the same chunk NBT entry spawns a second entity on
   every reconnect, duplicating items in the world.

Fix by:
- Checking world.entities for existing entities with the same UUID
  before creating new ones; if found, only send spawn packet for the
  existing entity to the reconnecting player.
- Clearing velocity to zero after NBT restore so the spawn packet does
  not carry stale drop velocity.
- Adding a UUID dedup guard in add_entity_silent as a second line of
  defense.

* fix(item): restore NBTStorage for ItemEntity to fix ghost items after reconnect

Re-implement write_nbt/read_nbt_non_mut to persist and restore:
- Item compound (via write_item_stack/read_item_stack)
- Age, PickupDelay, Health

Add new_for_restore() constructor without random velocity.

Update EntityType::ITEM dispatch to use new_for_restore() instead of
ItemEntity::new() with AIR.

* fix(clippy): resolve doc-markdown and collapsible-if in ItemEntity

---------

Co-authored-by: Missing_Love <42416195+Q2297045667@users.noreply.github.com>
2026-06-20 20:33:03 +02:00
Jan1k
04639715df fix: prevent statistic overflow panics (#2271) 2026-06-20 20:27:54 +02:00
Alexander Medvedev
1509276b5c fix: ci
ofc
2026-06-20 20:15:13 +02:00
Alexander Medvedev
23e7992b2d Port to 26.2 2026-06-20 20:07:31 +02:00
Alexander Medvedev
8ce76261ac feat(bedrock): add creative content 2026-06-19 18:52:50 +02:00