From 070a50833bef0d668a014d926bed70665bb0e696 Mon Sep 17 00:00:00 2001 From: DaniD3v Date: Sat, 31 Aug 2024 18:32:48 +0200 Subject: [PATCH] Moved config into its own crate --- Cargo.lock | 11 +++++++++++ Cargo.toml | 2 +- pumpkin-config/Cargo.toml | 12 ++++++++++++ .../src/config => pumpkin-config/src}/auth.rs | 3 +-- .../config => pumpkin-config/src}/commands.rs | 0 .../src}/compression.rs | 0 .../config/mod.rs => pumpkin-config/src/lib.rs | 0 .../src/config => pumpkin-config/src}/proxy.rs | 0 .../src/config => pumpkin-config/src}/pvp.rs | 0 .../src/config => pumpkin-config/src}/rcon.rs | 0 .../src}/resource_pack.rs | 0 pumpkin-core/src/lib.rs | 7 +++++++ pumpkin/Cargo.toml | 1 + pumpkin/src/client/authentication.rs | 17 ++++------------- pumpkin/src/client/client_packet.rs | 2 +- pumpkin/src/client/player_packet.rs | 2 +- pumpkin/src/main.rs | 3 +-- pumpkin/src/proxy/velocity.rs | 3 ++- pumpkin/src/rcon/mod.rs | 3 ++- pumpkin/src/server.rs | 8 ++------ pumpkin/src/world/mod.rs | 3 ++- 21 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 pumpkin-config/Cargo.toml rename {pumpkin/src/config => pumpkin-config/src}/auth.rs (97%) rename {pumpkin/src/config => pumpkin-config/src}/commands.rs (100%) rename {pumpkin/src/config => pumpkin-config/src}/compression.rs (100%) rename pumpkin/src/config/mod.rs => pumpkin-config/src/lib.rs (100%) rename {pumpkin/src/config => pumpkin-config/src}/proxy.rs (100%) rename {pumpkin/src/config => pumpkin-config/src}/pvp.rs (100%) rename {pumpkin/src/config => pumpkin-config/src}/rcon.rs (100%) rename {pumpkin/src/config => pumpkin-config/src}/resource_pack.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index e2e6ed06c..b204a8850 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1906,6 +1906,7 @@ dependencies = [ "num-bigint", "num-derive", "num-traits", + "pumpkin-config", "pumpkin-core", "pumpkin-entity", "pumpkin-inventory", @@ -1929,6 +1930,16 @@ dependencies = [ "uuid", ] +[[package]] +name = "pumpkin-config" +version = "0.1.0" +dependencies = [ + "log", + "pumpkin-core", + "serde", + "toml 0.8.19", +] + [[package]] name = "pumpkin-core" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 3fbea597f..abca231fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = [ "pumpkin-core", "pumpkin-entity", "pumpkin-inventory", "pumpkin-macros/", "pumpkin-plugin", "pumpkin-protocol/", "pumpkin-registry/", "pumpkin-world", "pumpkin/"] +members = [ "pumpkin-config", "pumpkin-core", "pumpkin-entity", "pumpkin-inventory", "pumpkin-macros/", "pumpkin-plugin", "pumpkin-protocol/", "pumpkin-registry/", "pumpkin-world", "pumpkin/"] [workspace.package] version = "0.1.0" diff --git a/pumpkin-config/Cargo.toml b/pumpkin-config/Cargo.toml new file mode 100644 index 000000000..782294c9c --- /dev/null +++ b/pumpkin-config/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "pumpkin-config" +version.workspace = true +edition.workspace = true + +[dependencies] +pumpkin-core = { path = "../pumpkin-core" } + +serde = "1.0" +toml = "0.8" + +log.workspace = true diff --git a/pumpkin/src/config/auth.rs b/pumpkin-config/src/auth.rs similarity index 97% rename from pumpkin/src/config/auth.rs rename to pumpkin-config/src/auth.rs index 09c4188ff..c6606cd86 100644 --- a/pumpkin/src/config/auth.rs +++ b/pumpkin-config/src/auth.rs @@ -1,7 +1,6 @@ +use pumpkin_core::ProfileAction; use serde::{Deserialize, Serialize}; -use crate::client::authentication::ProfileAction; - #[derive(Deserialize, Serialize)] pub struct AuthenticationConfig { /// Whether to use Mojang authentication. diff --git a/pumpkin/src/config/commands.rs b/pumpkin-config/src/commands.rs similarity index 100% rename from pumpkin/src/config/commands.rs rename to pumpkin-config/src/commands.rs diff --git a/pumpkin/src/config/compression.rs b/pumpkin-config/src/compression.rs similarity index 100% rename from pumpkin/src/config/compression.rs rename to pumpkin-config/src/compression.rs diff --git a/pumpkin/src/config/mod.rs b/pumpkin-config/src/lib.rs similarity index 100% rename from pumpkin/src/config/mod.rs rename to pumpkin-config/src/lib.rs diff --git a/pumpkin/src/config/proxy.rs b/pumpkin-config/src/proxy.rs similarity index 100% rename from pumpkin/src/config/proxy.rs rename to pumpkin-config/src/proxy.rs diff --git a/pumpkin/src/config/pvp.rs b/pumpkin-config/src/pvp.rs similarity index 100% rename from pumpkin/src/config/pvp.rs rename to pumpkin-config/src/pvp.rs diff --git a/pumpkin/src/config/rcon.rs b/pumpkin-config/src/rcon.rs similarity index 100% rename from pumpkin/src/config/rcon.rs rename to pumpkin-config/src/rcon.rs diff --git a/pumpkin/src/config/resource_pack.rs b/pumpkin-config/src/resource_pack.rs similarity index 100% rename from pumpkin/src/config/resource_pack.rs rename to pumpkin-config/src/resource_pack.rs diff --git a/pumpkin-core/src/lib.rs b/pumpkin-core/src/lib.rs index ac5bdb4a5..9539acae3 100644 --- a/pumpkin-core/src/lib.rs +++ b/pumpkin-core/src/lib.rs @@ -13,3 +13,10 @@ pub enum Difficulty { Normal, Hard, } + +#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum ProfileAction { + ForcedNameChange, + UsingBannedSkin, +} diff --git a/pumpkin/Cargo.toml b/pumpkin/Cargo.toml index 0494fc462..804506fd3 100644 --- a/pumpkin/Cargo.toml +++ b/pumpkin/Cargo.toml @@ -10,6 +10,7 @@ default = [] [dependencies] # pumpkin pumpkin-core = { path = "../pumpkin-core"} +pumpkin-config = { path = "../pumpkin-config" } pumpkin-plugin = { path = "../pumpkin-plugin"} pumpkin-inventory = { path = "../pumpkin-inventory"} pumpkin-world = { path = "../pumpkin-world"} diff --git a/pumpkin/src/client/authentication.rs b/pumpkin/src/client/authentication.rs index 13dc427fa..692cf266c 100644 --- a/pumpkin/src/client/authentication.rs +++ b/pumpkin/src/client/authentication.rs @@ -2,16 +2,15 @@ use std::{collections::HashMap, net::IpAddr}; use base64::{engine::general_purpose, Engine}; use num_bigint::BigInt; +use pumpkin_config::{auth::TextureConfig, ADVANCED_CONFIG}; +use pumpkin_core::ProfileAction; use pumpkin_protocol::Property; use reqwest::{StatusCode, Url}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use thiserror::Error; use uuid::Uuid; -use crate::{ - config::{auth::TextureConfig, ADVANCED_CONFIG}, - server::Server, -}; +use crate::server::Server; #[derive(Deserialize, Clone, Debug)] #[allow(non_snake_case)] @@ -32,14 +31,6 @@ pub struct Texture { metadata: Option>, } -#[derive(Deserialize, Serialize, Clone, Debug, PartialEq, Eq)] -pub enum ProfileAction { - #[serde(rename = "FORCED_NAME_CHANGE")] - ForcedNameChange, - #[serde(rename = "USING_BANNED_SKIN")] - UsingBannedSkin, -} - #[derive(Deserialize, Clone, Debug)] pub struct GameProfile { pub id: Uuid, diff --git a/pumpkin/src/client/client_packet.rs b/pumpkin/src/client/client_packet.rs index 855c12d57..1c70b0e7c 100644 --- a/pumpkin/src/client/client_packet.rs +++ b/pumpkin/src/client/client_packet.rs @@ -1,4 +1,5 @@ use num_traits::FromPrimitive; +use pumpkin_config::{ADVANCED_CONFIG, BASIC_CONFIG}; use pumpkin_core::text::TextComponent; use pumpkin_protocol::{ client::{ @@ -19,7 +20,6 @@ use sha1::{Digest, Sha1}; use crate::{ client::authentication::{self, GameProfile}, - config::{ADVANCED_CONFIG, BASIC_CONFIG}, entity::player::{ChatMode, Hand}, proxy::velocity::velocity_login, server::{Server, CURRENT_MC_VERSION}, diff --git a/pumpkin/src/client/player_packet.rs b/pumpkin/src/client/player_packet.rs index 4323d0eda..1602a5d89 100644 --- a/pumpkin/src/client/player_packet.rs +++ b/pumpkin/src/client/player_packet.rs @@ -2,12 +2,12 @@ use std::f32::consts::PI; use crate::{ commands::{handle_command, CommandSender}, - config::ADVANCED_CONFIG, entity::player::{ChatMode, Hand, Player}, server::Server, util::math::wrap_degrees, }; use num_traits::FromPrimitive; +use pumpkin_config::ADVANCED_CONFIG; use pumpkin_core::{text::TextComponent, GameMode}; use pumpkin_entity::EntityId; use pumpkin_inventory::WindowType; diff --git a/pumpkin/src/main.rs b/pumpkin/src/main.rs index 4acac485b..79cd54053 100644 --- a/pumpkin/src/main.rs +++ b/pumpkin/src/main.rs @@ -18,7 +18,6 @@ use server::Server; pub mod client; pub mod commands; -pub mod config; pub mod entity; pub mod proxy; pub mod rcon; @@ -29,8 +28,8 @@ pub mod world; fn main() -> io::Result<()> { use std::sync::{Arc, Mutex}; - use config::{ADVANCED_CONFIG, BASIC_CONFIG}; use entity::player::Player; + use pumpkin_config::{ADVANCED_CONFIG, BASIC_CONFIG}; use pumpkin_core::text::{color::NamedColor, TextComponent}; use rcon::RCONServer; diff --git a/pumpkin/src/proxy/velocity.rs b/pumpkin/src/proxy/velocity.rs index 3b06ff97a..b2f753506 100644 --- a/pumpkin/src/proxy/velocity.rs +++ b/pumpkin/src/proxy/velocity.rs @@ -2,12 +2,13 @@ use std::net::SocketAddr; use bytes::{BufMut, BytesMut}; use hmac::{Hmac, Mac}; +use pumpkin_config::proxy::VelocityConfig; use pumpkin_protocol::{ bytebuf::ByteBuffer, client::login::CLoginPluginRequest, server::login::SLoginPluginResponse, }; use sha2::Sha256; -use crate::{client::Client, config::proxy::VelocityConfig}; +use crate::client::Client; type HmacSha256 = Hmac; diff --git a/pumpkin/src/rcon/mod.rs b/pumpkin/src/rcon/mod.rs index 3f20ffd54..19a5b17d6 100644 --- a/pumpkin/src/rcon/mod.rs +++ b/pumpkin/src/rcon/mod.rs @@ -9,9 +9,10 @@ use mio::{ Events, Interest, Poll, Token, }; use packet::{Packet, PacketError, PacketType}; +use pumpkin_config::RCONConfig; use thiserror::Error; -use crate::{commands::handle_command, config::RCONConfig, server::Server}; +use crate::{commands::handle_command, server::Server}; mod packet; diff --git a/pumpkin/src/server.rs b/pumpkin/src/server.rs index e37f4ea0e..8082b1daf 100644 --- a/pumpkin/src/server.rs +++ b/pumpkin/src/server.rs @@ -11,6 +11,7 @@ use std::{ use base64::{engine::general_purpose, Engine}; use image::GenericImageView; use mio::Token; +use pumpkin_config::{BasicConfiguration, BASIC_CONFIG}; use pumpkin_core::GameMode; use pumpkin_entity::EntityId; use pumpkin_plugin::PluginLoader; @@ -23,12 +24,7 @@ use pumpkin_world::dimension::Dimension; use pumpkin_registry::Registry; use rsa::{traits::PublicKeyParts, RsaPrivateKey, RsaPublicKey}; -use crate::{ - client::Client, - config::{BasicConfiguration, BASIC_CONFIG}, - entity::player::Player, - world::World, -}; +use crate::{client::Client, entity::player::Player, world::World}; pub const CURRENT_MC_VERSION: &str = "1.21.1"; diff --git a/pumpkin/src/world/mod.rs b/pumpkin/src/world/mod.rs index 337f6332b..77123a0ab 100644 --- a/pumpkin/src/world/mod.rs +++ b/pumpkin/src/world/mod.rs @@ -6,6 +6,7 @@ use std::{ use mio::Token; use num_traits::ToPrimitive; +use pumpkin_config::BasicConfiguration; use pumpkin_entity::{entity_type::EntityType, EntityId}; use pumpkin_protocol::{ client::play::{ @@ -19,7 +20,7 @@ use pumpkin_protocol::{ use pumpkin_world::{level::Level, radial_chunk_iterator::RadialIterator}; use tokio::sync::mpsc; -use crate::{config::BasicConfiguration, entity::player::Player}; +use crate::entity::player::Player; pub struct World { pub level: Arc>,