* compare BlockId instead of (str) name
* compare named BlockIds in Block::properties() and Block::from_properties()
* compare named BlockIds instead of u16 literals for `impl BlockProperties`
The HTTP_OUTBOUND permission was wired up correctly in #2128, gating
whether a plugin's outbound HTTP requests are allowed via
wasi_http_hooks.allow_outbound. That block was accidentally dropped in
8ce513ff89 ("feat: more plugin features") when unrelated changes
overwrote the same permission-checking region in
wasm_host/mod.rs, leaving allow_outbound permanently false regardless
of the plugin's declared permissions.
This restores the check so a plugin granted http-outbound in its
manifest can actually make outbound HTTP calls again.
* chore(bedrock): Update most of the packets to mirror the official docs
more closely.
* Fix typo
* Fix CCreativeContent
* Undo unrelated `registry.rs` change
* Update WIT to merged PR
---------
Signed-off-by: Demetrius Kanios <demetrius@kanios.net>
* feat(bungeeguard): add BungeeGuard token authentication
Add a BungeeGuard shared secret to the proxy configuration, validate the token during the BungeeCord login flow, reject connections with invalid tokens, and prevent players from bypassing the proxy to connect directly.
* fix
* fix
* fix:ci
* feat(plugin-api): Better method chaining (Rust)
* Work around faulty force-link of `cabi_realloc`
* Stub for `pumpkin-plugin-api` as well
* Revert "Work around faulty force-link of `cabi_realloc`"
This reverts commit 4aa4d4370b.
Adds the vanilla /reload command (permission level 2), which reloads
the server's datapacks: it re-reads the enabled packs, re-runs the
#minecraft:load function tag and pushes the rebuilt recipes to every
player, through the same Server::reload_datapacks path /datapack
enable and /datapack disable already use.
Feedback follows Vanilla and is sent before the reload starts, so it
arrives even though reloading takes a moment.
Co-authored-by: Mcxiaocaibug <Mcxiaocaibug@users.noreply.github.com>
Implements the vanilla /debug start and /debug stop commands (tracked in #15):
- /debug start opens one server-wide tick profiling session and rejects duplicate starts.
- /debug stop reports elapsed seconds, processed ticks, and average TPS, then returns the floored average TPS.
- Profiling state handles tick counter wraparound and can be restarted after a completed session.
- Registers minecraft:command.debug at operator permission level 3 and uses the existing Java and Bedrock translation keys.
/debug function is intentionally out of scope because Pumpkin does not yet have the required function runtime.
Every trait method wasmtime's bindgen! generates must be `async fn`
regardless of whether a given implementation needs to await anything,
so clippy::unused_async_trait_impl fired 578 times across the WASM
plugin bridge (crates/pumpkin/src/plugin/loader/wasm/wasm_host/wit/v0_1)
plus a handful of similarly-shaped trait impls elsewhere (redstone
pressure plates, several plant blocks, the pathfinder, three Entity
setter methods). This blocks "Run lints (debug/release)" CI on every
branch regardless of what it actually changes.
Allow the lint at the module level for wasm_host's submodules (one
attribute per module covers every impl inside it) and per-function for
the scattered non-WASM occurrences, rather than restructuring any of
the affected code.
Also fixes three unrelated pre-existing lint failures uncovered once
the above stopped masking them:
- pumpkin-macros::count_placeholders needed to be a const fn
(clippy::missing_const_for_fn) - this alone was blocking every other
lint check from ever running, since pumpkin-macros failing to
compile takes the whole workspace down with it.
- `Result<_, ()>` in Plugin::send_message (clippy::result_unit_err).
- `.ok().is_some_and(..)` that clippy::manual_is_variant_and wants as
`.is_ok_and(..)`.
Verified with `cargo clippy --all-targets --all-features` (debug and
release) and `cargo test -p pumpkin --lib` (257 passed).