Commit Graph

41 Commits

Author SHA1 Message Date
Noël Hagestein
fcb26179d3 Add ServerListPingEvent (#2736)
* feat(events): add ServerListPingEvent

* Update pumpkin-plugin-wit to 50962bf
2026-08-10 11:32:02 +02:00
xRookieFight
604d597709 fix: grant fishy business only when fishing (#2817) 2026-08-10 09:25:00 +02:00
xRookieFight
734f79e469 fix: don't deadlock when equipping an item from the hand (#2857) 2026-08-10 09:19:32 +02:00
ZlordHUN
83083d121a fix(bedrock): block breaking and item crafting (#2859)
* Fix Bedrock block breaking and crafting

* Fix Bedrock workbench synchronization
2026-08-10 09:18:39 +02:00
Alexander Medvedev
5bc8077848 feat: impl some Sculk blocks 2026-08-09 22:41:09 +02:00
Alexander Medvedev
6720ac265e feat: add more items 2026-08-09 21:36:03 +02:00
Alexander Medvedev
b18c26ccb4 fix: SEmote packet 2026-08-09 18:48:59 +02:00
Alexander Medvedev
92658f5853 feat(bedrock): death animation 2026-08-09 17:29:54 +02:00
Alexander Medvedev
33e11088b2 fix: https://github.com/Pumpkin-MC/Pumpkin/issues/481 2026-08-09 17:06:40 +02:00
xRookieFight
d61f8c931f fix: don't block the async runtime when reading inventories (#2851) 2026-08-09 16:36:02 +02:00
Eshan I.
c75b89fd89 fix(item): require a non-empty charged list to fire a crossbow (#2805)
Item::CROSSBOW ships a ChargedProjectiles component by default, carrying an empty
projectile list (crates/pumpkin-data/src/generated/item.rs, the CROSSBOW components
table). normal_use tested only for the presence of that component, which is therefore
true for every crossbow including a freshly crafted one.

The result is that the first right-click on an uncharged crossbow takes the fire branch,
fire_projectiles iterates an empty list and does nothing, and charging never starts, so
the crossbow cannot be used at all until something else happens to write a non-empty
patch.

Vanilla gates on the list being present AND non-empty:

    ChargedProjectiles chargedProjectiles = itemStack.get(DataComponents.CHARGED_PROJECTILES);
    if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {

(CrossbowItem.java:67-68, 26.2.) Matching that here restores the charge-then-fire cycle.

Test plan:
- cargo fmt --all
- RUSTFLAGS="-D warnings" cargo clippy -p pumpkin --all-targets
2026-08-09 15:59:09 +02:00
xRookieFight
dedce1ce45 fix: adapt bow attack goal to new equipment API (#2850) 2026-08-09 15:39:12 +02:00
xRookieFight
bb5f05573e fix: minecarts fall when off rails (#2796) 2026-08-09 15:12:30 +02:00
xRookieFight
e68cef7505 fix: make skeletons shoot arrows with their bow (#2818) 2026-08-09 15:11:36 +02:00
ZlordHUN
ee984ea555 fix: Bedrock NetherNet offline mode (#2821) 2026-08-09 15:09:37 +02:00
xRookieFight
8f969c7681 fix: sync enchanted item to client (#2816) 2026-08-09 15:02:14 +02:00
xRookieFight
bb9e71a951 fix(item): keep eyes of ender in creative mode (#2841) 2026-08-09 12:04:50 +02:00
Bjorn Beishline
ff57b6e282 feat(chunk): improve chunk generation speed ~1.27x (#2847)
* feat(noise): Add benchmark for noise generation

* feat(noise): fix extra noise libm calls

* feat(noise): cache density fill

* feat(aquifer): add skip sampling for aquifer
2026-08-09 12:04:28 +02:00
Alexander Medvedev
3150bd13de chore: add CODEOWNERS 2026-08-09 11:58:59 +02:00
ZlordHUN
8ea6fe9f9b feat: Add Ocean Monument Structure Generation (#2737)
* feat: Implement ocean monument structures

* Fix monuments being cut in half

* Fix structure generation height handling
2026-08-09 11:38:49 +02:00
ZlordHUN
00b921c020 fix: bedrock and java players disconnecting when joining the same server (#2844)
* WIP: improve Bedrock player skin compatibility

* Fix cross-edition player list synchronization

* Fix legacy Java skins on Bedrock

* Refactor Bedrock build platform encoding
2026-08-09 10:33:24 +02:00
ZlordHUN
64dd96c37b fix: Bedrock dropped item synchronization (#2832) 2026-08-09 10:15:22 +02:00
zhangxuan
f2ed9a07e4 fix: 🐛 Fixed that a slime appears after a magma cube died (#2826)
* fix: 🐛 Fixed that a slime appears after a magma cube died

* style: 🎨 Code formatting
2026-08-09 10:07:03 +02:00
Dark Star
97160c3566 docs(plugin-api): explain how plugins persist data (#2820) 2026-08-09 10:06:31 +02:00
xRookieFight
d150d78cfa fix(worldgen): skip jigsaw blocks whose final state is a structure void (#2840) 2026-08-09 10:04:10 +02:00
ZlordHUN
50fe9f7cd7 fix: Bedrock block breaking feedback (#2829) 2026-08-08 16:14:10 +02:00
Alexander Medvedev
e5047bd4c9 fix: data component try_from_name 2026-08-08 16:12:56 +02:00
Alexander Medvedev
49360e53ef chore: clippy enforce unwrap_used, expect_used and panic
release is not far
2026-08-08 13:44:51 +02:00
xRookieFight
0eb7b936db fix: encode skin parts metadata per client version (#2815) 2026-08-08 08:59:08 +02:00
Alexander Medvedev
63d97e2c82 refactor(inventory): replace per-slot Arc<Mutex<ItemStack>> with container-level synchronization 2026-08-07 21:45:05 +02:00
ZlordHUN
ffcf09ece4 chore: remove bedrock raknet (#2811)
* Remove legacy RakNet transport

* Replace RakNet status with NetherNet discovery

* Restore Bedrock server-list status

* Remove NetherNet LAN discovery

* Remove unused AES dependency
2026-08-07 20:00:41 +02:00
Alexander Medvedev
7e2505b055 feat: add fetchprofile command 2026-08-07 14:01:03 +02:00
Alexander Medvedev
19ccd152f1 feat: add waypoint command 2026-08-07 10:58:46 +02:00
xRookieFight
7e60303689 fix: flatten hover event nbt fields (#2798) 2026-08-07 10:10:44 +02:00
MCbabel
69e3ff7c7c fix(world): size proto chunks by the dimension, not by the noise settings (#2803)
`ProtoChunk::new` took its height from the noise settings while
`Chunk::build_level_sections` builds and reads back `dimension.height / 16`
sections. The End and the Nether are the two dimensions taller than their noise
settings (256 vs 128), so their proto chunks held 8 sections for the 16 the
level chunk asks for and `get_block_state_raw` indexed past the end of
`flat_block_map`, panicking on every generation thread. The same mismatch left
light data covering half the column and dropped features placed above y = 128.

A chunk spans its dimension, as in vanilla's `LevelHeightAccessor`; the noise
settings only bound the vertical window the generator writes into. `ProtoChunk`
now carries both, storage sized by the dimension plus a generation window built
with `GenerationShapeConfig::trim_height`, so surface rules, carver height
providers and feature placement keep resolving against y < 128 there.

The panic quoted in the issue (`chunk_density_function.rs`, len 99 index 129)
was the same conflation in `populate_noise` and is already fixed by 3c43f971.
2026-08-07 10:10:00 +02:00
MCbabel
b0d2dfa434 fix(world): load level.dat instead of discarding it (#2804)
`AnvilLevelInfo::read_world_info` validated the version tags and then returned
`LevelData::default(Seed(0))`, so level name, difficulty, spawn, world border
and data packs were discarded on every start, and the writer emitted only
`DataVersion`, `version` and `LastPlayed`, truncating the rest on save. A world
whose seed lives in level.dat's legacy `Data.WorldGenSettings` compound, as
converters such as Chunker emit, therefore loaded with seed 0 and generated
foreign terrain into its existing region files.

level.dat is now read and written tag by tag through pumpkin-nbt, every field
falling back to its vanilla default, so a missing optional tag such as
`Version.Series` no longer costs the whole file. Saving merges into the existing
`Data` compound, so tags Pumpkin does not model survive. A world with no seed
in either file aborts startup instead of silently regenerating, and the seed is
mirrored into level.dat, the only world file that is backed up. Version tags are
re-stamped with the current constants on save so level.dat stays consistent with
the chunks Pumpkin writes.
2026-08-07 10:09:06 +02:00
ZlordHUN
f2444bcefd feat(bedrock): update to 1.26.40 and add NetherNet transport (#2797)
* feat(bedrock): update to 1.26.40 and add NetherNet transport

* fix(bedrock): update remaining 1.26.40 packet schemas

* fix(bedrock): complete NetherNet and inventory migration
2026-08-07 08:34:10 +02:00
Alexander Medvedev
caf954d170 fix: mega pine trees 2026-08-06 16:16:12 +02:00
Alexander Medvedev
0b7e093c58 fix: tests 2026-08-06 14:26:27 +02:00
Alexander Medvedev
74e7ad2909 fix: ci in release 2026-08-06 13:30:51 +02:00
Alexander Medvedev
cb3660bcd2 chore: move to crates folder 2026-08-06 12:56:40 +02:00