mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-31 08:22:33 +00:00
* 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>
25 lines
850 B
Plaintext
25 lines
850 B
Plaintext
package pumpkin:plugin;
|
|
|
|
world plugin {
|
|
use context.{context};
|
|
use event.{event};
|
|
use server.{server as server-instance};
|
|
use command.{command-sender, consumed-args, command-error};
|
|
|
|
// This is what the host should provide to the plugin
|
|
import logging;
|
|
import server;
|
|
import text;
|
|
import command;
|
|
import context;
|
|
|
|
// This is what the plugin should provide
|
|
export init-plugin: func();
|
|
export on-load: func(context: context) -> result<_, string>;
|
|
export on-unload: func(context: context) -> result<_, string>;
|
|
export metadata;
|
|
export common;
|
|
export handle-event: func(event-id: u32, server: server-instance, event: event) -> event;
|
|
export handle-command: func(command-id: u32, sender: command-sender, server: server-instance, args: consumed-args) -> result<s32, command-error>;
|
|
}
|