mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-31 08:22:33 +00:00
* Add pumpkin-api crate for API definitions * Add proc-macro definitions for pumpkin-api * Add pumpkin-api and pumpkin-api-macros to workspace * Add basic PluginManager implementation plugin loading * Update .gitignore to include specific plugin file types * Add example plugin * Cargo fmt * Fix clippy issues * Refactoring to prevent a circular import * Add base impl for plugin hooks * Move plugin manager to server * Make metadata have static lifetime * Add default implementations to events * Add hooks to proc macro * Update example * Fix formatting * Fix clippy warnings * Load metadata from Cargo.toml * Mark plugins as an implemented feature :D * Implement new event handling * Create a static global reference to the plugin manager * Emit player join and leave events * Update macro generation * Update example * Fix formatting * Fix clippy issue * Simplify event handling * Add plugin command to list plugins * Make handlers async * Update macros * Update example * Fix formatting and clippy issues * Better styling on plugins command * Fix clippy issues * Cargo fmt * Disable doctest for lib target on pumpkin crate * New API for plugins * Update api macros * Update plugin example * A bit of clean up * Some QoL (and performance) improvements * Cargo fmt and clippy fixes * refactoring, better event handling, new context functions * Async on_load and on_unload * Fix mutex lock never going out of scope * Async plugin loading * Add plugin management command * Fix clippy issues * Fix import issues * Move TcpConnection out of client * Move packet encoding out of client * Allow plugins to register commands * Fix fmt and clippy * Implement plugin list in query * Make arguments public so that plugins can use them * Update proc_macros to handle runtime * Make tree_builder public for use in plugins * Make FindArg trait public for use in plugins * Update example plugin * Fix merge related issues * Fix cargo fmt * Post-merge fixes (also 69th commit, nice) * New event system * cargo fmt * Impl block break event * cargo fmt and clippy * Reduced plugin size * Reduce dependency count * Old code cleanup * cargo fmt * Add event priority and blocking options to event registration and handling * Refactor event handling to support blocking execution and improve event registration * Fix post-merge errors * Update example plugin * increase mpsc channel capacity and handle write errors gracefully * Use Arc<Player> instead of &Player * add missing import * Update example plugin with playing sounds * Remove example plugin * Create plugins dir if doesnt exist * Remove unused vars * Remove unnecessary clones * Fix impl * cargo fmt * Make server pub in context
71 lines
1.4 KiB
Rust
71 lines
1.4 KiB
Rust
use std::sync::Arc;
|
|
|
|
use pumpkin_util::text::TextComponent;
|
|
|
|
use crate::{
|
|
entity::player::Player,
|
|
plugin::{CancellableEvent, Event},
|
|
};
|
|
|
|
use super::{PlayerEvent, PlayerLeaveEvent};
|
|
|
|
pub struct PlayerLeaveEventImpl {
|
|
player: Arc<Player>,
|
|
leave_message: TextComponent,
|
|
is_cancelled: bool,
|
|
}
|
|
|
|
impl PlayerLeaveEventImpl {
|
|
pub fn new(player: Arc<Player>, leave_message: TextComponent) -> Self {
|
|
Self {
|
|
player,
|
|
leave_message,
|
|
is_cancelled: false,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl PlayerLeaveEvent for PlayerLeaveEventImpl {
|
|
fn get_leave_message(&self) -> &TextComponent {
|
|
&self.leave_message
|
|
}
|
|
|
|
fn set_leave_message(&mut self, message: TextComponent) {
|
|
self.leave_message = message;
|
|
}
|
|
}
|
|
|
|
impl PlayerEvent for PlayerLeaveEventImpl {
|
|
fn get_player(&self) -> Arc<Player> {
|
|
self.player.clone()
|
|
}
|
|
}
|
|
|
|
impl CancellableEvent for PlayerLeaveEventImpl {
|
|
fn is_cancelled(&self) -> bool {
|
|
self.is_cancelled
|
|
}
|
|
|
|
fn set_cancelled(&mut self, cancelled: bool) {
|
|
self.is_cancelled = cancelled;
|
|
}
|
|
}
|
|
|
|
impl Event for PlayerLeaveEventImpl {
|
|
fn get_name_static() -> &'static str {
|
|
"PlayerLeaveEvent"
|
|
}
|
|
|
|
fn get_name(&self) -> &'static str {
|
|
"PlayerLeaveEvent"
|
|
}
|
|
|
|
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
|
|
self
|
|
}
|
|
|
|
fn as_any(&self) -> &dyn std::any::Any {
|
|
self
|
|
}
|
|
}
|