From 909943bb5d496c98cb273801c5932867dee1e021 Mon Sep 17 00:00:00 2001 From: Edvin Bryntesson Date: Sat, 31 Aug 2024 11:57:13 +0200 Subject: [PATCH] add development command for opening a global enderchest --- pumpkin/src/commands/cmd_echest.rs | 31 ++++++++++++++++++++++++++++++ pumpkin/src/commands/mod.rs | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 pumpkin/src/commands/cmd_echest.rs diff --git a/pumpkin/src/commands/cmd_echest.rs b/pumpkin/src/commands/cmd_echest.rs new file mode 100644 index 000000000..83767abcc --- /dev/null +++ b/pumpkin/src/commands/cmd_echest.rs @@ -0,0 +1,31 @@ +use pumpkin_inventory::OpenContainer; + +use crate::commands::tree::CommandTree; + +const NAMES: [&str; 2] = ["echest", "enderchest"]; + +const DESCRIPTION: &str = + "Show your personal enderchest (this command is used for testing container behaviour)"; + +pub(crate) fn init_command_tree<'a>() -> CommandTree<'a> { + CommandTree::new(NAMES, DESCRIPTION).execute(&|sender, server, _| { + if let Some(player) = sender.as_mut_player() { + if let Some(container) = server + .open_containers + .entry(0) + .or_insert(OpenContainer::empty(player.entity_id())) + .try_open(player.entity_id()) + { + player.open_container( + container.window_type(), + "minecraft:generic_9x3", + Some("Ender Chest"), + Some(container.all_slots_ref()), + None, + ); + } + } + + Ok(()) + }) +} diff --git a/pumpkin/src/commands/mod.rs b/pumpkin/src/commands/mod.rs index 1321ec665..7d6f89a6b 100644 --- a/pumpkin/src/commands/mod.rs +++ b/pumpkin/src/commands/mod.rs @@ -6,6 +6,7 @@ use crate::commands::dispatcher::CommandDispatcher; use crate::entity::player::Player; use crate::server::Server; mod arg_player; +mod cmd_echest; mod cmd_gamemode; mod cmd_help; mod cmd_pumpkin; @@ -80,6 +81,7 @@ fn dispatcher_init<'a>() -> CommandDispatcher<'a> { dispatcher.register(cmd_gamemode::init_command_tree()); dispatcher.register(cmd_stop::init_command_tree()); dispatcher.register(cmd_help::init_command_tree()); + dispatcher.register(cmd_echest::init_command_tree()); dispatcher }