dragonfly_plugin/generated/
df.plugin.rs

1// @generated
2// This file is @generated by prost-build.
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5pub struct Vec3 {
6    #[prost(double, tag="1")]
7    pub x: f64,
8    #[prost(double, tag="2")]
9    pub y: f64,
10    #[prost(double, tag="3")]
11    pub z: f64,
12}
13#[allow(clippy::derive_partial_eq_without_eq)]
14#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15pub struct Rotation {
16    #[prost(float, tag="1")]
17    pub yaw: f32,
18    #[prost(float, tag="2")]
19    pub pitch: f32,
20}
21#[allow(clippy::derive_partial_eq_without_eq)]
22#[derive(Clone, Copy, PartialEq, ::prost::Message)]
23pub struct BBox {
24    #[prost(message, optional, tag="1")]
25    pub min: ::core::option::Option<Vec3>,
26    #[prost(message, optional, tag="2")]
27    pub max: ::core::option::Option<Vec3>,
28}
29#[allow(clippy::derive_partial_eq_without_eq)]
30#[derive(Clone, Copy, PartialEq, ::prost::Message)]
31pub struct BlockPos {
32    #[prost(int32, tag="1")]
33    pub x: i32,
34    #[prost(int32, tag="2")]
35    pub y: i32,
36    #[prost(int32, tag="3")]
37    pub z: i32,
38}
39#[allow(clippy::derive_partial_eq_without_eq)]
40#[derive(Clone, PartialEq, ::prost::Message)]
41pub struct ItemStack {
42    #[prost(string, tag="1")]
43    pub name: ::prost::alloc::string::String,
44    #[prost(int32, tag="2")]
45    pub meta: i32,
46    #[prost(int32, tag="3")]
47    pub count: i32,
48}
49#[allow(clippy::derive_partial_eq_without_eq)]
50#[derive(Clone, PartialEq, ::prost::Message)]
51pub struct BlockState {
52    #[prost(string, tag="1")]
53    pub name: ::prost::alloc::string::String,
54    #[prost(map="string, string", tag="2")]
55    pub properties: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
56}
57#[allow(clippy::derive_partial_eq_without_eq)]
58#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct LiquidState {
60    #[prost(message, optional, tag="1")]
61    pub block: ::core::option::Option<BlockState>,
62    #[prost(int32, tag="2")]
63    pub depth: i32,
64    #[prost(bool, tag="3")]
65    pub falling: bool,
66    #[prost(string, tag="4")]
67    pub liquid_type: ::prost::alloc::string::String,
68}
69#[allow(clippy::derive_partial_eq_without_eq)]
70#[derive(Clone, PartialEq, ::prost::Message)]
71pub struct WorldRef {
72    #[prost(string, tag="1")]
73    pub name: ::prost::alloc::string::String,
74    #[prost(string, tag="2")]
75    pub dimension: ::prost::alloc::string::String,
76}
77#[allow(clippy::derive_partial_eq_without_eq)]
78#[derive(Clone, PartialEq, ::prost::Message)]
79pub struct EntityRef {
80    #[prost(string, tag="1")]
81    pub uuid: ::prost::alloc::string::String,
82    #[prost(string, tag="2")]
83    pub r#type: ::prost::alloc::string::String,
84    #[prost(string, optional, tag="3")]
85    pub name: ::core::option::Option<::prost::alloc::string::String>,
86    #[prost(message, optional, tag="4")]
87    pub position: ::core::option::Option<Vec3>,
88    #[prost(message, optional, tag="5")]
89    pub rotation: ::core::option::Option<Rotation>,
90}
91#[allow(clippy::derive_partial_eq_without_eq)]
92#[derive(Clone, PartialEq, ::prost::Message)]
93pub struct DamageSource {
94    #[prost(string, tag="1")]
95    pub r#type: ::prost::alloc::string::String,
96    #[prost(string, optional, tag="2")]
97    pub description: ::core::option::Option<::prost::alloc::string::String>,
98}
99#[allow(clippy::derive_partial_eq_without_eq)]
100#[derive(Clone, PartialEq, ::prost::Message)]
101pub struct HealingSource {
102    #[prost(string, tag="1")]
103    pub r#type: ::prost::alloc::string::String,
104    #[prost(string, optional, tag="2")]
105    pub description: ::core::option::Option<::prost::alloc::string::String>,
106}
107#[allow(clippy::derive_partial_eq_without_eq)]
108#[derive(Clone, PartialEq, ::prost::Message)]
109pub struct Address {
110    #[prost(string, tag="1")]
111    pub host: ::prost::alloc::string::String,
112    #[prost(int32, tag="2")]
113    pub port: i32,
114}
115/// CustomItemDefinition defines a custom (non-vanilla) item that requires
116/// a resource pack and client-side registration
117#[allow(clippy::derive_partial_eq_without_eq)]
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct CustomItemDefinition {
120    /// Unique identifier for the custom item (e.g., "my_plugin:custom_sword")
121    #[prost(string, tag="1")]
122    pub id: ::prost::alloc::string::String,
123    /// Display name shown to players
124    #[prost(string, tag="2")]
125    pub display_name: ::prost::alloc::string::String,
126    /// Texture data encoded as PNG bytes
127    #[prost(bytes="vec", tag="3")]
128    pub texture_data: ::prost::alloc::vec::Vec<u8>,
129    /// Creative inventory category
130    #[prost(enumeration="ItemCategory", tag="4")]
131    pub category: i32,
132    /// Optional subgroup within the category (e.g., "sword", "pickaxe", "food")
133    #[prost(string, optional, tag="5")]
134    pub group: ::core::option::Option<::prost::alloc::string::String>,
135    /// Metadata value for this item (defaults to 0)
136    #[prost(int32, tag="6")]
137    pub meta: i32,
138}
139#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
140#[repr(i32)]
141pub enum GameMode {
142    Survival = 0,
143    Creative = 1,
144    Adventure = 2,
145    Spectator = 3,
146}
147impl GameMode {
148    /// String value of the enum field names used in the ProtoBuf definition.
149    ///
150    /// The values are not transformed in any way and thus are considered stable
151    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
152    pub fn as_str_name(&self) -> &'static str {
153        match self {
154            GameMode::Survival => "SURVIVAL",
155            GameMode::Creative => "CREATIVE",
156            GameMode::Adventure => "ADVENTURE",
157            GameMode::Spectator => "SPECTATOR",
158        }
159    }
160    /// Creates an enum from field names used in the ProtoBuf definition.
161    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
162        match value {
163            "SURVIVAL" => Some(Self::Survival),
164            "CREATIVE" => Some(Self::Creative),
165            "ADVENTURE" => Some(Self::Adventure),
166            "SPECTATOR" => Some(Self::Spectator),
167            _ => None,
168        }
169    }
170}
171#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
172#[repr(i32)]
173pub enum Difficulty {
174    Peaceful = 0,
175    Easy = 1,
176    Normal = 2,
177    Hard = 3,
178}
179impl Difficulty {
180    /// String value of the enum field names used in the ProtoBuf definition.
181    ///
182    /// The values are not transformed in any way and thus are considered stable
183    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
184    pub fn as_str_name(&self) -> &'static str {
185        match self {
186            Difficulty::Peaceful => "PEACEFUL",
187            Difficulty::Easy => "EASY",
188            Difficulty::Normal => "NORMAL",
189            Difficulty::Hard => "HARD",
190        }
191    }
192    /// Creates an enum from field names used in the ProtoBuf definition.
193    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
194        match value {
195            "PEACEFUL" => Some(Self::Peaceful),
196            "EASY" => Some(Self::Easy),
197            "NORMAL" => Some(Self::Normal),
198            "HARD" => Some(Self::Hard),
199            _ => None,
200        }
201    }
202}
203/// EffectType mirrors Dragonfly's registered effect IDs for straightforward mapping.
204/// Keep numeric values aligned with dragonfly/server/entity/effect/register.go.
205#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
206#[repr(i32)]
207pub enum EffectType {
208    EffectUnknown = 0,
209    Speed = 1,
210    Slowness = 2,
211    Haste = 3,
212    MiningFatigue = 4,
213    Strength = 5,
214    InstantHealth = 6,
215    InstantDamage = 7,
216    JumpBoost = 8,
217    Nausea = 9,
218    Regeneration = 10,
219    Resistance = 11,
220    FireResistance = 12,
221    WaterBreathing = 13,
222    Invisibility = 14,
223    Blindness = 15,
224    NightVision = 16,
225    Hunger = 17,
226    Weakness = 18,
227    Poison = 19,
228    Wither = 20,
229    HealthBoost = 21,
230    Absorption = 22,
231    Saturation = 23,
232    Levitation = 24,
233    FatalPoison = 25,
234    ConduitPower = 26,
235    SlowFalling = 27,
236    /// 28, 29 intentionally omitted (Bad Omen, Hero of the Village - not implemented)
237    Darkness = 30,
238}
239impl EffectType {
240    /// String value of the enum field names used in the ProtoBuf definition.
241    ///
242    /// The values are not transformed in any way and thus are considered stable
243    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
244    pub fn as_str_name(&self) -> &'static str {
245        match self {
246            EffectType::EffectUnknown => "EFFECT_UNKNOWN",
247            EffectType::Speed => "SPEED",
248            EffectType::Slowness => "SLOWNESS",
249            EffectType::Haste => "HASTE",
250            EffectType::MiningFatigue => "MINING_FATIGUE",
251            EffectType::Strength => "STRENGTH",
252            EffectType::InstantHealth => "INSTANT_HEALTH",
253            EffectType::InstantDamage => "INSTANT_DAMAGE",
254            EffectType::JumpBoost => "JUMP_BOOST",
255            EffectType::Nausea => "NAUSEA",
256            EffectType::Regeneration => "REGENERATION",
257            EffectType::Resistance => "RESISTANCE",
258            EffectType::FireResistance => "FIRE_RESISTANCE",
259            EffectType::WaterBreathing => "WATER_BREATHING",
260            EffectType::Invisibility => "INVISIBILITY",
261            EffectType::Blindness => "BLINDNESS",
262            EffectType::NightVision => "NIGHT_VISION",
263            EffectType::Hunger => "HUNGER",
264            EffectType::Weakness => "WEAKNESS",
265            EffectType::Poison => "POISON",
266            EffectType::Wither => "WITHER",
267            EffectType::HealthBoost => "HEALTH_BOOST",
268            EffectType::Absorption => "ABSORPTION",
269            EffectType::Saturation => "SATURATION",
270            EffectType::Levitation => "LEVITATION",
271            EffectType::FatalPoison => "FATAL_POISON",
272            EffectType::ConduitPower => "CONDUIT_POWER",
273            EffectType::SlowFalling => "SLOW_FALLING",
274            EffectType::Darkness => "DARKNESS",
275        }
276    }
277    /// Creates an enum from field names used in the ProtoBuf definition.
278    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
279        match value {
280            "EFFECT_UNKNOWN" => Some(Self::EffectUnknown),
281            "SPEED" => Some(Self::Speed),
282            "SLOWNESS" => Some(Self::Slowness),
283            "HASTE" => Some(Self::Haste),
284            "MINING_FATIGUE" => Some(Self::MiningFatigue),
285            "STRENGTH" => Some(Self::Strength),
286            "INSTANT_HEALTH" => Some(Self::InstantHealth),
287            "INSTANT_DAMAGE" => Some(Self::InstantDamage),
288            "JUMP_BOOST" => Some(Self::JumpBoost),
289            "NAUSEA" => Some(Self::Nausea),
290            "REGENERATION" => Some(Self::Regeneration),
291            "RESISTANCE" => Some(Self::Resistance),
292            "FIRE_RESISTANCE" => Some(Self::FireResistance),
293            "WATER_BREATHING" => Some(Self::WaterBreathing),
294            "INVISIBILITY" => Some(Self::Invisibility),
295            "BLINDNESS" => Some(Self::Blindness),
296            "NIGHT_VISION" => Some(Self::NightVision),
297            "HUNGER" => Some(Self::Hunger),
298            "WEAKNESS" => Some(Self::Weakness),
299            "POISON" => Some(Self::Poison),
300            "WITHER" => Some(Self::Wither),
301            "HEALTH_BOOST" => Some(Self::HealthBoost),
302            "ABSORPTION" => Some(Self::Absorption),
303            "SATURATION" => Some(Self::Saturation),
304            "LEVITATION" => Some(Self::Levitation),
305            "FATAL_POISON" => Some(Self::FatalPoison),
306            "CONDUIT_POWER" => Some(Self::ConduitPower),
307            "SLOW_FALLING" => Some(Self::SlowFalling),
308            "DARKNESS" => Some(Self::Darkness),
309            _ => None,
310        }
311    }
312}
313/// Sound is a curated list of common sounds that don't require extra parameters.
314/// For sounds that require additional context (e.g., BlockPlace, Note), adapters
315/// may use sensible defaults or ignore extra semantics for now.
316#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
317#[repr(i32)]
318pub enum Sound {
319    Unknown = 0,
320    Attack = 1,
321    Drowning = 2,
322    Burning = 3,
323    Fall = 4,
324    Burp = 5,
325    Pop = 6,
326    Explosion = 7,
327    Thunder = 8,
328    LevelUp = 9,
329    Experience = 10,
330    FireworkLaunch = 11,
331    FireworkHugeBlast = 12,
332    FireworkBlast = 13,
333    FireworkTwinkle = 14,
334    Teleport = 15,
335    ArrowHit = 16,
336    ItemBreak = 17,
337    ItemThrow = 18,
338    Totem = 19,
339    FireExtinguish = 20,
340}
341impl Sound {
342    /// String value of the enum field names used in the ProtoBuf definition.
343    ///
344    /// The values are not transformed in any way and thus are considered stable
345    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
346    pub fn as_str_name(&self) -> &'static str {
347        match self {
348            Sound::Unknown => "SOUND_UNKNOWN",
349            Sound::Attack => "ATTACK",
350            Sound::Drowning => "DROWNING",
351            Sound::Burning => "BURNING",
352            Sound::Fall => "FALL",
353            Sound::Burp => "BURP",
354            Sound::Pop => "POP",
355            Sound::Explosion => "EXPLOSION",
356            Sound::Thunder => "THUNDER",
357            Sound::LevelUp => "LEVEL_UP",
358            Sound::Experience => "EXPERIENCE",
359            Sound::FireworkLaunch => "FIREWORK_LAUNCH",
360            Sound::FireworkHugeBlast => "FIREWORK_HUGE_BLAST",
361            Sound::FireworkBlast => "FIREWORK_BLAST",
362            Sound::FireworkTwinkle => "FIREWORK_TWINKLE",
363            Sound::Teleport => "TELEPORT",
364            Sound::ArrowHit => "ARROW_HIT",
365            Sound::ItemBreak => "ITEM_BREAK",
366            Sound::ItemThrow => "ITEM_THROW",
367            Sound::Totem => "TOTEM",
368            Sound::FireExtinguish => "FIRE_EXTINGUISH",
369        }
370    }
371    /// Creates an enum from field names used in the ProtoBuf definition.
372    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
373        match value {
374            "SOUND_UNKNOWN" => Some(Self::Unknown),
375            "ATTACK" => Some(Self::Attack),
376            "DROWNING" => Some(Self::Drowning),
377            "BURNING" => Some(Self::Burning),
378            "FALL" => Some(Self::Fall),
379            "BURP" => Some(Self::Burp),
380            "POP" => Some(Self::Pop),
381            "EXPLOSION" => Some(Self::Explosion),
382            "THUNDER" => Some(Self::Thunder),
383            "LEVEL_UP" => Some(Self::LevelUp),
384            "EXPERIENCE" => Some(Self::Experience),
385            "FIREWORK_LAUNCH" => Some(Self::FireworkLaunch),
386            "FIREWORK_HUGE_BLAST" => Some(Self::FireworkHugeBlast),
387            "FIREWORK_BLAST" => Some(Self::FireworkBlast),
388            "FIREWORK_TWINKLE" => Some(Self::FireworkTwinkle),
389            "TELEPORT" => Some(Self::Teleport),
390            "ARROW_HIT" => Some(Self::ArrowHit),
391            "ITEM_BREAK" => Some(Self::ItemBreak),
392            "ITEM_THROW" => Some(Self::ItemThrow),
393            "TOTEM" => Some(Self::Totem),
394            "FIRE_EXTINGUISH" => Some(Self::FireExtinguish),
395            _ => None,
396        }
397    }
398}
399/// Category for creative inventory
400#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
401#[repr(i32)]
402pub enum ItemCategory {
403    Construction = 0,
404    Nature = 1,
405    Equipment = 2,
406    Items = 3,
407}
408impl ItemCategory {
409    /// String value of the enum field names used in the ProtoBuf definition.
410    ///
411    /// The values are not transformed in any way and thus are considered stable
412    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
413    pub fn as_str_name(&self) -> &'static str {
414        match self {
415            ItemCategory::Construction => "ITEM_CATEGORY_CONSTRUCTION",
416            ItemCategory::Nature => "ITEM_CATEGORY_NATURE",
417            ItemCategory::Equipment => "ITEM_CATEGORY_EQUIPMENT",
418            ItemCategory::Items => "ITEM_CATEGORY_ITEMS",
419        }
420    }
421    /// Creates an enum from field names used in the ProtoBuf definition.
422    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
423        match value {
424            "ITEM_CATEGORY_CONSTRUCTION" => Some(Self::Construction),
425            "ITEM_CATEGORY_NATURE" => Some(Self::Nature),
426            "ITEM_CATEGORY_EQUIPMENT" => Some(Self::Equipment),
427            "ITEM_CATEGORY_ITEMS" => Some(Self::Items),
428            _ => None,
429        }
430    }
431}
432#[allow(clippy::derive_partial_eq_without_eq)]
433#[derive(Clone, PartialEq, ::prost::Message)]
434pub struct ActionResult {
435    #[prost(string, tag="1")]
436    pub correlation_id: ::prost::alloc::string::String,
437    #[prost(message, optional, tag="2")]
438    pub status: ::core::option::Option<ActionStatus>,
439    #[prost(oneof="action_result::Result", tags="10, 11, 12")]
440    pub result: ::core::option::Option<action_result::Result>,
441}
442/// Nested message and enum types in `ActionResult`.
443pub mod action_result {
444    #[allow(clippy::derive_partial_eq_without_eq)]
445#[derive(Clone, PartialEq, ::prost::Oneof)]
446    pub enum Result {
447        #[prost(message, tag="10")]
448        WorldEntities(super::WorldEntitiesResult),
449        #[prost(message, tag="11")]
450        WorldPlayers(super::WorldPlayersResult),
451        #[prost(message, tag="12")]
452        WorldEntitiesWithin(super::WorldEntitiesWithinResult),
453    }
454}
455#[allow(clippy::derive_partial_eq_without_eq)]
456#[derive(Clone, PartialEq, ::prost::Message)]
457pub struct ActionStatus {
458    #[prost(bool, tag="1")]
459    pub ok: bool,
460    #[prost(string, optional, tag="2")]
461    pub error: ::core::option::Option<::prost::alloc::string::String>,
462}
463#[allow(clippy::derive_partial_eq_without_eq)]
464#[derive(Clone, PartialEq, ::prost::Message)]
465pub struct WorldEntitiesResult {
466    #[prost(message, optional, tag="1")]
467    pub world: ::core::option::Option<WorldRef>,
468    #[prost(message, repeated, tag="2")]
469    pub entities: ::prost::alloc::vec::Vec<EntityRef>,
470}
471#[allow(clippy::derive_partial_eq_without_eq)]
472#[derive(Clone, PartialEq, ::prost::Message)]
473pub struct WorldEntitiesWithinResult {
474    #[prost(message, optional, tag="1")]
475    pub world: ::core::option::Option<WorldRef>,
476    #[prost(message, optional, tag="2")]
477    pub r#box: ::core::option::Option<BBox>,
478    #[prost(message, repeated, tag="3")]
479    pub entities: ::prost::alloc::vec::Vec<EntityRef>,
480}
481#[allow(clippy::derive_partial_eq_without_eq)]
482#[derive(Clone, PartialEq, ::prost::Message)]
483pub struct WorldPlayersResult {
484    #[prost(message, optional, tag="1")]
485    pub world: ::core::option::Option<WorldRef>,
486    #[prost(message, repeated, tag="2")]
487    pub players: ::prost::alloc::vec::Vec<EntityRef>,
488}
489#[allow(clippy::derive_partial_eq_without_eq)]
490#[derive(Clone, PartialEq, ::prost::Message)]
491pub struct ActionBatch {
492    #[prost(message, repeated, tag="1")]
493    pub actions: ::prost::alloc::vec::Vec<Action>,
494}
495#[allow(clippy::derive_partial_eq_without_eq)]
496#[derive(Clone, PartialEq, ::prost::Message)]
497pub struct Action {
498    #[prost(string, optional, tag="1")]
499    pub correlation_id: ::core::option::Option<::prost::alloc::string::String>,
500    #[prost(oneof="action::Kind", tags="10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 30, 31, 40, 41, 42, 43, 50, 60, 61, 62, 63, 64, 65, 70, 71, 72")]
501    pub kind: ::core::option::Option<action::Kind>,
502}
503/// Nested message and enum types in `Action`.
504pub mod action {
505    #[allow(clippy::derive_partial_eq_without_eq)]
506#[derive(Clone, PartialEq, ::prost::Oneof)]
507    pub enum Kind {
508        #[prost(message, tag="10")]
509        SendChat(super::SendChatAction),
510        #[prost(message, tag="11")]
511        Teleport(super::TeleportAction),
512        #[prost(message, tag="12")]
513        Kick(super::KickAction),
514        #[prost(message, tag="13")]
515        SetGameMode(super::SetGameModeAction),
516        /// Inventory & Items
517        #[prost(message, tag="14")]
518        GiveItem(super::GiveItemAction),
519        #[prost(message, tag="15")]
520        ClearInventory(super::ClearInventoryAction),
521        #[prost(message, tag="16")]
522        SetHeldItem(super::SetHeldItemAction),
523        /// Player State
524        #[prost(message, tag="20")]
525        SetHealth(super::SetHealthAction),
526        #[prost(message, tag="21")]
527        SetFood(super::SetFoodAction),
528        #[prost(message, tag="22")]
529        SetExperience(super::SetExperienceAction),
530        #[prost(message, tag="23")]
531        SetVelocity(super::SetVelocityAction),
532        /// Effects & Status
533        #[prost(message, tag="30")]
534        AddEffect(super::AddEffectAction),
535        #[prost(message, tag="31")]
536        RemoveEffect(super::RemoveEffectAction),
537        /// UI & Communication
538        #[prost(message, tag="40")]
539        SendTitle(super::SendTitleAction),
540        #[prost(message, tag="41")]
541        SendPopup(super::SendPopupAction),
542        #[prost(message, tag="42")]
543        SendTip(super::SendTipAction),
544        #[prost(message, tag="43")]
545        PlaySound(super::PlaySoundAction),
546        /// Commands
547        #[prost(message, tag="50")]
548        ExecuteCommand(super::ExecuteCommandAction),
549        /// World configuration and effects
550        #[prost(message, tag="60")]
551        WorldSetDefaultGameMode(super::WorldSetDefaultGameModeAction),
552        #[prost(message, tag="61")]
553        WorldSetDifficulty(super::WorldSetDifficultyAction),
554        #[prost(message, tag="62")]
555        WorldSetTickRange(super::WorldSetTickRangeAction),
556        #[prost(message, tag="63")]
557        WorldSetBlock(super::WorldSetBlockAction),
558        #[prost(message, tag="64")]
559        WorldPlaySound(super::WorldPlaySoundAction),
560        #[prost(message, tag="65")]
561        WorldAddParticle(super::WorldAddParticleAction),
562        /// World queries
563        #[prost(message, tag="70")]
564        WorldQueryEntities(super::WorldQueryEntitiesAction),
565        #[prost(message, tag="71")]
566        WorldQueryPlayers(super::WorldQueryPlayersAction),
567        #[prost(message, tag="72")]
568        WorldQueryEntitiesWithin(super::WorldQueryEntitiesWithinAction),
569    }
570}
571#[allow(clippy::derive_partial_eq_without_eq)]
572#[derive(Clone, PartialEq, ::prost::Message)]
573pub struct SendChatAction {
574    #[prost(string, tag="1")]
575    pub target_uuid: ::prost::alloc::string::String,
576    #[prost(string, tag="2")]
577    pub message: ::prost::alloc::string::String,
578}
579#[allow(clippy::derive_partial_eq_without_eq)]
580#[derive(Clone, PartialEq, ::prost::Message)]
581pub struct TeleportAction {
582    #[prost(string, tag="1")]
583    pub player_uuid: ::prost::alloc::string::String,
584    #[prost(message, optional, tag="2")]
585    pub position: ::core::option::Option<Vec3>,
586    /// rotation vector mapping:
587    ///   x = pitch, y = yaw, z = head_yaw
588    #[prost(message, optional, tag="3")]
589    pub rotation: ::core::option::Option<Vec3>,
590}
591#[allow(clippy::derive_partial_eq_without_eq)]
592#[derive(Clone, PartialEq, ::prost::Message)]
593pub struct KickAction {
594    #[prost(string, tag="1")]
595    pub player_uuid: ::prost::alloc::string::String,
596    #[prost(string, tag="2")]
597    pub reason: ::prost::alloc::string::String,
598}
599#[allow(clippy::derive_partial_eq_without_eq)]
600#[derive(Clone, PartialEq, ::prost::Message)]
601pub struct SetGameModeAction {
602    #[prost(string, tag="1")]
603    pub player_uuid: ::prost::alloc::string::String,
604    #[prost(enumeration="GameMode", tag="2")]
605    pub game_mode: i32,
606}
607/// Inventory & Items
608#[allow(clippy::derive_partial_eq_without_eq)]
609#[derive(Clone, PartialEq, ::prost::Message)]
610pub struct GiveItemAction {
611    #[prost(string, tag="1")]
612    pub player_uuid: ::prost::alloc::string::String,
613    #[prost(message, optional, tag="2")]
614    pub item: ::core::option::Option<ItemStack>,
615}
616#[allow(clippy::derive_partial_eq_without_eq)]
617#[derive(Clone, PartialEq, ::prost::Message)]
618pub struct ClearInventoryAction {
619    #[prost(string, tag="1")]
620    pub player_uuid: ::prost::alloc::string::String,
621}
622#[allow(clippy::derive_partial_eq_without_eq)]
623#[derive(Clone, PartialEq, ::prost::Message)]
624pub struct SetHeldItemAction {
625    #[prost(string, tag="1")]
626    pub player_uuid: ::prost::alloc::string::String,
627    /// if set, updates main hand
628    #[prost(message, optional, tag="2")]
629    pub main: ::core::option::Option<ItemStack>,
630    /// if set, updates offhand
631    #[prost(message, optional, tag="3")]
632    pub offhand: ::core::option::Option<ItemStack>,
633}
634/// Player State
635#[allow(clippy::derive_partial_eq_without_eq)]
636#[derive(Clone, PartialEq, ::prost::Message)]
637pub struct SetHealthAction {
638    #[prost(string, tag="1")]
639    pub player_uuid: ::prost::alloc::string::String,
640    #[prost(double, tag="2")]
641    pub health: f64,
642    #[prost(double, optional, tag="3")]
643    pub max_health: ::core::option::Option<f64>,
644}
645#[allow(clippy::derive_partial_eq_without_eq)]
646#[derive(Clone, PartialEq, ::prost::Message)]
647pub struct SetFoodAction {
648    #[prost(string, tag="1")]
649    pub player_uuid: ::prost::alloc::string::String,
650    /// 0-20
651    #[prost(int32, tag="2")]
652    pub food: i32,
653}
654#[allow(clippy::derive_partial_eq_without_eq)]
655#[derive(Clone, PartialEq, ::prost::Message)]
656pub struct SetExperienceAction {
657    #[prost(string, tag="1")]
658    pub player_uuid: ::prost::alloc::string::String,
659    /// If set, the player's level is set to this value.
660    #[prost(int32, optional, tag="2")]
661    pub level: ::core::option::Option<i32>,
662    /// If set, the player's progress bar (0..1) is set to this value.
663    #[prost(float, optional, tag="3")]
664    pub progress: ::core::option::Option<f32>,
665    /// If set, raw experience points are added (can be negative to remove).
666    #[prost(int32, optional, tag="4")]
667    pub amount: ::core::option::Option<i32>,
668}
669#[allow(clippy::derive_partial_eq_without_eq)]
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct SetVelocityAction {
672    #[prost(string, tag="1")]
673    pub player_uuid: ::prost::alloc::string::String,
674    #[prost(message, optional, tag="2")]
675    pub velocity: ::core::option::Option<Vec3>,
676}
677/// Effects & Status
678#[allow(clippy::derive_partial_eq_without_eq)]
679#[derive(Clone, PartialEq, ::prost::Message)]
680pub struct AddEffectAction {
681    #[prost(string, tag="1")]
682    pub player_uuid: ::prost::alloc::string::String,
683    #[prost(enumeration="EffectType", tag="2")]
684    pub effect_type: i32,
685    /// amplifier level (1 = level I)
686    #[prost(int32, tag="3")]
687    pub level: i32,
688    /// duration in milliseconds
689    #[prost(int64, tag="4")]
690    pub duration_ms: i64,
691    #[prost(bool, tag="5")]
692    pub show_particles: bool,
693}
694#[allow(clippy::derive_partial_eq_without_eq)]
695#[derive(Clone, PartialEq, ::prost::Message)]
696pub struct RemoveEffectAction {
697    #[prost(string, tag="1")]
698    pub player_uuid: ::prost::alloc::string::String,
699    #[prost(enumeration="EffectType", tag="2")]
700    pub effect_type: i32,
701}
702/// UI & Communication
703#[allow(clippy::derive_partial_eq_without_eq)]
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct SendTitleAction {
706    #[prost(string, tag="1")]
707    pub player_uuid: ::prost::alloc::string::String,
708    #[prost(string, tag="2")]
709    pub title: ::prost::alloc::string::String,
710    #[prost(string, optional, tag="3")]
711    pub subtitle: ::core::option::Option<::prost::alloc::string::String>,
712    #[prost(int64, optional, tag="4")]
713    pub fade_in_ms: ::core::option::Option<i64>,
714    #[prost(int64, optional, tag="5")]
715    pub duration_ms: ::core::option::Option<i64>,
716    #[prost(int64, optional, tag="6")]
717    pub fade_out_ms: ::core::option::Option<i64>,
718}
719#[allow(clippy::derive_partial_eq_without_eq)]
720#[derive(Clone, PartialEq, ::prost::Message)]
721pub struct SendPopupAction {
722    #[prost(string, tag="1")]
723    pub player_uuid: ::prost::alloc::string::String,
724    #[prost(string, tag="2")]
725    pub message: ::prost::alloc::string::String,
726}
727#[allow(clippy::derive_partial_eq_without_eq)]
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct SendTipAction {
730    #[prost(string, tag="1")]
731    pub player_uuid: ::prost::alloc::string::String,
732    #[prost(string, tag="2")]
733    pub message: ::prost::alloc::string::String,
734}
735/// TODO: it should probably be a world action
736#[allow(clippy::derive_partial_eq_without_eq)]
737#[derive(Clone, PartialEq, ::prost::Message)]
738pub struct PlaySoundAction {
739    #[prost(string, tag="1")]
740    pub player_uuid: ::prost::alloc::string::String,
741    #[prost(enumeration="Sound", tag="2")]
742    pub sound: i32,
743    /// defaults to player position if unset
744    #[prost(message, optional, tag="3")]
745    pub position: ::core::option::Option<Vec3>,
746    /// default 1.0
747    #[prost(float, optional, tag="4")]
748    pub volume: ::core::option::Option<f32>,
749    /// default 1.0
750    #[prost(float, optional, tag="5")]
751    pub pitch: ::core::option::Option<f32>,
752}
753/// Commands
754#[allow(clippy::derive_partial_eq_without_eq)]
755#[derive(Clone, PartialEq, ::prost::Message)]
756pub struct ExecuteCommandAction {
757    #[prost(string, tag="1")]
758    pub player_uuid: ::prost::alloc::string::String,
759    /// without leading slash
760    #[prost(string, tag="2")]
761    pub command: ::prost::alloc::string::String,
762}
763#[allow(clippy::derive_partial_eq_without_eq)]
764#[derive(Clone, PartialEq, ::prost::Message)]
765pub struct WorldSetDefaultGameModeAction {
766    #[prost(message, optional, tag="1")]
767    pub world: ::core::option::Option<WorldRef>,
768    #[prost(enumeration="GameMode", tag="2")]
769    pub game_mode: i32,
770}
771#[allow(clippy::derive_partial_eq_without_eq)]
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct WorldSetDifficultyAction {
774    #[prost(message, optional, tag="1")]
775    pub world: ::core::option::Option<WorldRef>,
776    #[prost(enumeration="Difficulty", tag="2")]
777    pub difficulty: i32,
778}
779#[allow(clippy::derive_partial_eq_without_eq)]
780#[derive(Clone, PartialEq, ::prost::Message)]
781pub struct WorldSetTickRangeAction {
782    #[prost(message, optional, tag="1")]
783    pub world: ::core::option::Option<WorldRef>,
784    #[prost(int32, tag="2")]
785    pub tick_range: i32,
786}
787#[allow(clippy::derive_partial_eq_without_eq)]
788#[derive(Clone, PartialEq, ::prost::Message)]
789pub struct WorldSetBlockAction {
790    #[prost(message, optional, tag="1")]
791    pub world: ::core::option::Option<WorldRef>,
792    #[prost(message, optional, tag="2")]
793    pub position: ::core::option::Option<BlockPos>,
794    /// nil clears to air
795    #[prost(message, optional, tag="3")]
796    pub block: ::core::option::Option<BlockState>,
797}
798#[allow(clippy::derive_partial_eq_without_eq)]
799#[derive(Clone, PartialEq, ::prost::Message)]
800pub struct WorldPlaySoundAction {
801    #[prost(message, optional, tag="1")]
802    pub world: ::core::option::Option<WorldRef>,
803    #[prost(enumeration="Sound", tag="2")]
804    pub sound: i32,
805    #[prost(message, optional, tag="3")]
806    pub position: ::core::option::Option<Vec3>,
807}
808#[allow(clippy::derive_partial_eq_without_eq)]
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct WorldAddParticleAction {
811    #[prost(message, optional, tag="1")]
812    pub world: ::core::option::Option<WorldRef>,
813    #[prost(message, optional, tag="2")]
814    pub position: ::core::option::Option<Vec3>,
815    #[prost(enumeration="ParticleType", tag="3")]
816    pub particle: i32,
817    /// used for block-based particles when provided
818    #[prost(message, optional, tag="4")]
819    pub block: ::core::option::Option<BlockState>,
820    /// used for punch_block when provided
821    #[prost(int32, optional, tag="5")]
822    pub face: ::core::option::Option<i32>,
823}
824#[allow(clippy::derive_partial_eq_without_eq)]
825#[derive(Clone, PartialEq, ::prost::Message)]
826pub struct WorldQueryEntitiesAction {
827    #[prost(message, optional, tag="1")]
828    pub world: ::core::option::Option<WorldRef>,
829}
830#[allow(clippy::derive_partial_eq_without_eq)]
831#[derive(Clone, PartialEq, ::prost::Message)]
832pub struct WorldQueryPlayersAction {
833    #[prost(message, optional, tag="1")]
834    pub world: ::core::option::Option<WorldRef>,
835}
836#[allow(clippy::derive_partial_eq_without_eq)]
837#[derive(Clone, PartialEq, ::prost::Message)]
838pub struct WorldQueryEntitiesWithinAction {
839    #[prost(message, optional, tag="1")]
840    pub world: ::core::option::Option<WorldRef>,
841    #[prost(message, optional, tag="2")]
842    pub r#box: ::core::option::Option<BBox>,
843}
844#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
845#[repr(i32)]
846pub enum ParticleType {
847    Unspecified = 0,
848    ParticleHugeExplosion = 1,
849    ParticleEndermanTeleport = 2,
850    ParticleSnowballPoof = 3,
851    ParticleEggSmash = 4,
852    ParticleSplash = 5,
853    ParticleEffect = 6,
854    ParticleEntityFlame = 7,
855    ParticleFlame = 8,
856    ParticleDust = 9,
857    ParticleBlockForceField = 10,
858    ParticleBoneMeal = 11,
859    ParticleEvaporate = 12,
860    ParticleWaterDrip = 13,
861    ParticleLavaDrip = 14,
862    ParticleLava = 15,
863    ParticleDustPlume = 16,
864    ParticleBlockBreak = 17,
865    ParticlePunchBlock = 18,
866}
867impl ParticleType {
868    /// String value of the enum field names used in the ProtoBuf definition.
869    ///
870    /// The values are not transformed in any way and thus are considered stable
871    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
872    pub fn as_str_name(&self) -> &'static str {
873        match self {
874            ParticleType::Unspecified => "PARTICLE_TYPE_UNSPECIFIED",
875            ParticleType::ParticleHugeExplosion => "PARTICLE_HUGE_EXPLOSION",
876            ParticleType::ParticleEndermanTeleport => "PARTICLE_ENDERMAN_TELEPORT",
877            ParticleType::ParticleSnowballPoof => "PARTICLE_SNOWBALL_POOF",
878            ParticleType::ParticleEggSmash => "PARTICLE_EGG_SMASH",
879            ParticleType::ParticleSplash => "PARTICLE_SPLASH",
880            ParticleType::ParticleEffect => "PARTICLE_EFFECT",
881            ParticleType::ParticleEntityFlame => "PARTICLE_ENTITY_FLAME",
882            ParticleType::ParticleFlame => "PARTICLE_FLAME",
883            ParticleType::ParticleDust => "PARTICLE_DUST",
884            ParticleType::ParticleBlockForceField => "PARTICLE_BLOCK_FORCE_FIELD",
885            ParticleType::ParticleBoneMeal => "PARTICLE_BONE_MEAL",
886            ParticleType::ParticleEvaporate => "PARTICLE_EVAPORATE",
887            ParticleType::ParticleWaterDrip => "PARTICLE_WATER_DRIP",
888            ParticleType::ParticleLavaDrip => "PARTICLE_LAVA_DRIP",
889            ParticleType::ParticleLava => "PARTICLE_LAVA",
890            ParticleType::ParticleDustPlume => "PARTICLE_DUST_PLUME",
891            ParticleType::ParticleBlockBreak => "PARTICLE_BLOCK_BREAK",
892            ParticleType::ParticlePunchBlock => "PARTICLE_PUNCH_BLOCK",
893        }
894    }
895    /// Creates an enum from field names used in the ProtoBuf definition.
896    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
897        match value {
898            "PARTICLE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
899            "PARTICLE_HUGE_EXPLOSION" => Some(Self::ParticleHugeExplosion),
900            "PARTICLE_ENDERMAN_TELEPORT" => Some(Self::ParticleEndermanTeleport),
901            "PARTICLE_SNOWBALL_POOF" => Some(Self::ParticleSnowballPoof),
902            "PARTICLE_EGG_SMASH" => Some(Self::ParticleEggSmash),
903            "PARTICLE_SPLASH" => Some(Self::ParticleSplash),
904            "PARTICLE_EFFECT" => Some(Self::ParticleEffect),
905            "PARTICLE_ENTITY_FLAME" => Some(Self::ParticleEntityFlame),
906            "PARTICLE_FLAME" => Some(Self::ParticleFlame),
907            "PARTICLE_DUST" => Some(Self::ParticleDust),
908            "PARTICLE_BLOCK_FORCE_FIELD" => Some(Self::ParticleBlockForceField),
909            "PARTICLE_BONE_MEAL" => Some(Self::ParticleBoneMeal),
910            "PARTICLE_EVAPORATE" => Some(Self::ParticleEvaporate),
911            "PARTICLE_WATER_DRIP" => Some(Self::ParticleWaterDrip),
912            "PARTICLE_LAVA_DRIP" => Some(Self::ParticleLavaDrip),
913            "PARTICLE_LAVA" => Some(Self::ParticleLava),
914            "PARTICLE_DUST_PLUME" => Some(Self::ParticleDustPlume),
915            "PARTICLE_BLOCK_BREAK" => Some(Self::ParticleBlockBreak),
916            "PARTICLE_PUNCH_BLOCK" => Some(Self::ParticlePunchBlock),
917            _ => None,
918        }
919    }
920}
921/// Parameter specification for a command.
922#[allow(clippy::derive_partial_eq_without_eq)]
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct ParamSpec {
925    #[prost(string, tag="1")]
926    pub name: ::prost::alloc::string::String,
927    #[prost(enumeration="ParamType", tag="2")]
928    pub r#type: i32,
929    #[prost(bool, tag="3")]
930    pub optional: bool,
931    /// Optional suffix as supported by Go cmd tags (e.g., units)
932    #[prost(string, tag="4")]
933    pub suffix: ::prost::alloc::string::String,
934    /// Optional list of enum values to present in the client UI.
935    /// When set, the parameter is shown as an enum selector regardless of ParamType.
936    #[prost(string, repeated, tag="5")]
937    pub enum_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
938}
939/// Command specification announced by a plugin during handshake.
940#[allow(clippy::derive_partial_eq_without_eq)]
941#[derive(Clone, PartialEq, ::prost::Message)]
942pub struct CommandSpec {
943    #[prost(string, tag="1")]
944    pub name: ::prost::alloc::string::String,
945    #[prost(string, tag="2")]
946    pub description: ::prost::alloc::string::String,
947    #[prost(string, repeated, tag="3")]
948    pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
949    #[prost(message, repeated, tag="4")]
950    pub params: ::prost::alloc::vec::Vec<ParamSpec>,
951}
952/// Player command execution event.
953#[allow(clippy::derive_partial_eq_without_eq)]
954#[derive(Clone, PartialEq, ::prost::Message)]
955pub struct CommandEvent {
956    #[prost(string, tag="1")]
957    pub player_uuid: ::prost::alloc::string::String,
958    #[prost(string, tag="2")]
959    pub name: ::prost::alloc::string::String,
960    /// Full command string like "/tp 100 64 200"
961    #[prost(string, tag="3")]
962    pub raw: ::prost::alloc::string::String,
963    /// Just the command name like "tp"
964    #[prost(string, tag="4")]
965    pub command: ::prost::alloc::string::String,
966    /// Parsed arguments like \["100", "64", "200"\]
967    #[prost(string, repeated, tag="5")]
968    pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
969}
970/// Supported parameter types for commands.
971#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
972#[repr(i32)]
973pub enum ParamType {
974    ParamString = 0,
975    ParamInt = 1,
976    ParamFloat = 2,
977    ParamBool = 3,
978    ParamVarargs = 4,
979    ParamEnum = 5,
980}
981impl ParamType {
982    /// String value of the enum field names used in the ProtoBuf definition.
983    ///
984    /// The values are not transformed in any way and thus are considered stable
985    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
986    pub fn as_str_name(&self) -> &'static str {
987        match self {
988            ParamType::ParamString => "PARAM_STRING",
989            ParamType::ParamInt => "PARAM_INT",
990            ParamType::ParamFloat => "PARAM_FLOAT",
991            ParamType::ParamBool => "PARAM_BOOL",
992            ParamType::ParamVarargs => "PARAM_VARARGS",
993            ParamType::ParamEnum => "PARAM_ENUM",
994        }
995    }
996    /// Creates an enum from field names used in the ProtoBuf definition.
997    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
998        match value {
999            "PARAM_STRING" => Some(Self::ParamString),
1000            "PARAM_INT" => Some(Self::ParamInt),
1001            "PARAM_FLOAT" => Some(Self::ParamFloat),
1002            "PARAM_BOOL" => Some(Self::ParamBool),
1003            "PARAM_VARARGS" => Some(Self::ParamVarargs),
1004            "PARAM_ENUM" => Some(Self::ParamEnum),
1005            _ => None,
1006        }
1007    }
1008}
1009#[allow(clippy::derive_partial_eq_without_eq)]
1010#[derive(Clone, PartialEq, ::prost::Message)]
1011pub struct EventResult {
1012    #[prost(string, tag="1")]
1013    pub event_id: ::prost::alloc::string::String,
1014    #[prost(bool, optional, tag="2")]
1015    pub cancel: ::core::option::Option<bool>,
1016    #[prost(oneof="event_result::Update", tags="10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 30")]
1017    pub update: ::core::option::Option<event_result::Update>,
1018}
1019/// Nested message and enum types in `EventResult`.
1020pub mod event_result {
1021    #[allow(clippy::derive_partial_eq_without_eq)]
1022#[derive(Clone, PartialEq, ::prost::Oneof)]
1023    pub enum Update {
1024        #[prost(message, tag="10")]
1025        Chat(super::ChatMutation),
1026        #[prost(message, tag="11")]
1027        BlockBreak(super::BlockBreakMutation),
1028        #[prost(message, tag="12")]
1029        PlayerFoodLoss(super::PlayerFoodLossMutation),
1030        #[prost(message, tag="13")]
1031        PlayerHeal(super::PlayerHealMutation),
1032        #[prost(message, tag="14")]
1033        PlayerHurt(super::PlayerHurtMutation),
1034        #[prost(message, tag="15")]
1035        PlayerDeath(super::PlayerDeathMutation),
1036        #[prost(message, tag="16")]
1037        PlayerRespawn(super::PlayerRespawnMutation),
1038        #[prost(message, tag="17")]
1039        PlayerAttackEntity(super::PlayerAttackEntityMutation),
1040        #[prost(message, tag="18")]
1041        PlayerExperienceGain(super::PlayerExperienceGainMutation),
1042        #[prost(message, tag="19")]
1043        PlayerLecternPageTurn(super::PlayerLecternPageTurnMutation),
1044        #[prost(message, tag="20")]
1045        PlayerItemPickup(super::PlayerItemPickupMutation),
1046        #[prost(message, tag="21")]
1047        PlayerTransfer(super::PlayerTransferMutation),
1048        #[prost(message, tag="30")]
1049        WorldExplosion(super::WorldExplosionMutation),
1050    }
1051}
1052/// Wrapper messages for repeated fields to allow detecting "not set" vs "empty"
1053#[allow(clippy::derive_partial_eq_without_eq)]
1054#[derive(Clone, PartialEq, ::prost::Message)]
1055pub struct ItemStackList {
1056    #[prost(message, repeated, tag="1")]
1057    pub items: ::prost::alloc::vec::Vec<ItemStack>,
1058}
1059#[allow(clippy::derive_partial_eq_without_eq)]
1060#[derive(Clone, PartialEq, ::prost::Message)]
1061pub struct StringList {
1062    #[prost(string, repeated, tag="1")]
1063    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1064}
1065#[allow(clippy::derive_partial_eq_without_eq)]
1066#[derive(Clone, PartialEq, ::prost::Message)]
1067pub struct BlockPosList {
1068    #[prost(message, repeated, tag="1")]
1069    pub positions: ::prost::alloc::vec::Vec<BlockPos>,
1070}
1071#[allow(clippy::derive_partial_eq_without_eq)]
1072#[derive(Clone, PartialEq, ::prost::Message)]
1073pub struct ChatMutation {
1074    #[prost(string, optional, tag="1")]
1075    pub message: ::core::option::Option<::prost::alloc::string::String>,
1076}
1077#[allow(clippy::derive_partial_eq_without_eq)]
1078#[derive(Clone, PartialEq, ::prost::Message)]
1079pub struct BlockBreakMutation {
1080    #[prost(message, optional, tag="1")]
1081    pub drops: ::core::option::Option<ItemStackList>,
1082    #[prost(int32, optional, tag="2")]
1083    pub xp: ::core::option::Option<i32>,
1084}
1085#[allow(clippy::derive_partial_eq_without_eq)]
1086#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1087pub struct PlayerFoodLossMutation {
1088    #[prost(int32, optional, tag="1")]
1089    pub to: ::core::option::Option<i32>,
1090}
1091#[allow(clippy::derive_partial_eq_without_eq)]
1092#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1093pub struct PlayerHealMutation {
1094    #[prost(double, optional, tag="1")]
1095    pub amount: ::core::option::Option<f64>,
1096}
1097#[allow(clippy::derive_partial_eq_without_eq)]
1098#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1099pub struct PlayerHurtMutation {
1100    #[prost(double, optional, tag="1")]
1101    pub damage: ::core::option::Option<f64>,
1102    #[prost(int64, optional, tag="2")]
1103    pub attack_immunity_ms: ::core::option::Option<i64>,
1104}
1105#[allow(clippy::derive_partial_eq_without_eq)]
1106#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1107pub struct PlayerDeathMutation {
1108    #[prost(bool, optional, tag="1")]
1109    pub keep_inventory: ::core::option::Option<bool>,
1110}
1111#[allow(clippy::derive_partial_eq_without_eq)]
1112#[derive(Clone, PartialEq, ::prost::Message)]
1113pub struct PlayerRespawnMutation {
1114    #[prost(message, optional, tag="1")]
1115    pub position: ::core::option::Option<Vec3>,
1116    #[prost(message, optional, tag="2")]
1117    pub world: ::core::option::Option<WorldRef>,
1118}
1119#[allow(clippy::derive_partial_eq_without_eq)]
1120#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1121pub struct PlayerAttackEntityMutation {
1122    #[prost(double, optional, tag="1")]
1123    pub force: ::core::option::Option<f64>,
1124    #[prost(double, optional, tag="2")]
1125    pub height: ::core::option::Option<f64>,
1126    #[prost(bool, optional, tag="3")]
1127    pub critical: ::core::option::Option<bool>,
1128}
1129#[allow(clippy::derive_partial_eq_without_eq)]
1130#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1131pub struct PlayerExperienceGainMutation {
1132    #[prost(int32, optional, tag="1")]
1133    pub amount: ::core::option::Option<i32>,
1134}
1135#[allow(clippy::derive_partial_eq_without_eq)]
1136#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1137pub struct PlayerLecternPageTurnMutation {
1138    #[prost(int32, optional, tag="1")]
1139    pub new_page: ::core::option::Option<i32>,
1140}
1141#[allow(clippy::derive_partial_eq_without_eq)]
1142#[derive(Clone, PartialEq, ::prost::Message)]
1143pub struct PlayerItemPickupMutation {
1144    #[prost(message, optional, tag="1")]
1145    pub item: ::core::option::Option<ItemStack>,
1146}
1147#[allow(clippy::derive_partial_eq_without_eq)]
1148#[derive(Clone, PartialEq, ::prost::Message)]
1149pub struct PlayerTransferMutation {
1150    #[prost(message, optional, tag="1")]
1151    pub address: ::core::option::Option<Address>,
1152}
1153#[allow(clippy::derive_partial_eq_without_eq)]
1154#[derive(Clone, PartialEq, ::prost::Message)]
1155pub struct WorldExplosionMutation {
1156    #[prost(message, optional, tag="1")]
1157    pub entity_uuids: ::core::option::Option<StringList>,
1158    #[prost(message, optional, tag="2")]
1159    pub blocks: ::core::option::Option<BlockPosList>,
1160    #[prost(double, optional, tag="3")]
1161    pub item_drop_chance: ::core::option::Option<f64>,
1162    #[prost(bool, optional, tag="4")]
1163    pub spawn_fire: ::core::option::Option<bool>,
1164}
1165#[allow(clippy::derive_partial_eq_without_eq)]
1166#[derive(Clone, PartialEq, ::prost::Message)]
1167pub struct PlayerJoinEvent {
1168    #[prost(string, tag="1")]
1169    pub player_uuid: ::prost::alloc::string::String,
1170    #[prost(string, tag="2")]
1171    pub name: ::prost::alloc::string::String,
1172    #[prost(message, optional, tag="3")]
1173    pub world: ::core::option::Option<WorldRef>,
1174}
1175#[allow(clippy::derive_partial_eq_without_eq)]
1176#[derive(Clone, PartialEq, ::prost::Message)]
1177pub struct PlayerQuitEvent {
1178    #[prost(string, tag="1")]
1179    pub player_uuid: ::prost::alloc::string::String,
1180    #[prost(string, tag="2")]
1181    pub name: ::prost::alloc::string::String,
1182}
1183#[allow(clippy::derive_partial_eq_without_eq)]
1184#[derive(Clone, PartialEq, ::prost::Message)]
1185pub struct PlayerMoveEvent {
1186    #[prost(string, tag="1")]
1187    pub player_uuid: ::prost::alloc::string::String,
1188    #[prost(string, tag="2")]
1189    pub name: ::prost::alloc::string::String,
1190    #[prost(string, tag="3")]
1191    pub world: ::prost::alloc::string::String,
1192    #[prost(message, optional, tag="4")]
1193    pub position: ::core::option::Option<Vec3>,
1194    #[prost(message, optional, tag="5")]
1195    pub rotation: ::core::option::Option<Rotation>,
1196}
1197#[allow(clippy::derive_partial_eq_without_eq)]
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct PlayerJumpEvent {
1200    #[prost(string, tag="1")]
1201    pub player_uuid: ::prost::alloc::string::String,
1202    #[prost(string, tag="2")]
1203    pub name: ::prost::alloc::string::String,
1204    #[prost(string, tag="3")]
1205    pub world: ::prost::alloc::string::String,
1206    #[prost(message, optional, tag="4")]
1207    pub position: ::core::option::Option<Vec3>,
1208}
1209#[allow(clippy::derive_partial_eq_without_eq)]
1210#[derive(Clone, PartialEq, ::prost::Message)]
1211pub struct PlayerTeleportEvent {
1212    #[prost(string, tag="1")]
1213    pub player_uuid: ::prost::alloc::string::String,
1214    #[prost(string, tag="2")]
1215    pub name: ::prost::alloc::string::String,
1216    #[prost(string, tag="3")]
1217    pub world: ::prost::alloc::string::String,
1218    #[prost(message, optional, tag="4")]
1219    pub position: ::core::option::Option<Vec3>,
1220}
1221#[allow(clippy::derive_partial_eq_without_eq)]
1222#[derive(Clone, PartialEq, ::prost::Message)]
1223pub struct PlayerChangeWorldEvent {
1224    #[prost(string, tag="1")]
1225    pub player_uuid: ::prost::alloc::string::String,
1226    #[prost(string, tag="2")]
1227    pub name: ::prost::alloc::string::String,
1228    #[prost(message, optional, tag="3")]
1229    pub before: ::core::option::Option<WorldRef>,
1230    #[prost(message, optional, tag="4")]
1231    pub after: ::core::option::Option<WorldRef>,
1232}
1233#[allow(clippy::derive_partial_eq_without_eq)]
1234#[derive(Clone, PartialEq, ::prost::Message)]
1235pub struct PlayerToggleSprintEvent {
1236    #[prost(string, tag="1")]
1237    pub player_uuid: ::prost::alloc::string::String,
1238    #[prost(string, tag="2")]
1239    pub name: ::prost::alloc::string::String,
1240    #[prost(bool, tag="3")]
1241    pub after: bool,
1242}
1243#[allow(clippy::derive_partial_eq_without_eq)]
1244#[derive(Clone, PartialEq, ::prost::Message)]
1245pub struct PlayerToggleSneakEvent {
1246    #[prost(string, tag="1")]
1247    pub player_uuid: ::prost::alloc::string::String,
1248    #[prost(string, tag="2")]
1249    pub name: ::prost::alloc::string::String,
1250    #[prost(bool, tag="3")]
1251    pub after: bool,
1252}
1253#[allow(clippy::derive_partial_eq_without_eq)]
1254#[derive(Clone, PartialEq, ::prost::Message)]
1255pub struct ChatEvent {
1256    #[prost(string, tag="1")]
1257    pub player_uuid: ::prost::alloc::string::String,
1258    #[prost(string, tag="2")]
1259    pub name: ::prost::alloc::string::String,
1260    #[prost(string, tag="3")]
1261    pub message: ::prost::alloc::string::String,
1262}
1263#[allow(clippy::derive_partial_eq_without_eq)]
1264#[derive(Clone, PartialEq, ::prost::Message)]
1265pub struct PlayerFoodLossEvent {
1266    #[prost(string, tag="1")]
1267    pub player_uuid: ::prost::alloc::string::String,
1268    #[prost(string, tag="2")]
1269    pub name: ::prost::alloc::string::String,
1270    #[prost(int32, tag="3")]
1271    pub from: i32,
1272    #[prost(int32, tag="4")]
1273    pub to: i32,
1274}
1275#[allow(clippy::derive_partial_eq_without_eq)]
1276#[derive(Clone, PartialEq, ::prost::Message)]
1277pub struct PlayerHealEvent {
1278    #[prost(string, tag="1")]
1279    pub player_uuid: ::prost::alloc::string::String,
1280    #[prost(string, tag="2")]
1281    pub name: ::prost::alloc::string::String,
1282    #[prost(double, tag="3")]
1283    pub amount: f64,
1284    #[prost(message, optional, tag="4")]
1285    pub source: ::core::option::Option<HealingSource>,
1286}
1287#[allow(clippy::derive_partial_eq_without_eq)]
1288#[derive(Clone, PartialEq, ::prost::Message)]
1289pub struct PlayerHurtEvent {
1290    #[prost(string, tag="1")]
1291    pub player_uuid: ::prost::alloc::string::String,
1292    #[prost(string, tag="2")]
1293    pub name: ::prost::alloc::string::String,
1294    #[prost(double, tag="3")]
1295    pub damage: f64,
1296    #[prost(bool, tag="4")]
1297    pub immune: bool,
1298    #[prost(int64, tag="5")]
1299    pub attack_immunity_ms: i64,
1300    #[prost(message, optional, tag="6")]
1301    pub source: ::core::option::Option<DamageSource>,
1302}
1303#[allow(clippy::derive_partial_eq_without_eq)]
1304#[derive(Clone, PartialEq, ::prost::Message)]
1305pub struct PlayerDeathEvent {
1306    #[prost(string, tag="1")]
1307    pub player_uuid: ::prost::alloc::string::String,
1308    #[prost(string, tag="2")]
1309    pub name: ::prost::alloc::string::String,
1310    #[prost(message, optional, tag="3")]
1311    pub source: ::core::option::Option<DamageSource>,
1312    #[prost(bool, tag="4")]
1313    pub keep_inventory: bool,
1314}
1315#[allow(clippy::derive_partial_eq_without_eq)]
1316#[derive(Clone, PartialEq, ::prost::Message)]
1317pub struct PlayerRespawnEvent {
1318    #[prost(string, tag="1")]
1319    pub player_uuid: ::prost::alloc::string::String,
1320    #[prost(string, tag="2")]
1321    pub name: ::prost::alloc::string::String,
1322    #[prost(message, optional, tag="3")]
1323    pub position: ::core::option::Option<Vec3>,
1324    #[prost(message, optional, tag="4")]
1325    pub world: ::core::option::Option<WorldRef>,
1326}
1327#[allow(clippy::derive_partial_eq_without_eq)]
1328#[derive(Clone, PartialEq, ::prost::Message)]
1329pub struct PlayerSkinChangeEvent {
1330    #[prost(string, tag="1")]
1331    pub player_uuid: ::prost::alloc::string::String,
1332    #[prost(string, tag="2")]
1333    pub name: ::prost::alloc::string::String,
1334    #[prost(string, optional, tag="3")]
1335    pub full_id: ::core::option::Option<::prost::alloc::string::String>,
1336    #[prost(string, optional, tag="4")]
1337    pub play_fab_id: ::core::option::Option<::prost::alloc::string::String>,
1338    #[prost(bool, tag="5")]
1339    pub persona: bool,
1340}
1341#[allow(clippy::derive_partial_eq_without_eq)]
1342#[derive(Clone, PartialEq, ::prost::Message)]
1343pub struct PlayerFireExtinguishEvent {
1344    #[prost(string, tag="1")]
1345    pub player_uuid: ::prost::alloc::string::String,
1346    #[prost(string, tag="2")]
1347    pub name: ::prost::alloc::string::String,
1348    #[prost(string, tag="3")]
1349    pub world: ::prost::alloc::string::String,
1350    #[prost(message, optional, tag="4")]
1351    pub position: ::core::option::Option<BlockPos>,
1352}
1353#[allow(clippy::derive_partial_eq_without_eq)]
1354#[derive(Clone, PartialEq, ::prost::Message)]
1355pub struct PlayerStartBreakEvent {
1356    #[prost(string, tag="1")]
1357    pub player_uuid: ::prost::alloc::string::String,
1358    #[prost(string, tag="2")]
1359    pub name: ::prost::alloc::string::String,
1360    #[prost(string, tag="3")]
1361    pub world: ::prost::alloc::string::String,
1362    #[prost(message, optional, tag="4")]
1363    pub position: ::core::option::Option<BlockPos>,
1364}
1365#[allow(clippy::derive_partial_eq_without_eq)]
1366#[derive(Clone, PartialEq, ::prost::Message)]
1367pub struct BlockBreakEvent {
1368    #[prost(string, tag="1")]
1369    pub player_uuid: ::prost::alloc::string::String,
1370    #[prost(string, tag="2")]
1371    pub name: ::prost::alloc::string::String,
1372    #[prost(string, tag="3")]
1373    pub world: ::prost::alloc::string::String,
1374    #[prost(message, optional, tag="4")]
1375    pub position: ::core::option::Option<BlockPos>,
1376}
1377#[allow(clippy::derive_partial_eq_without_eq)]
1378#[derive(Clone, PartialEq, ::prost::Message)]
1379pub struct PlayerBlockPlaceEvent {
1380    #[prost(string, tag="1")]
1381    pub player_uuid: ::prost::alloc::string::String,
1382    #[prost(string, tag="2")]
1383    pub name: ::prost::alloc::string::String,
1384    #[prost(string, tag="3")]
1385    pub world: ::prost::alloc::string::String,
1386    #[prost(message, optional, tag="4")]
1387    pub position: ::core::option::Option<BlockPos>,
1388    #[prost(message, optional, tag="5")]
1389    pub block: ::core::option::Option<BlockState>,
1390}
1391#[allow(clippy::derive_partial_eq_without_eq)]
1392#[derive(Clone, PartialEq, ::prost::Message)]
1393pub struct PlayerBlockPickEvent {
1394    #[prost(string, tag="1")]
1395    pub player_uuid: ::prost::alloc::string::String,
1396    #[prost(string, tag="2")]
1397    pub name: ::prost::alloc::string::String,
1398    #[prost(string, tag="3")]
1399    pub world: ::prost::alloc::string::String,
1400    #[prost(message, optional, tag="4")]
1401    pub position: ::core::option::Option<BlockPos>,
1402    #[prost(message, optional, tag="5")]
1403    pub block: ::core::option::Option<BlockState>,
1404}
1405#[allow(clippy::derive_partial_eq_without_eq)]
1406#[derive(Clone, PartialEq, ::prost::Message)]
1407pub struct PlayerItemUseEvent {
1408    #[prost(string, tag="1")]
1409    pub player_uuid: ::prost::alloc::string::String,
1410    #[prost(string, tag="2")]
1411    pub name: ::prost::alloc::string::String,
1412    #[prost(string, tag="3")]
1413    pub world: ::prost::alloc::string::String,
1414    #[prost(message, optional, tag="4")]
1415    pub item: ::core::option::Option<ItemStack>,
1416}
1417#[allow(clippy::derive_partial_eq_without_eq)]
1418#[derive(Clone, PartialEq, ::prost::Message)]
1419pub struct PlayerItemUseOnBlockEvent {
1420    #[prost(string, tag="1")]
1421    pub player_uuid: ::prost::alloc::string::String,
1422    #[prost(string, tag="2")]
1423    pub name: ::prost::alloc::string::String,
1424    #[prost(string, tag="3")]
1425    pub world: ::prost::alloc::string::String,
1426    #[prost(message, optional, tag="4")]
1427    pub position: ::core::option::Option<BlockPos>,
1428    #[prost(string, tag="5")]
1429    pub face: ::prost::alloc::string::String,
1430    #[prost(message, optional, tag="6")]
1431    pub click_position: ::core::option::Option<Vec3>,
1432    #[prost(message, optional, tag="7")]
1433    pub block: ::core::option::Option<BlockState>,
1434    #[prost(message, optional, tag="8")]
1435    pub item: ::core::option::Option<ItemStack>,
1436}
1437#[allow(clippy::derive_partial_eq_without_eq)]
1438#[derive(Clone, PartialEq, ::prost::Message)]
1439pub struct PlayerItemUseOnEntityEvent {
1440    #[prost(string, tag="1")]
1441    pub player_uuid: ::prost::alloc::string::String,
1442    #[prost(string, tag="2")]
1443    pub name: ::prost::alloc::string::String,
1444    #[prost(string, tag="3")]
1445    pub world: ::prost::alloc::string::String,
1446    #[prost(message, optional, tag="4")]
1447    pub entity: ::core::option::Option<EntityRef>,
1448    #[prost(message, optional, tag="5")]
1449    pub item: ::core::option::Option<ItemStack>,
1450}
1451#[allow(clippy::derive_partial_eq_without_eq)]
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct PlayerItemReleaseEvent {
1454    #[prost(string, tag="1")]
1455    pub player_uuid: ::prost::alloc::string::String,
1456    #[prost(string, tag="2")]
1457    pub name: ::prost::alloc::string::String,
1458    #[prost(string, tag="3")]
1459    pub world: ::prost::alloc::string::String,
1460    #[prost(message, optional, tag="4")]
1461    pub item: ::core::option::Option<ItemStack>,
1462    #[prost(int64, tag="5")]
1463    pub duration_ms: i64,
1464}
1465#[allow(clippy::derive_partial_eq_without_eq)]
1466#[derive(Clone, PartialEq, ::prost::Message)]
1467pub struct PlayerItemConsumeEvent {
1468    #[prost(string, tag="1")]
1469    pub player_uuid: ::prost::alloc::string::String,
1470    #[prost(string, tag="2")]
1471    pub name: ::prost::alloc::string::String,
1472    #[prost(string, tag="3")]
1473    pub world: ::prost::alloc::string::String,
1474    #[prost(message, optional, tag="4")]
1475    pub item: ::core::option::Option<ItemStack>,
1476}
1477#[allow(clippy::derive_partial_eq_without_eq)]
1478#[derive(Clone, PartialEq, ::prost::Message)]
1479pub struct PlayerAttackEntityEvent {
1480    #[prost(string, tag="1")]
1481    pub player_uuid: ::prost::alloc::string::String,
1482    #[prost(string, tag="2")]
1483    pub name: ::prost::alloc::string::String,
1484    #[prost(string, tag="3")]
1485    pub world: ::prost::alloc::string::String,
1486    #[prost(message, optional, tag="4")]
1487    pub entity: ::core::option::Option<EntityRef>,
1488    #[prost(double, tag="5")]
1489    pub force: f64,
1490    #[prost(double, tag="6")]
1491    pub height: f64,
1492    #[prost(bool, tag="7")]
1493    pub critical: bool,
1494    #[prost(message, optional, tag="8")]
1495    pub item: ::core::option::Option<ItemStack>,
1496}
1497#[allow(clippy::derive_partial_eq_without_eq)]
1498#[derive(Clone, PartialEq, ::prost::Message)]
1499pub struct PlayerExperienceGainEvent {
1500    #[prost(string, tag="1")]
1501    pub player_uuid: ::prost::alloc::string::String,
1502    #[prost(string, tag="2")]
1503    pub name: ::prost::alloc::string::String,
1504    #[prost(string, tag="3")]
1505    pub world: ::prost::alloc::string::String,
1506    #[prost(int32, tag="4")]
1507    pub amount: i32,
1508}
1509#[allow(clippy::derive_partial_eq_without_eq)]
1510#[derive(Clone, PartialEq, ::prost::Message)]
1511pub struct PlayerPunchAirEvent {
1512    #[prost(string, tag="1")]
1513    pub player_uuid: ::prost::alloc::string::String,
1514    #[prost(string, tag="2")]
1515    pub name: ::prost::alloc::string::String,
1516    #[prost(string, tag="3")]
1517    pub world: ::prost::alloc::string::String,
1518}
1519#[allow(clippy::derive_partial_eq_without_eq)]
1520#[derive(Clone, PartialEq, ::prost::Message)]
1521pub struct PlayerSignEditEvent {
1522    #[prost(string, tag="1")]
1523    pub player_uuid: ::prost::alloc::string::String,
1524    #[prost(string, tag="2")]
1525    pub name: ::prost::alloc::string::String,
1526    #[prost(string, tag="3")]
1527    pub world: ::prost::alloc::string::String,
1528    #[prost(message, optional, tag="4")]
1529    pub position: ::core::option::Option<BlockPos>,
1530    #[prost(bool, tag="5")]
1531    pub front_side: bool,
1532    #[prost(string, tag="6")]
1533    pub old_text: ::prost::alloc::string::String,
1534    #[prost(string, tag="7")]
1535    pub new_text: ::prost::alloc::string::String,
1536}
1537#[allow(clippy::derive_partial_eq_without_eq)]
1538#[derive(Clone, PartialEq, ::prost::Message)]
1539pub struct PlayerLecternPageTurnEvent {
1540    #[prost(string, tag="1")]
1541    pub player_uuid: ::prost::alloc::string::String,
1542    #[prost(string, tag="2")]
1543    pub name: ::prost::alloc::string::String,
1544    #[prost(string, tag="3")]
1545    pub world: ::prost::alloc::string::String,
1546    #[prost(message, optional, tag="4")]
1547    pub position: ::core::option::Option<BlockPos>,
1548    #[prost(int32, tag="5")]
1549    pub old_page: i32,
1550    #[prost(int32, tag="6")]
1551    pub new_page: i32,
1552}
1553#[allow(clippy::derive_partial_eq_without_eq)]
1554#[derive(Clone, PartialEq, ::prost::Message)]
1555pub struct PlayerItemDamageEvent {
1556    #[prost(string, tag="1")]
1557    pub player_uuid: ::prost::alloc::string::String,
1558    #[prost(string, tag="2")]
1559    pub name: ::prost::alloc::string::String,
1560    #[prost(string, tag="3")]
1561    pub world: ::prost::alloc::string::String,
1562    #[prost(message, optional, tag="4")]
1563    pub item: ::core::option::Option<ItemStack>,
1564    #[prost(int32, tag="5")]
1565    pub damage: i32,
1566}
1567#[allow(clippy::derive_partial_eq_without_eq)]
1568#[derive(Clone, PartialEq, ::prost::Message)]
1569pub struct PlayerItemPickupEvent {
1570    #[prost(string, tag="1")]
1571    pub player_uuid: ::prost::alloc::string::String,
1572    #[prost(string, tag="2")]
1573    pub name: ::prost::alloc::string::String,
1574    #[prost(string, tag="3")]
1575    pub world: ::prost::alloc::string::String,
1576    #[prost(message, optional, tag="4")]
1577    pub item: ::core::option::Option<ItemStack>,
1578}
1579#[allow(clippy::derive_partial_eq_without_eq)]
1580#[derive(Clone, PartialEq, ::prost::Message)]
1581pub struct PlayerHeldSlotChangeEvent {
1582    #[prost(string, tag="1")]
1583    pub player_uuid: ::prost::alloc::string::String,
1584    #[prost(string, tag="2")]
1585    pub name: ::prost::alloc::string::String,
1586    #[prost(string, tag="3")]
1587    pub world: ::prost::alloc::string::String,
1588    #[prost(int32, tag="4")]
1589    pub from_slot: i32,
1590    #[prost(int32, tag="5")]
1591    pub to_slot: i32,
1592}
1593#[allow(clippy::derive_partial_eq_without_eq)]
1594#[derive(Clone, PartialEq, ::prost::Message)]
1595pub struct PlayerItemDropEvent {
1596    #[prost(string, tag="1")]
1597    pub player_uuid: ::prost::alloc::string::String,
1598    #[prost(string, tag="2")]
1599    pub name: ::prost::alloc::string::String,
1600    #[prost(string, tag="3")]
1601    pub world: ::prost::alloc::string::String,
1602    #[prost(message, optional, tag="4")]
1603    pub item: ::core::option::Option<ItemStack>,
1604}
1605#[allow(clippy::derive_partial_eq_without_eq)]
1606#[derive(Clone, PartialEq, ::prost::Message)]
1607pub struct PlayerTransferEvent {
1608    #[prost(string, tag="1")]
1609    pub player_uuid: ::prost::alloc::string::String,
1610    #[prost(string, tag="2")]
1611    pub name: ::prost::alloc::string::String,
1612    #[prost(message, optional, tag="3")]
1613    pub address: ::core::option::Option<Address>,
1614}
1615#[allow(clippy::derive_partial_eq_without_eq)]
1616#[derive(Clone, PartialEq, ::prost::Message)]
1617pub struct PlayerDiagnosticsEvent {
1618    #[prost(string, tag="1")]
1619    pub player_uuid: ::prost::alloc::string::String,
1620    #[prost(string, tag="2")]
1621    pub name: ::prost::alloc::string::String,
1622    #[prost(double, tag="3")]
1623    pub average_frames_per_second: f64,
1624    #[prost(double, tag="4")]
1625    pub average_server_sim_tick_time: f64,
1626    #[prost(double, tag="5")]
1627    pub average_client_sim_tick_time: f64,
1628    #[prost(double, tag="6")]
1629    pub average_begin_frame_time: f64,
1630    #[prost(double, tag="7")]
1631    pub average_input_time: f64,
1632    #[prost(double, tag="8")]
1633    pub average_render_time: f64,
1634    #[prost(double, tag="9")]
1635    pub average_end_frame_time: f64,
1636    #[prost(double, tag="10")]
1637    pub average_remainder_time_percent: f64,
1638    #[prost(double, tag="11")]
1639    pub average_unaccounted_time_percent: f64,
1640}
1641#[allow(clippy::derive_partial_eq_without_eq)]
1642#[derive(Clone, PartialEq, ::prost::Message)]
1643pub struct WorldLiquidFlowEvent {
1644    #[prost(message, optional, tag="1")]
1645    pub world: ::core::option::Option<WorldRef>,
1646    #[prost(message, optional, tag="2")]
1647    pub from: ::core::option::Option<BlockPos>,
1648    #[prost(message, optional, tag="3")]
1649    pub to: ::core::option::Option<BlockPos>,
1650    #[prost(message, optional, tag="4")]
1651    pub liquid: ::core::option::Option<LiquidState>,
1652    #[prost(message, optional, tag="5")]
1653    pub replaced: ::core::option::Option<BlockState>,
1654}
1655#[allow(clippy::derive_partial_eq_without_eq)]
1656#[derive(Clone, PartialEq, ::prost::Message)]
1657pub struct WorldLiquidDecayEvent {
1658    #[prost(message, optional, tag="1")]
1659    pub world: ::core::option::Option<WorldRef>,
1660    #[prost(message, optional, tag="2")]
1661    pub position: ::core::option::Option<BlockPos>,
1662    #[prost(message, optional, tag="3")]
1663    pub before: ::core::option::Option<LiquidState>,
1664    #[prost(message, optional, tag="4")]
1665    pub after: ::core::option::Option<LiquidState>,
1666}
1667#[allow(clippy::derive_partial_eq_without_eq)]
1668#[derive(Clone, PartialEq, ::prost::Message)]
1669pub struct WorldLiquidHardenEvent {
1670    #[prost(message, optional, tag="1")]
1671    pub world: ::core::option::Option<WorldRef>,
1672    #[prost(message, optional, tag="2")]
1673    pub position: ::core::option::Option<BlockPos>,
1674    #[prost(message, optional, tag="3")]
1675    pub liquid_hardened: ::core::option::Option<LiquidState>,
1676    #[prost(message, optional, tag="4")]
1677    pub other_liquid: ::core::option::Option<LiquidState>,
1678    #[prost(message, optional, tag="5")]
1679    pub new_block: ::core::option::Option<BlockState>,
1680}
1681#[allow(clippy::derive_partial_eq_without_eq)]
1682#[derive(Clone, PartialEq, ::prost::Message)]
1683pub struct WorldSoundEvent {
1684    #[prost(message, optional, tag="1")]
1685    pub world: ::core::option::Option<WorldRef>,
1686    #[prost(string, tag="2")]
1687    pub sound: ::prost::alloc::string::String,
1688    #[prost(message, optional, tag="3")]
1689    pub position: ::core::option::Option<Vec3>,
1690}
1691#[allow(clippy::derive_partial_eq_without_eq)]
1692#[derive(Clone, PartialEq, ::prost::Message)]
1693pub struct WorldFireSpreadEvent {
1694    #[prost(message, optional, tag="1")]
1695    pub world: ::core::option::Option<WorldRef>,
1696    #[prost(message, optional, tag="2")]
1697    pub from: ::core::option::Option<BlockPos>,
1698    #[prost(message, optional, tag="3")]
1699    pub to: ::core::option::Option<BlockPos>,
1700}
1701#[allow(clippy::derive_partial_eq_without_eq)]
1702#[derive(Clone, PartialEq, ::prost::Message)]
1703pub struct WorldBlockBurnEvent {
1704    #[prost(message, optional, tag="1")]
1705    pub world: ::core::option::Option<WorldRef>,
1706    #[prost(message, optional, tag="2")]
1707    pub position: ::core::option::Option<BlockPos>,
1708}
1709#[allow(clippy::derive_partial_eq_without_eq)]
1710#[derive(Clone, PartialEq, ::prost::Message)]
1711pub struct WorldCropTrampleEvent {
1712    #[prost(message, optional, tag="1")]
1713    pub world: ::core::option::Option<WorldRef>,
1714    #[prost(message, optional, tag="2")]
1715    pub position: ::core::option::Option<BlockPos>,
1716}
1717#[allow(clippy::derive_partial_eq_without_eq)]
1718#[derive(Clone, PartialEq, ::prost::Message)]
1719pub struct WorldLeavesDecayEvent {
1720    #[prost(message, optional, tag="1")]
1721    pub world: ::core::option::Option<WorldRef>,
1722    #[prost(message, optional, tag="2")]
1723    pub position: ::core::option::Option<BlockPos>,
1724}
1725#[allow(clippy::derive_partial_eq_without_eq)]
1726#[derive(Clone, PartialEq, ::prost::Message)]
1727pub struct WorldEntitySpawnEvent {
1728    #[prost(message, optional, tag="1")]
1729    pub world: ::core::option::Option<WorldRef>,
1730    #[prost(message, optional, tag="2")]
1731    pub entity: ::core::option::Option<EntityRef>,
1732}
1733#[allow(clippy::derive_partial_eq_without_eq)]
1734#[derive(Clone, PartialEq, ::prost::Message)]
1735pub struct WorldEntityDespawnEvent {
1736    #[prost(message, optional, tag="1")]
1737    pub world: ::core::option::Option<WorldRef>,
1738    #[prost(message, optional, tag="2")]
1739    pub entity: ::core::option::Option<EntityRef>,
1740}
1741#[allow(clippy::derive_partial_eq_without_eq)]
1742#[derive(Clone, PartialEq, ::prost::Message)]
1743pub struct WorldExplosionEvent {
1744    #[prost(message, optional, tag="1")]
1745    pub world: ::core::option::Option<WorldRef>,
1746    #[prost(message, optional, tag="2")]
1747    pub position: ::core::option::Option<Vec3>,
1748    #[prost(message, repeated, tag="3")]
1749    pub affected_entities: ::prost::alloc::vec::Vec<EntityRef>,
1750    #[prost(message, repeated, tag="4")]
1751    pub affected_blocks: ::prost::alloc::vec::Vec<BlockPos>,
1752    #[prost(double, tag="5")]
1753    pub item_drop_chance: f64,
1754    #[prost(bool, tag="6")]
1755    pub spawn_fire: bool,
1756}
1757#[allow(clippy::derive_partial_eq_without_eq)]
1758#[derive(Clone, PartialEq, ::prost::Message)]
1759pub struct WorldCloseEvent {
1760    #[prost(message, optional, tag="1")]
1761    pub world: ::core::option::Option<WorldRef>,
1762}
1763#[allow(clippy::derive_partial_eq_without_eq)]
1764#[derive(Clone, PartialEq, ::prost::Message)]
1765pub struct HostToPlugin {
1766    #[prost(string, tag="1")]
1767    pub plugin_id: ::prost::alloc::string::String,
1768    #[prost(oneof="host_to_plugin::Payload", tags="10, 11, 12, 20, 21")]
1769    pub payload: ::core::option::Option<host_to_plugin::Payload>,
1770}
1771/// Nested message and enum types in `HostToPlugin`.
1772pub mod host_to_plugin {
1773    #[allow(clippy::derive_partial_eq_without_eq)]
1774#[derive(Clone, PartialEq, ::prost::Oneof)]
1775    pub enum Payload {
1776        #[prost(message, tag="10")]
1777        Hello(super::HostHello),
1778        #[prost(message, tag="11")]
1779        Shutdown(super::HostShutdown),
1780        #[prost(message, tag="12")]
1781        ServerInfo(super::ServerInformationResponse),
1782        #[prost(message, tag="20")]
1783        Event(super::EventEnvelope),
1784        #[prost(message, tag="21")]
1785        ActionResult(super::ActionResult),
1786    }
1787}
1788#[allow(clippy::derive_partial_eq_without_eq)]
1789#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1790pub struct ServerInformationRequest {
1791}
1792#[allow(clippy::derive_partial_eq_without_eq)]
1793#[derive(Clone, PartialEq, ::prost::Message)]
1794pub struct ServerInformationResponse {
1795    #[prost(string, repeated, tag="1")]
1796    pub plugins: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1797}
1798#[allow(clippy::derive_partial_eq_without_eq)]
1799#[derive(Clone, PartialEq, ::prost::Message)]
1800pub struct HostHello {
1801    #[prost(string, tag="1")]
1802    pub api_version: ::prost::alloc::string::String,
1803}
1804#[allow(clippy::derive_partial_eq_without_eq)]
1805#[derive(Clone, PartialEq, ::prost::Message)]
1806pub struct HostShutdown {
1807    #[prost(string, tag="1")]
1808    pub reason: ::prost::alloc::string::String,
1809}
1810#[allow(clippy::derive_partial_eq_without_eq)]
1811#[derive(Clone, PartialEq, ::prost::Message)]
1812pub struct EventEnvelope {
1813    #[prost(string, tag="1")]
1814    pub event_id: ::prost::alloc::string::String,
1815    #[prost(enumeration="EventType", tag="2")]
1816    pub r#type: i32,
1817    /// If an event can be cancelled or mutated it expects an acknowledgement.
1818    #[prost(bool, tag="3")]
1819    pub expects_response: bool,
1820    #[prost(oneof="event_envelope::Payload", tags="10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81")]
1821    pub payload: ::core::option::Option<event_envelope::Payload>,
1822}
1823/// Nested message and enum types in `EventEnvelope`.
1824pub mod event_envelope {
1825    #[allow(clippy::derive_partial_eq_without_eq)]
1826#[derive(Clone, PartialEq, ::prost::Oneof)]
1827    pub enum Payload {
1828        #[prost(message, tag="10")]
1829        PlayerJoin(super::PlayerJoinEvent),
1830        #[prost(message, tag="11")]
1831        PlayerQuit(super::PlayerQuitEvent),
1832        #[prost(message, tag="12")]
1833        PlayerMove(super::PlayerMoveEvent),
1834        #[prost(message, tag="13")]
1835        PlayerJump(super::PlayerJumpEvent),
1836        #[prost(message, tag="14")]
1837        PlayerTeleport(super::PlayerTeleportEvent),
1838        #[prost(message, tag="15")]
1839        PlayerChangeWorld(super::PlayerChangeWorldEvent),
1840        #[prost(message, tag="16")]
1841        PlayerToggleSprint(super::PlayerToggleSprintEvent),
1842        #[prost(message, tag="17")]
1843        PlayerToggleSneak(super::PlayerToggleSneakEvent),
1844        #[prost(message, tag="18")]
1845        Chat(super::ChatEvent),
1846        #[prost(message, tag="19")]
1847        PlayerFoodLoss(super::PlayerFoodLossEvent),
1848        #[prost(message, tag="20")]
1849        PlayerHeal(super::PlayerHealEvent),
1850        #[prost(message, tag="21")]
1851        PlayerHurt(super::PlayerHurtEvent),
1852        #[prost(message, tag="22")]
1853        PlayerDeath(super::PlayerDeathEvent),
1854        #[prost(message, tag="23")]
1855        PlayerRespawn(super::PlayerRespawnEvent),
1856        #[prost(message, tag="24")]
1857        PlayerSkinChange(super::PlayerSkinChangeEvent),
1858        #[prost(message, tag="25")]
1859        PlayerFireExtinguish(super::PlayerFireExtinguishEvent),
1860        #[prost(message, tag="26")]
1861        PlayerStartBreak(super::PlayerStartBreakEvent),
1862        #[prost(message, tag="27")]
1863        BlockBreak(super::BlockBreakEvent),
1864        #[prost(message, tag="28")]
1865        PlayerBlockPlace(super::PlayerBlockPlaceEvent),
1866        #[prost(message, tag="29")]
1867        PlayerBlockPick(super::PlayerBlockPickEvent),
1868        #[prost(message, tag="30")]
1869        PlayerItemUse(super::PlayerItemUseEvent),
1870        #[prost(message, tag="31")]
1871        PlayerItemUseOnBlock(super::PlayerItemUseOnBlockEvent),
1872        #[prost(message, tag="32")]
1873        PlayerItemUseOnEntity(super::PlayerItemUseOnEntityEvent),
1874        #[prost(message, tag="33")]
1875        PlayerItemRelease(super::PlayerItemReleaseEvent),
1876        #[prost(message, tag="34")]
1877        PlayerItemConsume(super::PlayerItemConsumeEvent),
1878        #[prost(message, tag="35")]
1879        PlayerAttackEntity(super::PlayerAttackEntityEvent),
1880        #[prost(message, tag="36")]
1881        PlayerExperienceGain(super::PlayerExperienceGainEvent),
1882        #[prost(message, tag="37")]
1883        PlayerPunchAir(super::PlayerPunchAirEvent),
1884        #[prost(message, tag="38")]
1885        PlayerSignEdit(super::PlayerSignEditEvent),
1886        #[prost(message, tag="39")]
1887        PlayerLecternPageTurn(super::PlayerLecternPageTurnEvent),
1888        #[prost(message, tag="40")]
1889        PlayerItemDamage(super::PlayerItemDamageEvent),
1890        #[prost(message, tag="41")]
1891        PlayerItemPickup(super::PlayerItemPickupEvent),
1892        #[prost(message, tag="42")]
1893        PlayerHeldSlotChange(super::PlayerHeldSlotChangeEvent),
1894        #[prost(message, tag="43")]
1895        PlayerItemDrop(super::PlayerItemDropEvent),
1896        #[prost(message, tag="44")]
1897        PlayerTransfer(super::PlayerTransferEvent),
1898        #[prost(message, tag="45")]
1899        Command(super::CommandEvent),
1900        #[prost(message, tag="46")]
1901        PlayerDiagnostics(super::PlayerDiagnosticsEvent),
1902        #[prost(message, tag="70")]
1903        WorldLiquidFlow(super::WorldLiquidFlowEvent),
1904        #[prost(message, tag="71")]
1905        WorldLiquidDecay(super::WorldLiquidDecayEvent),
1906        #[prost(message, tag="72")]
1907        WorldLiquidHarden(super::WorldLiquidHardenEvent),
1908        #[prost(message, tag="73")]
1909        WorldSound(super::WorldSoundEvent),
1910        #[prost(message, tag="74")]
1911        WorldFireSpread(super::WorldFireSpreadEvent),
1912        #[prost(message, tag="75")]
1913        WorldBlockBurn(super::WorldBlockBurnEvent),
1914        #[prost(message, tag="76")]
1915        WorldCropTrample(super::WorldCropTrampleEvent),
1916        #[prost(message, tag="77")]
1917        WorldLeavesDecay(super::WorldLeavesDecayEvent),
1918        #[prost(message, tag="78")]
1919        WorldEntitySpawn(super::WorldEntitySpawnEvent),
1920        #[prost(message, tag="79")]
1921        WorldEntityDespawn(super::WorldEntityDespawnEvent),
1922        #[prost(message, tag="80")]
1923        WorldExplosion(super::WorldExplosionEvent),
1924        #[prost(message, tag="81")]
1925        WorldClose(super::WorldCloseEvent),
1926    }
1927}
1928#[allow(clippy::derive_partial_eq_without_eq)]
1929#[derive(Clone, PartialEq, ::prost::Message)]
1930pub struct PluginToHost {
1931    #[prost(string, tag="1")]
1932    pub plugin_id: ::prost::alloc::string::String,
1933    #[prost(oneof="plugin_to_host::Payload", tags="10, 11, 12, 20, 30, 40")]
1934    pub payload: ::core::option::Option<plugin_to_host::Payload>,
1935}
1936/// Nested message and enum types in `PluginToHost`.
1937pub mod plugin_to_host {
1938    #[allow(clippy::derive_partial_eq_without_eq)]
1939#[derive(Clone, PartialEq, ::prost::Oneof)]
1940    pub enum Payload {
1941        #[prost(message, tag="10")]
1942        Hello(super::PluginHello),
1943        #[prost(message, tag="11")]
1944        Subscribe(super::EventSubscribe),
1945        #[prost(message, tag="12")]
1946        ServerInfo(super::ServerInformationRequest),
1947        #[prost(message, tag="20")]
1948        Actions(super::ActionBatch),
1949        #[prost(message, tag="30")]
1950        Log(super::LogMessage),
1951        #[prost(message, tag="40")]
1952        EventResult(super::EventResult),
1953    }
1954}
1955#[allow(clippy::derive_partial_eq_without_eq)]
1956#[derive(Clone, PartialEq, ::prost::Message)]
1957pub struct PluginHello {
1958    #[prost(string, tag="1")]
1959    pub name: ::prost::alloc::string::String,
1960    #[prost(string, tag="2")]
1961    pub version: ::prost::alloc::string::String,
1962    #[prost(string, tag="3")]
1963    pub api_version: ::prost::alloc::string::String,
1964    #[prost(message, repeated, tag="4")]
1965    pub commands: ::prost::alloc::vec::Vec<CommandSpec>,
1966    #[prost(message, repeated, tag="5")]
1967    pub custom_items: ::prost::alloc::vec::Vec<CustomItemDefinition>,
1968}
1969#[allow(clippy::derive_partial_eq_without_eq)]
1970#[derive(Clone, PartialEq, ::prost::Message)]
1971pub struct LogMessage {
1972    #[prost(string, tag="1")]
1973    pub level: ::prost::alloc::string::String,
1974    #[prost(string, tag="2")]
1975    pub message: ::prost::alloc::string::String,
1976}
1977#[allow(clippy::derive_partial_eq_without_eq)]
1978#[derive(Clone, PartialEq, ::prost::Message)]
1979pub struct EventSubscribe {
1980    #[prost(enumeration="EventType", repeated, tag="1")]
1981    pub events: ::prost::alloc::vec::Vec<i32>,
1982}
1983#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1984#[repr(i32)]
1985pub enum EventType {
1986    Unspecified = 0,
1987    All = 1,
1988    PlayerJoin = 10,
1989    PlayerQuit = 11,
1990    PlayerMove = 12,
1991    PlayerJump = 13,
1992    PlayerTeleport = 14,
1993    PlayerChangeWorld = 15,
1994    PlayerToggleSprint = 16,
1995    PlayerToggleSneak = 17,
1996    Chat = 18,
1997    PlayerFoodLoss = 19,
1998    PlayerHeal = 20,
1999    PlayerHurt = 21,
2000    PlayerDeath = 22,
2001    PlayerRespawn = 23,
2002    PlayerSkinChange = 24,
2003    PlayerFireExtinguish = 25,
2004    PlayerStartBreak = 26,
2005    PlayerBlockBreak = 27,
2006    PlayerBlockPlace = 28,
2007    PlayerBlockPick = 29,
2008    PlayerItemUse = 30,
2009    PlayerItemUseOnBlock = 31,
2010    PlayerItemUseOnEntity = 32,
2011    PlayerItemRelease = 33,
2012    PlayerItemConsume = 34,
2013    PlayerAttackEntity = 35,
2014    PlayerExperienceGain = 36,
2015    PlayerPunchAir = 37,
2016    PlayerSignEdit = 38,
2017    PlayerLecternPageTurn = 39,
2018    PlayerItemDamage = 40,
2019    PlayerItemPickup = 41,
2020    PlayerHeldSlotChange = 42,
2021    PlayerItemDrop = 43,
2022    PlayerTransfer = 44,
2023    Command = 45,
2024    PlayerDiagnostics = 46,
2025    WorldLiquidFlow = 70,
2026    WorldLiquidDecay = 71,
2027    WorldLiquidHarden = 72,
2028    WorldSound = 73,
2029    WorldFireSpread = 74,
2030    WorldBlockBurn = 75,
2031    WorldCropTrample = 76,
2032    WorldLeavesDecay = 77,
2033    WorldEntitySpawn = 78,
2034    WorldEntityDespawn = 79,
2035    WorldExplosion = 80,
2036    WorldClose = 81,
2037}
2038impl EventType {
2039    /// String value of the enum field names used in the ProtoBuf definition.
2040    ///
2041    /// The values are not transformed in any way and thus are considered stable
2042    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2043    pub fn as_str_name(&self) -> &'static str {
2044        match self {
2045            EventType::Unspecified => "EVENT_TYPE_UNSPECIFIED",
2046            EventType::All => "EVENT_TYPE_ALL",
2047            EventType::PlayerJoin => "PLAYER_JOIN",
2048            EventType::PlayerQuit => "PLAYER_QUIT",
2049            EventType::PlayerMove => "PLAYER_MOVE",
2050            EventType::PlayerJump => "PLAYER_JUMP",
2051            EventType::PlayerTeleport => "PLAYER_TELEPORT",
2052            EventType::PlayerChangeWorld => "PLAYER_CHANGE_WORLD",
2053            EventType::PlayerToggleSprint => "PLAYER_TOGGLE_SPRINT",
2054            EventType::PlayerToggleSneak => "PLAYER_TOGGLE_SNEAK",
2055            EventType::Chat => "CHAT",
2056            EventType::PlayerFoodLoss => "PLAYER_FOOD_LOSS",
2057            EventType::PlayerHeal => "PLAYER_HEAL",
2058            EventType::PlayerHurt => "PLAYER_HURT",
2059            EventType::PlayerDeath => "PLAYER_DEATH",
2060            EventType::PlayerRespawn => "PLAYER_RESPAWN",
2061            EventType::PlayerSkinChange => "PLAYER_SKIN_CHANGE",
2062            EventType::PlayerFireExtinguish => "PLAYER_FIRE_EXTINGUISH",
2063            EventType::PlayerStartBreak => "PLAYER_START_BREAK",
2064            EventType::PlayerBlockBreak => "PLAYER_BLOCK_BREAK",
2065            EventType::PlayerBlockPlace => "PLAYER_BLOCK_PLACE",
2066            EventType::PlayerBlockPick => "PLAYER_BLOCK_PICK",
2067            EventType::PlayerItemUse => "PLAYER_ITEM_USE",
2068            EventType::PlayerItemUseOnBlock => "PLAYER_ITEM_USE_ON_BLOCK",
2069            EventType::PlayerItemUseOnEntity => "PLAYER_ITEM_USE_ON_ENTITY",
2070            EventType::PlayerItemRelease => "PLAYER_ITEM_RELEASE",
2071            EventType::PlayerItemConsume => "PLAYER_ITEM_CONSUME",
2072            EventType::PlayerAttackEntity => "PLAYER_ATTACK_ENTITY",
2073            EventType::PlayerExperienceGain => "PLAYER_EXPERIENCE_GAIN",
2074            EventType::PlayerPunchAir => "PLAYER_PUNCH_AIR",
2075            EventType::PlayerSignEdit => "PLAYER_SIGN_EDIT",
2076            EventType::PlayerLecternPageTurn => "PLAYER_LECTERN_PAGE_TURN",
2077            EventType::PlayerItemDamage => "PLAYER_ITEM_DAMAGE",
2078            EventType::PlayerItemPickup => "PLAYER_ITEM_PICKUP",
2079            EventType::PlayerHeldSlotChange => "PLAYER_HELD_SLOT_CHANGE",
2080            EventType::PlayerItemDrop => "PLAYER_ITEM_DROP",
2081            EventType::PlayerTransfer => "PLAYER_TRANSFER",
2082            EventType::Command => "COMMAND",
2083            EventType::PlayerDiagnostics => "PLAYER_DIAGNOSTICS",
2084            EventType::WorldLiquidFlow => "WORLD_LIQUID_FLOW",
2085            EventType::WorldLiquidDecay => "WORLD_LIQUID_DECAY",
2086            EventType::WorldLiquidHarden => "WORLD_LIQUID_HARDEN",
2087            EventType::WorldSound => "WORLD_SOUND",
2088            EventType::WorldFireSpread => "WORLD_FIRE_SPREAD",
2089            EventType::WorldBlockBurn => "WORLD_BLOCK_BURN",
2090            EventType::WorldCropTrample => "WORLD_CROP_TRAMPLE",
2091            EventType::WorldLeavesDecay => "WORLD_LEAVES_DECAY",
2092            EventType::WorldEntitySpawn => "WORLD_ENTITY_SPAWN",
2093            EventType::WorldEntityDespawn => "WORLD_ENTITY_DESPAWN",
2094            EventType::WorldExplosion => "WORLD_EXPLOSION",
2095            EventType::WorldClose => "WORLD_CLOSE",
2096        }
2097    }
2098    /// Creates an enum from field names used in the ProtoBuf definition.
2099    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2100        match value {
2101            "EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2102            "EVENT_TYPE_ALL" => Some(Self::All),
2103            "PLAYER_JOIN" => Some(Self::PlayerJoin),
2104            "PLAYER_QUIT" => Some(Self::PlayerQuit),
2105            "PLAYER_MOVE" => Some(Self::PlayerMove),
2106            "PLAYER_JUMP" => Some(Self::PlayerJump),
2107            "PLAYER_TELEPORT" => Some(Self::PlayerTeleport),
2108            "PLAYER_CHANGE_WORLD" => Some(Self::PlayerChangeWorld),
2109            "PLAYER_TOGGLE_SPRINT" => Some(Self::PlayerToggleSprint),
2110            "PLAYER_TOGGLE_SNEAK" => Some(Self::PlayerToggleSneak),
2111            "CHAT" => Some(Self::Chat),
2112            "PLAYER_FOOD_LOSS" => Some(Self::PlayerFoodLoss),
2113            "PLAYER_HEAL" => Some(Self::PlayerHeal),
2114            "PLAYER_HURT" => Some(Self::PlayerHurt),
2115            "PLAYER_DEATH" => Some(Self::PlayerDeath),
2116            "PLAYER_RESPAWN" => Some(Self::PlayerRespawn),
2117            "PLAYER_SKIN_CHANGE" => Some(Self::PlayerSkinChange),
2118            "PLAYER_FIRE_EXTINGUISH" => Some(Self::PlayerFireExtinguish),
2119            "PLAYER_START_BREAK" => Some(Self::PlayerStartBreak),
2120            "PLAYER_BLOCK_BREAK" => Some(Self::PlayerBlockBreak),
2121            "PLAYER_BLOCK_PLACE" => Some(Self::PlayerBlockPlace),
2122            "PLAYER_BLOCK_PICK" => Some(Self::PlayerBlockPick),
2123            "PLAYER_ITEM_USE" => Some(Self::PlayerItemUse),
2124            "PLAYER_ITEM_USE_ON_BLOCK" => Some(Self::PlayerItemUseOnBlock),
2125            "PLAYER_ITEM_USE_ON_ENTITY" => Some(Self::PlayerItemUseOnEntity),
2126            "PLAYER_ITEM_RELEASE" => Some(Self::PlayerItemRelease),
2127            "PLAYER_ITEM_CONSUME" => Some(Self::PlayerItemConsume),
2128            "PLAYER_ATTACK_ENTITY" => Some(Self::PlayerAttackEntity),
2129            "PLAYER_EXPERIENCE_GAIN" => Some(Self::PlayerExperienceGain),
2130            "PLAYER_PUNCH_AIR" => Some(Self::PlayerPunchAir),
2131            "PLAYER_SIGN_EDIT" => Some(Self::PlayerSignEdit),
2132            "PLAYER_LECTERN_PAGE_TURN" => Some(Self::PlayerLecternPageTurn),
2133            "PLAYER_ITEM_DAMAGE" => Some(Self::PlayerItemDamage),
2134            "PLAYER_ITEM_PICKUP" => Some(Self::PlayerItemPickup),
2135            "PLAYER_HELD_SLOT_CHANGE" => Some(Self::PlayerHeldSlotChange),
2136            "PLAYER_ITEM_DROP" => Some(Self::PlayerItemDrop),
2137            "PLAYER_TRANSFER" => Some(Self::PlayerTransfer),
2138            "COMMAND" => Some(Self::Command),
2139            "PLAYER_DIAGNOSTICS" => Some(Self::PlayerDiagnostics),
2140            "WORLD_LIQUID_FLOW" => Some(Self::WorldLiquidFlow),
2141            "WORLD_LIQUID_DECAY" => Some(Self::WorldLiquidDecay),
2142            "WORLD_LIQUID_HARDEN" => Some(Self::WorldLiquidHarden),
2143            "WORLD_SOUND" => Some(Self::WorldSound),
2144            "WORLD_FIRE_SPREAD" => Some(Self::WorldFireSpread),
2145            "WORLD_BLOCK_BURN" => Some(Self::WorldBlockBurn),
2146            "WORLD_CROP_TRAMPLE" => Some(Self::WorldCropTrample),
2147            "WORLD_LEAVES_DECAY" => Some(Self::WorldLeavesDecay),
2148            "WORLD_ENTITY_SPAWN" => Some(Self::WorldEntitySpawn),
2149            "WORLD_ENTITY_DESPAWN" => Some(Self::WorldEntityDespawn),
2150            "WORLD_EXPLOSION" => Some(Self::WorldExplosion),
2151            "WORLD_CLOSE" => Some(Self::WorldClose),
2152            _ => None,
2153        }
2154    }
2155}
2156include!("df.plugin.tonic.rs");
2157// @@protoc_insertion_point(module)