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    /// This is a runtime id. it changes across server restarts.
77    #[prost(string, tag="3")]
78    pub id: ::prost::alloc::string::String,
79}
80#[allow(clippy::derive_partial_eq_without_eq)]
81#[derive(Clone, PartialEq, ::prost::Message)]
82pub struct EntityRef {
83    #[prost(string, tag="1")]
84    pub uuid: ::prost::alloc::string::String,
85    #[prost(string, tag="2")]
86    pub r#type: ::prost::alloc::string::String,
87    #[prost(string, optional, tag="3")]
88    pub name: ::core::option::Option<::prost::alloc::string::String>,
89    #[prost(message, optional, tag="4")]
90    pub position: ::core::option::Option<Vec3>,
91    #[prost(message, optional, tag="5")]
92    pub rotation: ::core::option::Option<Rotation>,
93}
94#[allow(clippy::derive_partial_eq_without_eq)]
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct DamageSource {
97    #[prost(string, tag="1")]
98    pub r#type: ::prost::alloc::string::String,
99    #[prost(string, optional, tag="2")]
100    pub description: ::core::option::Option<::prost::alloc::string::String>,
101}
102#[allow(clippy::derive_partial_eq_without_eq)]
103#[derive(Clone, PartialEq, ::prost::Message)]
104pub struct HealingSource {
105    #[prost(string, tag="1")]
106    pub r#type: ::prost::alloc::string::String,
107    #[prost(string, optional, tag="2")]
108    pub description: ::core::option::Option<::prost::alloc::string::String>,
109}
110#[allow(clippy::derive_partial_eq_without_eq)]
111#[derive(Clone, PartialEq, ::prost::Message)]
112pub struct Address {
113    #[prost(string, tag="1")]
114    pub host: ::prost::alloc::string::String,
115    #[prost(int32, tag="2")]
116    pub port: i32,
117}
118/// CustomItemDefinition defines a custom (non-vanilla) item that requires
119/// a resource pack and client-side registration
120#[allow(clippy::derive_partial_eq_without_eq)]
121#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct CustomItemDefinition {
123    /// Unique identifier for the custom item (e.g., "my_plugin:custom_sword")
124    #[prost(string, tag="1")]
125    pub id: ::prost::alloc::string::String,
126    /// Display name shown to players
127    #[prost(string, tag="2")]
128    pub display_name: ::prost::alloc::string::String,
129    /// Texture data encoded as PNG bytes
130    #[prost(bytes="vec", tag="3")]
131    pub texture_data: ::prost::alloc::vec::Vec<u8>,
132    /// Creative inventory category
133    #[prost(enumeration="ItemCategory", tag="4")]
134    pub category: i32,
135    /// Optional subgroup within the category (e.g., "sword", "pickaxe", "food")
136    #[prost(string, optional, tag="5")]
137    pub group: ::core::option::Option<::prost::alloc::string::String>,
138    /// Metadata value for this item (defaults to 0)
139    #[prost(int32, tag="6")]
140    pub meta: i32,
141}
142#[allow(clippy::derive_partial_eq_without_eq)]
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct CustomBlockTexture {
145    /// Texture name used by materials (e.g., "my_block" or "my_block_side")
146    #[prost(string, tag="1")]
147    pub name: ::prost::alloc::string::String,
148    /// PNG-encoded bytes
149    #[prost(bytes="vec", tag="2")]
150    pub image_png: ::prost::alloc::vec::Vec<u8>,
151}
152#[allow(clippy::derive_partial_eq_without_eq)]
153#[derive(Clone, PartialEq, ::prost::Message)]
154pub struct CustomBlockMaterial {
155    /// "*", "up", "down", "north", "south", "east", "west"
156    #[prost(string, tag="1")]
157    pub target: ::prost::alloc::string::String,
158    /// Must match a CustomBlockTexture.name
159    #[prost(string, tag="2")]
160    pub texture_name: ::prost::alloc::string::String,
161    /// Optional, defaults to OPAQUE
162    #[prost(enumeration="CustomBlockRenderMethod", tag="3")]
163    pub render_method: i32,
164    /// Optional: defaults true
165    #[prost(bool, optional, tag="4")]
166    pub face_dimming: ::core::option::Option<bool>,
167    /// Optional: defaults based on render_method
168    #[prost(bool, optional, tag="5")]
169    pub ambient_occlusion: ::core::option::Option<bool>,
170}
171#[allow(clippy::derive_partial_eq_without_eq)]
172#[derive(Clone, PartialEq, ::prost::Message)]
173pub struct CustomBlockProperties {
174    #[prost(message, optional, tag="1")]
175    pub collision_box: ::core::option::Option<BBox>,
176    #[prost(message, optional, tag="2")]
177    pub selection_box: ::core::option::Option<BBox>,
178    /// e.g., "geometry.my_block"
179    #[prost(string, optional, tag="3")]
180    pub geometry_identifier: ::core::option::Option<::prost::alloc::string::String>,
181    /// true to use unit cube geometry when no identifier is provided
182    #[prost(bool, tag="4")]
183    pub cube: bool,
184    /// hex string like "#RRGGBB" for map colour
185    #[prost(string, optional, tag="5")]
186    pub map_colour: ::core::option::Option<::prost::alloc::string::String>,
187    /// integer degrees (90-degree increments), x/y/z
188    #[prost(message, optional, tag="6")]
189    pub rotation: ::core::option::Option<Vec3>,
190    /// translation vector
191    #[prost(message, optional, tag="7")]
192    pub translation: ::core::option::Option<Vec3>,
193    /// scaling factor
194    #[prost(message, optional, tag="8")]
195    pub scale: ::core::option::Option<Vec3>,
196    /// material instances by target
197    #[prost(message, repeated, tag="10")]
198    pub materials: ::prost::alloc::vec::Vec<CustomBlockMaterial>,
199    /// Client-side state properties and permutations (pack-only; no runtime IDs).
200    #[prost(map="string, message", tag="20")]
201    pub states: ::std::collections::HashMap<::prost::alloc::string::String, CustomBlockStateValues>,
202    #[prost(message, repeated, tag="21")]
203    pub permutations: ::prost::alloc::vec::Vec<CustomBlockPermutation>,
204}
205#[allow(clippy::derive_partial_eq_without_eq)]
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct CustomBlockDefinition {
208    /// e.g., "my_plugin:my_block"
209    #[prost(string, tag="1")]
210    pub id: ::prost::alloc::string::String,
211    /// display name for language entry
212    #[prost(string, tag="2")]
213    pub display_name: ::prost::alloc::string::String,
214    /// optional geometry JSON for models/blocks/<name>.geo.json
215    #[prost(bytes="vec", optional, tag="3")]
216    pub geometry_json: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
217    /// textures referred by materials
218    #[prost(message, repeated, tag="4")]
219    pub textures: ::prost::alloc::vec::Vec<CustomBlockTexture>,
220    /// server/client properties/components
221    #[prost(message, optional, tag="5")]
222    pub properties: ::core::option::Option<CustomBlockProperties>,
223}
224/// Value list for a single custom block property (strings parsed to bool/int/float where possible).
225#[allow(clippy::derive_partial_eq_without_eq)]
226#[derive(Clone, PartialEq, ::prost::Message)]
227pub struct CustomBlockStateValues {
228    #[prost(string, repeated, tag="1")]
229    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
230}
231/// Permutation with molang condition and property overrides.
232#[allow(clippy::derive_partial_eq_without_eq)]
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct CustomBlockPermutation {
235    #[prost(string, tag="1")]
236    pub condition: ::prost::alloc::string::String,
237    #[prost(message, optional, tag="2")]
238    pub properties: ::core::option::Option<CustomBlockProperties>,
239}
240#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
241#[repr(i32)]
242pub enum GameMode {
243    Survival = 0,
244    Creative = 1,
245    Adventure = 2,
246    Spectator = 3,
247}
248impl GameMode {
249    /// String value of the enum field names used in the ProtoBuf definition.
250    ///
251    /// The values are not transformed in any way and thus are considered stable
252    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
253    pub fn as_str_name(&self) -> &'static str {
254        match self {
255            GameMode::Survival => "SURVIVAL",
256            GameMode::Creative => "CREATIVE",
257            GameMode::Adventure => "ADVENTURE",
258            GameMode::Spectator => "SPECTATOR",
259        }
260    }
261    /// Creates an enum from field names used in the ProtoBuf definition.
262    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
263        match value {
264            "SURVIVAL" => Some(Self::Survival),
265            "CREATIVE" => Some(Self::Creative),
266            "ADVENTURE" => Some(Self::Adventure),
267            "SPECTATOR" => Some(Self::Spectator),
268            _ => None,
269        }
270    }
271}
272#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
273#[repr(i32)]
274pub enum Difficulty {
275    Peaceful = 0,
276    Easy = 1,
277    Normal = 2,
278    Hard = 3,
279}
280impl Difficulty {
281    /// String value of the enum field names used in the ProtoBuf definition.
282    ///
283    /// The values are not transformed in any way and thus are considered stable
284    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
285    pub fn as_str_name(&self) -> &'static str {
286        match self {
287            Difficulty::Peaceful => "PEACEFUL",
288            Difficulty::Easy => "EASY",
289            Difficulty::Normal => "NORMAL",
290            Difficulty::Hard => "HARD",
291        }
292    }
293    /// Creates an enum from field names used in the ProtoBuf definition.
294    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
295        match value {
296            "PEACEFUL" => Some(Self::Peaceful),
297            "EASY" => Some(Self::Easy),
298            "NORMAL" => Some(Self::Normal),
299            "HARD" => Some(Self::Hard),
300            _ => None,
301        }
302    }
303}
304/// EffectType mirrors Dragonfly's registered effect IDs for straightforward mapping.
305/// Keep numeric values aligned with dragonfly/server/entity/effect/register.go.
306#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
307#[repr(i32)]
308pub enum EffectType {
309    EffectUnknown = 0,
310    Speed = 1,
311    Slowness = 2,
312    Haste = 3,
313    MiningFatigue = 4,
314    Strength = 5,
315    InstantHealth = 6,
316    InstantDamage = 7,
317    JumpBoost = 8,
318    Nausea = 9,
319    Regeneration = 10,
320    Resistance = 11,
321    FireResistance = 12,
322    WaterBreathing = 13,
323    Invisibility = 14,
324    Blindness = 15,
325    NightVision = 16,
326    Hunger = 17,
327    Weakness = 18,
328    Poison = 19,
329    Wither = 20,
330    HealthBoost = 21,
331    Absorption = 22,
332    Saturation = 23,
333    Levitation = 24,
334    FatalPoison = 25,
335    ConduitPower = 26,
336    SlowFalling = 27,
337    /// 28, 29 intentionally omitted (Bad Omen, Hero of the Village - not implemented)
338    Darkness = 30,
339}
340impl EffectType {
341    /// String value of the enum field names used in the ProtoBuf definition.
342    ///
343    /// The values are not transformed in any way and thus are considered stable
344    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
345    pub fn as_str_name(&self) -> &'static str {
346        match self {
347            EffectType::EffectUnknown => "EFFECT_UNKNOWN",
348            EffectType::Speed => "SPEED",
349            EffectType::Slowness => "SLOWNESS",
350            EffectType::Haste => "HASTE",
351            EffectType::MiningFatigue => "MINING_FATIGUE",
352            EffectType::Strength => "STRENGTH",
353            EffectType::InstantHealth => "INSTANT_HEALTH",
354            EffectType::InstantDamage => "INSTANT_DAMAGE",
355            EffectType::JumpBoost => "JUMP_BOOST",
356            EffectType::Nausea => "NAUSEA",
357            EffectType::Regeneration => "REGENERATION",
358            EffectType::Resistance => "RESISTANCE",
359            EffectType::FireResistance => "FIRE_RESISTANCE",
360            EffectType::WaterBreathing => "WATER_BREATHING",
361            EffectType::Invisibility => "INVISIBILITY",
362            EffectType::Blindness => "BLINDNESS",
363            EffectType::NightVision => "NIGHT_VISION",
364            EffectType::Hunger => "HUNGER",
365            EffectType::Weakness => "WEAKNESS",
366            EffectType::Poison => "POISON",
367            EffectType::Wither => "WITHER",
368            EffectType::HealthBoost => "HEALTH_BOOST",
369            EffectType::Absorption => "ABSORPTION",
370            EffectType::Saturation => "SATURATION",
371            EffectType::Levitation => "LEVITATION",
372            EffectType::FatalPoison => "FATAL_POISON",
373            EffectType::ConduitPower => "CONDUIT_POWER",
374            EffectType::SlowFalling => "SLOW_FALLING",
375            EffectType::Darkness => "DARKNESS",
376        }
377    }
378    /// Creates an enum from field names used in the ProtoBuf definition.
379    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
380        match value {
381            "EFFECT_UNKNOWN" => Some(Self::EffectUnknown),
382            "SPEED" => Some(Self::Speed),
383            "SLOWNESS" => Some(Self::Slowness),
384            "HASTE" => Some(Self::Haste),
385            "MINING_FATIGUE" => Some(Self::MiningFatigue),
386            "STRENGTH" => Some(Self::Strength),
387            "INSTANT_HEALTH" => Some(Self::InstantHealth),
388            "INSTANT_DAMAGE" => Some(Self::InstantDamage),
389            "JUMP_BOOST" => Some(Self::JumpBoost),
390            "NAUSEA" => Some(Self::Nausea),
391            "REGENERATION" => Some(Self::Regeneration),
392            "RESISTANCE" => Some(Self::Resistance),
393            "FIRE_RESISTANCE" => Some(Self::FireResistance),
394            "WATER_BREATHING" => Some(Self::WaterBreathing),
395            "INVISIBILITY" => Some(Self::Invisibility),
396            "BLINDNESS" => Some(Self::Blindness),
397            "NIGHT_VISION" => Some(Self::NightVision),
398            "HUNGER" => Some(Self::Hunger),
399            "WEAKNESS" => Some(Self::Weakness),
400            "POISON" => Some(Self::Poison),
401            "WITHER" => Some(Self::Wither),
402            "HEALTH_BOOST" => Some(Self::HealthBoost),
403            "ABSORPTION" => Some(Self::Absorption),
404            "SATURATION" => Some(Self::Saturation),
405            "LEVITATION" => Some(Self::Levitation),
406            "FATAL_POISON" => Some(Self::FatalPoison),
407            "CONDUIT_POWER" => Some(Self::ConduitPower),
408            "SLOW_FALLING" => Some(Self::SlowFalling),
409            "DARKNESS" => Some(Self::Darkness),
410            _ => None,
411        }
412    }
413}
414/// Sound is a curated list of common sounds that don't require extra parameters.
415/// For sounds that require additional context (e.g., BlockPlace, Note), adapters
416/// may use sensible defaults or ignore extra semantics for now.
417#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
418#[repr(i32)]
419pub enum Sound {
420    Unknown = 0,
421    Attack = 1,
422    Drowning = 2,
423    Burning = 3,
424    Fall = 4,
425    Burp = 5,
426    Pop = 6,
427    Explosion = 7,
428    Thunder = 8,
429    LevelUp = 9,
430    Experience = 10,
431    FireworkLaunch = 11,
432    FireworkHugeBlast = 12,
433    FireworkBlast = 13,
434    FireworkTwinkle = 14,
435    Teleport = 15,
436    ArrowHit = 16,
437    ItemBreak = 17,
438    ItemThrow = 18,
439    Totem = 19,
440    FireExtinguish = 20,
441}
442impl Sound {
443    /// String value of the enum field names used in the ProtoBuf definition.
444    ///
445    /// The values are not transformed in any way and thus are considered stable
446    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
447    pub fn as_str_name(&self) -> &'static str {
448        match self {
449            Sound::Unknown => "SOUND_UNKNOWN",
450            Sound::Attack => "ATTACK",
451            Sound::Drowning => "DROWNING",
452            Sound::Burning => "BURNING",
453            Sound::Fall => "FALL",
454            Sound::Burp => "BURP",
455            Sound::Pop => "POP",
456            Sound::Explosion => "EXPLOSION",
457            Sound::Thunder => "THUNDER",
458            Sound::LevelUp => "LEVEL_UP",
459            Sound::Experience => "EXPERIENCE",
460            Sound::FireworkLaunch => "FIREWORK_LAUNCH",
461            Sound::FireworkHugeBlast => "FIREWORK_HUGE_BLAST",
462            Sound::FireworkBlast => "FIREWORK_BLAST",
463            Sound::FireworkTwinkle => "FIREWORK_TWINKLE",
464            Sound::Teleport => "TELEPORT",
465            Sound::ArrowHit => "ARROW_HIT",
466            Sound::ItemBreak => "ITEM_BREAK",
467            Sound::ItemThrow => "ITEM_THROW",
468            Sound::Totem => "TOTEM",
469            Sound::FireExtinguish => "FIRE_EXTINGUISH",
470        }
471    }
472    /// Creates an enum from field names used in the ProtoBuf definition.
473    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
474        match value {
475            "SOUND_UNKNOWN" => Some(Self::Unknown),
476            "ATTACK" => Some(Self::Attack),
477            "DROWNING" => Some(Self::Drowning),
478            "BURNING" => Some(Self::Burning),
479            "FALL" => Some(Self::Fall),
480            "BURP" => Some(Self::Burp),
481            "POP" => Some(Self::Pop),
482            "EXPLOSION" => Some(Self::Explosion),
483            "THUNDER" => Some(Self::Thunder),
484            "LEVEL_UP" => Some(Self::LevelUp),
485            "EXPERIENCE" => Some(Self::Experience),
486            "FIREWORK_LAUNCH" => Some(Self::FireworkLaunch),
487            "FIREWORK_HUGE_BLAST" => Some(Self::FireworkHugeBlast),
488            "FIREWORK_BLAST" => Some(Self::FireworkBlast),
489            "FIREWORK_TWINKLE" => Some(Self::FireworkTwinkle),
490            "TELEPORT" => Some(Self::Teleport),
491            "ARROW_HIT" => Some(Self::ArrowHit),
492            "ITEM_BREAK" => Some(Self::ItemBreak),
493            "ITEM_THROW" => Some(Self::ItemThrow),
494            "TOTEM" => Some(Self::Totem),
495            "FIRE_EXTINGUISH" => Some(Self::FireExtinguish),
496            _ => None,
497        }
498    }
499}
500/// Category for creative inventory
501#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
502#[repr(i32)]
503pub enum ItemCategory {
504    Construction = 0,
505    Nature = 1,
506    Equipment = 2,
507    Items = 3,
508}
509impl ItemCategory {
510    /// String value of the enum field names used in the ProtoBuf definition.
511    ///
512    /// The values are not transformed in any way and thus are considered stable
513    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
514    pub fn as_str_name(&self) -> &'static str {
515        match self {
516            ItemCategory::Construction => "ITEM_CATEGORY_CONSTRUCTION",
517            ItemCategory::Nature => "ITEM_CATEGORY_NATURE",
518            ItemCategory::Equipment => "ITEM_CATEGORY_EQUIPMENT",
519            ItemCategory::Items => "ITEM_CATEGORY_ITEMS",
520        }
521    }
522    /// Creates an enum from field names used in the ProtoBuf definition.
523    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
524        match value {
525            "ITEM_CATEGORY_CONSTRUCTION" => Some(Self::Construction),
526            "ITEM_CATEGORY_NATURE" => Some(Self::Nature),
527            "ITEM_CATEGORY_EQUIPMENT" => Some(Self::Equipment),
528            "ITEM_CATEGORY_ITEMS" => Some(Self::Items),
529            _ => None,
530        }
531    }
532}
533/// Custom block support
534#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
535#[repr(i32)]
536pub enum CustomBlockRenderMethod {
537    Opaque = 0,
538    AlphaTest = 1,
539    Blend = 2,
540    DoubleSided = 3,
541}
542impl CustomBlockRenderMethod {
543    /// String value of the enum field names used in the ProtoBuf definition.
544    ///
545    /// The values are not transformed in any way and thus are considered stable
546    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
547    pub fn as_str_name(&self) -> &'static str {
548        match self {
549            CustomBlockRenderMethod::Opaque => "CUSTOM_BLOCK_RENDER_METHOD_OPAQUE",
550            CustomBlockRenderMethod::AlphaTest => "CUSTOM_BLOCK_RENDER_METHOD_ALPHA_TEST",
551            CustomBlockRenderMethod::Blend => "CUSTOM_BLOCK_RENDER_METHOD_BLEND",
552            CustomBlockRenderMethod::DoubleSided => "CUSTOM_BLOCK_RENDER_METHOD_DOUBLE_SIDED",
553        }
554    }
555    /// Creates an enum from field names used in the ProtoBuf definition.
556    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
557        match value {
558            "CUSTOM_BLOCK_RENDER_METHOD_OPAQUE" => Some(Self::Opaque),
559            "CUSTOM_BLOCK_RENDER_METHOD_ALPHA_TEST" => Some(Self::AlphaTest),
560            "CUSTOM_BLOCK_RENDER_METHOD_BLEND" => Some(Self::Blend),
561            "CUSTOM_BLOCK_RENDER_METHOD_DOUBLE_SIDED" => Some(Self::DoubleSided),
562            _ => None,
563        }
564    }
565}
566#[allow(clippy::derive_partial_eq_without_eq)]
567#[derive(Clone, PartialEq, ::prost::Message)]
568pub struct ActionResult {
569    #[prost(string, tag="1")]
570    pub correlation_id: ::prost::alloc::string::String,
571    #[prost(message, optional, tag="2")]
572    pub status: ::core::option::Option<ActionStatus>,
573    #[prost(oneof="action_result::Result", tags="10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24")]
574    pub result: ::core::option::Option<action_result::Result>,
575}
576/// Nested message and enum types in `ActionResult`.
577pub mod action_result {
578    #[allow(clippy::derive_partial_eq_without_eq)]
579#[derive(Clone, PartialEq, ::prost::Oneof)]
580    pub enum Result {
581        #[prost(message, tag="10")]
582        WorldEntities(super::WorldEntitiesResult),
583        #[prost(message, tag="11")]
584        WorldPlayers(super::WorldPlayersResult),
585        #[prost(message, tag="12")]
586        WorldEntitiesWithin(super::WorldEntitiesWithinResult),
587        #[prost(message, tag="13")]
588        WorldDefaultGameMode(super::WorldDefaultGameModeResult),
589        #[prost(message, tag="14")]
590        WorldPlayerSpawn(super::WorldPlayerSpawnResult),
591        #[prost(message, tag="15")]
592        WorldBlock(super::WorldBlockResult),
593        #[prost(message, tag="16")]
594        WorldBiome(super::WorldBiomeResult),
595        #[prost(message, tag="17")]
596        WorldLight(super::WorldLightResult),
597        #[prost(message, tag="18")]
598        WorldSkyLight(super::WorldSkyLightResult),
599        #[prost(message, tag="19")]
600        WorldTemperature(super::WorldTemperatureResult),
601        #[prost(message, tag="20")]
602        WorldHighestBlock(super::WorldHighestBlockResult),
603        #[prost(message, tag="21")]
604        WorldRainingAt(super::WorldRainingAtResult),
605        #[prost(message, tag="22")]
606        WorldSnowingAt(super::WorldSnowingAtResult),
607        #[prost(message, tag="23")]
608        WorldThunderingAt(super::WorldThunderingAtResult),
609        #[prost(message, tag="24")]
610        WorldLiquid(super::WorldLiquidResult),
611    }
612}
613#[allow(clippy::derive_partial_eq_without_eq)]
614#[derive(Clone, PartialEq, ::prost::Message)]
615pub struct ActionStatus {
616    #[prost(bool, tag="1")]
617    pub ok: bool,
618    #[prost(string, optional, tag="2")]
619    pub error: ::core::option::Option<::prost::alloc::string::String>,
620}
621#[allow(clippy::derive_partial_eq_without_eq)]
622#[derive(Clone, PartialEq, ::prost::Message)]
623pub struct WorldEntitiesResult {
624    #[prost(message, optional, tag="1")]
625    pub world: ::core::option::Option<WorldRef>,
626    #[prost(message, repeated, tag="2")]
627    pub entities: ::prost::alloc::vec::Vec<EntityRef>,
628}
629#[allow(clippy::derive_partial_eq_without_eq)]
630#[derive(Clone, PartialEq, ::prost::Message)]
631pub struct WorldEntitiesWithinResult {
632    #[prost(message, optional, tag="1")]
633    pub world: ::core::option::Option<WorldRef>,
634    #[prost(message, optional, tag="2")]
635    pub r#box: ::core::option::Option<BBox>,
636    #[prost(message, repeated, tag="3")]
637    pub entities: ::prost::alloc::vec::Vec<EntityRef>,
638}
639#[allow(clippy::derive_partial_eq_without_eq)]
640#[derive(Clone, PartialEq, ::prost::Message)]
641pub struct WorldPlayersResult {
642    #[prost(message, optional, tag="1")]
643    pub world: ::core::option::Option<WorldRef>,
644    #[prost(message, repeated, tag="2")]
645    pub players: ::prost::alloc::vec::Vec<EntityRef>,
646}
647#[allow(clippy::derive_partial_eq_without_eq)]
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct WorldDefaultGameModeResult {
650    #[prost(message, optional, tag="1")]
651    pub world: ::core::option::Option<WorldRef>,
652    #[prost(enumeration="GameMode", tag="2")]
653    pub game_mode: i32,
654}
655#[allow(clippy::derive_partial_eq_without_eq)]
656#[derive(Clone, PartialEq, ::prost::Message)]
657pub struct WorldPlayerSpawnResult {
658    #[prost(message, optional, tag="1")]
659    pub world: ::core::option::Option<WorldRef>,
660    #[prost(string, tag="2")]
661    pub player_uuid: ::prost::alloc::string::String,
662    #[prost(message, optional, tag="3")]
663    pub spawn: ::core::option::Option<BlockPos>,
664}
665#[allow(clippy::derive_partial_eq_without_eq)]
666#[derive(Clone, PartialEq, ::prost::Message)]
667pub struct WorldBlockResult {
668    #[prost(message, optional, tag="1")]
669    pub world: ::core::option::Option<WorldRef>,
670    #[prost(message, optional, tag="2")]
671    pub position: ::core::option::Option<BlockPos>,
672    #[prost(message, optional, tag="3")]
673    pub block: ::core::option::Option<BlockState>,
674}
675#[allow(clippy::derive_partial_eq_without_eq)]
676#[derive(Clone, PartialEq, ::prost::Message)]
677pub struct WorldBiomeResult {
678    #[prost(message, optional, tag="1")]
679    pub world: ::core::option::Option<WorldRef>,
680    #[prost(message, optional, tag="2")]
681    pub position: ::core::option::Option<BlockPos>,
682    #[prost(string, tag="3")]
683    pub biome_id: ::prost::alloc::string::String,
684}
685#[allow(clippy::derive_partial_eq_without_eq)]
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct WorldLightResult {
688    #[prost(message, optional, tag="1")]
689    pub world: ::core::option::Option<WorldRef>,
690    #[prost(message, optional, tag="2")]
691    pub position: ::core::option::Option<BlockPos>,
692    /// 0-15
693    #[prost(int32, tag="3")]
694    pub light_level: i32,
695}
696#[allow(clippy::derive_partial_eq_without_eq)]
697#[derive(Clone, PartialEq, ::prost::Message)]
698pub struct WorldSkyLightResult {
699    #[prost(message, optional, tag="1")]
700    pub world: ::core::option::Option<WorldRef>,
701    #[prost(message, optional, tag="2")]
702    pub position: ::core::option::Option<BlockPos>,
703    /// 0-15
704    #[prost(int32, tag="3")]
705    pub sky_light_level: i32,
706}
707#[allow(clippy::derive_partial_eq_without_eq)]
708#[derive(Clone, PartialEq, ::prost::Message)]
709pub struct WorldTemperatureResult {
710    #[prost(message, optional, tag="1")]
711    pub world: ::core::option::Option<WorldRef>,
712    #[prost(message, optional, tag="2")]
713    pub position: ::core::option::Option<BlockPos>,
714    #[prost(double, tag="3")]
715    pub temperature: f64,
716}
717#[allow(clippy::derive_partial_eq_without_eq)]
718#[derive(Clone, PartialEq, ::prost::Message)]
719pub struct WorldHighestBlockResult {
720    #[prost(message, optional, tag="1")]
721    pub world: ::core::option::Option<WorldRef>,
722    #[prost(int32, tag="2")]
723    pub x: i32,
724    #[prost(int32, tag="3")]
725    pub z: i32,
726    /// highest block Y coordinate
727    #[prost(int32, tag="4")]
728    pub y: i32,
729}
730#[allow(clippy::derive_partial_eq_without_eq)]
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct WorldRainingAtResult {
733    #[prost(message, optional, tag="1")]
734    pub world: ::core::option::Option<WorldRef>,
735    #[prost(message, optional, tag="2")]
736    pub position: ::core::option::Option<BlockPos>,
737    #[prost(bool, tag="3")]
738    pub raining: bool,
739}
740#[allow(clippy::derive_partial_eq_without_eq)]
741#[derive(Clone, PartialEq, ::prost::Message)]
742pub struct WorldSnowingAtResult {
743    #[prost(message, optional, tag="1")]
744    pub world: ::core::option::Option<WorldRef>,
745    #[prost(message, optional, tag="2")]
746    pub position: ::core::option::Option<BlockPos>,
747    #[prost(bool, tag="3")]
748    pub snowing: bool,
749}
750#[allow(clippy::derive_partial_eq_without_eq)]
751#[derive(Clone, PartialEq, ::prost::Message)]
752pub struct WorldThunderingAtResult {
753    #[prost(message, optional, tag="1")]
754    pub world: ::core::option::Option<WorldRef>,
755    #[prost(message, optional, tag="2")]
756    pub position: ::core::option::Option<BlockPos>,
757    #[prost(bool, tag="3")]
758    pub thundering: bool,
759}
760#[allow(clippy::derive_partial_eq_without_eq)]
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct WorldLiquidResult {
763    #[prost(message, optional, tag="1")]
764    pub world: ::core::option::Option<WorldRef>,
765    #[prost(message, optional, tag="2")]
766    pub position: ::core::option::Option<BlockPos>,
767    /// nil if no liquid present
768    #[prost(message, optional, tag="3")]
769    pub liquid: ::core::option::Option<LiquidState>,
770}
771#[allow(clippy::derive_partial_eq_without_eq)]
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct ActionBatch {
774    #[prost(message, repeated, tag="1")]
775    pub actions: ::prost::alloc::vec::Vec<Action>,
776}
777#[allow(clippy::derive_partial_eq_without_eq)]
778#[derive(Clone, PartialEq, ::prost::Message)]
779pub struct Action {
780    #[prost(string, optional, tag="1")]
781    pub correlation_id: ::core::option::Option<::prost::alloc::string::String>,
782    #[prost(oneof="action::Kind", tags="10, 11, 12, 13, 14, 15, 16, 132, 147, 148, 149, 20, 21, 22, 23, 30, 31, 40, 41, 42, 118, 119, 120, 121, 122, 123, 124, 125, 43, 126, 133, 134, 150, 151, 152, 139, 140, 50, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 127, 128, 129, 130, 131, 135, 136, 137, 138, 141, 142, 143, 144, 145, 146, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 90, 91, 92, 93, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 73")]
783    pub kind: ::core::option::Option<action::Kind>,
784}
785/// Nested message and enum types in `Action`.
786pub mod action {
787    #[allow(clippy::derive_partial_eq_without_eq)]
788#[derive(Clone, PartialEq, ::prost::Oneof)]
789    pub enum Kind {
790        /// Player: Basic
791        #[prost(message, tag="10")]
792        SendChat(super::SendChatAction),
793        #[prost(message, tag="11")]
794        Teleport(super::TeleportAction),
795        #[prost(message, tag="12")]
796        Kick(super::KickAction),
797        #[prost(message, tag="13")]
798        SetGameMode(super::SetGameModeAction),
799        /// Player: Inventory & Items
800        #[prost(message, tag="14")]
801        GiveItem(super::GiveItemAction),
802        #[prost(message, tag="15")]
803        ClearInventory(super::ClearInventoryAction),
804        #[prost(message, tag="16")]
805        SetHeldItem(super::SetHeldItemAction),
806        #[prost(message, tag="132")]
807        PlayerSetArmour(super::PlayerSetArmourAction),
808        #[prost(message, tag="147")]
809        PlayerOpenBlockContainer(super::PlayerOpenBlockContainerAction),
810        #[prost(message, tag="148")]
811        PlayerDropItem(super::PlayerDropItemAction),
812        #[prost(message, tag="149")]
813        PlayerSetItemCooldown(super::PlayerSetItemCooldownAction),
814        /// Player: State & Attributes
815        #[prost(message, tag="20")]
816        SetHealth(super::SetHealthAction),
817        #[prost(message, tag="21")]
818        SetFood(super::SetFoodAction),
819        #[prost(message, tag="22")]
820        SetExperience(super::SetExperienceAction),
821        #[prost(message, tag="23")]
822        SetVelocity(super::SetVelocityAction),
823        /// Player: Effects
824        #[prost(message, tag="30")]
825        AddEffect(super::AddEffectAction),
826        #[prost(message, tag="31")]
827        RemoveEffect(super::RemoveEffectAction),
828        /// Player: UI & Communication
829        #[prost(message, tag="40")]
830        SendTitle(super::SendTitleAction),
831        #[prost(message, tag="41")]
832        SendPopup(super::SendPopupAction),
833        #[prost(message, tag="42")]
834        SendTip(super::SendTipAction),
835        #[prost(message, tag="118")]
836        PlayerSendToast(super::PlayerSendToastAction),
837        #[prost(message, tag="119")]
838        PlayerSendJukeboxPopup(super::PlayerSendJukeboxPopupAction),
839        #[prost(message, tag="120")]
840        PlayerShowCoordinates(super::PlayerShowCoordinatesAction),
841        #[prost(message, tag="121")]
842        PlayerHideCoordinates(super::PlayerHideCoordinatesAction),
843        #[prost(message, tag="122")]
844        PlayerEnableInstantRespawn(super::PlayerEnableInstantRespawnAction),
845        #[prost(message, tag="123")]
846        PlayerDisableInstantRespawn(super::PlayerDisableInstantRespawnAction),
847        /// Player: Appearance (overhead)
848        #[prost(message, tag="124")]
849        PlayerSetNameTag(super::PlayerSetNameTagAction),
850        #[prost(message, tag="125")]
851        PlayerSetScoreTag(super::PlayerSetScoreTagAction),
852        /// Player: Audio & Visuals
853        #[prost(message, tag="43")]
854        PlaySound(super::PlaySoundAction),
855        #[prost(message, tag="126")]
856        PlayerShowParticle(super::PlayerShowParticleAction),
857        /// Player: Scoreboard
858        #[prost(message, tag="133")]
859        PlayerSendScoreboard(super::PlayerSendScoreboardAction),
860        #[prost(message, tag="134")]
861        PlayerRemoveScoreboard(super::PlayerRemoveScoreboardAction),
862        /// Player: Forms & Dialogue
863        #[prost(message, tag="150")]
864        PlayerSendMenuForm(super::PlayerSendMenuFormAction),
865        #[prost(message, tag="151")]
866        PlayerSendModalForm(super::PlayerSendModalFormAction),
867        #[prost(message, tag="152")]
868        PlayerSendDialogue(super::PlayerSendDialogueAction),
869        #[prost(message, tag="139")]
870        PlayerCloseDialogue(super::PlayerCloseDialogueAction),
871        #[prost(message, tag="140")]
872        PlayerCloseForm(super::PlayerCloseFormAction),
873        /// Player: Commands
874        #[prost(message, tag="50")]
875        ExecuteCommand(super::ExecuteCommandAction),
876        /// Player: Movement toggles
877        #[prost(message, tag="94")]
878        PlayerStartSprinting(super::PlayerStartSprintingAction),
879        #[prost(message, tag="95")]
880        PlayerStopSprinting(super::PlayerStopSprintingAction),
881        #[prost(message, tag="96")]
882        PlayerStartSneaking(super::PlayerStartSneakingAction),
883        #[prost(message, tag="97")]
884        PlayerStopSneaking(super::PlayerStopSneakingAction),
885        #[prost(message, tag="98")]
886        PlayerStartSwimming(super::PlayerStartSwimmingAction),
887        #[prost(message, tag="99")]
888        PlayerStopSwimming(super::PlayerStopSwimmingAction),
889        #[prost(message, tag="100")]
890        PlayerStartCrawling(super::PlayerStartCrawlingAction),
891        #[prost(message, tag="101")]
892        PlayerStopCrawling(super::PlayerStopCrawlingAction),
893        #[prost(message, tag="102")]
894        PlayerStartGliding(super::PlayerStartGlidingAction),
895        #[prost(message, tag="103")]
896        PlayerStopGliding(super::PlayerStopGlidingAction),
897        #[prost(message, tag="104")]
898        PlayerStartFlying(super::PlayerStartFlyingAction),
899        #[prost(message, tag="105")]
900        PlayerStopFlying(super::PlayerStopFlyingAction),
901        /// Player: Mobility lock
902        #[prost(message, tag="106")]
903        PlayerSetImmobile(super::PlayerSetImmobileAction),
904        #[prost(message, tag="107")]
905        PlayerSetMobile(super::PlayerSetMobileAction),
906        /// Player: Movement attributes
907        #[prost(message, tag="108")]
908        PlayerSetSpeed(super::PlayerSetSpeedAction),
909        #[prost(message, tag="109")]
910        PlayerSetFlightSpeed(super::PlayerSetFlightSpeedAction),
911        #[prost(message, tag="110")]
912        PlayerSetVerticalFlightSpeed(super::PlayerSetVerticalFlightSpeedAction),
913        /// Player: Health/Status
914        #[prost(message, tag="111")]
915        PlayerSetAbsorption(super::PlayerSetAbsorptionAction),
916        #[prost(message, tag="112")]
917        PlayerSetOnFire(super::PlayerSetOnFireAction),
918        #[prost(message, tag="113")]
919        PlayerExtinguish(super::PlayerExtinguishAction),
920        #[prost(message, tag="114")]
921        PlayerSetInvisible(super::PlayerSetInvisibleAction),
922        #[prost(message, tag="115")]
923        PlayerSetVisible(super::PlayerSetVisibleAction),
924        /// Player: Misc attributes
925        #[prost(message, tag="116")]
926        PlayerSetScale(super::PlayerSetScaleAction),
927        #[prost(message, tag="117")]
928        PlayerSetHeldSlot(super::PlayerSetHeldSlotAction),
929        /// Player: Lifecycle/Control
930        #[prost(message, tag="127")]
931        PlayerRespawn(super::PlayerRespawnAction),
932        #[prost(message, tag="128")]
933        PlayerTransfer(super::PlayerTransferAction),
934        #[prost(message, tag="129")]
935        PlayerKnockBack(super::PlayerKnockBackAction),
936        #[prost(message, tag="130")]
937        PlayerSwingArm(super::PlayerSwingArmAction),
938        #[prost(message, tag="131")]
939        PlayerPunchAir(super::PlayerPunchAirAction),
940        /// Player: Boss bar
941        #[prost(message, tag="135")]
942        PlayerSendBossBar(super::PlayerSendBossBarAction),
943        #[prost(message, tag="136")]
944        PlayerRemoveBossBar(super::PlayerRemoveBossBarAction),
945        /// Player: HUD elements
946        #[prost(message, tag="137")]
947        PlayerShowHudElement(super::PlayerShowHudElementAction),
948        #[prost(message, tag="138")]
949        PlayerHideHudElement(super::PlayerHideHudElementAction),
950        /// Player: Signs & Lecterns
951        #[prost(message, tag="141")]
952        PlayerOpenSign(super::PlayerOpenSignAction),
953        #[prost(message, tag="142")]
954        PlayerEditSign(super::PlayerEditSignAction),
955        #[prost(message, tag="143")]
956        PlayerTurnLecternPage(super::PlayerTurnLecternPageAction),
957        /// Player: Entity visibility
958        #[prost(message, tag="144")]
959        PlayerHidePlayer(super::PlayerHidePlayerAction),
960        #[prost(message, tag="145")]
961        PlayerShowPlayer(super::PlayerShowPlayerAction),
962        /// Player: Debug shapes
963        #[prost(message, tag="146")]
964        PlayerRemoveAllDebugShapes(super::PlayerRemoveAllDebugShapesAction),
965        /// World: Configuration & Settings
966        #[prost(message, tag="60")]
967        WorldSetDefaultGameMode(super::WorldSetDefaultGameModeAction),
968        #[prost(message, tag="61")]
969        WorldSetDifficulty(super::WorldSetDifficultyAction),
970        #[prost(message, tag="62")]
971        WorldSetTickRange(super::WorldSetTickRangeAction),
972        #[prost(message, tag="63")]
973        WorldSetBlock(super::WorldSetBlockAction),
974        #[prost(message, tag="64")]
975        WorldPlaySound(super::WorldPlaySoundAction),
976        #[prost(message, tag="65")]
977        WorldAddParticle(super::WorldAddParticleAction),
978        /// World: Time
979        #[prost(message, tag="66")]
980        WorldSetTime(super::WorldSetTimeAction),
981        #[prost(message, tag="67")]
982        WorldStopTime(super::WorldStopTimeAction),
983        #[prost(message, tag="68")]
984        WorldStartTime(super::WorldStartTimeAction),
985        #[prost(message, tag="69")]
986        WorldSetSpawn(super::WorldSetSpawnAction),
987        /// World: Mutations
988        #[prost(message, tag="90")]
989        WorldSetBiome(super::WorldSetBiomeAction),
990        #[prost(message, tag="91")]
991        WorldSetLiquid(super::WorldSetLiquidAction),
992        #[prost(message, tag="92")]
993        WorldScheduleBlockUpdate(super::WorldScheduleBlockUpdateAction),
994        #[prost(message, tag="93")]
995        WorldBuildStructure(super::WorldBuildStructureAction),
996        /// World: Queries - Entities & Players
997        #[prost(message, tag="70")]
998        WorldQueryEntities(super::WorldQueryEntitiesAction),
999        #[prost(message, tag="71")]
1000        WorldQueryPlayers(super::WorldQueryPlayersAction),
1001        #[prost(message, tag="72")]
1002        WorldQueryEntitiesWithin(super::WorldQueryEntitiesWithinAction),
1003        #[prost(message, tag="74")]
1004        WorldQueryPlayerSpawn(super::WorldQueryPlayerSpawnAction),
1005        /// World: Queries - Blocks & Terrain
1006        #[prost(message, tag="75")]
1007        WorldQueryBlock(super::WorldQueryBlockAction),
1008        #[prost(message, tag="76")]
1009        WorldQueryBiome(super::WorldQueryBiomeAction),
1010        #[prost(message, tag="77")]
1011        WorldQueryLight(super::WorldQueryLightAction),
1012        #[prost(message, tag="78")]
1013        WorldQuerySkyLight(super::WorldQuerySkyLightAction),
1014        #[prost(message, tag="79")]
1015        WorldQueryTemperature(super::WorldQueryTemperatureAction),
1016        #[prost(message, tag="80")]
1017        WorldQueryHighestBlock(super::WorldQueryHighestBlockAction),
1018        /// World: Queries - Weather & Environment
1019        #[prost(message, tag="81")]
1020        WorldQueryRainingAt(super::WorldQueryRainingAtAction),
1021        #[prost(message, tag="82")]
1022        WorldQuerySnowingAt(super::WorldQuerySnowingAtAction),
1023        #[prost(message, tag="83")]
1024        WorldQueryThunderingAt(super::WorldQueryThunderingAtAction),
1025        /// World: Queries - Liquid & Settings
1026        #[prost(message, tag="84")]
1027        WorldQueryLiquid(super::WorldQueryLiquidAction),
1028        #[prost(message, tag="73")]
1029        WorldQueryDefaultGameMode(super::WorldQueryDefaultGameModeAction),
1030    }
1031}
1032#[allow(clippy::derive_partial_eq_without_eq)]
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct SendChatAction {
1035    #[prost(string, tag="1")]
1036    pub target_uuid: ::prost::alloc::string::String,
1037    #[prost(string, tag="2")]
1038    pub message: ::prost::alloc::string::String,
1039}
1040#[allow(clippy::derive_partial_eq_without_eq)]
1041#[derive(Clone, PartialEq, ::prost::Message)]
1042pub struct TeleportAction {
1043    #[prost(string, tag="1")]
1044    pub player_uuid: ::prost::alloc::string::String,
1045    #[prost(message, optional, tag="2")]
1046    pub position: ::core::option::Option<Vec3>,
1047    /// rotation vector mapping:
1048    ///   x = pitch, y = yaw, z = head_yaw
1049    #[prost(message, optional, tag="3")]
1050    pub rotation: ::core::option::Option<Vec3>,
1051}
1052#[allow(clippy::derive_partial_eq_without_eq)]
1053#[derive(Clone, PartialEq, ::prost::Message)]
1054pub struct KickAction {
1055    #[prost(string, tag="1")]
1056    pub player_uuid: ::prost::alloc::string::String,
1057    #[prost(string, tag="2")]
1058    pub reason: ::prost::alloc::string::String,
1059}
1060#[allow(clippy::derive_partial_eq_without_eq)]
1061#[derive(Clone, PartialEq, ::prost::Message)]
1062pub struct SetGameModeAction {
1063    #[prost(string, tag="1")]
1064    pub player_uuid: ::prost::alloc::string::String,
1065    #[prost(enumeration="GameMode", tag="2")]
1066    pub game_mode: i32,
1067}
1068/// Inventory & Items
1069#[allow(clippy::derive_partial_eq_without_eq)]
1070#[derive(Clone, PartialEq, ::prost::Message)]
1071pub struct GiveItemAction {
1072    #[prost(string, tag="1")]
1073    pub player_uuid: ::prost::alloc::string::String,
1074    #[prost(message, optional, tag="2")]
1075    pub item: ::core::option::Option<ItemStack>,
1076}
1077#[allow(clippy::derive_partial_eq_without_eq)]
1078#[derive(Clone, PartialEq, ::prost::Message)]
1079pub struct ClearInventoryAction {
1080    #[prost(string, tag="1")]
1081    pub player_uuid: ::prost::alloc::string::String,
1082}
1083#[allow(clippy::derive_partial_eq_without_eq)]
1084#[derive(Clone, PartialEq, ::prost::Message)]
1085pub struct SetHeldItemAction {
1086    #[prost(string, tag="1")]
1087    pub player_uuid: ::prost::alloc::string::String,
1088    /// if set, updates main hand
1089    #[prost(message, optional, tag="2")]
1090    pub main: ::core::option::Option<ItemStack>,
1091    /// if set, updates offhand
1092    #[prost(message, optional, tag="3")]
1093    pub offhand: ::core::option::Option<ItemStack>,
1094}
1095/// Player State
1096#[allow(clippy::derive_partial_eq_without_eq)]
1097#[derive(Clone, PartialEq, ::prost::Message)]
1098pub struct SetHealthAction {
1099    #[prost(string, tag="1")]
1100    pub player_uuid: ::prost::alloc::string::String,
1101    #[prost(double, tag="2")]
1102    pub health: f64,
1103    #[prost(double, optional, tag="3")]
1104    pub max_health: ::core::option::Option<f64>,
1105}
1106#[allow(clippy::derive_partial_eq_without_eq)]
1107#[derive(Clone, PartialEq, ::prost::Message)]
1108pub struct SetFoodAction {
1109    #[prost(string, tag="1")]
1110    pub player_uuid: ::prost::alloc::string::String,
1111    /// 0-20
1112    #[prost(int32, tag="2")]
1113    pub food: i32,
1114}
1115#[allow(clippy::derive_partial_eq_without_eq)]
1116#[derive(Clone, PartialEq, ::prost::Message)]
1117pub struct SetExperienceAction {
1118    #[prost(string, tag="1")]
1119    pub player_uuid: ::prost::alloc::string::String,
1120    /// If set, the player's level is set to this value.
1121    #[prost(int32, optional, tag="2")]
1122    pub level: ::core::option::Option<i32>,
1123    /// If set, the player's progress bar (0..1) is set to this value.
1124    #[prost(float, optional, tag="3")]
1125    pub progress: ::core::option::Option<f32>,
1126    /// If set, raw experience points are added (can be negative to remove).
1127    #[prost(int32, optional, tag="4")]
1128    pub amount: ::core::option::Option<i32>,
1129}
1130#[allow(clippy::derive_partial_eq_without_eq)]
1131#[derive(Clone, PartialEq, ::prost::Message)]
1132pub struct SetVelocityAction {
1133    #[prost(string, tag="1")]
1134    pub player_uuid: ::prost::alloc::string::String,
1135    #[prost(message, optional, tag="2")]
1136    pub velocity: ::core::option::Option<Vec3>,
1137}
1138/// Effects & Status
1139#[allow(clippy::derive_partial_eq_without_eq)]
1140#[derive(Clone, PartialEq, ::prost::Message)]
1141pub struct AddEffectAction {
1142    #[prost(string, tag="1")]
1143    pub player_uuid: ::prost::alloc::string::String,
1144    #[prost(enumeration="EffectType", tag="2")]
1145    pub effect_type: i32,
1146    /// amplifier level (1 = level I)
1147    #[prost(int32, tag="3")]
1148    pub level: i32,
1149    /// duration in milliseconds
1150    #[prost(int64, tag="4")]
1151    pub duration_ms: i64,
1152    #[prost(bool, tag="5")]
1153    pub show_particles: bool,
1154}
1155#[allow(clippy::derive_partial_eq_without_eq)]
1156#[derive(Clone, PartialEq, ::prost::Message)]
1157pub struct RemoveEffectAction {
1158    #[prost(string, tag="1")]
1159    pub player_uuid: ::prost::alloc::string::String,
1160    #[prost(enumeration="EffectType", tag="2")]
1161    pub effect_type: i32,
1162}
1163/// UI & Communication
1164#[allow(clippy::derive_partial_eq_without_eq)]
1165#[derive(Clone, PartialEq, ::prost::Message)]
1166pub struct SendTitleAction {
1167    #[prost(string, tag="1")]
1168    pub player_uuid: ::prost::alloc::string::String,
1169    #[prost(string, tag="2")]
1170    pub title: ::prost::alloc::string::String,
1171    #[prost(string, optional, tag="3")]
1172    pub subtitle: ::core::option::Option<::prost::alloc::string::String>,
1173    #[prost(int64, optional, tag="4")]
1174    pub fade_in_ms: ::core::option::Option<i64>,
1175    #[prost(int64, optional, tag="5")]
1176    pub duration_ms: ::core::option::Option<i64>,
1177    #[prost(int64, optional, tag="6")]
1178    pub fade_out_ms: ::core::option::Option<i64>,
1179}
1180#[allow(clippy::derive_partial_eq_without_eq)]
1181#[derive(Clone, PartialEq, ::prost::Message)]
1182pub struct SendPopupAction {
1183    #[prost(string, tag="1")]
1184    pub player_uuid: ::prost::alloc::string::String,
1185    #[prost(string, tag="2")]
1186    pub message: ::prost::alloc::string::String,
1187}
1188#[allow(clippy::derive_partial_eq_without_eq)]
1189#[derive(Clone, PartialEq, ::prost::Message)]
1190pub struct SendTipAction {
1191    #[prost(string, tag="1")]
1192    pub player_uuid: ::prost::alloc::string::String,
1193    #[prost(string, tag="2")]
1194    pub message: ::prost::alloc::string::String,
1195}
1196/// TODO: it should probably be a world action
1197#[allow(clippy::derive_partial_eq_without_eq)]
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct PlaySoundAction {
1200    #[prost(string, tag="1")]
1201    pub player_uuid: ::prost::alloc::string::String,
1202    #[prost(enumeration="Sound", tag="2")]
1203    pub sound: i32,
1204    /// defaults to player position if unset
1205    #[prost(message, optional, tag="3")]
1206    pub position: ::core::option::Option<Vec3>,
1207    /// default 1.0
1208    #[prost(float, optional, tag="4")]
1209    pub volume: ::core::option::Option<f32>,
1210    /// default 1.0
1211    #[prost(float, optional, tag="5")]
1212    pub pitch: ::core::option::Option<f32>,
1213}
1214/// Commands
1215#[allow(clippy::derive_partial_eq_without_eq)]
1216#[derive(Clone, PartialEq, ::prost::Message)]
1217pub struct ExecuteCommandAction {
1218    #[prost(string, tag="1")]
1219    pub player_uuid: ::prost::alloc::string::String,
1220    /// without leading slash
1221    #[prost(string, tag="2")]
1222    pub command: ::prost::alloc::string::String,
1223}
1224#[allow(clippy::derive_partial_eq_without_eq)]
1225#[derive(Clone, PartialEq, ::prost::Message)]
1226pub struct WorldSetDefaultGameModeAction {
1227    #[prost(message, optional, tag="1")]
1228    pub world: ::core::option::Option<WorldRef>,
1229    #[prost(enumeration="GameMode", tag="2")]
1230    pub game_mode: i32,
1231}
1232#[allow(clippy::derive_partial_eq_without_eq)]
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct WorldSetDifficultyAction {
1235    #[prost(message, optional, tag="1")]
1236    pub world: ::core::option::Option<WorldRef>,
1237    #[prost(enumeration="Difficulty", tag="2")]
1238    pub difficulty: i32,
1239}
1240#[allow(clippy::derive_partial_eq_without_eq)]
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct WorldSetTickRangeAction {
1243    #[prost(message, optional, tag="1")]
1244    pub world: ::core::option::Option<WorldRef>,
1245    #[prost(int32, tag="2")]
1246    pub tick_range: i32,
1247}
1248#[allow(clippy::derive_partial_eq_without_eq)]
1249#[derive(Clone, PartialEq, ::prost::Message)]
1250pub struct WorldSetBlockAction {
1251    #[prost(message, optional, tag="1")]
1252    pub world: ::core::option::Option<WorldRef>,
1253    #[prost(message, optional, tag="2")]
1254    pub position: ::core::option::Option<BlockPos>,
1255    /// nil clears to air
1256    #[prost(message, optional, tag="3")]
1257    pub block: ::core::option::Option<BlockState>,
1258}
1259#[allow(clippy::derive_partial_eq_without_eq)]
1260#[derive(Clone, PartialEq, ::prost::Message)]
1261pub struct WorldPlaySoundAction {
1262    #[prost(message, optional, tag="1")]
1263    pub world: ::core::option::Option<WorldRef>,
1264    #[prost(enumeration="Sound", tag="2")]
1265    pub sound: i32,
1266    #[prost(message, optional, tag="3")]
1267    pub position: ::core::option::Option<Vec3>,
1268}
1269#[allow(clippy::derive_partial_eq_without_eq)]
1270#[derive(Clone, PartialEq, ::prost::Message)]
1271pub struct WorldAddParticleAction {
1272    #[prost(message, optional, tag="1")]
1273    pub world: ::core::option::Option<WorldRef>,
1274    #[prost(message, optional, tag="2")]
1275    pub position: ::core::option::Option<Vec3>,
1276    #[prost(enumeration="ParticleType", tag="3")]
1277    pub particle: i32,
1278    /// used for block-based particles when provided
1279    #[prost(message, optional, tag="4")]
1280    pub block: ::core::option::Option<BlockState>,
1281    /// used for punch_block when provided
1282    #[prost(int32, optional, tag="5")]
1283    pub face: ::core::option::Option<i32>,
1284}
1285#[allow(clippy::derive_partial_eq_without_eq)]
1286#[derive(Clone, PartialEq, ::prost::Message)]
1287pub struct WorldSetTimeAction {
1288    #[prost(message, optional, tag="1")]
1289    pub world: ::core::option::Option<WorldRef>,
1290    #[prost(int32, tag="2")]
1291    pub time: i32,
1292}
1293#[allow(clippy::derive_partial_eq_without_eq)]
1294#[derive(Clone, PartialEq, ::prost::Message)]
1295pub struct WorldStopTimeAction {
1296    #[prost(message, optional, tag="1")]
1297    pub world: ::core::option::Option<WorldRef>,
1298}
1299#[allow(clippy::derive_partial_eq_without_eq)]
1300#[derive(Clone, PartialEq, ::prost::Message)]
1301pub struct WorldStartTimeAction {
1302    #[prost(message, optional, tag="1")]
1303    pub world: ::core::option::Option<WorldRef>,
1304}
1305#[allow(clippy::derive_partial_eq_without_eq)]
1306#[derive(Clone, PartialEq, ::prost::Message)]
1307pub struct WorldSetSpawnAction {
1308    #[prost(message, optional, tag="1")]
1309    pub world: ::core::option::Option<WorldRef>,
1310    #[prost(message, optional, tag="2")]
1311    pub spawn: ::core::option::Option<BlockPos>,
1312}
1313#[allow(clippy::derive_partial_eq_without_eq)]
1314#[derive(Clone, PartialEq, ::prost::Message)]
1315pub struct WorldQueryDefaultGameModeAction {
1316    #[prost(message, optional, tag="1")]
1317    pub world: ::core::option::Option<WorldRef>,
1318}
1319#[allow(clippy::derive_partial_eq_without_eq)]
1320#[derive(Clone, PartialEq, ::prost::Message)]
1321pub struct WorldQueryPlayerSpawnAction {
1322    #[prost(message, optional, tag="1")]
1323    pub world: ::core::option::Option<WorldRef>,
1324    #[prost(string, tag="2")]
1325    pub player_uuid: ::prost::alloc::string::String,
1326}
1327#[allow(clippy::derive_partial_eq_without_eq)]
1328#[derive(Clone, PartialEq, ::prost::Message)]
1329pub struct WorldQueryEntitiesAction {
1330    #[prost(message, optional, tag="1")]
1331    pub world: ::core::option::Option<WorldRef>,
1332}
1333#[allow(clippy::derive_partial_eq_without_eq)]
1334#[derive(Clone, PartialEq, ::prost::Message)]
1335pub struct WorldQueryPlayersAction {
1336    #[prost(message, optional, tag="1")]
1337    pub world: ::core::option::Option<WorldRef>,
1338}
1339#[allow(clippy::derive_partial_eq_without_eq)]
1340#[derive(Clone, PartialEq, ::prost::Message)]
1341pub struct WorldQueryEntitiesWithinAction {
1342    #[prost(message, optional, tag="1")]
1343    pub world: ::core::option::Option<WorldRef>,
1344    #[prost(message, optional, tag="2")]
1345    pub r#box: ::core::option::Option<BBox>,
1346}
1347#[allow(clippy::derive_partial_eq_without_eq)]
1348#[derive(Clone, PartialEq, ::prost::Message)]
1349pub struct WorldQueryBlockAction {
1350    #[prost(message, optional, tag="1")]
1351    pub world: ::core::option::Option<WorldRef>,
1352    #[prost(message, optional, tag="2")]
1353    pub position: ::core::option::Option<BlockPos>,
1354}
1355#[allow(clippy::derive_partial_eq_without_eq)]
1356#[derive(Clone, PartialEq, ::prost::Message)]
1357pub struct WorldQueryBiomeAction {
1358    #[prost(message, optional, tag="1")]
1359    pub world: ::core::option::Option<WorldRef>,
1360    #[prost(message, optional, tag="2")]
1361    pub position: ::core::option::Option<BlockPos>,
1362}
1363#[allow(clippy::derive_partial_eq_without_eq)]
1364#[derive(Clone, PartialEq, ::prost::Message)]
1365pub struct WorldQueryLightAction {
1366    #[prost(message, optional, tag="1")]
1367    pub world: ::core::option::Option<WorldRef>,
1368    #[prost(message, optional, tag="2")]
1369    pub position: ::core::option::Option<BlockPos>,
1370}
1371#[allow(clippy::derive_partial_eq_without_eq)]
1372#[derive(Clone, PartialEq, ::prost::Message)]
1373pub struct WorldQuerySkyLightAction {
1374    #[prost(message, optional, tag="1")]
1375    pub world: ::core::option::Option<WorldRef>,
1376    #[prost(message, optional, tag="2")]
1377    pub position: ::core::option::Option<BlockPos>,
1378}
1379#[allow(clippy::derive_partial_eq_without_eq)]
1380#[derive(Clone, PartialEq, ::prost::Message)]
1381pub struct WorldQueryTemperatureAction {
1382    #[prost(message, optional, tag="1")]
1383    pub world: ::core::option::Option<WorldRef>,
1384    #[prost(message, optional, tag="2")]
1385    pub position: ::core::option::Option<BlockPos>,
1386}
1387#[allow(clippy::derive_partial_eq_without_eq)]
1388#[derive(Clone, PartialEq, ::prost::Message)]
1389pub struct WorldQueryHighestBlockAction {
1390    #[prost(message, optional, tag="1")]
1391    pub world: ::core::option::Option<WorldRef>,
1392    #[prost(int32, tag="2")]
1393    pub x: i32,
1394    #[prost(int32, tag="3")]
1395    pub z: i32,
1396}
1397#[allow(clippy::derive_partial_eq_without_eq)]
1398#[derive(Clone, PartialEq, ::prost::Message)]
1399pub struct WorldQueryRainingAtAction {
1400    #[prost(message, optional, tag="1")]
1401    pub world: ::core::option::Option<WorldRef>,
1402    #[prost(message, optional, tag="2")]
1403    pub position: ::core::option::Option<BlockPos>,
1404}
1405#[allow(clippy::derive_partial_eq_without_eq)]
1406#[derive(Clone, PartialEq, ::prost::Message)]
1407pub struct WorldQuerySnowingAtAction {
1408    #[prost(message, optional, tag="1")]
1409    pub world: ::core::option::Option<WorldRef>,
1410    #[prost(message, optional, tag="2")]
1411    pub position: ::core::option::Option<BlockPos>,
1412}
1413#[allow(clippy::derive_partial_eq_without_eq)]
1414#[derive(Clone, PartialEq, ::prost::Message)]
1415pub struct WorldQueryThunderingAtAction {
1416    #[prost(message, optional, tag="1")]
1417    pub world: ::core::option::Option<WorldRef>,
1418    #[prost(message, optional, tag="2")]
1419    pub position: ::core::option::Option<BlockPos>,
1420}
1421#[allow(clippy::derive_partial_eq_without_eq)]
1422#[derive(Clone, PartialEq, ::prost::Message)]
1423pub struct WorldQueryLiquidAction {
1424    #[prost(message, optional, tag="1")]
1425    pub world: ::core::option::Option<WorldRef>,
1426    #[prost(message, optional, tag="2")]
1427    pub position: ::core::option::Option<BlockPos>,
1428}
1429#[allow(clippy::derive_partial_eq_without_eq)]
1430#[derive(Clone, PartialEq, ::prost::Message)]
1431pub struct WorldSetBiomeAction {
1432    #[prost(message, optional, tag="1")]
1433    pub world: ::core::option::Option<WorldRef>,
1434    #[prost(message, optional, tag="2")]
1435    pub position: ::core::option::Option<BlockPos>,
1436    /// e.g., "plains", "desert", "ocean"
1437    #[prost(string, tag="3")]
1438    pub biome_id: ::prost::alloc::string::String,
1439}
1440#[allow(clippy::derive_partial_eq_without_eq)]
1441#[derive(Clone, PartialEq, ::prost::Message)]
1442pub struct WorldSetLiquidAction {
1443    #[prost(message, optional, tag="1")]
1444    pub world: ::core::option::Option<WorldRef>,
1445    #[prost(message, optional, tag="2")]
1446    pub position: ::core::option::Option<BlockPos>,
1447    /// nil to remove liquid
1448    #[prost(message, optional, tag="3")]
1449    pub liquid: ::core::option::Option<LiquidState>,
1450}
1451#[allow(clippy::derive_partial_eq_without_eq)]
1452#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct WorldScheduleBlockUpdateAction {
1454    #[prost(message, optional, tag="1")]
1455    pub world: ::core::option::Option<WorldRef>,
1456    #[prost(message, optional, tag="2")]
1457    pub position: ::core::option::Option<BlockPos>,
1458    #[prost(message, optional, tag="3")]
1459    pub block: ::core::option::Option<BlockState>,
1460    /// delay in milliseconds
1461    #[prost(int64, tag="4")]
1462    pub delay_ms: i64,
1463}
1464/// Structure building
1465#[allow(clippy::derive_partial_eq_without_eq)]
1466#[derive(Clone, PartialEq, ::prost::Message)]
1467pub struct StructureVoxel {
1468    #[prost(int32, tag="1")]
1469    pub x: i32,
1470    #[prost(int32, tag="2")]
1471    pub y: i32,
1472    #[prost(int32, tag="3")]
1473    pub z: i32,
1474    /// use "minecraft:air" to explicitly clear
1475    #[prost(message, optional, tag="4")]
1476    pub block: ::core::option::Option<BlockState>,
1477    /// optional second layer
1478    #[prost(message, optional, tag="5")]
1479    pub liquid: ::core::option::Option<LiquidState>,
1480}
1481#[allow(clippy::derive_partial_eq_without_eq)]
1482#[derive(Clone, PartialEq, ::prost::Message)]
1483pub struct StructureDef {
1484    #[prost(int32, tag="1")]
1485    pub width: i32,
1486    #[prost(int32, tag="2")]
1487    pub height: i32,
1488    #[prost(int32, tag="3")]
1489    pub length: i32,
1490    /// sparse set; omit positions for "no change"
1491    #[prost(message, repeated, tag="10")]
1492    pub voxels: ::prost::alloc::vec::Vec<StructureVoxel>,
1493}
1494#[allow(clippy::derive_partial_eq_without_eq)]
1495#[derive(Clone, PartialEq, ::prost::Message)]
1496pub struct WorldBuildStructureAction {
1497    #[prost(message, optional, tag="1")]
1498    pub world: ::core::option::Option<WorldRef>,
1499    /// world-space base position
1500    #[prost(message, optional, tag="2")]
1501    pub origin: ::core::option::Option<BlockPos>,
1502    #[prost(message, optional, tag="3")]
1503    pub structure: ::core::option::Option<StructureDef>,
1504}
1505/// Player: Movement toggles
1506#[allow(clippy::derive_partial_eq_without_eq)]
1507#[derive(Clone, PartialEq, ::prost::Message)]
1508pub struct PlayerStartSprintingAction {
1509    #[prost(string, tag="1")]
1510    pub player_uuid: ::prost::alloc::string::String,
1511}
1512#[allow(clippy::derive_partial_eq_without_eq)]
1513#[derive(Clone, PartialEq, ::prost::Message)]
1514pub struct PlayerStopSprintingAction {
1515    #[prost(string, tag="1")]
1516    pub player_uuid: ::prost::alloc::string::String,
1517}
1518#[allow(clippy::derive_partial_eq_without_eq)]
1519#[derive(Clone, PartialEq, ::prost::Message)]
1520pub struct PlayerStartSneakingAction {
1521    #[prost(string, tag="1")]
1522    pub player_uuid: ::prost::alloc::string::String,
1523}
1524#[allow(clippy::derive_partial_eq_without_eq)]
1525#[derive(Clone, PartialEq, ::prost::Message)]
1526pub struct PlayerStopSneakingAction {
1527    #[prost(string, tag="1")]
1528    pub player_uuid: ::prost::alloc::string::String,
1529}
1530#[allow(clippy::derive_partial_eq_without_eq)]
1531#[derive(Clone, PartialEq, ::prost::Message)]
1532pub struct PlayerStartSwimmingAction {
1533    #[prost(string, tag="1")]
1534    pub player_uuid: ::prost::alloc::string::String,
1535}
1536#[allow(clippy::derive_partial_eq_without_eq)]
1537#[derive(Clone, PartialEq, ::prost::Message)]
1538pub struct PlayerStopSwimmingAction {
1539    #[prost(string, tag="1")]
1540    pub player_uuid: ::prost::alloc::string::String,
1541}
1542#[allow(clippy::derive_partial_eq_without_eq)]
1543#[derive(Clone, PartialEq, ::prost::Message)]
1544pub struct PlayerStartCrawlingAction {
1545    #[prost(string, tag="1")]
1546    pub player_uuid: ::prost::alloc::string::String,
1547}
1548#[allow(clippy::derive_partial_eq_without_eq)]
1549#[derive(Clone, PartialEq, ::prost::Message)]
1550pub struct PlayerStopCrawlingAction {
1551    #[prost(string, tag="1")]
1552    pub player_uuid: ::prost::alloc::string::String,
1553}
1554#[allow(clippy::derive_partial_eq_without_eq)]
1555#[derive(Clone, PartialEq, ::prost::Message)]
1556pub struct PlayerStartGlidingAction {
1557    #[prost(string, tag="1")]
1558    pub player_uuid: ::prost::alloc::string::String,
1559}
1560#[allow(clippy::derive_partial_eq_without_eq)]
1561#[derive(Clone, PartialEq, ::prost::Message)]
1562pub struct PlayerStopGlidingAction {
1563    #[prost(string, tag="1")]
1564    pub player_uuid: ::prost::alloc::string::String,
1565}
1566#[allow(clippy::derive_partial_eq_without_eq)]
1567#[derive(Clone, PartialEq, ::prost::Message)]
1568pub struct PlayerStartFlyingAction {
1569    #[prost(string, tag="1")]
1570    pub player_uuid: ::prost::alloc::string::String,
1571}
1572#[allow(clippy::derive_partial_eq_without_eq)]
1573#[derive(Clone, PartialEq, ::prost::Message)]
1574pub struct PlayerStopFlyingAction {
1575    #[prost(string, tag="1")]
1576    pub player_uuid: ::prost::alloc::string::String,
1577}
1578/// Player: Mobility lock
1579#[allow(clippy::derive_partial_eq_without_eq)]
1580#[derive(Clone, PartialEq, ::prost::Message)]
1581pub struct PlayerSetImmobileAction {
1582    #[prost(string, tag="1")]
1583    pub player_uuid: ::prost::alloc::string::String,
1584}
1585#[allow(clippy::derive_partial_eq_without_eq)]
1586#[derive(Clone, PartialEq, ::prost::Message)]
1587pub struct PlayerSetMobileAction {
1588    #[prost(string, tag="1")]
1589    pub player_uuid: ::prost::alloc::string::String,
1590}
1591/// Player: Movement attributes
1592#[allow(clippy::derive_partial_eq_without_eq)]
1593#[derive(Clone, PartialEq, ::prost::Message)]
1594pub struct PlayerSetSpeedAction {
1595    #[prost(string, tag="1")]
1596    pub player_uuid: ::prost::alloc::string::String,
1597    #[prost(double, tag="2")]
1598    pub speed: f64,
1599}
1600#[allow(clippy::derive_partial_eq_without_eq)]
1601#[derive(Clone, PartialEq, ::prost::Message)]
1602pub struct PlayerSetFlightSpeedAction {
1603    #[prost(string, tag="1")]
1604    pub player_uuid: ::prost::alloc::string::String,
1605    #[prost(double, tag="2")]
1606    pub flight_speed: f64,
1607}
1608#[allow(clippy::derive_partial_eq_without_eq)]
1609#[derive(Clone, PartialEq, ::prost::Message)]
1610pub struct PlayerSetVerticalFlightSpeedAction {
1611    #[prost(string, tag="1")]
1612    pub player_uuid: ::prost::alloc::string::String,
1613    #[prost(double, tag="2")]
1614    pub vertical_flight_speed: f64,
1615}
1616/// Player: Health/Status
1617#[allow(clippy::derive_partial_eq_without_eq)]
1618#[derive(Clone, PartialEq, ::prost::Message)]
1619pub struct PlayerSetAbsorptionAction {
1620    #[prost(string, tag="1")]
1621    pub player_uuid: ::prost::alloc::string::String,
1622    #[prost(double, tag="2")]
1623    pub absorption: f64,
1624}
1625#[allow(clippy::derive_partial_eq_without_eq)]
1626#[derive(Clone, PartialEq, ::prost::Message)]
1627pub struct PlayerSetOnFireAction {
1628    #[prost(string, tag="1")]
1629    pub player_uuid: ::prost::alloc::string::String,
1630    #[prost(int64, tag="2")]
1631    pub duration_ms: i64,
1632}
1633#[allow(clippy::derive_partial_eq_without_eq)]
1634#[derive(Clone, PartialEq, ::prost::Message)]
1635pub struct PlayerExtinguishAction {
1636    #[prost(string, tag="1")]
1637    pub player_uuid: ::prost::alloc::string::String,
1638}
1639#[allow(clippy::derive_partial_eq_without_eq)]
1640#[derive(Clone, PartialEq, ::prost::Message)]
1641pub struct PlayerSetInvisibleAction {
1642    #[prost(string, tag="1")]
1643    pub player_uuid: ::prost::alloc::string::String,
1644}
1645#[allow(clippy::derive_partial_eq_without_eq)]
1646#[derive(Clone, PartialEq, ::prost::Message)]
1647pub struct PlayerSetVisibleAction {
1648    #[prost(string, tag="1")]
1649    pub player_uuid: ::prost::alloc::string::String,
1650}
1651/// Player: Misc attributes
1652#[allow(clippy::derive_partial_eq_without_eq)]
1653#[derive(Clone, PartialEq, ::prost::Message)]
1654pub struct PlayerSetScaleAction {
1655    #[prost(string, tag="1")]
1656    pub player_uuid: ::prost::alloc::string::String,
1657    #[prost(double, tag="2")]
1658    pub scale: f64,
1659}
1660#[allow(clippy::derive_partial_eq_without_eq)]
1661#[derive(Clone, PartialEq, ::prost::Message)]
1662pub struct PlayerSetHeldSlotAction {
1663    #[prost(string, tag="1")]
1664    pub player_uuid: ::prost::alloc::string::String,
1665    /// 0-8
1666    #[prost(int32, tag="2")]
1667    pub slot: i32,
1668}
1669/// Player: UI
1670#[allow(clippy::derive_partial_eq_without_eq)]
1671#[derive(Clone, PartialEq, ::prost::Message)]
1672pub struct PlayerSendToastAction {
1673    #[prost(string, tag="1")]
1674    pub player_uuid: ::prost::alloc::string::String,
1675    #[prost(string, tag="2")]
1676    pub title: ::prost::alloc::string::String,
1677    #[prost(string, tag="3")]
1678    pub message: ::prost::alloc::string::String,
1679}
1680#[allow(clippy::derive_partial_eq_without_eq)]
1681#[derive(Clone, PartialEq, ::prost::Message)]
1682pub struct PlayerSendJukeboxPopupAction {
1683    #[prost(string, tag="1")]
1684    pub player_uuid: ::prost::alloc::string::String,
1685    #[prost(string, tag="2")]
1686    pub message: ::prost::alloc::string::String,
1687}
1688#[allow(clippy::derive_partial_eq_without_eq)]
1689#[derive(Clone, PartialEq, ::prost::Message)]
1690pub struct PlayerShowCoordinatesAction {
1691    #[prost(string, tag="1")]
1692    pub player_uuid: ::prost::alloc::string::String,
1693}
1694#[allow(clippy::derive_partial_eq_without_eq)]
1695#[derive(Clone, PartialEq, ::prost::Message)]
1696pub struct PlayerHideCoordinatesAction {
1697    #[prost(string, tag="1")]
1698    pub player_uuid: ::prost::alloc::string::String,
1699}
1700#[allow(clippy::derive_partial_eq_without_eq)]
1701#[derive(Clone, PartialEq, ::prost::Message)]
1702pub struct PlayerEnableInstantRespawnAction {
1703    #[prost(string, tag="1")]
1704    pub player_uuid: ::prost::alloc::string::String,
1705}
1706#[allow(clippy::derive_partial_eq_without_eq)]
1707#[derive(Clone, PartialEq, ::prost::Message)]
1708pub struct PlayerDisableInstantRespawnAction {
1709    #[prost(string, tag="1")]
1710    pub player_uuid: ::prost::alloc::string::String,
1711}
1712#[allow(clippy::derive_partial_eq_without_eq)]
1713#[derive(Clone, PartialEq, ::prost::Message)]
1714pub struct PlayerSetNameTagAction {
1715    #[prost(string, tag="1")]
1716    pub player_uuid: ::prost::alloc::string::String,
1717    #[prost(string, tag="2")]
1718    pub name_tag: ::prost::alloc::string::String,
1719}
1720#[allow(clippy::derive_partial_eq_without_eq)]
1721#[derive(Clone, PartialEq, ::prost::Message)]
1722pub struct PlayerSetScoreTagAction {
1723    #[prost(string, tag="1")]
1724    pub player_uuid: ::prost::alloc::string::String,
1725    #[prost(string, tag="2")]
1726    pub score_tag: ::prost::alloc::string::String,
1727}
1728/// Player: Visuals
1729#[allow(clippy::derive_partial_eq_without_eq)]
1730#[derive(Clone, PartialEq, ::prost::Message)]
1731pub struct PlayerShowParticleAction {
1732    #[prost(string, tag="1")]
1733    pub player_uuid: ::prost::alloc::string::String,
1734    #[prost(message, optional, tag="2")]
1735    pub position: ::core::option::Option<Vec3>,
1736    #[prost(enumeration="ParticleType", tag="3")]
1737    pub particle: i32,
1738    /// used for block-based particles when provided
1739    #[prost(message, optional, tag="4")]
1740    pub block: ::core::option::Option<BlockState>,
1741    /// used for punch_block when provided
1742    #[prost(int32, optional, tag="5")]
1743    pub face: ::core::option::Option<i32>,
1744}
1745/// Player: Lifecycle/Control
1746#[allow(clippy::derive_partial_eq_without_eq)]
1747#[derive(Clone, PartialEq, ::prost::Message)]
1748pub struct PlayerRespawnAction {
1749    #[prost(string, tag="1")]
1750    pub player_uuid: ::prost::alloc::string::String,
1751}
1752#[allow(clippy::derive_partial_eq_without_eq)]
1753#[derive(Clone, PartialEq, ::prost::Message)]
1754pub struct PlayerTransferAction {
1755    #[prost(string, tag="1")]
1756    pub player_uuid: ::prost::alloc::string::String,
1757    #[prost(message, optional, tag="2")]
1758    pub address: ::core::option::Option<Address>,
1759}
1760#[allow(clippy::derive_partial_eq_without_eq)]
1761#[derive(Clone, PartialEq, ::prost::Message)]
1762pub struct PlayerKnockBackAction {
1763    #[prost(string, tag="1")]
1764    pub player_uuid: ::prost::alloc::string::String,
1765    #[prost(message, optional, tag="2")]
1766    pub source: ::core::option::Option<Vec3>,
1767    #[prost(double, tag="3")]
1768    pub force: f64,
1769    #[prost(double, tag="4")]
1770    pub height: f64,
1771}
1772#[allow(clippy::derive_partial_eq_without_eq)]
1773#[derive(Clone, PartialEq, ::prost::Message)]
1774pub struct PlayerSwingArmAction {
1775    #[prost(string, tag="1")]
1776    pub player_uuid: ::prost::alloc::string::String,
1777}
1778#[allow(clippy::derive_partial_eq_without_eq)]
1779#[derive(Clone, PartialEq, ::prost::Message)]
1780pub struct PlayerPunchAirAction {
1781    #[prost(string, tag="1")]
1782    pub player_uuid: ::prost::alloc::string::String,
1783}
1784/// Player armour management
1785#[allow(clippy::derive_partial_eq_without_eq)]
1786#[derive(Clone, PartialEq, ::prost::Message)]
1787pub struct PlayerSetArmourAction {
1788    #[prost(string, tag="1")]
1789    pub player_uuid: ::prost::alloc::string::String,
1790    #[prost(message, optional, tag="2")]
1791    pub helmet: ::core::option::Option<ItemStack>,
1792    #[prost(message, optional, tag="3")]
1793    pub chestplate: ::core::option::Option<ItemStack>,
1794    #[prost(message, optional, tag="4")]
1795    pub leggings: ::core::option::Option<ItemStack>,
1796    #[prost(message, optional, tag="5")]
1797    pub boots: ::core::option::Option<ItemStack>,
1798}
1799/// Player scoreboard management
1800#[allow(clippy::derive_partial_eq_without_eq)]
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct PlayerSendScoreboardAction {
1803    #[prost(string, tag="1")]
1804    pub player_uuid: ::prost::alloc::string::String,
1805    #[prost(string, tag="2")]
1806    pub title: ::prost::alloc::string::String,
1807    #[prost(string, repeated, tag="3")]
1808    pub lines: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1809    /// default true
1810    #[prost(bool, optional, tag="4")]
1811    pub padding: ::core::option::Option<bool>,
1812    /// default false
1813    #[prost(bool, optional, tag="5")]
1814    pub descending: ::core::option::Option<bool>,
1815}
1816#[allow(clippy::derive_partial_eq_without_eq)]
1817#[derive(Clone, PartialEq, ::prost::Message)]
1818pub struct PlayerRemoveScoreboardAction {
1819    #[prost(string, tag="1")]
1820    pub player_uuid: ::prost::alloc::string::String,
1821}
1822/// Player forms (show)
1823#[allow(clippy::derive_partial_eq_without_eq)]
1824#[derive(Clone, PartialEq, ::prost::Message)]
1825pub struct PlayerSendMenuFormAction {
1826    #[prost(string, tag="1")]
1827    pub player_uuid: ::prost::alloc::string::String,
1828    #[prost(string, tag="2")]
1829    pub title: ::prost::alloc::string::String,
1830    #[prost(string, optional, tag="3")]
1831    pub body: ::core::option::Option<::prost::alloc::string::String>,
1832    /// up to 6
1833    #[prost(string, repeated, tag="4")]
1834    pub buttons: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1835}
1836#[allow(clippy::derive_partial_eq_without_eq)]
1837#[derive(Clone, PartialEq, ::prost::Message)]
1838pub struct PlayerSendModalFormAction {
1839    #[prost(string, tag="1")]
1840    pub player_uuid: ::prost::alloc::string::String,
1841    #[prost(string, tag="2")]
1842    pub title: ::prost::alloc::string::String,
1843    #[prost(string, tag="3")]
1844    pub body: ::prost::alloc::string::String,
1845    /// default: gui.yes
1846    #[prost(string, tag="4")]
1847    pub yes_text: ::prost::alloc::string::String,
1848    /// default: gui.no
1849    #[prost(string, tag="5")]
1850    pub no_text: ::prost::alloc::string::String,
1851}
1852/// Dialogue (show)
1853#[allow(clippy::derive_partial_eq_without_eq)]
1854#[derive(Clone, PartialEq, ::prost::Message)]
1855pub struct PlayerSendDialogueAction {
1856    #[prost(string, tag="1")]
1857    pub player_uuid: ::prost::alloc::string::String,
1858    #[prost(string, tag="2")]
1859    pub title: ::prost::alloc::string::String,
1860    #[prost(string, optional, tag="3")]
1861    pub body: ::core::option::Option<::prost::alloc::string::String>,
1862    /// up to 6
1863    #[prost(string, repeated, tag="4")]
1864    pub buttons: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1865    /// target entity to display as NPC
1866    #[prost(message, optional, tag="5")]
1867    pub entity: ::core::option::Option<EntityRef>,
1868}
1869#[allow(clippy::derive_partial_eq_without_eq)]
1870#[derive(Clone, PartialEq, ::prost::Message)]
1871pub struct PlayerSendBossBarAction {
1872    #[prost(string, tag="1")]
1873    pub player_uuid: ::prost::alloc::string::String,
1874    #[prost(string, tag="2")]
1875    pub text: ::prost::alloc::string::String,
1876    /// 0.0 - 1.0 (default 1.0)
1877    #[prost(float, optional, tag="3")]
1878    pub health_percentage: ::core::option::Option<f32>,
1879    /// default PURPLE
1880    #[prost(enumeration="BossBarColour", optional, tag="4")]
1881    pub colour: ::core::option::Option<i32>,
1882}
1883#[allow(clippy::derive_partial_eq_without_eq)]
1884#[derive(Clone, PartialEq, ::prost::Message)]
1885pub struct PlayerRemoveBossBarAction {
1886    #[prost(string, tag="1")]
1887    pub player_uuid: ::prost::alloc::string::String,
1888}
1889#[allow(clippy::derive_partial_eq_without_eq)]
1890#[derive(Clone, PartialEq, ::prost::Message)]
1891pub struct PlayerShowHudElementAction {
1892    #[prost(string, tag="1")]
1893    pub player_uuid: ::prost::alloc::string::String,
1894    #[prost(enumeration="HudElement", tag="2")]
1895    pub element: i32,
1896}
1897#[allow(clippy::derive_partial_eq_without_eq)]
1898#[derive(Clone, PartialEq, ::prost::Message)]
1899pub struct PlayerHideHudElementAction {
1900    #[prost(string, tag="1")]
1901    pub player_uuid: ::prost::alloc::string::String,
1902    #[prost(enumeration="HudElement", tag="2")]
1903    pub element: i32,
1904}
1905/// Player UI closers
1906#[allow(clippy::derive_partial_eq_without_eq)]
1907#[derive(Clone, PartialEq, ::prost::Message)]
1908pub struct PlayerCloseDialogueAction {
1909    #[prost(string, tag="1")]
1910    pub player_uuid: ::prost::alloc::string::String,
1911}
1912#[allow(clippy::derive_partial_eq_without_eq)]
1913#[derive(Clone, PartialEq, ::prost::Message)]
1914pub struct PlayerCloseFormAction {
1915    #[prost(string, tag="1")]
1916    pub player_uuid: ::prost::alloc::string::String,
1917}
1918/// Player: Signs & Lecterns
1919#[allow(clippy::derive_partial_eq_without_eq)]
1920#[derive(Clone, PartialEq, ::prost::Message)]
1921pub struct PlayerOpenSignAction {
1922    #[prost(string, tag="1")]
1923    pub player_uuid: ::prost::alloc::string::String,
1924    #[prost(message, optional, tag="2")]
1925    pub position: ::core::option::Option<BlockPos>,
1926    #[prost(bool, tag="3")]
1927    pub front_side: bool,
1928}
1929#[allow(clippy::derive_partial_eq_without_eq)]
1930#[derive(Clone, PartialEq, ::prost::Message)]
1931pub struct PlayerEditSignAction {
1932    #[prost(string, tag="1")]
1933    pub player_uuid: ::prost::alloc::string::String,
1934    #[prost(message, optional, tag="2")]
1935    pub position: ::core::option::Option<BlockPos>,
1936    #[prost(string, tag="3")]
1937    pub front_text: ::prost::alloc::string::String,
1938    #[prost(string, tag="4")]
1939    pub back_text: ::prost::alloc::string::String,
1940}
1941#[allow(clippy::derive_partial_eq_without_eq)]
1942#[derive(Clone, PartialEq, ::prost::Message)]
1943pub struct PlayerTurnLecternPageAction {
1944    #[prost(string, tag="1")]
1945    pub player_uuid: ::prost::alloc::string::String,
1946    #[prost(message, optional, tag="2")]
1947    pub position: ::core::option::Option<BlockPos>,
1948    #[prost(int32, tag="3")]
1949    pub page: i32,
1950}
1951/// Player: Entity visibility (player-targeted)
1952#[allow(clippy::derive_partial_eq_without_eq)]
1953#[derive(Clone, PartialEq, ::prost::Message)]
1954pub struct PlayerHidePlayerAction {
1955    #[prost(string, tag="1")]
1956    pub player_uuid: ::prost::alloc::string::String,
1957    #[prost(string, tag="2")]
1958    pub target_uuid: ::prost::alloc::string::String,
1959}
1960#[allow(clippy::derive_partial_eq_without_eq)]
1961#[derive(Clone, PartialEq, ::prost::Message)]
1962pub struct PlayerShowPlayerAction {
1963    #[prost(string, tag="1")]
1964    pub player_uuid: ::prost::alloc::string::String,
1965    #[prost(string, tag="2")]
1966    pub target_uuid: ::prost::alloc::string::String,
1967}
1968/// Player: Debug shapes
1969#[allow(clippy::derive_partial_eq_without_eq)]
1970#[derive(Clone, PartialEq, ::prost::Message)]
1971pub struct PlayerRemoveAllDebugShapesAction {
1972    #[prost(string, tag="1")]
1973    pub player_uuid: ::prost::alloc::string::String,
1974}
1975/// Player: Interaction extras
1976#[allow(clippy::derive_partial_eq_without_eq)]
1977#[derive(Clone, PartialEq, ::prost::Message)]
1978pub struct PlayerOpenBlockContainerAction {
1979    #[prost(string, tag="1")]
1980    pub player_uuid: ::prost::alloc::string::String,
1981    #[prost(message, optional, tag="2")]
1982    pub position: ::core::option::Option<BlockPos>,
1983}
1984#[allow(clippy::derive_partial_eq_without_eq)]
1985#[derive(Clone, PartialEq, ::prost::Message)]
1986pub struct PlayerDropItemAction {
1987    #[prost(string, tag="1")]
1988    pub player_uuid: ::prost::alloc::string::String,
1989    /// if unset, drops currently held main-hand item
1990    #[prost(message, optional, tag="2")]
1991    pub item: ::core::option::Option<ItemStack>,
1992}
1993#[allow(clippy::derive_partial_eq_without_eq)]
1994#[derive(Clone, PartialEq, ::prost::Message)]
1995pub struct PlayerSetItemCooldownAction {
1996    #[prost(string, tag="1")]
1997    pub player_uuid: ::prost::alloc::string::String,
1998    #[prost(message, optional, tag="2")]
1999    pub item: ::core::option::Option<ItemStack>,
2000    #[prost(int64, tag="3")]
2001    pub duration_ms: i64,
2002}
2003#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2004#[repr(i32)]
2005pub enum ParticleType {
2006    Unspecified = 0,
2007    ParticleHugeExplosion = 1,
2008    ParticleEndermanTeleport = 2,
2009    ParticleSnowballPoof = 3,
2010    ParticleEggSmash = 4,
2011    ParticleSplash = 5,
2012    ParticleEffect = 6,
2013    ParticleEntityFlame = 7,
2014    ParticleFlame = 8,
2015    ParticleDust = 9,
2016    ParticleBlockForceField = 10,
2017    ParticleBoneMeal = 11,
2018    ParticleEvaporate = 12,
2019    ParticleWaterDrip = 13,
2020    ParticleLavaDrip = 14,
2021    ParticleLava = 15,
2022    ParticleDustPlume = 16,
2023    ParticleBlockBreak = 17,
2024    ParticlePunchBlock = 18,
2025}
2026impl ParticleType {
2027    /// String value of the enum field names used in the ProtoBuf definition.
2028    ///
2029    /// The values are not transformed in any way and thus are considered stable
2030    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2031    pub fn as_str_name(&self) -> &'static str {
2032        match self {
2033            ParticleType::Unspecified => "PARTICLE_TYPE_UNSPECIFIED",
2034            ParticleType::ParticleHugeExplosion => "PARTICLE_HUGE_EXPLOSION",
2035            ParticleType::ParticleEndermanTeleport => "PARTICLE_ENDERMAN_TELEPORT",
2036            ParticleType::ParticleSnowballPoof => "PARTICLE_SNOWBALL_POOF",
2037            ParticleType::ParticleEggSmash => "PARTICLE_EGG_SMASH",
2038            ParticleType::ParticleSplash => "PARTICLE_SPLASH",
2039            ParticleType::ParticleEffect => "PARTICLE_EFFECT",
2040            ParticleType::ParticleEntityFlame => "PARTICLE_ENTITY_FLAME",
2041            ParticleType::ParticleFlame => "PARTICLE_FLAME",
2042            ParticleType::ParticleDust => "PARTICLE_DUST",
2043            ParticleType::ParticleBlockForceField => "PARTICLE_BLOCK_FORCE_FIELD",
2044            ParticleType::ParticleBoneMeal => "PARTICLE_BONE_MEAL",
2045            ParticleType::ParticleEvaporate => "PARTICLE_EVAPORATE",
2046            ParticleType::ParticleWaterDrip => "PARTICLE_WATER_DRIP",
2047            ParticleType::ParticleLavaDrip => "PARTICLE_LAVA_DRIP",
2048            ParticleType::ParticleLava => "PARTICLE_LAVA",
2049            ParticleType::ParticleDustPlume => "PARTICLE_DUST_PLUME",
2050            ParticleType::ParticleBlockBreak => "PARTICLE_BLOCK_BREAK",
2051            ParticleType::ParticlePunchBlock => "PARTICLE_PUNCH_BLOCK",
2052        }
2053    }
2054    /// Creates an enum from field names used in the ProtoBuf definition.
2055    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2056        match value {
2057            "PARTICLE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2058            "PARTICLE_HUGE_EXPLOSION" => Some(Self::ParticleHugeExplosion),
2059            "PARTICLE_ENDERMAN_TELEPORT" => Some(Self::ParticleEndermanTeleport),
2060            "PARTICLE_SNOWBALL_POOF" => Some(Self::ParticleSnowballPoof),
2061            "PARTICLE_EGG_SMASH" => Some(Self::ParticleEggSmash),
2062            "PARTICLE_SPLASH" => Some(Self::ParticleSplash),
2063            "PARTICLE_EFFECT" => Some(Self::ParticleEffect),
2064            "PARTICLE_ENTITY_FLAME" => Some(Self::ParticleEntityFlame),
2065            "PARTICLE_FLAME" => Some(Self::ParticleFlame),
2066            "PARTICLE_DUST" => Some(Self::ParticleDust),
2067            "PARTICLE_BLOCK_FORCE_FIELD" => Some(Self::ParticleBlockForceField),
2068            "PARTICLE_BONE_MEAL" => Some(Self::ParticleBoneMeal),
2069            "PARTICLE_EVAPORATE" => Some(Self::ParticleEvaporate),
2070            "PARTICLE_WATER_DRIP" => Some(Self::ParticleWaterDrip),
2071            "PARTICLE_LAVA_DRIP" => Some(Self::ParticleLavaDrip),
2072            "PARTICLE_LAVA" => Some(Self::ParticleLava),
2073            "PARTICLE_DUST_PLUME" => Some(Self::ParticleDustPlume),
2074            "PARTICLE_BLOCK_BREAK" => Some(Self::ParticleBlockBreak),
2075            "PARTICLE_PUNCH_BLOCK" => Some(Self::ParticlePunchBlock),
2076            _ => None,
2077        }
2078    }
2079}
2080/// Player boss bar management
2081#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2082#[repr(i32)]
2083pub enum BossBarColour {
2084    Grey = 0,
2085    Blue = 1,
2086    Red = 2,
2087    Green = 3,
2088    Yellow = 4,
2089    Purple = 5,
2090    White = 6,
2091}
2092impl BossBarColour {
2093    /// String value of the enum field names used in the ProtoBuf definition.
2094    ///
2095    /// The values are not transformed in any way and thus are considered stable
2096    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2097    pub fn as_str_name(&self) -> &'static str {
2098        match self {
2099            BossBarColour::Grey => "BOSS_BAR_COLOUR_GREY",
2100            BossBarColour::Blue => "BOSS_BAR_COLOUR_BLUE",
2101            BossBarColour::Red => "BOSS_BAR_COLOUR_RED",
2102            BossBarColour::Green => "BOSS_BAR_COLOUR_GREEN",
2103            BossBarColour::Yellow => "BOSS_BAR_COLOUR_YELLOW",
2104            BossBarColour::Purple => "BOSS_BAR_COLOUR_PURPLE",
2105            BossBarColour::White => "BOSS_BAR_COLOUR_WHITE",
2106        }
2107    }
2108    /// Creates an enum from field names used in the ProtoBuf definition.
2109    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2110        match value {
2111            "BOSS_BAR_COLOUR_GREY" => Some(Self::Grey),
2112            "BOSS_BAR_COLOUR_BLUE" => Some(Self::Blue),
2113            "BOSS_BAR_COLOUR_RED" => Some(Self::Red),
2114            "BOSS_BAR_COLOUR_GREEN" => Some(Self::Green),
2115            "BOSS_BAR_COLOUR_YELLOW" => Some(Self::Yellow),
2116            "BOSS_BAR_COLOUR_PURPLE" => Some(Self::Purple),
2117            "BOSS_BAR_COLOUR_WHITE" => Some(Self::White),
2118            _ => None,
2119        }
2120    }
2121}
2122/// Player HUD element control
2123#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2124#[repr(i32)]
2125pub enum HudElement {
2126    PaperDoll = 0,
2127    Armour = 1,
2128    ToolTips = 2,
2129    TouchControls = 3,
2130    Crosshair = 4,
2131    HotBar = 5,
2132    Health = 6,
2133    ProgressBar = 7,
2134    Hunger = 8,
2135    AirBubbles = 9,
2136    HorseHealth = 10,
2137    StatusEffects = 11,
2138    ItemText = 12,
2139}
2140impl HudElement {
2141    /// String value of the enum field names used in the ProtoBuf definition.
2142    ///
2143    /// The values are not transformed in any way and thus are considered stable
2144    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2145    pub fn as_str_name(&self) -> &'static str {
2146        match self {
2147            HudElement::PaperDoll => "HUD_ELEMENT_PAPER_DOLL",
2148            HudElement::Armour => "HUD_ELEMENT_ARMOUR",
2149            HudElement::ToolTips => "HUD_ELEMENT_TOOL_TIPS",
2150            HudElement::TouchControls => "HUD_ELEMENT_TOUCH_CONTROLS",
2151            HudElement::Crosshair => "HUD_ELEMENT_CROSSHAIR",
2152            HudElement::HotBar => "HUD_ELEMENT_HOT_BAR",
2153            HudElement::Health => "HUD_ELEMENT_HEALTH",
2154            HudElement::ProgressBar => "HUD_ELEMENT_PROGRESS_BAR",
2155            HudElement::Hunger => "HUD_ELEMENT_HUNGER",
2156            HudElement::AirBubbles => "HUD_ELEMENT_AIR_BUBBLES",
2157            HudElement::HorseHealth => "HUD_ELEMENT_HORSE_HEALTH",
2158            HudElement::StatusEffects => "HUD_ELEMENT_STATUS_EFFECTS",
2159            HudElement::ItemText => "HUD_ELEMENT_ITEM_TEXT",
2160        }
2161    }
2162    /// Creates an enum from field names used in the ProtoBuf definition.
2163    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2164        match value {
2165            "HUD_ELEMENT_PAPER_DOLL" => Some(Self::PaperDoll),
2166            "HUD_ELEMENT_ARMOUR" => Some(Self::Armour),
2167            "HUD_ELEMENT_TOOL_TIPS" => Some(Self::ToolTips),
2168            "HUD_ELEMENT_TOUCH_CONTROLS" => Some(Self::TouchControls),
2169            "HUD_ELEMENT_CROSSHAIR" => Some(Self::Crosshair),
2170            "HUD_ELEMENT_HOT_BAR" => Some(Self::HotBar),
2171            "HUD_ELEMENT_HEALTH" => Some(Self::Health),
2172            "HUD_ELEMENT_PROGRESS_BAR" => Some(Self::ProgressBar),
2173            "HUD_ELEMENT_HUNGER" => Some(Self::Hunger),
2174            "HUD_ELEMENT_AIR_BUBBLES" => Some(Self::AirBubbles),
2175            "HUD_ELEMENT_HORSE_HEALTH" => Some(Self::HorseHealth),
2176            "HUD_ELEMENT_STATUS_EFFECTS" => Some(Self::StatusEffects),
2177            "HUD_ELEMENT_ITEM_TEXT" => Some(Self::ItemText),
2178            _ => None,
2179        }
2180    }
2181}
2182/// Parameter specification for a command.
2183#[allow(clippy::derive_partial_eq_without_eq)]
2184#[derive(Clone, PartialEq, ::prost::Message)]
2185pub struct ParamSpec {
2186    #[prost(string, tag="1")]
2187    pub name: ::prost::alloc::string::String,
2188    #[prost(enumeration="ParamType", tag="2")]
2189    pub r#type: i32,
2190    #[prost(bool, tag="3")]
2191    pub optional: bool,
2192    /// Optional suffix as supported by Go cmd tags (e.g., units)
2193    #[prost(string, tag="4")]
2194    pub suffix: ::prost::alloc::string::String,
2195    /// Optional list of enum values to present in the client UI.
2196    /// When set, the parameter is shown as an enum selector regardless of ParamType.
2197    #[prost(string, repeated, tag="5")]
2198    pub enum_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2199}
2200/// Command specification announced by a plugin during handshake.
2201#[allow(clippy::derive_partial_eq_without_eq)]
2202#[derive(Clone, PartialEq, ::prost::Message)]
2203pub struct CommandSpec {
2204    #[prost(string, tag="1")]
2205    pub name: ::prost::alloc::string::String,
2206    #[prost(string, tag="2")]
2207    pub description: ::prost::alloc::string::String,
2208    #[prost(string, repeated, tag="3")]
2209    pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2210    #[prost(message, repeated, tag="4")]
2211    pub params: ::prost::alloc::vec::Vec<ParamSpec>,
2212}
2213/// Player command execution event.
2214#[allow(clippy::derive_partial_eq_without_eq)]
2215#[derive(Clone, PartialEq, ::prost::Message)]
2216pub struct CommandEvent {
2217    #[prost(string, tag="1")]
2218    pub player_uuid: ::prost::alloc::string::String,
2219    #[prost(string, tag="2")]
2220    pub name: ::prost::alloc::string::String,
2221    /// Full command string like "/tp 100 64 200"
2222    #[prost(string, tag="3")]
2223    pub raw: ::prost::alloc::string::String,
2224    /// Just the command name like "tp"
2225    #[prost(string, tag="4")]
2226    pub command: ::prost::alloc::string::String,
2227    /// Parsed arguments like \["100", "64", "200"\]
2228    #[prost(string, repeated, tag="5")]
2229    pub args: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2230}
2231/// Supported parameter types for commands.
2232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2233#[repr(i32)]
2234pub enum ParamType {
2235    ParamString = 0,
2236    ParamInt = 1,
2237    ParamFloat = 2,
2238    ParamBool = 3,
2239    ParamVarargs = 4,
2240    ParamEnum = 5,
2241}
2242impl ParamType {
2243    /// String value of the enum field names used in the ProtoBuf definition.
2244    ///
2245    /// The values are not transformed in any way and thus are considered stable
2246    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2247    pub fn as_str_name(&self) -> &'static str {
2248        match self {
2249            ParamType::ParamString => "PARAM_STRING",
2250            ParamType::ParamInt => "PARAM_INT",
2251            ParamType::ParamFloat => "PARAM_FLOAT",
2252            ParamType::ParamBool => "PARAM_BOOL",
2253            ParamType::ParamVarargs => "PARAM_VARARGS",
2254            ParamType::ParamEnum => "PARAM_ENUM",
2255        }
2256    }
2257    /// Creates an enum from field names used in the ProtoBuf definition.
2258    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2259        match value {
2260            "PARAM_STRING" => Some(Self::ParamString),
2261            "PARAM_INT" => Some(Self::ParamInt),
2262            "PARAM_FLOAT" => Some(Self::ParamFloat),
2263            "PARAM_BOOL" => Some(Self::ParamBool),
2264            "PARAM_VARARGS" => Some(Self::ParamVarargs),
2265            "PARAM_ENUM" => Some(Self::ParamEnum),
2266            _ => None,
2267        }
2268    }
2269}
2270#[allow(clippy::derive_partial_eq_without_eq)]
2271#[derive(Clone, PartialEq, ::prost::Message)]
2272pub struct EventResult {
2273    #[prost(string, tag="1")]
2274    pub event_id: ::prost::alloc::string::String,
2275    #[prost(bool, optional, tag="2")]
2276    pub cancel: ::core::option::Option<bool>,
2277    #[prost(oneof="event_result::Update", tags="10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 30")]
2278    pub update: ::core::option::Option<event_result::Update>,
2279}
2280/// Nested message and enum types in `EventResult`.
2281pub mod event_result {
2282    #[allow(clippy::derive_partial_eq_without_eq)]
2283#[derive(Clone, PartialEq, ::prost::Oneof)]
2284    pub enum Update {
2285        #[prost(message, tag="10")]
2286        Chat(super::ChatMutation),
2287        #[prost(message, tag="11")]
2288        BlockBreak(super::BlockBreakMutation),
2289        #[prost(message, tag="12")]
2290        PlayerFoodLoss(super::PlayerFoodLossMutation),
2291        #[prost(message, tag="13")]
2292        PlayerHeal(super::PlayerHealMutation),
2293        #[prost(message, tag="14")]
2294        PlayerHurt(super::PlayerHurtMutation),
2295        #[prost(message, tag="15")]
2296        PlayerDeath(super::PlayerDeathMutation),
2297        #[prost(message, tag="16")]
2298        PlayerRespawn(super::PlayerRespawnMutation),
2299        #[prost(message, tag="17")]
2300        PlayerAttackEntity(super::PlayerAttackEntityMutation),
2301        #[prost(message, tag="18")]
2302        PlayerExperienceGain(super::PlayerExperienceGainMutation),
2303        #[prost(message, tag="19")]
2304        PlayerLecternPageTurn(super::PlayerLecternPageTurnMutation),
2305        #[prost(message, tag="20")]
2306        PlayerItemPickup(super::PlayerItemPickupMutation),
2307        #[prost(message, tag="21")]
2308        PlayerTransfer(super::PlayerTransferMutation),
2309        #[prost(message, tag="30")]
2310        WorldExplosion(super::WorldExplosionMutation),
2311    }
2312}
2313/// Wrapper messages for repeated fields to allow detecting "not set" vs "empty"
2314#[allow(clippy::derive_partial_eq_without_eq)]
2315#[derive(Clone, PartialEq, ::prost::Message)]
2316pub struct ItemStackList {
2317    #[prost(message, repeated, tag="1")]
2318    pub items: ::prost::alloc::vec::Vec<ItemStack>,
2319}
2320#[allow(clippy::derive_partial_eq_without_eq)]
2321#[derive(Clone, PartialEq, ::prost::Message)]
2322pub struct StringList {
2323    #[prost(string, repeated, tag="1")]
2324    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2325}
2326#[allow(clippy::derive_partial_eq_without_eq)]
2327#[derive(Clone, PartialEq, ::prost::Message)]
2328pub struct BlockPosList {
2329    #[prost(message, repeated, tag="1")]
2330    pub positions: ::prost::alloc::vec::Vec<BlockPos>,
2331}
2332#[allow(clippy::derive_partial_eq_without_eq)]
2333#[derive(Clone, PartialEq, ::prost::Message)]
2334pub struct ChatMutation {
2335    #[prost(string, optional, tag="1")]
2336    pub message: ::core::option::Option<::prost::alloc::string::String>,
2337}
2338#[allow(clippy::derive_partial_eq_without_eq)]
2339#[derive(Clone, PartialEq, ::prost::Message)]
2340pub struct BlockBreakMutation {
2341    #[prost(message, optional, tag="1")]
2342    pub drops: ::core::option::Option<ItemStackList>,
2343    #[prost(int32, optional, tag="2")]
2344    pub xp: ::core::option::Option<i32>,
2345}
2346#[allow(clippy::derive_partial_eq_without_eq)]
2347#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2348pub struct PlayerFoodLossMutation {
2349    #[prost(int32, optional, tag="1")]
2350    pub to: ::core::option::Option<i32>,
2351}
2352#[allow(clippy::derive_partial_eq_without_eq)]
2353#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2354pub struct PlayerHealMutation {
2355    #[prost(double, optional, tag="1")]
2356    pub amount: ::core::option::Option<f64>,
2357}
2358#[allow(clippy::derive_partial_eq_without_eq)]
2359#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2360pub struct PlayerHurtMutation {
2361    #[prost(double, optional, tag="1")]
2362    pub damage: ::core::option::Option<f64>,
2363    #[prost(int64, optional, tag="2")]
2364    pub attack_immunity_ms: ::core::option::Option<i64>,
2365}
2366#[allow(clippy::derive_partial_eq_without_eq)]
2367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2368pub struct PlayerDeathMutation {
2369    #[prost(bool, optional, tag="1")]
2370    pub keep_inventory: ::core::option::Option<bool>,
2371}
2372#[allow(clippy::derive_partial_eq_without_eq)]
2373#[derive(Clone, PartialEq, ::prost::Message)]
2374pub struct PlayerRespawnMutation {
2375    #[prost(message, optional, tag="1")]
2376    pub position: ::core::option::Option<Vec3>,
2377    #[prost(message, optional, tag="2")]
2378    pub world: ::core::option::Option<WorldRef>,
2379}
2380#[allow(clippy::derive_partial_eq_without_eq)]
2381#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2382pub struct PlayerAttackEntityMutation {
2383    #[prost(double, optional, tag="1")]
2384    pub force: ::core::option::Option<f64>,
2385    #[prost(double, optional, tag="2")]
2386    pub height: ::core::option::Option<f64>,
2387    #[prost(bool, optional, tag="3")]
2388    pub critical: ::core::option::Option<bool>,
2389}
2390#[allow(clippy::derive_partial_eq_without_eq)]
2391#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2392pub struct PlayerExperienceGainMutation {
2393    #[prost(int32, optional, tag="1")]
2394    pub amount: ::core::option::Option<i32>,
2395}
2396#[allow(clippy::derive_partial_eq_without_eq)]
2397#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2398pub struct PlayerLecternPageTurnMutation {
2399    #[prost(int32, optional, tag="1")]
2400    pub new_page: ::core::option::Option<i32>,
2401}
2402#[allow(clippy::derive_partial_eq_without_eq)]
2403#[derive(Clone, PartialEq, ::prost::Message)]
2404pub struct PlayerItemPickupMutation {
2405    #[prost(message, optional, tag="1")]
2406    pub item: ::core::option::Option<ItemStack>,
2407}
2408#[allow(clippy::derive_partial_eq_without_eq)]
2409#[derive(Clone, PartialEq, ::prost::Message)]
2410pub struct PlayerTransferMutation {
2411    #[prost(message, optional, tag="1")]
2412    pub address: ::core::option::Option<Address>,
2413}
2414#[allow(clippy::derive_partial_eq_without_eq)]
2415#[derive(Clone, PartialEq, ::prost::Message)]
2416pub struct WorldExplosionMutation {
2417    #[prost(message, optional, tag="1")]
2418    pub entity_uuids: ::core::option::Option<StringList>,
2419    #[prost(message, optional, tag="2")]
2420    pub blocks: ::core::option::Option<BlockPosList>,
2421    #[prost(double, optional, tag="3")]
2422    pub item_drop_chance: ::core::option::Option<f64>,
2423    #[prost(bool, optional, tag="4")]
2424    pub spawn_fire: ::core::option::Option<bool>,
2425}
2426#[allow(clippy::derive_partial_eq_without_eq)]
2427#[derive(Clone, PartialEq, ::prost::Message)]
2428pub struct PlayerJoinEvent {
2429    #[prost(string, tag="1")]
2430    pub player_uuid: ::prost::alloc::string::String,
2431    #[prost(string, tag="2")]
2432    pub name: ::prost::alloc::string::String,
2433    #[prost(message, optional, tag="3")]
2434    pub world: ::core::option::Option<WorldRef>,
2435}
2436#[allow(clippy::derive_partial_eq_without_eq)]
2437#[derive(Clone, PartialEq, ::prost::Message)]
2438pub struct PlayerQuitEvent {
2439    #[prost(string, tag="1")]
2440    pub player_uuid: ::prost::alloc::string::String,
2441    #[prost(string, tag="2")]
2442    pub name: ::prost::alloc::string::String,
2443}
2444#[allow(clippy::derive_partial_eq_without_eq)]
2445#[derive(Clone, PartialEq, ::prost::Message)]
2446pub struct PlayerMoveEvent {
2447    #[prost(string, tag="1")]
2448    pub player_uuid: ::prost::alloc::string::String,
2449    #[prost(string, tag="2")]
2450    pub name: ::prost::alloc::string::String,
2451    #[prost(string, tag="3")]
2452    pub world: ::prost::alloc::string::String,
2453    #[prost(message, optional, tag="4")]
2454    pub position: ::core::option::Option<Vec3>,
2455    #[prost(message, optional, tag="5")]
2456    pub rotation: ::core::option::Option<Rotation>,
2457}
2458#[allow(clippy::derive_partial_eq_without_eq)]
2459#[derive(Clone, PartialEq, ::prost::Message)]
2460pub struct PlayerJumpEvent {
2461    #[prost(string, tag="1")]
2462    pub player_uuid: ::prost::alloc::string::String,
2463    #[prost(string, tag="2")]
2464    pub name: ::prost::alloc::string::String,
2465    #[prost(string, tag="3")]
2466    pub world: ::prost::alloc::string::String,
2467    #[prost(message, optional, tag="4")]
2468    pub position: ::core::option::Option<Vec3>,
2469}
2470#[allow(clippy::derive_partial_eq_without_eq)]
2471#[derive(Clone, PartialEq, ::prost::Message)]
2472pub struct PlayerTeleportEvent {
2473    #[prost(string, tag="1")]
2474    pub player_uuid: ::prost::alloc::string::String,
2475    #[prost(string, tag="2")]
2476    pub name: ::prost::alloc::string::String,
2477    #[prost(string, tag="3")]
2478    pub world: ::prost::alloc::string::String,
2479    #[prost(message, optional, tag="4")]
2480    pub position: ::core::option::Option<Vec3>,
2481}
2482#[allow(clippy::derive_partial_eq_without_eq)]
2483#[derive(Clone, PartialEq, ::prost::Message)]
2484pub struct PlayerChangeWorldEvent {
2485    #[prost(string, tag="1")]
2486    pub player_uuid: ::prost::alloc::string::String,
2487    #[prost(string, tag="2")]
2488    pub name: ::prost::alloc::string::String,
2489    #[prost(message, optional, tag="3")]
2490    pub before: ::core::option::Option<WorldRef>,
2491    #[prost(message, optional, tag="4")]
2492    pub after: ::core::option::Option<WorldRef>,
2493}
2494#[allow(clippy::derive_partial_eq_without_eq)]
2495#[derive(Clone, PartialEq, ::prost::Message)]
2496pub struct PlayerToggleSprintEvent {
2497    #[prost(string, tag="1")]
2498    pub player_uuid: ::prost::alloc::string::String,
2499    #[prost(string, tag="2")]
2500    pub name: ::prost::alloc::string::String,
2501    #[prost(bool, tag="3")]
2502    pub after: bool,
2503}
2504#[allow(clippy::derive_partial_eq_without_eq)]
2505#[derive(Clone, PartialEq, ::prost::Message)]
2506pub struct PlayerToggleSneakEvent {
2507    #[prost(string, tag="1")]
2508    pub player_uuid: ::prost::alloc::string::String,
2509    #[prost(string, tag="2")]
2510    pub name: ::prost::alloc::string::String,
2511    #[prost(bool, tag="3")]
2512    pub after: bool,
2513}
2514#[allow(clippy::derive_partial_eq_without_eq)]
2515#[derive(Clone, PartialEq, ::prost::Message)]
2516pub struct ChatEvent {
2517    #[prost(string, tag="1")]
2518    pub player_uuid: ::prost::alloc::string::String,
2519    #[prost(string, tag="2")]
2520    pub name: ::prost::alloc::string::String,
2521    #[prost(string, tag="3")]
2522    pub message: ::prost::alloc::string::String,
2523}
2524#[allow(clippy::derive_partial_eq_without_eq)]
2525#[derive(Clone, PartialEq, ::prost::Message)]
2526pub struct PlayerFoodLossEvent {
2527    #[prost(string, tag="1")]
2528    pub player_uuid: ::prost::alloc::string::String,
2529    #[prost(string, tag="2")]
2530    pub name: ::prost::alloc::string::String,
2531    #[prost(int32, tag="3")]
2532    pub from: i32,
2533    #[prost(int32, tag="4")]
2534    pub to: i32,
2535}
2536#[allow(clippy::derive_partial_eq_without_eq)]
2537#[derive(Clone, PartialEq, ::prost::Message)]
2538pub struct PlayerHealEvent {
2539    #[prost(string, tag="1")]
2540    pub player_uuid: ::prost::alloc::string::String,
2541    #[prost(string, tag="2")]
2542    pub name: ::prost::alloc::string::String,
2543    #[prost(double, tag="3")]
2544    pub amount: f64,
2545    #[prost(message, optional, tag="4")]
2546    pub source: ::core::option::Option<HealingSource>,
2547}
2548#[allow(clippy::derive_partial_eq_without_eq)]
2549#[derive(Clone, PartialEq, ::prost::Message)]
2550pub struct PlayerHurtEvent {
2551    #[prost(string, tag="1")]
2552    pub player_uuid: ::prost::alloc::string::String,
2553    #[prost(string, tag="2")]
2554    pub name: ::prost::alloc::string::String,
2555    #[prost(double, tag="3")]
2556    pub damage: f64,
2557    #[prost(bool, tag="4")]
2558    pub immune: bool,
2559    #[prost(int64, tag="5")]
2560    pub attack_immunity_ms: i64,
2561    #[prost(message, optional, tag="6")]
2562    pub source: ::core::option::Option<DamageSource>,
2563}
2564#[allow(clippy::derive_partial_eq_without_eq)]
2565#[derive(Clone, PartialEq, ::prost::Message)]
2566pub struct PlayerDeathEvent {
2567    #[prost(string, tag="1")]
2568    pub player_uuid: ::prost::alloc::string::String,
2569    #[prost(string, tag="2")]
2570    pub name: ::prost::alloc::string::String,
2571    #[prost(message, optional, tag="3")]
2572    pub source: ::core::option::Option<DamageSource>,
2573    #[prost(bool, tag="4")]
2574    pub keep_inventory: bool,
2575}
2576#[allow(clippy::derive_partial_eq_without_eq)]
2577#[derive(Clone, PartialEq, ::prost::Message)]
2578pub struct PlayerRespawnEvent {
2579    #[prost(string, tag="1")]
2580    pub player_uuid: ::prost::alloc::string::String,
2581    #[prost(string, tag="2")]
2582    pub name: ::prost::alloc::string::String,
2583    #[prost(message, optional, tag="3")]
2584    pub position: ::core::option::Option<Vec3>,
2585    #[prost(message, optional, tag="4")]
2586    pub world: ::core::option::Option<WorldRef>,
2587}
2588#[allow(clippy::derive_partial_eq_without_eq)]
2589#[derive(Clone, PartialEq, ::prost::Message)]
2590pub struct PlayerSkinChangeEvent {
2591    #[prost(string, tag="1")]
2592    pub player_uuid: ::prost::alloc::string::String,
2593    #[prost(string, tag="2")]
2594    pub name: ::prost::alloc::string::String,
2595    #[prost(string, optional, tag="3")]
2596    pub full_id: ::core::option::Option<::prost::alloc::string::String>,
2597    #[prost(string, optional, tag="4")]
2598    pub play_fab_id: ::core::option::Option<::prost::alloc::string::String>,
2599    #[prost(bool, tag="5")]
2600    pub persona: bool,
2601}
2602#[allow(clippy::derive_partial_eq_without_eq)]
2603#[derive(Clone, PartialEq, ::prost::Message)]
2604pub struct PlayerFireExtinguishEvent {
2605    #[prost(string, tag="1")]
2606    pub player_uuid: ::prost::alloc::string::String,
2607    #[prost(string, tag="2")]
2608    pub name: ::prost::alloc::string::String,
2609    #[prost(string, tag="3")]
2610    pub world: ::prost::alloc::string::String,
2611    #[prost(message, optional, tag="4")]
2612    pub position: ::core::option::Option<BlockPos>,
2613}
2614#[allow(clippy::derive_partial_eq_without_eq)]
2615#[derive(Clone, PartialEq, ::prost::Message)]
2616pub struct PlayerStartBreakEvent {
2617    #[prost(string, tag="1")]
2618    pub player_uuid: ::prost::alloc::string::String,
2619    #[prost(string, tag="2")]
2620    pub name: ::prost::alloc::string::String,
2621    #[prost(string, tag="3")]
2622    pub world: ::prost::alloc::string::String,
2623    #[prost(message, optional, tag="4")]
2624    pub position: ::core::option::Option<BlockPos>,
2625}
2626#[allow(clippy::derive_partial_eq_without_eq)]
2627#[derive(Clone, PartialEq, ::prost::Message)]
2628pub struct BlockBreakEvent {
2629    #[prost(string, tag="1")]
2630    pub player_uuid: ::prost::alloc::string::String,
2631    #[prost(string, tag="2")]
2632    pub name: ::prost::alloc::string::String,
2633    #[prost(string, tag="3")]
2634    pub world: ::prost::alloc::string::String,
2635    #[prost(message, optional, tag="4")]
2636    pub position: ::core::option::Option<BlockPos>,
2637}
2638#[allow(clippy::derive_partial_eq_without_eq)]
2639#[derive(Clone, PartialEq, ::prost::Message)]
2640pub struct PlayerBlockPlaceEvent {
2641    #[prost(string, tag="1")]
2642    pub player_uuid: ::prost::alloc::string::String,
2643    #[prost(string, tag="2")]
2644    pub name: ::prost::alloc::string::String,
2645    #[prost(string, tag="3")]
2646    pub world: ::prost::alloc::string::String,
2647    #[prost(message, optional, tag="4")]
2648    pub position: ::core::option::Option<BlockPos>,
2649    #[prost(message, optional, tag="5")]
2650    pub block: ::core::option::Option<BlockState>,
2651}
2652#[allow(clippy::derive_partial_eq_without_eq)]
2653#[derive(Clone, PartialEq, ::prost::Message)]
2654pub struct PlayerBlockPickEvent {
2655    #[prost(string, tag="1")]
2656    pub player_uuid: ::prost::alloc::string::String,
2657    #[prost(string, tag="2")]
2658    pub name: ::prost::alloc::string::String,
2659    #[prost(string, tag="3")]
2660    pub world: ::prost::alloc::string::String,
2661    #[prost(message, optional, tag="4")]
2662    pub position: ::core::option::Option<BlockPos>,
2663    #[prost(message, optional, tag="5")]
2664    pub block: ::core::option::Option<BlockState>,
2665}
2666#[allow(clippy::derive_partial_eq_without_eq)]
2667#[derive(Clone, PartialEq, ::prost::Message)]
2668pub struct PlayerItemUseEvent {
2669    #[prost(string, tag="1")]
2670    pub player_uuid: ::prost::alloc::string::String,
2671    #[prost(string, tag="2")]
2672    pub name: ::prost::alloc::string::String,
2673    #[prost(string, tag="3")]
2674    pub world: ::prost::alloc::string::String,
2675    #[prost(message, optional, tag="4")]
2676    pub item: ::core::option::Option<ItemStack>,
2677}
2678#[allow(clippy::derive_partial_eq_without_eq)]
2679#[derive(Clone, PartialEq, ::prost::Message)]
2680pub struct PlayerItemUseOnBlockEvent {
2681    #[prost(string, tag="1")]
2682    pub player_uuid: ::prost::alloc::string::String,
2683    #[prost(string, tag="2")]
2684    pub name: ::prost::alloc::string::String,
2685    #[prost(string, tag="3")]
2686    pub world: ::prost::alloc::string::String,
2687    #[prost(message, optional, tag="4")]
2688    pub position: ::core::option::Option<BlockPos>,
2689    #[prost(string, tag="5")]
2690    pub face: ::prost::alloc::string::String,
2691    #[prost(message, optional, tag="6")]
2692    pub click_position: ::core::option::Option<Vec3>,
2693    #[prost(message, optional, tag="7")]
2694    pub block: ::core::option::Option<BlockState>,
2695    #[prost(message, optional, tag="8")]
2696    pub item: ::core::option::Option<ItemStack>,
2697}
2698#[allow(clippy::derive_partial_eq_without_eq)]
2699#[derive(Clone, PartialEq, ::prost::Message)]
2700pub struct PlayerItemUseOnEntityEvent {
2701    #[prost(string, tag="1")]
2702    pub player_uuid: ::prost::alloc::string::String,
2703    #[prost(string, tag="2")]
2704    pub name: ::prost::alloc::string::String,
2705    #[prost(string, tag="3")]
2706    pub world: ::prost::alloc::string::String,
2707    #[prost(message, optional, tag="4")]
2708    pub entity: ::core::option::Option<EntityRef>,
2709    #[prost(message, optional, tag="5")]
2710    pub item: ::core::option::Option<ItemStack>,
2711}
2712#[allow(clippy::derive_partial_eq_without_eq)]
2713#[derive(Clone, PartialEq, ::prost::Message)]
2714pub struct PlayerItemReleaseEvent {
2715    #[prost(string, tag="1")]
2716    pub player_uuid: ::prost::alloc::string::String,
2717    #[prost(string, tag="2")]
2718    pub name: ::prost::alloc::string::String,
2719    #[prost(string, tag="3")]
2720    pub world: ::prost::alloc::string::String,
2721    #[prost(message, optional, tag="4")]
2722    pub item: ::core::option::Option<ItemStack>,
2723    #[prost(int64, tag="5")]
2724    pub duration_ms: i64,
2725}
2726#[allow(clippy::derive_partial_eq_without_eq)]
2727#[derive(Clone, PartialEq, ::prost::Message)]
2728pub struct PlayerItemConsumeEvent {
2729    #[prost(string, tag="1")]
2730    pub player_uuid: ::prost::alloc::string::String,
2731    #[prost(string, tag="2")]
2732    pub name: ::prost::alloc::string::String,
2733    #[prost(string, tag="3")]
2734    pub world: ::prost::alloc::string::String,
2735    #[prost(message, optional, tag="4")]
2736    pub item: ::core::option::Option<ItemStack>,
2737}
2738#[allow(clippy::derive_partial_eq_without_eq)]
2739#[derive(Clone, PartialEq, ::prost::Message)]
2740pub struct PlayerAttackEntityEvent {
2741    #[prost(string, tag="1")]
2742    pub player_uuid: ::prost::alloc::string::String,
2743    #[prost(string, tag="2")]
2744    pub name: ::prost::alloc::string::String,
2745    #[prost(string, tag="3")]
2746    pub world: ::prost::alloc::string::String,
2747    #[prost(message, optional, tag="4")]
2748    pub entity: ::core::option::Option<EntityRef>,
2749    #[prost(double, tag="5")]
2750    pub force: f64,
2751    #[prost(double, tag="6")]
2752    pub height: f64,
2753    #[prost(bool, tag="7")]
2754    pub critical: bool,
2755    #[prost(message, optional, tag="8")]
2756    pub item: ::core::option::Option<ItemStack>,
2757}
2758#[allow(clippy::derive_partial_eq_without_eq)]
2759#[derive(Clone, PartialEq, ::prost::Message)]
2760pub struct PlayerExperienceGainEvent {
2761    #[prost(string, tag="1")]
2762    pub player_uuid: ::prost::alloc::string::String,
2763    #[prost(string, tag="2")]
2764    pub name: ::prost::alloc::string::String,
2765    #[prost(string, tag="3")]
2766    pub world: ::prost::alloc::string::String,
2767    #[prost(int32, tag="4")]
2768    pub amount: i32,
2769}
2770#[allow(clippy::derive_partial_eq_without_eq)]
2771#[derive(Clone, PartialEq, ::prost::Message)]
2772pub struct PlayerPunchAirEvent {
2773    #[prost(string, tag="1")]
2774    pub player_uuid: ::prost::alloc::string::String,
2775    #[prost(string, tag="2")]
2776    pub name: ::prost::alloc::string::String,
2777    #[prost(string, tag="3")]
2778    pub world: ::prost::alloc::string::String,
2779}
2780#[allow(clippy::derive_partial_eq_without_eq)]
2781#[derive(Clone, PartialEq, ::prost::Message)]
2782pub struct PlayerSignEditEvent {
2783    #[prost(string, tag="1")]
2784    pub player_uuid: ::prost::alloc::string::String,
2785    #[prost(string, tag="2")]
2786    pub name: ::prost::alloc::string::String,
2787    #[prost(string, tag="3")]
2788    pub world: ::prost::alloc::string::String,
2789    #[prost(message, optional, tag="4")]
2790    pub position: ::core::option::Option<BlockPos>,
2791    #[prost(bool, tag="5")]
2792    pub front_side: bool,
2793    #[prost(string, tag="6")]
2794    pub old_text: ::prost::alloc::string::String,
2795    #[prost(string, tag="7")]
2796    pub new_text: ::prost::alloc::string::String,
2797}
2798#[allow(clippy::derive_partial_eq_without_eq)]
2799#[derive(Clone, PartialEq, ::prost::Message)]
2800pub struct PlayerLecternPageTurnEvent {
2801    #[prost(string, tag="1")]
2802    pub player_uuid: ::prost::alloc::string::String,
2803    #[prost(string, tag="2")]
2804    pub name: ::prost::alloc::string::String,
2805    #[prost(string, tag="3")]
2806    pub world: ::prost::alloc::string::String,
2807    #[prost(message, optional, tag="4")]
2808    pub position: ::core::option::Option<BlockPos>,
2809    #[prost(int32, tag="5")]
2810    pub old_page: i32,
2811    #[prost(int32, tag="6")]
2812    pub new_page: i32,
2813}
2814#[allow(clippy::derive_partial_eq_without_eq)]
2815#[derive(Clone, PartialEq, ::prost::Message)]
2816pub struct PlayerItemDamageEvent {
2817    #[prost(string, tag="1")]
2818    pub player_uuid: ::prost::alloc::string::String,
2819    #[prost(string, tag="2")]
2820    pub name: ::prost::alloc::string::String,
2821    #[prost(string, tag="3")]
2822    pub world: ::prost::alloc::string::String,
2823    #[prost(message, optional, tag="4")]
2824    pub item: ::core::option::Option<ItemStack>,
2825    #[prost(int32, tag="5")]
2826    pub damage: i32,
2827}
2828#[allow(clippy::derive_partial_eq_without_eq)]
2829#[derive(Clone, PartialEq, ::prost::Message)]
2830pub struct PlayerItemPickupEvent {
2831    #[prost(string, tag="1")]
2832    pub player_uuid: ::prost::alloc::string::String,
2833    #[prost(string, tag="2")]
2834    pub name: ::prost::alloc::string::String,
2835    #[prost(string, tag="3")]
2836    pub world: ::prost::alloc::string::String,
2837    #[prost(message, optional, tag="4")]
2838    pub item: ::core::option::Option<ItemStack>,
2839}
2840#[allow(clippy::derive_partial_eq_without_eq)]
2841#[derive(Clone, PartialEq, ::prost::Message)]
2842pub struct PlayerHeldSlotChangeEvent {
2843    #[prost(string, tag="1")]
2844    pub player_uuid: ::prost::alloc::string::String,
2845    #[prost(string, tag="2")]
2846    pub name: ::prost::alloc::string::String,
2847    #[prost(string, tag="3")]
2848    pub world: ::prost::alloc::string::String,
2849    #[prost(int32, tag="4")]
2850    pub from_slot: i32,
2851    #[prost(int32, tag="5")]
2852    pub to_slot: i32,
2853}
2854#[allow(clippy::derive_partial_eq_without_eq)]
2855#[derive(Clone, PartialEq, ::prost::Message)]
2856pub struct PlayerItemDropEvent {
2857    #[prost(string, tag="1")]
2858    pub player_uuid: ::prost::alloc::string::String,
2859    #[prost(string, tag="2")]
2860    pub name: ::prost::alloc::string::String,
2861    #[prost(string, tag="3")]
2862    pub world: ::prost::alloc::string::String,
2863    #[prost(message, optional, tag="4")]
2864    pub item: ::core::option::Option<ItemStack>,
2865}
2866#[allow(clippy::derive_partial_eq_without_eq)]
2867#[derive(Clone, PartialEq, ::prost::Message)]
2868pub struct PlayerTransferEvent {
2869    #[prost(string, tag="1")]
2870    pub player_uuid: ::prost::alloc::string::String,
2871    #[prost(string, tag="2")]
2872    pub name: ::prost::alloc::string::String,
2873    #[prost(message, optional, tag="3")]
2874    pub address: ::core::option::Option<Address>,
2875}
2876#[allow(clippy::derive_partial_eq_without_eq)]
2877#[derive(Clone, PartialEq, ::prost::Message)]
2878pub struct PlayerDiagnosticsEvent {
2879    #[prost(string, tag="1")]
2880    pub player_uuid: ::prost::alloc::string::String,
2881    #[prost(string, tag="2")]
2882    pub name: ::prost::alloc::string::String,
2883    #[prost(double, tag="3")]
2884    pub average_frames_per_second: f64,
2885    #[prost(double, tag="4")]
2886    pub average_server_sim_tick_time: f64,
2887    #[prost(double, tag="5")]
2888    pub average_client_sim_tick_time: f64,
2889    #[prost(double, tag="6")]
2890    pub average_begin_frame_time: f64,
2891    #[prost(double, tag="7")]
2892    pub average_input_time: f64,
2893    #[prost(double, tag="8")]
2894    pub average_render_time: f64,
2895    #[prost(double, tag="9")]
2896    pub average_end_frame_time: f64,
2897    #[prost(double, tag="10")]
2898    pub average_remainder_time_percent: f64,
2899    #[prost(double, tag="11")]
2900    pub average_unaccounted_time_percent: f64,
2901}
2902#[allow(clippy::derive_partial_eq_without_eq)]
2903#[derive(Clone, PartialEq, ::prost::Message)]
2904pub struct WorldLiquidFlowEvent {
2905    #[prost(message, optional, tag="1")]
2906    pub world: ::core::option::Option<WorldRef>,
2907    #[prost(message, optional, tag="2")]
2908    pub from: ::core::option::Option<BlockPos>,
2909    #[prost(message, optional, tag="3")]
2910    pub to: ::core::option::Option<BlockPos>,
2911    #[prost(message, optional, tag="4")]
2912    pub liquid: ::core::option::Option<LiquidState>,
2913    #[prost(message, optional, tag="5")]
2914    pub replaced: ::core::option::Option<BlockState>,
2915}
2916#[allow(clippy::derive_partial_eq_without_eq)]
2917#[derive(Clone, PartialEq, ::prost::Message)]
2918pub struct WorldLiquidDecayEvent {
2919    #[prost(message, optional, tag="1")]
2920    pub world: ::core::option::Option<WorldRef>,
2921    #[prost(message, optional, tag="2")]
2922    pub position: ::core::option::Option<BlockPos>,
2923    #[prost(message, optional, tag="3")]
2924    pub before: ::core::option::Option<LiquidState>,
2925    #[prost(message, optional, tag="4")]
2926    pub after: ::core::option::Option<LiquidState>,
2927}
2928#[allow(clippy::derive_partial_eq_without_eq)]
2929#[derive(Clone, PartialEq, ::prost::Message)]
2930pub struct WorldLiquidHardenEvent {
2931    #[prost(message, optional, tag="1")]
2932    pub world: ::core::option::Option<WorldRef>,
2933    #[prost(message, optional, tag="2")]
2934    pub position: ::core::option::Option<BlockPos>,
2935    #[prost(message, optional, tag="3")]
2936    pub liquid_hardened: ::core::option::Option<LiquidState>,
2937    #[prost(message, optional, tag="4")]
2938    pub other_liquid: ::core::option::Option<LiquidState>,
2939    #[prost(message, optional, tag="5")]
2940    pub new_block: ::core::option::Option<BlockState>,
2941}
2942#[allow(clippy::derive_partial_eq_without_eq)]
2943#[derive(Clone, PartialEq, ::prost::Message)]
2944pub struct WorldSoundEvent {
2945    #[prost(message, optional, tag="1")]
2946    pub world: ::core::option::Option<WorldRef>,
2947    #[prost(string, tag="2")]
2948    pub sound: ::prost::alloc::string::String,
2949    #[prost(message, optional, tag="3")]
2950    pub position: ::core::option::Option<Vec3>,
2951}
2952#[allow(clippy::derive_partial_eq_without_eq)]
2953#[derive(Clone, PartialEq, ::prost::Message)]
2954pub struct WorldFireSpreadEvent {
2955    #[prost(message, optional, tag="1")]
2956    pub world: ::core::option::Option<WorldRef>,
2957    #[prost(message, optional, tag="2")]
2958    pub from: ::core::option::Option<BlockPos>,
2959    #[prost(message, optional, tag="3")]
2960    pub to: ::core::option::Option<BlockPos>,
2961}
2962#[allow(clippy::derive_partial_eq_without_eq)]
2963#[derive(Clone, PartialEq, ::prost::Message)]
2964pub struct WorldBlockBurnEvent {
2965    #[prost(message, optional, tag="1")]
2966    pub world: ::core::option::Option<WorldRef>,
2967    #[prost(message, optional, tag="2")]
2968    pub position: ::core::option::Option<BlockPos>,
2969}
2970#[allow(clippy::derive_partial_eq_without_eq)]
2971#[derive(Clone, PartialEq, ::prost::Message)]
2972pub struct WorldCropTrampleEvent {
2973    #[prost(message, optional, tag="1")]
2974    pub world: ::core::option::Option<WorldRef>,
2975    #[prost(message, optional, tag="2")]
2976    pub position: ::core::option::Option<BlockPos>,
2977}
2978#[allow(clippy::derive_partial_eq_without_eq)]
2979#[derive(Clone, PartialEq, ::prost::Message)]
2980pub struct WorldLeavesDecayEvent {
2981    #[prost(message, optional, tag="1")]
2982    pub world: ::core::option::Option<WorldRef>,
2983    #[prost(message, optional, tag="2")]
2984    pub position: ::core::option::Option<BlockPos>,
2985}
2986#[allow(clippy::derive_partial_eq_without_eq)]
2987#[derive(Clone, PartialEq, ::prost::Message)]
2988pub struct WorldEntitySpawnEvent {
2989    #[prost(message, optional, tag="1")]
2990    pub world: ::core::option::Option<WorldRef>,
2991    #[prost(message, optional, tag="2")]
2992    pub entity: ::core::option::Option<EntityRef>,
2993}
2994#[allow(clippy::derive_partial_eq_without_eq)]
2995#[derive(Clone, PartialEq, ::prost::Message)]
2996pub struct WorldEntityDespawnEvent {
2997    #[prost(message, optional, tag="1")]
2998    pub world: ::core::option::Option<WorldRef>,
2999    #[prost(message, optional, tag="2")]
3000    pub entity: ::core::option::Option<EntityRef>,
3001}
3002#[allow(clippy::derive_partial_eq_without_eq)]
3003#[derive(Clone, PartialEq, ::prost::Message)]
3004pub struct WorldExplosionEvent {
3005    #[prost(message, optional, tag="1")]
3006    pub world: ::core::option::Option<WorldRef>,
3007    #[prost(message, optional, tag="2")]
3008    pub position: ::core::option::Option<Vec3>,
3009    #[prost(message, repeated, tag="3")]
3010    pub affected_entities: ::prost::alloc::vec::Vec<EntityRef>,
3011    #[prost(message, repeated, tag="4")]
3012    pub affected_blocks: ::prost::alloc::vec::Vec<BlockPos>,
3013    #[prost(double, tag="5")]
3014    pub item_drop_chance: f64,
3015    #[prost(bool, tag="6")]
3016    pub spawn_fire: bool,
3017}
3018#[allow(clippy::derive_partial_eq_without_eq)]
3019#[derive(Clone, PartialEq, ::prost::Message)]
3020pub struct WorldCloseEvent {
3021    #[prost(message, optional, tag="1")]
3022    pub world: ::core::option::Option<WorldRef>,
3023}
3024#[allow(clippy::derive_partial_eq_without_eq)]
3025#[derive(Clone, PartialEq, ::prost::Message)]
3026pub struct HostToPlugin {
3027    #[prost(string, tag="1")]
3028    pub plugin_id: ::prost::alloc::string::String,
3029    #[prost(oneof="host_to_plugin::Payload", tags="10, 11, 12, 20, 21")]
3030    pub payload: ::core::option::Option<host_to_plugin::Payload>,
3031}
3032/// Nested message and enum types in `HostToPlugin`.
3033pub mod host_to_plugin {
3034    #[allow(clippy::derive_partial_eq_without_eq)]
3035#[derive(Clone, PartialEq, ::prost::Oneof)]
3036    pub enum Payload {
3037        #[prost(message, tag="10")]
3038        Hello(super::HostHello),
3039        #[prost(message, tag="11")]
3040        Shutdown(super::HostShutdown),
3041        #[prost(message, tag="12")]
3042        ServerInfo(super::ServerInformationResponse),
3043        #[prost(message, tag="20")]
3044        Event(super::EventEnvelope),
3045        #[prost(message, tag="21")]
3046        ActionResult(super::ActionResult),
3047    }
3048}
3049#[allow(clippy::derive_partial_eq_without_eq)]
3050#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3051pub struct ServerInformationRequest {
3052}
3053#[allow(clippy::derive_partial_eq_without_eq)]
3054#[derive(Clone, PartialEq, ::prost::Message)]
3055pub struct ServerInformationResponse {
3056    #[prost(string, repeated, tag="1")]
3057    pub plugins: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3058}
3059#[allow(clippy::derive_partial_eq_without_eq)]
3060#[derive(Clone, PartialEq, ::prost::Message)]
3061pub struct HostHello {
3062    #[prost(string, tag="1")]
3063    pub api_version: ::prost::alloc::string::String,
3064    /// Used for auto reload to distinguish between startup and reload
3065    #[prost(string, tag="2")]
3066    pub boot_id: ::prost::alloc::string::String,
3067}
3068#[allow(clippy::derive_partial_eq_without_eq)]
3069#[derive(Clone, PartialEq, ::prost::Message)]
3070pub struct HostShutdown {
3071    #[prost(string, tag="1")]
3072    pub reason: ::prost::alloc::string::String,
3073}
3074#[allow(clippy::derive_partial_eq_without_eq)]
3075#[derive(Clone, PartialEq, ::prost::Message)]
3076pub struct EventEnvelope {
3077    #[prost(string, tag="1")]
3078    pub event_id: ::prost::alloc::string::String,
3079    #[prost(enumeration="EventType", tag="2")]
3080    pub r#type: i32,
3081    /// If an event can be cancelled or mutated it expects an acknowledgement.
3082    #[prost(bool, tag="3")]
3083    pub expects_response: bool,
3084    #[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")]
3085    pub payload: ::core::option::Option<event_envelope::Payload>,
3086}
3087/// Nested message and enum types in `EventEnvelope`.
3088pub mod event_envelope {
3089    #[allow(clippy::derive_partial_eq_without_eq)]
3090#[derive(Clone, PartialEq, ::prost::Oneof)]
3091    pub enum Payload {
3092        #[prost(message, tag="10")]
3093        PlayerJoin(super::PlayerJoinEvent),
3094        #[prost(message, tag="11")]
3095        PlayerQuit(super::PlayerQuitEvent),
3096        #[prost(message, tag="12")]
3097        PlayerMove(super::PlayerMoveEvent),
3098        #[prost(message, tag="13")]
3099        PlayerJump(super::PlayerJumpEvent),
3100        #[prost(message, tag="14")]
3101        PlayerTeleport(super::PlayerTeleportEvent),
3102        #[prost(message, tag="15")]
3103        PlayerChangeWorld(super::PlayerChangeWorldEvent),
3104        #[prost(message, tag="16")]
3105        PlayerToggleSprint(super::PlayerToggleSprintEvent),
3106        #[prost(message, tag="17")]
3107        PlayerToggleSneak(super::PlayerToggleSneakEvent),
3108        #[prost(message, tag="18")]
3109        Chat(super::ChatEvent),
3110        #[prost(message, tag="19")]
3111        PlayerFoodLoss(super::PlayerFoodLossEvent),
3112        #[prost(message, tag="20")]
3113        PlayerHeal(super::PlayerHealEvent),
3114        #[prost(message, tag="21")]
3115        PlayerHurt(super::PlayerHurtEvent),
3116        #[prost(message, tag="22")]
3117        PlayerDeath(super::PlayerDeathEvent),
3118        #[prost(message, tag="23")]
3119        PlayerRespawn(super::PlayerRespawnEvent),
3120        #[prost(message, tag="24")]
3121        PlayerSkinChange(super::PlayerSkinChangeEvent),
3122        #[prost(message, tag="25")]
3123        PlayerFireExtinguish(super::PlayerFireExtinguishEvent),
3124        #[prost(message, tag="26")]
3125        PlayerStartBreak(super::PlayerStartBreakEvent),
3126        #[prost(message, tag="27")]
3127        BlockBreak(super::BlockBreakEvent),
3128        #[prost(message, tag="28")]
3129        PlayerBlockPlace(super::PlayerBlockPlaceEvent),
3130        #[prost(message, tag="29")]
3131        PlayerBlockPick(super::PlayerBlockPickEvent),
3132        #[prost(message, tag="30")]
3133        PlayerItemUse(super::PlayerItemUseEvent),
3134        #[prost(message, tag="31")]
3135        PlayerItemUseOnBlock(super::PlayerItemUseOnBlockEvent),
3136        #[prost(message, tag="32")]
3137        PlayerItemUseOnEntity(super::PlayerItemUseOnEntityEvent),
3138        #[prost(message, tag="33")]
3139        PlayerItemRelease(super::PlayerItemReleaseEvent),
3140        #[prost(message, tag="34")]
3141        PlayerItemConsume(super::PlayerItemConsumeEvent),
3142        #[prost(message, tag="35")]
3143        PlayerAttackEntity(super::PlayerAttackEntityEvent),
3144        #[prost(message, tag="36")]
3145        PlayerExperienceGain(super::PlayerExperienceGainEvent),
3146        #[prost(message, tag="37")]
3147        PlayerPunchAir(super::PlayerPunchAirEvent),
3148        #[prost(message, tag="38")]
3149        PlayerSignEdit(super::PlayerSignEditEvent),
3150        #[prost(message, tag="39")]
3151        PlayerLecternPageTurn(super::PlayerLecternPageTurnEvent),
3152        #[prost(message, tag="40")]
3153        PlayerItemDamage(super::PlayerItemDamageEvent),
3154        #[prost(message, tag="41")]
3155        PlayerItemPickup(super::PlayerItemPickupEvent),
3156        #[prost(message, tag="42")]
3157        PlayerHeldSlotChange(super::PlayerHeldSlotChangeEvent),
3158        #[prost(message, tag="43")]
3159        PlayerItemDrop(super::PlayerItemDropEvent),
3160        #[prost(message, tag="44")]
3161        PlayerTransfer(super::PlayerTransferEvent),
3162        #[prost(message, tag="45")]
3163        Command(super::CommandEvent),
3164        #[prost(message, tag="46")]
3165        PlayerDiagnostics(super::PlayerDiagnosticsEvent),
3166        #[prost(message, tag="70")]
3167        WorldLiquidFlow(super::WorldLiquidFlowEvent),
3168        #[prost(message, tag="71")]
3169        WorldLiquidDecay(super::WorldLiquidDecayEvent),
3170        #[prost(message, tag="72")]
3171        WorldLiquidHarden(super::WorldLiquidHardenEvent),
3172        #[prost(message, tag="73")]
3173        WorldSound(super::WorldSoundEvent),
3174        #[prost(message, tag="74")]
3175        WorldFireSpread(super::WorldFireSpreadEvent),
3176        #[prost(message, tag="75")]
3177        WorldBlockBurn(super::WorldBlockBurnEvent),
3178        #[prost(message, tag="76")]
3179        WorldCropTrample(super::WorldCropTrampleEvent),
3180        #[prost(message, tag="77")]
3181        WorldLeavesDecay(super::WorldLeavesDecayEvent),
3182        #[prost(message, tag="78")]
3183        WorldEntitySpawn(super::WorldEntitySpawnEvent),
3184        #[prost(message, tag="79")]
3185        WorldEntityDespawn(super::WorldEntityDespawnEvent),
3186        #[prost(message, tag="80")]
3187        WorldExplosion(super::WorldExplosionEvent),
3188        #[prost(message, tag="81")]
3189        WorldClose(super::WorldCloseEvent),
3190    }
3191}
3192#[allow(clippy::derive_partial_eq_without_eq)]
3193#[derive(Clone, PartialEq, ::prost::Message)]
3194pub struct PluginToHost {
3195    #[prost(string, tag="1")]
3196    pub plugin_id: ::prost::alloc::string::String,
3197    #[prost(oneof="plugin_to_host::Payload", tags="10, 11, 12, 20, 30, 40")]
3198    pub payload: ::core::option::Option<plugin_to_host::Payload>,
3199}
3200/// Nested message and enum types in `PluginToHost`.
3201pub mod plugin_to_host {
3202    #[allow(clippy::derive_partial_eq_without_eq)]
3203#[derive(Clone, PartialEq, ::prost::Oneof)]
3204    pub enum Payload {
3205        #[prost(message, tag="10")]
3206        Hello(super::PluginHello),
3207        #[prost(message, tag="11")]
3208        Subscribe(super::EventSubscribe),
3209        #[prost(message, tag="12")]
3210        ServerInfo(super::ServerInformationRequest),
3211        #[prost(message, tag="20")]
3212        Actions(super::ActionBatch),
3213        #[prost(message, tag="30")]
3214        Log(super::LogMessage),
3215        #[prost(message, tag="40")]
3216        EventResult(super::EventResult),
3217    }
3218}
3219#[allow(clippy::derive_partial_eq_without_eq)]
3220#[derive(Clone, PartialEq, ::prost::Message)]
3221pub struct PluginHello {
3222    #[prost(string, tag="1")]
3223    pub name: ::prost::alloc::string::String,
3224    #[prost(string, tag="2")]
3225    pub version: ::prost::alloc::string::String,
3226    #[prost(string, tag="3")]
3227    pub api_version: ::prost::alloc::string::String,
3228    #[prost(message, repeated, tag="4")]
3229    pub commands: ::prost::alloc::vec::Vec<CommandSpec>,
3230    #[prost(message, repeated, tag="5")]
3231    pub custom_items: ::prost::alloc::vec::Vec<CustomItemDefinition>,
3232    #[prost(message, repeated, tag="6")]
3233    pub custom_blocks: ::prost::alloc::vec::Vec<CustomBlockDefinition>,
3234}
3235#[allow(clippy::derive_partial_eq_without_eq)]
3236#[derive(Clone, PartialEq, ::prost::Message)]
3237pub struct LogMessage {
3238    #[prost(string, tag="1")]
3239    pub level: ::prost::alloc::string::String,
3240    #[prost(string, tag="2")]
3241    pub message: ::prost::alloc::string::String,
3242}
3243#[allow(clippy::derive_partial_eq_without_eq)]
3244#[derive(Clone, PartialEq, ::prost::Message)]
3245pub struct EventSubscribe {
3246    #[prost(enumeration="EventType", repeated, tag="1")]
3247    pub events: ::prost::alloc::vec::Vec<i32>,
3248}
3249#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3250#[repr(i32)]
3251pub enum EventType {
3252    Unspecified = 0,
3253    All = 1,
3254    PlayerJoin = 10,
3255    PlayerQuit = 11,
3256    PlayerMove = 12,
3257    PlayerJump = 13,
3258    PlayerTeleport = 14,
3259    PlayerChangeWorld = 15,
3260    PlayerToggleSprint = 16,
3261    PlayerToggleSneak = 17,
3262    Chat = 18,
3263    PlayerFoodLoss = 19,
3264    PlayerHeal = 20,
3265    PlayerHurt = 21,
3266    PlayerDeath = 22,
3267    PlayerRespawn = 23,
3268    PlayerSkinChange = 24,
3269    PlayerFireExtinguish = 25,
3270    PlayerStartBreak = 26,
3271    PlayerBlockBreak = 27,
3272    PlayerBlockPlace = 28,
3273    PlayerBlockPick = 29,
3274    PlayerItemUse = 30,
3275    PlayerItemUseOnBlock = 31,
3276    PlayerItemUseOnEntity = 32,
3277    PlayerItemRelease = 33,
3278    PlayerItemConsume = 34,
3279    PlayerAttackEntity = 35,
3280    PlayerExperienceGain = 36,
3281    PlayerPunchAir = 37,
3282    PlayerSignEdit = 38,
3283    PlayerLecternPageTurn = 39,
3284    PlayerItemDamage = 40,
3285    PlayerItemPickup = 41,
3286    PlayerHeldSlotChange = 42,
3287    PlayerItemDrop = 43,
3288    PlayerTransfer = 44,
3289    Command = 45,
3290    PlayerDiagnostics = 46,
3291    WorldLiquidFlow = 70,
3292    WorldLiquidDecay = 71,
3293    WorldLiquidHarden = 72,
3294    WorldSound = 73,
3295    WorldFireSpread = 74,
3296    WorldBlockBurn = 75,
3297    WorldCropTrample = 76,
3298    WorldLeavesDecay = 77,
3299    WorldEntitySpawn = 78,
3300    WorldEntityDespawn = 79,
3301    WorldExplosion = 80,
3302    WorldClose = 81,
3303}
3304impl EventType {
3305    /// String value of the enum field names used in the ProtoBuf definition.
3306    ///
3307    /// The values are not transformed in any way and thus are considered stable
3308    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3309    pub fn as_str_name(&self) -> &'static str {
3310        match self {
3311            EventType::Unspecified => "EVENT_TYPE_UNSPECIFIED",
3312            EventType::All => "EVENT_TYPE_ALL",
3313            EventType::PlayerJoin => "PLAYER_JOIN",
3314            EventType::PlayerQuit => "PLAYER_QUIT",
3315            EventType::PlayerMove => "PLAYER_MOVE",
3316            EventType::PlayerJump => "PLAYER_JUMP",
3317            EventType::PlayerTeleport => "PLAYER_TELEPORT",
3318            EventType::PlayerChangeWorld => "PLAYER_CHANGE_WORLD",
3319            EventType::PlayerToggleSprint => "PLAYER_TOGGLE_SPRINT",
3320            EventType::PlayerToggleSneak => "PLAYER_TOGGLE_SNEAK",
3321            EventType::Chat => "CHAT",
3322            EventType::PlayerFoodLoss => "PLAYER_FOOD_LOSS",
3323            EventType::PlayerHeal => "PLAYER_HEAL",
3324            EventType::PlayerHurt => "PLAYER_HURT",
3325            EventType::PlayerDeath => "PLAYER_DEATH",
3326            EventType::PlayerRespawn => "PLAYER_RESPAWN",
3327            EventType::PlayerSkinChange => "PLAYER_SKIN_CHANGE",
3328            EventType::PlayerFireExtinguish => "PLAYER_FIRE_EXTINGUISH",
3329            EventType::PlayerStartBreak => "PLAYER_START_BREAK",
3330            EventType::PlayerBlockBreak => "PLAYER_BLOCK_BREAK",
3331            EventType::PlayerBlockPlace => "PLAYER_BLOCK_PLACE",
3332            EventType::PlayerBlockPick => "PLAYER_BLOCK_PICK",
3333            EventType::PlayerItemUse => "PLAYER_ITEM_USE",
3334            EventType::PlayerItemUseOnBlock => "PLAYER_ITEM_USE_ON_BLOCK",
3335            EventType::PlayerItemUseOnEntity => "PLAYER_ITEM_USE_ON_ENTITY",
3336            EventType::PlayerItemRelease => "PLAYER_ITEM_RELEASE",
3337            EventType::PlayerItemConsume => "PLAYER_ITEM_CONSUME",
3338            EventType::PlayerAttackEntity => "PLAYER_ATTACK_ENTITY",
3339            EventType::PlayerExperienceGain => "PLAYER_EXPERIENCE_GAIN",
3340            EventType::PlayerPunchAir => "PLAYER_PUNCH_AIR",
3341            EventType::PlayerSignEdit => "PLAYER_SIGN_EDIT",
3342            EventType::PlayerLecternPageTurn => "PLAYER_LECTERN_PAGE_TURN",
3343            EventType::PlayerItemDamage => "PLAYER_ITEM_DAMAGE",
3344            EventType::PlayerItemPickup => "PLAYER_ITEM_PICKUP",
3345            EventType::PlayerHeldSlotChange => "PLAYER_HELD_SLOT_CHANGE",
3346            EventType::PlayerItemDrop => "PLAYER_ITEM_DROP",
3347            EventType::PlayerTransfer => "PLAYER_TRANSFER",
3348            EventType::Command => "COMMAND",
3349            EventType::PlayerDiagnostics => "PLAYER_DIAGNOSTICS",
3350            EventType::WorldLiquidFlow => "WORLD_LIQUID_FLOW",
3351            EventType::WorldLiquidDecay => "WORLD_LIQUID_DECAY",
3352            EventType::WorldLiquidHarden => "WORLD_LIQUID_HARDEN",
3353            EventType::WorldSound => "WORLD_SOUND",
3354            EventType::WorldFireSpread => "WORLD_FIRE_SPREAD",
3355            EventType::WorldBlockBurn => "WORLD_BLOCK_BURN",
3356            EventType::WorldCropTrample => "WORLD_CROP_TRAMPLE",
3357            EventType::WorldLeavesDecay => "WORLD_LEAVES_DECAY",
3358            EventType::WorldEntitySpawn => "WORLD_ENTITY_SPAWN",
3359            EventType::WorldEntityDespawn => "WORLD_ENTITY_DESPAWN",
3360            EventType::WorldExplosion => "WORLD_EXPLOSION",
3361            EventType::WorldClose => "WORLD_CLOSE",
3362        }
3363    }
3364    /// Creates an enum from field names used in the ProtoBuf definition.
3365    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3366        match value {
3367            "EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3368            "EVENT_TYPE_ALL" => Some(Self::All),
3369            "PLAYER_JOIN" => Some(Self::PlayerJoin),
3370            "PLAYER_QUIT" => Some(Self::PlayerQuit),
3371            "PLAYER_MOVE" => Some(Self::PlayerMove),
3372            "PLAYER_JUMP" => Some(Self::PlayerJump),
3373            "PLAYER_TELEPORT" => Some(Self::PlayerTeleport),
3374            "PLAYER_CHANGE_WORLD" => Some(Self::PlayerChangeWorld),
3375            "PLAYER_TOGGLE_SPRINT" => Some(Self::PlayerToggleSprint),
3376            "PLAYER_TOGGLE_SNEAK" => Some(Self::PlayerToggleSneak),
3377            "CHAT" => Some(Self::Chat),
3378            "PLAYER_FOOD_LOSS" => Some(Self::PlayerFoodLoss),
3379            "PLAYER_HEAL" => Some(Self::PlayerHeal),
3380            "PLAYER_HURT" => Some(Self::PlayerHurt),
3381            "PLAYER_DEATH" => Some(Self::PlayerDeath),
3382            "PLAYER_RESPAWN" => Some(Self::PlayerRespawn),
3383            "PLAYER_SKIN_CHANGE" => Some(Self::PlayerSkinChange),
3384            "PLAYER_FIRE_EXTINGUISH" => Some(Self::PlayerFireExtinguish),
3385            "PLAYER_START_BREAK" => Some(Self::PlayerStartBreak),
3386            "PLAYER_BLOCK_BREAK" => Some(Self::PlayerBlockBreak),
3387            "PLAYER_BLOCK_PLACE" => Some(Self::PlayerBlockPlace),
3388            "PLAYER_BLOCK_PICK" => Some(Self::PlayerBlockPick),
3389            "PLAYER_ITEM_USE" => Some(Self::PlayerItemUse),
3390            "PLAYER_ITEM_USE_ON_BLOCK" => Some(Self::PlayerItemUseOnBlock),
3391            "PLAYER_ITEM_USE_ON_ENTITY" => Some(Self::PlayerItemUseOnEntity),
3392            "PLAYER_ITEM_RELEASE" => Some(Self::PlayerItemRelease),
3393            "PLAYER_ITEM_CONSUME" => Some(Self::PlayerItemConsume),
3394            "PLAYER_ATTACK_ENTITY" => Some(Self::PlayerAttackEntity),
3395            "PLAYER_EXPERIENCE_GAIN" => Some(Self::PlayerExperienceGain),
3396            "PLAYER_PUNCH_AIR" => Some(Self::PlayerPunchAir),
3397            "PLAYER_SIGN_EDIT" => Some(Self::PlayerSignEdit),
3398            "PLAYER_LECTERN_PAGE_TURN" => Some(Self::PlayerLecternPageTurn),
3399            "PLAYER_ITEM_DAMAGE" => Some(Self::PlayerItemDamage),
3400            "PLAYER_ITEM_PICKUP" => Some(Self::PlayerItemPickup),
3401            "PLAYER_HELD_SLOT_CHANGE" => Some(Self::PlayerHeldSlotChange),
3402            "PLAYER_ITEM_DROP" => Some(Self::PlayerItemDrop),
3403            "PLAYER_TRANSFER" => Some(Self::PlayerTransfer),
3404            "COMMAND" => Some(Self::Command),
3405            "PLAYER_DIAGNOSTICS" => Some(Self::PlayerDiagnostics),
3406            "WORLD_LIQUID_FLOW" => Some(Self::WorldLiquidFlow),
3407            "WORLD_LIQUID_DECAY" => Some(Self::WorldLiquidDecay),
3408            "WORLD_LIQUID_HARDEN" => Some(Self::WorldLiquidHarden),
3409            "WORLD_SOUND" => Some(Self::WorldSound),
3410            "WORLD_FIRE_SPREAD" => Some(Self::WorldFireSpread),
3411            "WORLD_BLOCK_BURN" => Some(Self::WorldBlockBurn),
3412            "WORLD_CROP_TRAMPLE" => Some(Self::WorldCropTrample),
3413            "WORLD_LEAVES_DECAY" => Some(Self::WorldLeavesDecay),
3414            "WORLD_ENTITY_SPAWN" => Some(Self::WorldEntitySpawn),
3415            "WORLD_ENTITY_DESPAWN" => Some(Self::WorldEntityDespawn),
3416            "WORLD_EXPLOSION" => Some(Self::WorldExplosion),
3417            "WORLD_CLOSE" => Some(Self::WorldClose),
3418            _ => None,
3419        }
3420    }
3421}
3422include!("df.plugin.tonic.rs");
3423// @@protoc_insertion_point(module)