Add Message types
aka chat types
This commit is contained in:
parent
57e54284c5
commit
7ec4cc7c2e
@ -1 +1 @@
|
|||||||
{"chat":{"chat":{"translation_key":"chat.type.text","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}},"emote_command":{"chat":{"translation_key":"chat.type.emote","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.emote","parameters":["sender","content"]}},"msg_command_incoming":{"chat":{"translation_key":"commands.message.display.incoming","parameters":["sender","content"],"style":{"italic":true,"color":"gray"}},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}},"msg_command_outgoing":{"chat":{"translation_key":"commands.message.display.outgoing","parameters":["target","content"],"style":{"italic":true,"color":"gray"}},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}},"say_command":{"chat":{"translation_key":"chat.type.announcement","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}},"team_msg_command_incoming":{"chat":{"translation_key":"chat.type.team.text","parameters":["target","sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}},"team_msg_command_outgoing":{"chat":{"translation_key":"chat.type.team.sent","parameters":["target","sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}}
|
{"chat":{"id":0,"components":{"chat":{"translation_key":"chat.type.text","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}},"emote_command":{"id":1,"components":{"chat":{"translation_key":"chat.type.emote","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.emote","parameters":["sender","content"]}}},"msg_command_incoming":{"id":2,"components":{"chat":{"translation_key":"commands.message.display.incoming","parameters":["sender","content"],"style":{"italic":true,"color":"gray"}},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}},"msg_command_outgoing":{"id":3,"components":{"chat":{"translation_key":"commands.message.display.outgoing","parameters":["target","content"],"style":{"italic":true,"color":"gray"}},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}},"say_command":{"id":4,"components":{"chat":{"translation_key":"chat.type.announcement","parameters":["sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}},"team_msg_command_incoming":{"id":5,"components":{"chat":{"translation_key":"chat.type.team.text","parameters":["target","sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}},"team_msg_command_outgoing":{"id":6,"components":{"chat":{"translation_key":"chat.type.team.sent","parameters":["target","sender","content"]},"narration":{"translation_key":"chat.type.text.narrate","parameters":["sender","content"]}}}}
|
||||||
@ -8,6 +8,8 @@ build = "build/build.rs"
|
|||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
pumpkin-util = { path = "../pumpkin-util" }
|
||||||
|
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ mod chunk_status;
|
|||||||
mod entity_pose;
|
mod entity_pose;
|
||||||
mod entity_type;
|
mod entity_type;
|
||||||
mod game_event;
|
mod game_event;
|
||||||
|
mod message_type;
|
||||||
mod noise_parmeter;
|
mod noise_parmeter;
|
||||||
mod packet;
|
mod packet;
|
||||||
mod particle;
|
mod particle;
|
||||||
@ -33,6 +34,7 @@ pub fn main() {
|
|||||||
write_generated_file(entity_type::build(), "entity_type.rs");
|
write_generated_file(entity_type::build(), "entity_type.rs");
|
||||||
write_generated_file(noise_parmeter::build(), "noise_parmeter.rs");
|
write_generated_file(noise_parmeter::build(), "noise_parmeter.rs");
|
||||||
write_generated_file(biome::build(), "biome.rs");
|
write_generated_file(biome::build(), "biome.rs");
|
||||||
|
write_generated_file(message_type::build(), "message_type.rs");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn array_to_tokenstream(array: Vec<String>) -> TokenStream {
|
pub fn array_to_tokenstream(array: Vec<String>) -> TokenStream {
|
||||||
|
|||||||
49
pumpkin-data/build/message_type.rs
Normal file
49
pumpkin-data/build/message_type.rs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use proc_macro2::TokenStream;
|
||||||
|
use pumpkin_util::text::style::Style;
|
||||||
|
use quote::quote;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
use crate::ident;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct RawChatType {
|
||||||
|
id: u32,
|
||||||
|
components: ChatType,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct ChatType {
|
||||||
|
chat: Decoration,
|
||||||
|
narration: Decoration,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct Decoration {
|
||||||
|
translation_key: String,
|
||||||
|
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||||
|
style: Option<Style>,
|
||||||
|
parameters: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn build() -> TokenStream {
|
||||||
|
println!("cargo:rerun-if-changed=../assets/message_type.json");
|
||||||
|
|
||||||
|
let json: HashMap<String, RawChatType> =
|
||||||
|
serde_json::from_str(include_str!("../../assets/message_type.json"))
|
||||||
|
.expect("Failed to parse message_type.json");
|
||||||
|
let mut variants = TokenStream::new();
|
||||||
|
|
||||||
|
for (name, paremter) in json.iter() {
|
||||||
|
let i = paremter.id;
|
||||||
|
let name = ident(name.to_uppercase());
|
||||||
|
variants.extend([quote! {
|
||||||
|
pub const #name: u32 = #i;
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
|
||||||
|
quote! {
|
||||||
|
#variants
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -32,6 +32,7 @@ pub mod entity {
|
|||||||
|
|
||||||
pub mod world {
|
pub mod world {
|
||||||
include!(concat!(env!("OUT_DIR"), "/world_event.rs"));
|
include!(concat!(env!("OUT_DIR"), "/world_event.rs"));
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/message_type.rs"));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod scoreboard {
|
pub mod scoreboard {
|
||||||
|
|||||||
@ -13,6 +13,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
use pumpkin_config::ADVANCED_CONFIG;
|
use pumpkin_config::ADVANCED_CONFIG;
|
||||||
use pumpkin_data::entity::EntityType;
|
use pumpkin_data::entity::EntityType;
|
||||||
|
use pumpkin_data::world::CHAT;
|
||||||
use pumpkin_inventory::player::PlayerInventory;
|
use pumpkin_inventory::player::PlayerInventory;
|
||||||
use pumpkin_inventory::InventoryError;
|
use pumpkin_inventory::InventoryError;
|
||||||
use pumpkin_protocol::client::play::{CSetContainerSlot, CSetHeldItem, CSpawnEntity};
|
use pumpkin_protocol::client::play::{CSetContainerSlot, CSetHeldItem, CSpawnEntity};
|
||||||
@ -560,7 +561,7 @@ impl Player {
|
|||||||
&[],
|
&[],
|
||||||
Some(TextComponent::text(message.clone())),
|
Some(TextComponent::text(message.clone())),
|
||||||
FilterType::PassThrough,
|
FilterType::PassThrough,
|
||||||
1.into(),
|
CHAT.into(),
|
||||||
TextComponent::text(gameprofile.name.clone()),
|
TextComponent::text(gameprofile.name.clone()),
|
||||||
None,
|
None,
|
||||||
))
|
))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user