1use crate::game_rules::{
2 GameRule, GameRuleCategory, GameRuleRegistry, GameRuleType, GameRuleValue,
3};
4use steel_utils::Identifier;
5pub static ADVANCE_TIME: GameRule = GameRule {
6 key: Identifier::vanilla_static("advance_time"),
7 category: GameRuleCategory::Updates,
8 value_type: GameRuleType::Bool,
9 default_value: GameRuleValue::Bool(true),
10 min_value: None,
11 max_value: None,
12};
13pub static ADVANCE_WEATHER: GameRule = GameRule {
14 key: Identifier::vanilla_static("advance_weather"),
15 category: GameRuleCategory::Updates,
16 value_type: GameRuleType::Bool,
17 default_value: GameRuleValue::Bool(true),
18 min_value: None,
19 max_value: None,
20};
21pub static ALLOW_ENTERING_NETHER_USING_PORTALS: GameRule = GameRule {
22 key: Identifier::vanilla_static("allow_entering_nether_using_portals"),
23 category: GameRuleCategory::Misc,
24 value_type: GameRuleType::Bool,
25 default_value: GameRuleValue::Bool(true),
26 min_value: None,
27 max_value: None,
28};
29pub static BLOCK_DROPS: GameRule = GameRule {
30 key: Identifier::vanilla_static("block_drops"),
31 category: GameRuleCategory::Drops,
32 value_type: GameRuleType::Bool,
33 default_value: GameRuleValue::Bool(true),
34 min_value: None,
35 max_value: None,
36};
37pub static BLOCK_EXPLOSION_DROP_DECAY: GameRule = GameRule {
38 key: Identifier::vanilla_static("block_explosion_drop_decay"),
39 category: GameRuleCategory::Drops,
40 value_type: GameRuleType::Bool,
41 default_value: GameRuleValue::Bool(true),
42 min_value: None,
43 max_value: None,
44};
45pub static COMMAND_BLOCKS_WORK: GameRule = GameRule {
46 key: Identifier::vanilla_static("command_blocks_work"),
47 category: GameRuleCategory::Misc,
48 value_type: GameRuleType::Bool,
49 default_value: GameRuleValue::Bool(true),
50 min_value: None,
51 max_value: None,
52};
53pub static COMMAND_BLOCK_OUTPUT: GameRule = GameRule {
54 key: Identifier::vanilla_static("command_block_output"),
55 category: GameRuleCategory::Chat,
56 value_type: GameRuleType::Bool,
57 default_value: GameRuleValue::Bool(true),
58 min_value: None,
59 max_value: None,
60};
61pub static DROWNING_DAMAGE: GameRule = GameRule {
62 key: Identifier::vanilla_static("drowning_damage"),
63 category: GameRuleCategory::Player,
64 value_type: GameRuleType::Bool,
65 default_value: GameRuleValue::Bool(true),
66 min_value: None,
67 max_value: None,
68};
69pub static ELYTRA_MOVEMENT_CHECK: GameRule = GameRule {
70 key: Identifier::vanilla_static("elytra_movement_check"),
71 category: GameRuleCategory::Player,
72 value_type: GameRuleType::Bool,
73 default_value: GameRuleValue::Bool(true),
74 min_value: None,
75 max_value: None,
76};
77pub static ENDER_PEARLS_VANISH_ON_DEATH: GameRule = GameRule {
78 key: Identifier::vanilla_static("ender_pearls_vanish_on_death"),
79 category: GameRuleCategory::Player,
80 value_type: GameRuleType::Bool,
81 default_value: GameRuleValue::Bool(true),
82 min_value: None,
83 max_value: None,
84};
85pub static ENTITY_DROPS: GameRule = GameRule {
86 key: Identifier::vanilla_static("entity_drops"),
87 category: GameRuleCategory::Drops,
88 value_type: GameRuleType::Bool,
89 default_value: GameRuleValue::Bool(true),
90 min_value: None,
91 max_value: None,
92};
93pub static FALL_DAMAGE: GameRule = GameRule {
94 key: Identifier::vanilla_static("fall_damage"),
95 category: GameRuleCategory::Player,
96 value_type: GameRuleType::Bool,
97 default_value: GameRuleValue::Bool(true),
98 min_value: None,
99 max_value: None,
100};
101pub static FIRE_DAMAGE: GameRule = GameRule {
102 key: Identifier::vanilla_static("fire_damage"),
103 category: GameRuleCategory::Player,
104 value_type: GameRuleType::Bool,
105 default_value: GameRuleValue::Bool(true),
106 min_value: None,
107 max_value: None,
108};
109pub static FIRE_SPREAD_RADIUS_AROUND_PLAYER: GameRule = GameRule {
110 key: Identifier::vanilla_static("fire_spread_radius_around_player"),
111 category: GameRuleCategory::Updates,
112 value_type: GameRuleType::Int,
113 default_value: GameRuleValue::Int(128i32),
114 min_value: Some(-1i32),
115 max_value: None,
116};
117pub static FORGIVE_DEAD_PLAYERS: GameRule = GameRule {
118 key: Identifier::vanilla_static("forgive_dead_players"),
119 category: GameRuleCategory::Mobs,
120 value_type: GameRuleType::Bool,
121 default_value: GameRuleValue::Bool(true),
122 min_value: None,
123 max_value: None,
124};
125pub static FREEZE_DAMAGE: GameRule = GameRule {
126 key: Identifier::vanilla_static("freeze_damage"),
127 category: GameRuleCategory::Player,
128 value_type: GameRuleType::Bool,
129 default_value: GameRuleValue::Bool(true),
130 min_value: None,
131 max_value: None,
132};
133pub static GLOBAL_SOUND_EVENTS: GameRule = GameRule {
134 key: Identifier::vanilla_static("global_sound_events"),
135 category: GameRuleCategory::Misc,
136 value_type: GameRuleType::Bool,
137 default_value: GameRuleValue::Bool(true),
138 min_value: None,
139 max_value: None,
140};
141pub static IMMEDIATE_RESPAWN: GameRule = GameRule {
142 key: Identifier::vanilla_static("immediate_respawn"),
143 category: GameRuleCategory::Player,
144 value_type: GameRuleType::Bool,
145 default_value: GameRuleValue::Bool(false),
146 min_value: None,
147 max_value: None,
148};
149pub static KEEP_INVENTORY: GameRule = GameRule {
150 key: Identifier::vanilla_static("keep_inventory"),
151 category: GameRuleCategory::Player,
152 value_type: GameRuleType::Bool,
153 default_value: GameRuleValue::Bool(false),
154 min_value: None,
155 max_value: None,
156};
157pub static LAVA_SOURCE_CONVERSION: GameRule = GameRule {
158 key: Identifier::vanilla_static("lava_source_conversion"),
159 category: GameRuleCategory::Updates,
160 value_type: GameRuleType::Bool,
161 default_value: GameRuleValue::Bool(false),
162 min_value: None,
163 max_value: None,
164};
165pub static LIMITED_CRAFTING: GameRule = GameRule {
166 key: Identifier::vanilla_static("limited_crafting"),
167 category: GameRuleCategory::Player,
168 value_type: GameRuleType::Bool,
169 default_value: GameRuleValue::Bool(false),
170 min_value: None,
171 max_value: None,
172};
173pub static LOCATOR_BAR: GameRule = GameRule {
174 key: Identifier::vanilla_static("locator_bar"),
175 category: GameRuleCategory::Player,
176 value_type: GameRuleType::Bool,
177 default_value: GameRuleValue::Bool(true),
178 min_value: None,
179 max_value: None,
180};
181pub static LOG_ADMIN_COMMANDS: GameRule = GameRule {
182 key: Identifier::vanilla_static("log_admin_commands"),
183 category: GameRuleCategory::Chat,
184 value_type: GameRuleType::Bool,
185 default_value: GameRuleValue::Bool(true),
186 min_value: None,
187 max_value: None,
188};
189pub static MAX_BLOCK_MODIFICATIONS: GameRule = GameRule {
190 key: Identifier::vanilla_static("max_block_modifications"),
191 category: GameRuleCategory::Misc,
192 value_type: GameRuleType::Int,
193 default_value: GameRuleValue::Int(32768i32),
194 min_value: Some(1i32),
195 max_value: None,
196};
197pub static MAX_COMMAND_FORKS: GameRule = GameRule {
198 key: Identifier::vanilla_static("max_command_forks"),
199 category: GameRuleCategory::Misc,
200 value_type: GameRuleType::Int,
201 default_value: GameRuleValue::Int(65536i32),
202 min_value: Some(0i32),
203 max_value: None,
204};
205pub static MAX_COMMAND_SEQUENCE_LENGTH: GameRule = GameRule {
206 key: Identifier::vanilla_static("max_command_sequence_length"),
207 category: GameRuleCategory::Misc,
208 value_type: GameRuleType::Int,
209 default_value: GameRuleValue::Int(65536i32),
210 min_value: Some(0i32),
211 max_value: None,
212};
213pub static MAX_ENTITY_CRAMMING: GameRule = GameRule {
214 key: Identifier::vanilla_static("max_entity_cramming"),
215 category: GameRuleCategory::Mobs,
216 value_type: GameRuleType::Int,
217 default_value: GameRuleValue::Int(24i32),
218 min_value: Some(0i32),
219 max_value: None,
220};
221pub static MAX_MINECART_SPEED: GameRule = GameRule {
222 key: Identifier::vanilla_static("max_minecart_speed"),
223 category: GameRuleCategory::Misc,
224 value_type: GameRuleType::Int,
225 default_value: GameRuleValue::Int(8i32),
226 min_value: Some(1i32),
227 max_value: Some(1000i32),
228};
229pub static MAX_SNOW_ACCUMULATION_HEIGHT: GameRule = GameRule {
230 key: Identifier::vanilla_static("max_snow_accumulation_height"),
231 category: GameRuleCategory::Updates,
232 value_type: GameRuleType::Int,
233 default_value: GameRuleValue::Int(1i32),
234 min_value: Some(0i32),
235 max_value: Some(8i32),
236};
237pub static MOB_DROPS: GameRule = GameRule {
238 key: Identifier::vanilla_static("mob_drops"),
239 category: GameRuleCategory::Drops,
240 value_type: GameRuleType::Bool,
241 default_value: GameRuleValue::Bool(true),
242 min_value: None,
243 max_value: None,
244};
245pub static MOB_EXPLOSION_DROP_DECAY: GameRule = GameRule {
246 key: Identifier::vanilla_static("mob_explosion_drop_decay"),
247 category: GameRuleCategory::Drops,
248 value_type: GameRuleType::Bool,
249 default_value: GameRuleValue::Bool(true),
250 min_value: None,
251 max_value: None,
252};
253pub static MOB_GRIEFING: GameRule = GameRule {
254 key: Identifier::vanilla_static("mob_griefing"),
255 category: GameRuleCategory::Mobs,
256 value_type: GameRuleType::Bool,
257 default_value: GameRuleValue::Bool(true),
258 min_value: None,
259 max_value: None,
260};
261pub static NATURAL_HEALTH_REGENERATION: GameRule = GameRule {
262 key: Identifier::vanilla_static("natural_health_regeneration"),
263 category: GameRuleCategory::Player,
264 value_type: GameRuleType::Bool,
265 default_value: GameRuleValue::Bool(true),
266 min_value: None,
267 max_value: None,
268};
269pub static PLAYER_MOVEMENT_CHECK: GameRule = GameRule {
270 key: Identifier::vanilla_static("player_movement_check"),
271 category: GameRuleCategory::Player,
272 value_type: GameRuleType::Bool,
273 default_value: GameRuleValue::Bool(true),
274 min_value: None,
275 max_value: None,
276};
277pub static PLAYERS_NETHER_PORTAL_CREATIVE_DELAY: GameRule = GameRule {
278 key: Identifier::vanilla_static("players_nether_portal_creative_delay"),
279 category: GameRuleCategory::Player,
280 value_type: GameRuleType::Int,
281 default_value: GameRuleValue::Int(0i32),
282 min_value: Some(0i32),
283 max_value: None,
284};
285pub static PLAYERS_NETHER_PORTAL_DEFAULT_DELAY: GameRule = GameRule {
286 key: Identifier::vanilla_static("players_nether_portal_default_delay"),
287 category: GameRuleCategory::Player,
288 value_type: GameRuleType::Int,
289 default_value: GameRuleValue::Int(80i32),
290 min_value: Some(0i32),
291 max_value: None,
292};
293pub static PLAYERS_SLEEPING_PERCENTAGE: GameRule = GameRule {
294 key: Identifier::vanilla_static("players_sleeping_percentage"),
295 category: GameRuleCategory::Player,
296 value_type: GameRuleType::Int,
297 default_value: GameRuleValue::Int(100i32),
298 min_value: Some(0i32),
299 max_value: None,
300};
301pub static PROJECTILES_CAN_BREAK_BLOCKS: GameRule = GameRule {
302 key: Identifier::vanilla_static("projectiles_can_break_blocks"),
303 category: GameRuleCategory::Drops,
304 value_type: GameRuleType::Bool,
305 default_value: GameRuleValue::Bool(true),
306 min_value: None,
307 max_value: None,
308};
309pub static PVP: GameRule = GameRule {
310 key: Identifier::vanilla_static("pvp"),
311 category: GameRuleCategory::Player,
312 value_type: GameRuleType::Bool,
313 default_value: GameRuleValue::Bool(true),
314 min_value: None,
315 max_value: None,
316};
317pub static RAIDS: GameRule = GameRule {
318 key: Identifier::vanilla_static("raids"),
319 category: GameRuleCategory::Mobs,
320 value_type: GameRuleType::Bool,
321 default_value: GameRuleValue::Bool(true),
322 min_value: None,
323 max_value: None,
324};
325pub static RANDOM_TICK_SPEED: GameRule = GameRule {
326 key: Identifier::vanilla_static("random_tick_speed"),
327 category: GameRuleCategory::Updates,
328 value_type: GameRuleType::Int,
329 default_value: GameRuleValue::Int(3i32),
330 min_value: Some(0i32),
331 max_value: None,
332};
333pub static REDUCED_DEBUG_INFO: GameRule = GameRule {
334 key: Identifier::vanilla_static("reduced_debug_info"),
335 category: GameRuleCategory::Misc,
336 value_type: GameRuleType::Bool,
337 default_value: GameRuleValue::Bool(false),
338 min_value: None,
339 max_value: None,
340};
341pub static RESPAWN_RADIUS: GameRule = GameRule {
342 key: Identifier::vanilla_static("respawn_radius"),
343 category: GameRuleCategory::Player,
344 value_type: GameRuleType::Int,
345 default_value: GameRuleValue::Int(10i32),
346 min_value: Some(0i32),
347 max_value: None,
348};
349pub static SEND_COMMAND_FEEDBACK: GameRule = GameRule {
350 key: Identifier::vanilla_static("send_command_feedback"),
351 category: GameRuleCategory::Chat,
352 value_type: GameRuleType::Bool,
353 default_value: GameRuleValue::Bool(true),
354 min_value: None,
355 max_value: None,
356};
357pub static SHOW_ADVANCEMENT_MESSAGES: GameRule = GameRule {
358 key: Identifier::vanilla_static("show_advancement_messages"),
359 category: GameRuleCategory::Chat,
360 value_type: GameRuleType::Bool,
361 default_value: GameRuleValue::Bool(true),
362 min_value: None,
363 max_value: None,
364};
365pub static SHOW_DEATH_MESSAGES: GameRule = GameRule {
366 key: Identifier::vanilla_static("show_death_messages"),
367 category: GameRuleCategory::Chat,
368 value_type: GameRuleType::Bool,
369 default_value: GameRuleValue::Bool(true),
370 min_value: None,
371 max_value: None,
372};
373pub static SPAWNER_BLOCKS_WORK: GameRule = GameRule {
374 key: Identifier::vanilla_static("spawner_blocks_work"),
375 category: GameRuleCategory::Misc,
376 value_type: GameRuleType::Bool,
377 default_value: GameRuleValue::Bool(true),
378 min_value: None,
379 max_value: None,
380};
381pub static SPAWN_MOBS: GameRule = GameRule {
382 key: Identifier::vanilla_static("spawn_mobs"),
383 category: GameRuleCategory::Spawning,
384 value_type: GameRuleType::Bool,
385 default_value: GameRuleValue::Bool(true),
386 min_value: None,
387 max_value: None,
388};
389pub static SPAWN_MONSTERS: GameRule = GameRule {
390 key: Identifier::vanilla_static("spawn_monsters"),
391 category: GameRuleCategory::Spawning,
392 value_type: GameRuleType::Bool,
393 default_value: GameRuleValue::Bool(true),
394 min_value: None,
395 max_value: None,
396};
397pub static SPAWN_PATROLS: GameRule = GameRule {
398 key: Identifier::vanilla_static("spawn_patrols"),
399 category: GameRuleCategory::Spawning,
400 value_type: GameRuleType::Bool,
401 default_value: GameRuleValue::Bool(true),
402 min_value: None,
403 max_value: None,
404};
405pub static SPAWN_PHANTOMS: GameRule = GameRule {
406 key: Identifier::vanilla_static("spawn_phantoms"),
407 category: GameRuleCategory::Spawning,
408 value_type: GameRuleType::Bool,
409 default_value: GameRuleValue::Bool(true),
410 min_value: None,
411 max_value: None,
412};
413pub static SPAWN_WANDERING_TRADERS: GameRule = GameRule {
414 key: Identifier::vanilla_static("spawn_wandering_traders"),
415 category: GameRuleCategory::Spawning,
416 value_type: GameRuleType::Bool,
417 default_value: GameRuleValue::Bool(true),
418 min_value: None,
419 max_value: None,
420};
421pub static SPAWN_WARDENS: GameRule = GameRule {
422 key: Identifier::vanilla_static("spawn_wardens"),
423 category: GameRuleCategory::Spawning,
424 value_type: GameRuleType::Bool,
425 default_value: GameRuleValue::Bool(true),
426 min_value: None,
427 max_value: None,
428};
429pub static SPECTATORS_GENERATE_CHUNKS: GameRule = GameRule {
430 key: Identifier::vanilla_static("spectators_generate_chunks"),
431 category: GameRuleCategory::Player,
432 value_type: GameRuleType::Bool,
433 default_value: GameRuleValue::Bool(true),
434 min_value: None,
435 max_value: None,
436};
437pub static SPREAD_VINES: GameRule = GameRule {
438 key: Identifier::vanilla_static("spread_vines"),
439 category: GameRuleCategory::Updates,
440 value_type: GameRuleType::Bool,
441 default_value: GameRuleValue::Bool(true),
442 min_value: None,
443 max_value: None,
444};
445pub static TNT_EXPLODES: GameRule = GameRule {
446 key: Identifier::vanilla_static("tnt_explodes"),
447 category: GameRuleCategory::Misc,
448 value_type: GameRuleType::Bool,
449 default_value: GameRuleValue::Bool(true),
450 min_value: None,
451 max_value: None,
452};
453pub static TNT_EXPLOSION_DROP_DECAY: GameRule = GameRule {
454 key: Identifier::vanilla_static("tnt_explosion_drop_decay"),
455 category: GameRuleCategory::Drops,
456 value_type: GameRuleType::Bool,
457 default_value: GameRuleValue::Bool(false),
458 min_value: None,
459 max_value: None,
460};
461pub static UNIVERSAL_ANGER: GameRule = GameRule {
462 key: Identifier::vanilla_static("universal_anger"),
463 category: GameRuleCategory::Mobs,
464 value_type: GameRuleType::Bool,
465 default_value: GameRuleValue::Bool(false),
466 min_value: None,
467 max_value: None,
468};
469pub static WATER_SOURCE_CONVERSION: GameRule = GameRule {
470 key: Identifier::vanilla_static("water_source_conversion"),
471 category: GameRuleCategory::Updates,
472 value_type: GameRuleType::Bool,
473 default_value: GameRuleValue::Bool(true),
474 min_value: None,
475 max_value: None,
476};
477pub fn register_game_rules(registry: &mut GameRuleRegistry) {
478 registry.register(&ADVANCE_TIME);
479 registry.register(&ADVANCE_WEATHER);
480 registry.register(&ALLOW_ENTERING_NETHER_USING_PORTALS);
481 registry.register(&BLOCK_DROPS);
482 registry.register(&BLOCK_EXPLOSION_DROP_DECAY);
483 registry.register(&COMMAND_BLOCKS_WORK);
484 registry.register(&COMMAND_BLOCK_OUTPUT);
485 registry.register(&DROWNING_DAMAGE);
486 registry.register(&ELYTRA_MOVEMENT_CHECK);
487 registry.register(&ENDER_PEARLS_VANISH_ON_DEATH);
488 registry.register(&ENTITY_DROPS);
489 registry.register(&FALL_DAMAGE);
490 registry.register(&FIRE_DAMAGE);
491 registry.register(&FIRE_SPREAD_RADIUS_AROUND_PLAYER);
492 registry.register(&FORGIVE_DEAD_PLAYERS);
493 registry.register(&FREEZE_DAMAGE);
494 registry.register(&GLOBAL_SOUND_EVENTS);
495 registry.register(&IMMEDIATE_RESPAWN);
496 registry.register(&KEEP_INVENTORY);
497 registry.register(&LAVA_SOURCE_CONVERSION);
498 registry.register(&LIMITED_CRAFTING);
499 registry.register(&LOCATOR_BAR);
500 registry.register(&LOG_ADMIN_COMMANDS);
501 registry.register(&MAX_BLOCK_MODIFICATIONS);
502 registry.register(&MAX_COMMAND_FORKS);
503 registry.register(&MAX_COMMAND_SEQUENCE_LENGTH);
504 registry.register(&MAX_ENTITY_CRAMMING);
505 registry.register(&MAX_MINECART_SPEED);
506 registry.register(&MAX_SNOW_ACCUMULATION_HEIGHT);
507 registry.register(&MOB_DROPS);
508 registry.register(&MOB_EXPLOSION_DROP_DECAY);
509 registry.register(&MOB_GRIEFING);
510 registry.register(&NATURAL_HEALTH_REGENERATION);
511 registry.register(&PLAYER_MOVEMENT_CHECK);
512 registry.register(&PLAYERS_NETHER_PORTAL_CREATIVE_DELAY);
513 registry.register(&PLAYERS_NETHER_PORTAL_DEFAULT_DELAY);
514 registry.register(&PLAYERS_SLEEPING_PERCENTAGE);
515 registry.register(&PROJECTILES_CAN_BREAK_BLOCKS);
516 registry.register(&PVP);
517 registry.register(&RAIDS);
518 registry.register(&RANDOM_TICK_SPEED);
519 registry.register(&REDUCED_DEBUG_INFO);
520 registry.register(&RESPAWN_RADIUS);
521 registry.register(&SEND_COMMAND_FEEDBACK);
522 registry.register(&SHOW_ADVANCEMENT_MESSAGES);
523 registry.register(&SHOW_DEATH_MESSAGES);
524 registry.register(&SPAWNER_BLOCKS_WORK);
525 registry.register(&SPAWN_MOBS);
526 registry.register(&SPAWN_MONSTERS);
527 registry.register(&SPAWN_PATROLS);
528 registry.register(&SPAWN_PHANTOMS);
529 registry.register(&SPAWN_WANDERING_TRADERS);
530 registry.register(&SPAWN_WARDENS);
531 registry.register(&SPECTATORS_GENERATE_CHUNKS);
532 registry.register(&SPREAD_VINES);
533 registry.register(&TNT_EXPLODES);
534 registry.register(&TNT_EXPLOSION_DROP_DECAY);
535 registry.register(&UNIVERSAL_ANGER);
536 registry.register(&WATER_SOURCE_CONVERSION);
537}