Commit Graph

154 Commits

Author SHA1 Message Date
Alexander Medvedev
966fbec3d3 feat(plugin-api): add java/bedrock abstraction 2026-05-16 09:56:18 +02:00
Alexander Medvedev
cf9c7e85dc chore: less awaits more fun part 2 2026-05-14 20:34:55 +02:00
Demetrius Kanios
d5026cb55e feat(plugin-api): Integrate wasmtime_wasi_http (#2128)
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
2026-05-14 18:19:37 +02:00
Alexander Medvedev
92abb1e44e chore: less awaits more fun 2026-05-14 12:28:43 +02:00
Alexander Medvedev
45867d33e2 feat(plugin-api): initial packet api 2026-05-08 21:42:37 +02:00
Alexander Medvedev
5c90387b02 refactor: move block entities from pumpkin-world -> pumpkin 2026-05-07 19:35:17 +02:00
Alexander Medvedev
63d39f46d4 feat: add enchanting table 2026-05-06 22:29:29 +02:00
Demetrius Kanios
081e1d7e64 feat(bedrock): Update Bedrock support to 26.10 (#2067)
* Update Bedrock support to 26.10

Co-authored-by: A. Jakubiak <contact@jakubiak.fr>

* Fix key extraction for self-signed

* Restructure login to fix resource pack race condition

* Undo unrelated changes to blocks

* Fix relavent clippy warnings.

---------

Co-authored-by: A. Jakubiak <contact@jakubiak.fr>
2026-04-30 20:22:59 +02:00
Alexander Medvedev
a36240dd40 fix: height maps 2026-04-27 23:16:19 +02:00
Alexander Medvedev
95df70c448 perf: chunks should be faster now 2026-04-25 15:33:11 +02:00
Alexander Medvedev
2b4e3bb332 chore(plugin-api): enable enable_method_chaining 2026-04-17 20:54:36 +02:00
Alexander Medvedev
9b2bd09dcc fix: rust 1.95 lints 2026-04-16 20:50:36 +02:00
Alexander Medvedev
e9423dcb9c chore: add encoder fuzzing
ofc nothing more :wink
2026-04-16 20:32:19 +02:00
Alexander Medvedev
7cc4854078 feat(plugin-api): add hot-reloading 2026-04-15 18:37:32 +02:00
Alexander Medvedev
9012a92287 feat(plugin-api): add support for plugin dependencies 2026-04-15 16:47:08 +02:00
Alexander Medvedev
b6ada28585 feat(plugin-api): added PlayerToggleFlightEvent 2026-04-14 21:45:00 +02:00
Alexander Medvedev
511318ae6b chore: chunk gen should be better now 2026-04-13 18:18:30 +02:00
Alexander Medvedev
2c338f468c feat: add dragon ai
not perfect, bit buggy, but it works overall
2026-04-12 19:10:14 +02:00
Alexander Medvedev
1d7c72ba5b fix: water swimming bug 2026-04-09 22:18:21 +02:00
Alexander Medvedev
82ce8e9633 chore: chunk gen just got a bit faster 2026-04-06 13:07:53 +02:00
Alexander Medvedev
0656aec158 fix: some bugs 2026-04-03 18:35:34 +02:00
Alexander Medvedev
c15ebf181d chore: more plugin api work
also added bedrock fuzzing
2026-04-01 19:37:01 +02:00
ChocoDev
bb5033046b fix: offline player support for some command with usercache (#1793)
* add gameprofile that support offline player

* clippy

* bigass refactor select_players() and select_entities() + usercache.json

* formating

* enhance usercache.json

* better cursor on dispatch

* Update dependencies in Cargo.lock

Signed-off-by: ChocoDev <100467857+chocodev11@users.noreply.github.com>

* using chrono instead self-write

* remove unnecessary parse

* clippy

---------

Signed-off-by: ChocoDev <100467857+chocodev11@users.noreply.github.com>
Co-authored-by: chocodev11 <chocodev11@users.noreply.github.com>
2026-03-30 19:25:45 +02:00
SomeYellowGuy
6ac9b31f78 feat(codec): add either codecs (#1900)
* initial commit

# Conflicts:
#	Cargo.toml

# Conflicts:
#	Cargo.toml

* implemented more `DataResult` methods

* finished data result struct

* fixed clippy errors

* implemented `map_like` and more `dynamic_ops` methods

* finished most other `DynamicOps` methods

* Fixed doc in get_bytes

* added encoder and decoder files

* fixed some stuff and added primitive codecs

* added some primitive codecs (has errors for now)

* changed the "stream" ops methods

* reworked types of the coders and codecs, added list codecs

* added JSON ops

* fixed list codecs, added some doc test examples in `JsonOps`

* added lazy codecs

* added map encoders, decoders and struct builders

* actually added mapdecoder

* added encoder and decoder transformations

* fixed encoder and decoder transformations and added transformation functions and range codecs

* added field encoders and decoders and separated range codecs

* added field encoders and decoders and separated range codecs

* added BaseMapCodec and SimpleMapCodec

* added struct codecs and moved tests

* added `NbtOps`, unsigned number codec types, range codec tests, a struct test, detailed `Codec` documentation

* added optional field map codecs, the validator function and reworked struct builder functions

* added unbounded map and struct codec tests and reworked validated codecs

* did some visibility refactoring

* fixed some stuff and renamed unsigned number codecs

* fixed formatting

* fixed docs to reflect changes on renaming unsigned number codecs

* fixed validated test

* fixed doctest

* moved base_map_codec and fixed docs about codecs

* fixed some mistakes in the code

* fixed some more mistakes in the code and converted some `DataResult::error` calls to `DataResult::partial_error`

* fixed formatting

* fixed some incorrect docs

* removed `OnceLock`s in `MapCodec`s so they can be used more easily

* fixed transformer codec descriptions, added more `NbtOps` tests and fixed some `NbtOps` list methods

* fixed doctest

* added a method to allow creating a field using a `MapCodec` reference

* bifurcated `MapCodecCodec`s as well

* removed imports only for documentation and replaced them with intra-doc links

* added additional docs to `optional_field_with_default` and `lenient_optional_field_with_default` Codec methods for additional details on encoding

* renamed crate to `pumpkin-codecs` so that data fixing can be placed somewhere else not frequently used

* fixed invalid nbt tag for test

* reverted wrapping the tags for heterogeneous elements

* fixed a few more issues

* initial commit

# Conflicts:
#	Cargo.toml

* added `NbtOps`, unsigned number codec types, range codec tests, a struct test, detailed `Codec` documentation

* renamed crate to `pumpkin-codecs` so that data fixing can be placed somewhere else not frequently used

* added either codecs and either map codecs

* added a test and extra either methods

* added extra assertion

* removed this crate's `either` module in favor of the `either` crate

* fixed rebase

* fixed Cargo.lock

* removed old folder

* removed `DataResult` change
2026-03-30 16:52:57 +02:00
Alexander Medvedev
0635b048b5 Port to 26.1 2026-03-30 16:43:15 +02:00
HairlessVillager
974bdd98a6 chore: add license to Cargo.toml files (#1927) 2026-03-28 15:47:15 +01:00
SomeYellowGuy
24f6e2732d feat: Implement basic codecs and DynamicOps implementations from DataFixerUpper (#1483)
* initial commit

# Conflicts:
#	Cargo.toml

* implemented more `DataResult` methods

* finished data result struct

* fixed clippy errors

* implemented `map_like` and more `dynamic_ops` methods

* finished most other `DynamicOps` methods

* Fixed doc in get_bytes

* added encoder and decoder files

* fixed some stuff and added primitive codecs

* added some primitive codecs (has errors for now)

* changed the "stream" ops methods

* reworked types of the coders and codecs, added list codecs

* added JSON ops

* fixed list codecs, added some doc test examples in `JsonOps`

* added lazy codecs

* added map encoders, decoders and struct builders

* actually added mapdecoder

* added encoder and decoder transformations

* fixed encoder and decoder transformations and added transformation functions and range codecs

* added field encoders and decoders and separated range codecs

* added field encoders and decoders and separated range codecs

* added BaseMapCodec and SimpleMapCodec

* added struct codecs and moved tests

* added `NbtOps`, unsigned number codec types, range codec tests, a struct test, detailed `Codec` documentation

* added optional field map codecs, the validator function and reworked struct builder functions

* added unbounded map and struct codec tests and reworked validated codecs

* did some visibility refactoring

* fixed some stuff and renamed unsigned number codecs

* fixed formatting

* fixed docs to reflect changes on renaming unsigned number codecs

* fixed validated test

* fixed doctest

* moved base_map_codec and fixed docs about codecs

* fixed some mistakes in the code

* fixed some more mistakes in the code and converted some `DataResult::error` calls to `DataResult::partial_error`

* fixed formatting

* fixed some incorrect docs

* removed `OnceLock`s in `MapCodec`s so they can be used more easily

* fixed transformer codec descriptions, added more `NbtOps` tests and fixed some `NbtOps` list methods

* fixed doctest

* added a fourth specific `NbtOps` test for byte buffers (`ByteArray`s in NBT)

* fixed grammar mistake

* log messages for discarded keys in `create_map`

* use the `tracing` crate for logging

* added a method to allow creating a field using a `MapCodec` reference

* bifurcated `MapCodecCodec`s as well

* removed imports only for documentation and replaced them with intra-doc links

* added additional docs to `optional_field_with_default` and `lenient_optional_field_with_default` Codec methods for additional details on encoding

* renamed crate to `pumpkin-codecs` so that data fixing can be placed somewhere else not frequently used

* fixed some more errors and reworked `nbt_ops`'s `ListCollector` to be like 1.21.11, also allows &str in `DataResult`'s creation methods

* fixed invalid nbt tag for test

* reverted wrapping the tags for heterogeneous elements

* renamed function parameter in `DataResult::apply_2`

* removed unnecessary comment

* fixed a few more issues

* fixed formatting

* fixed another mistake for `DataResult::add_message`

* renamed `DataResult` factory methods to be more idiomatic and removed unnecessary `dyn` method

* removed unnecessary `clone()`

* updated Cargo.lock
2026-03-24 09:07:51 +01:00
Alexander Medvedev
e2ee483fca chore: update tracing-subscriber
now possible since they allowed to disable ansi sanitization
2026-03-13 18:03:59 +01:00
Alexander Medvedev
744664cb2f chore: parse DoublePerlinNoiseParameters at compile time 2026-03-10 20:55:49 +01:00
Bjorn Beishline
576d76dfd6 feat: add wasm plugin api (#1675)
* feat: wasm plugin api base

* fix: make metadata macro work

* chore: fix clippy lints

* Implement guest registering of events

* chore: remove hardcoded v0.1.0  dep in wasm_host

* feat: add events to wasm

* feat: add caching of components

* fix: clippy lints

* chore: update Cargo.lock

* fix: add feature flag for link section

* feat: add base for command wit definitions

* feat: implement arg variants for command wit interface

* feat: add commented out command-tree arg variant

* feat: add wit definitions for text-component and command tree

Introduces the text interface with a builder-pattern resource,
argument-type variant, command-node resource, and register-command
on context. Migrates event and command-sender to use the new
text-component resource.

* feat: add stubs for wasm host

* chore: update wasmtime to v42

* feat: implement three methods of wit textcomponent

* Add consume function

* feat: implement all text-component host methods

Replace todo!() stubs with working implementations for all
HostTextComponent trait methods: style setters, click events,
hover events, add_text, get_text, and encode.

* feat: allow events to be modified

* feat: add some of base for commands

* chore: fix spelling mistake

* chore: remove unused dep

* feat: implement all argument-type to consumer mappings

* Add command exports

* log plugin load errors

* Some commands work

* Some more Commands work

* Update how commands are registered

* Implement locale

* Use handler id with require

* chore: fix some warnings

* Add PlayerLeaveEvent

* chore: fix all clippy warnings

* fix: add more descriptive error message

---------

Co-authored-by: Purdze <r.s.sutton@hotmail.co.uk>
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
2026-03-09 18:12:48 +01:00
Alexander Medvedev
7248f942e7 fix: latest rust clippy lints 2026-03-05 21:34:47 +01:00
Alexander Medvedev
12acb8aa76 fix: CI 2026-02-22 16:42:41 +01:00
Alexander Medvedev
bc205d2683 feat: pumpkin-protocol: add fuzzing
actually found some issues
2026-02-22 15:24:36 +01:00
Alexander Medvedev
4afe60aca9 chore: i'm back 2026-02-21 20:52:37 +01:00
FabseGP
24ea53b2e9 feat: replace log with tracing (#1460)
* feat: replace log with tracing

* chore: clippy

* fix: revert replacing println!-calls

* fix: await async construct

* fix: lints + incorrect await

* fix: each plugin spawns their own tracing-subscriber

* fix: replace info! with println for commands

* chore: remove env_logger

* fix: added TODO about structured logging
2026-02-13 21:10:13 +00:00
vyPal
88a38f74be fix: Lock tracing-subscriber to version before ANSI escaping (#1516) 2026-02-10 21:25:38 +01:00
Alexander Medvedev
f60a77c5d9 chore: decrease compile time
Instead of parsing pumpkin-data for everyone who compiles lets have it as static files, pumpkin-codegen is a standalone parser now
2026-02-09 15:52:46 +01:00
Alexander Medvedev
b0ab5006ca chore: remove unused deps
also apply some clippy lints in some places
2026-02-09 00:07:39 +01:00
Alexander Medvedev
e45ab613f4 chore: parse translations at compile time
not finished but its much safer and nicer now
2026-02-08 13:22:36 +01:00
Alexander Medvedev
b1f62f3cd9 chore: remove not needed dep 2026-02-07 16:53:54 +01:00
Alexander Medvedev
fd1b968ae6 chore: switch from simplelog to tracing 2026-02-07 16:51:56 +01:00
Alexander Medvedev
53803c5e94 feat: add infested blocks & silverfish spawn
ofc also includes a bunch of other things like i always do :D
2026-02-05 19:34:04 +01:00
Alexander Medvedev
2a0d2f1cf3 chore: move structure settings from runtime to compile time parsing 2026-02-04 17:13:50 +01:00
Alexander Medvedev
835262a85a chore: move chunk gen settings from runtime to compile time parsing
Bin size decreased, Startup time decreased by a lot in debug, lower memory usage
2026-02-03 23:35:31 +01:00
Alexander Medvedev
72bd4dfbef feat: add from_legacy_string to TextComponent 2026-01-30 23:12:54 +01:00
Alexander Medvedev
b58822319d fix: CI 2026-01-28 23:40:48 +01:00
Alexander Medvedev
fb13004b47 fix: apply clippy lints to workspace
also add contributors to /pumpkin command

Co-Authored-By: Fyor <90567841+fyordev@users.noreply.github.com>
Co-Authored-By: MartV0 <34748938+martv0@users.noreply.github.com>
Co-Authored-By: FabseGP <fabsegp@fabseman.space>
2026-01-28 00:52:47 +01:00
Purdze
830284c091 feat: Implement nether portal linking (#1372)
* fix: nether portals

* fix: add world border checks and match vanilla portal behavior

* feat: add region-based POI storage for nether portal linking

Implemented Point of Interest system for fast portal lookups:
- region-based NBT storage matching vanilla format
- sections keyed by Y coordinate within per-chunk data
- auto-registration on portal creation/destruction
- used by portal search to avoid scanning all blocks

Note: this POI implementation covers nether portals only.
The full POI system still needs significant work for:
- villager job sites
- beds, bells, beehives
- ticket/occupation system
- auto-scanning chunks for POI blocks
- distance tracker for pathfinding

Vanilla POI reference: net/minecraft/world/poi/

* feat: add entity position preservation and collision avoidance for portals

- preserve entity position relative to portal when teleporting
- add collision avoidance to find safe spawn positions
- add source portal tracking for accurate exit position calculation
- fix clippy pedantic warnings across portal and border code

* feat: add yaw rotation and vehicle teleportation for portals

- rotate entity yaw 90° when portal axis changes between dimensions
- prevent passengers from teleporting independently (wait for vehicle)
- teleport all passengers along with vehicle through portals

* fix: handle nested passengers recursively for portal teleportation

passengers of passengers (e.g., player riding a pig riding a minecart)
are now teleported correctly through portals

* style: apply cargo fmt and allow too_many_lines for portal search

find_safe_location exceeds 100 lines but splitting it would reduce
readability - the portal search algorithm flows naturally as one unit

* feat: use MCA format for POI storage for vanilla compatibility

Change POI storage to vanilla-compatible .mca region format. This allows
proper portal linking when importing existing vanilla worlds, as Pumpkin
can now read portals registered by vanilla.

* fix: remove local cargo config that breaks CI

* fix: correct portal direction calculations and dimension chunk loading

- fix portal direction to match vanilla: z-axis uses south (not north)
- fix perpendicular direction to match vanilla's rotateyc1ockwise()
- fix fallback clearing dimensions to match vanilla (3x2x4 blocks)
- store world reference in chunkmanager, updated on dimension change
- use chunkmanager's world for chunk loading instead of entity.world

this fixes players spawning inside blocks and seeing wrong terrain
(overworld blocks in nether) after portal teleportation.

* fix: portal neighbor update logic and remove_player return value

- fix impossible condition in portal neighbor update (was always false)
- fix remove_player to return the removed player instead of none

* fix: update entity.world to arcswap for dimension teleportation

entity.world was an immutable arc<world> that was never updated after
dimension teleportation. when a player teleported to the nether,
chunkmanager.world was updated but entity.world still pointed to the
overworld. this caused tick_block_collisions() to read blocks from the
wrong dimension, preventing return portal detection.

changed entity.world from arc<world> to arcswap<world> to allow atomic
updates when changing dimensions. added set_world() method and updated
teleport_world() to call it after dimension changes.

* fix: reset chunk batch state on dimension change

when changing dimensions, the chunk batch state was not being reset.
this caused slow chunk loading if the player was in a throttled state
before teleporting, as the server would wait for acknowledgments for
chunks that no longer exist in the new dimension.

now resets batches_sent_since_ack to Initial in change_world() so
chunks can be sent immediately after dimension change.
2026-01-27 20:30:58 +01:00
Alexander Medvedev
622d0599df chore: added gradient and rainbow to TextComponent
ofc did also a bunch of other things, the JavaClient implementation should be cleaner now and does not lock the player anymore
2026-01-25 16:41:46 +01:00
Alexander Medvedev
7eccda00ff fix: bedrock movement
also added a bunch of docs, and fixed bedrock air bubbles constantly shown, and also fix bedrock block states
2026-01-24 22:05:50 +01:00