1use crate::game_rules::{GameRule, GameRuleRegistry, GameRuleCategory};
2use steel_utils::Identifier;
3pub static ADVANCE_TIME: GameRule<bool> = GameRule::boolean(
4 Identifier::vanilla_static("advance_time"),
5 GameRuleCategory::Updates,
6 true,
7);
8pub static ADVANCE_WEATHER: GameRule<bool> = GameRule::boolean(
9 Identifier::vanilla_static("advance_weather"),
10 GameRuleCategory::Updates,
11 true,
12);
13pub static ALLOW_ENTERING_NETHER_USING_PORTALS: GameRule<bool> = GameRule::boolean(
14 Identifier::vanilla_static("allow_entering_nether_using_portals"),
15 GameRuleCategory::Misc,
16 true,
17);
18pub static BLOCK_DROPS: GameRule<bool> = GameRule::boolean(
19 Identifier::vanilla_static("block_drops"),
20 GameRuleCategory::Drops,
21 true,
22);
23pub static BLOCK_EXPLOSION_DROP_DECAY: GameRule<bool> = GameRule::boolean(
24 Identifier::vanilla_static("block_explosion_drop_decay"),
25 GameRuleCategory::Drops,
26 true,
27);
28pub static COMMAND_BLOCKS_WORK: GameRule<bool> = GameRule::boolean(
29 Identifier::vanilla_static("command_blocks_work"),
30 GameRuleCategory::Misc,
31 true,
32);
33pub static COMMAND_BLOCK_OUTPUT: GameRule<bool> = GameRule::boolean(
34 Identifier::vanilla_static("command_block_output"),
35 GameRuleCategory::Chat,
36 true,
37);
38pub static DROWNING_DAMAGE: GameRule<bool> = GameRule::boolean(
39 Identifier::vanilla_static("drowning_damage"),
40 GameRuleCategory::Player,
41 true,
42);
43pub static ELYTRA_MOVEMENT_CHECK: GameRule<bool> = GameRule::boolean(
44 Identifier::vanilla_static("elytra_movement_check"),
45 GameRuleCategory::Player,
46 true,
47);
48pub static ENDER_PEARLS_VANISH_ON_DEATH: GameRule<bool> = GameRule::boolean(
49 Identifier::vanilla_static("ender_pearls_vanish_on_death"),
50 GameRuleCategory::Player,
51 true,
52);
53pub static ENTITY_DROPS: GameRule<bool> = GameRule::boolean(
54 Identifier::vanilla_static("entity_drops"),
55 GameRuleCategory::Drops,
56 true,
57);
58pub static FALL_DAMAGE: GameRule<bool> = GameRule::boolean(
59 Identifier::vanilla_static("fall_damage"),
60 GameRuleCategory::Player,
61 true,
62);
63pub static FIRE_DAMAGE: GameRule<bool> = GameRule::boolean(
64 Identifier::vanilla_static("fire_damage"),
65 GameRuleCategory::Player,
66 true,
67);
68pub static FIRE_SPREAD_RADIUS_AROUND_PLAYER: GameRule<i32> = GameRule::integer(
69 Identifier::vanilla_static("fire_spread_radius_around_player"),
70 GameRuleCategory::Updates,
71 128i32,
72 Some(-1i32),
73 None,
74);
75pub static FORGIVE_DEAD_PLAYERS: GameRule<bool> = GameRule::boolean(
76 Identifier::vanilla_static("forgive_dead_players"),
77 GameRuleCategory::Mobs,
78 true,
79);
80pub static FREEZE_DAMAGE: GameRule<bool> = GameRule::boolean(
81 Identifier::vanilla_static("freeze_damage"),
82 GameRuleCategory::Player,
83 true,
84);
85pub static GLOBAL_SOUND_EVENTS: GameRule<bool> = GameRule::boolean(
86 Identifier::vanilla_static("global_sound_events"),
87 GameRuleCategory::Misc,
88 true,
89);
90pub static IMMEDIATE_RESPAWN: GameRule<bool> = GameRule::boolean(
91 Identifier::vanilla_static("immediate_respawn"),
92 GameRuleCategory::Player,
93 false,
94);
95pub static KEEP_INVENTORY: GameRule<bool> = GameRule::boolean(
96 Identifier::vanilla_static("keep_inventory"),
97 GameRuleCategory::Player,
98 false,
99);
100pub static LAVA_SOURCE_CONVERSION: GameRule<bool> = GameRule::boolean(
101 Identifier::vanilla_static("lava_source_conversion"),
102 GameRuleCategory::Updates,
103 false,
104);
105pub static LIMITED_CRAFTING: GameRule<bool> = GameRule::boolean(
106 Identifier::vanilla_static("limited_crafting"),
107 GameRuleCategory::Player,
108 false,
109);
110pub static LOCATOR_BAR: GameRule<bool> = GameRule::boolean(
111 Identifier::vanilla_static("locator_bar"),
112 GameRuleCategory::Player,
113 true,
114);
115pub static LOG_ADMIN_COMMANDS: GameRule<bool> = GameRule::boolean(
116 Identifier::vanilla_static("log_admin_commands"),
117 GameRuleCategory::Chat,
118 true,
119);
120pub static MAX_BLOCK_MODIFICATIONS: GameRule<i32> = GameRule::integer(
121 Identifier::vanilla_static("max_block_modifications"),
122 GameRuleCategory::Misc,
123 32768i32,
124 Some(1i32),
125 None,
126);
127pub static MAX_COMMAND_FORKS: GameRule<i32> = GameRule::integer(
128 Identifier::vanilla_static("max_command_forks"),
129 GameRuleCategory::Misc,
130 65536i32,
131 Some(0i32),
132 None,
133);
134pub static MAX_COMMAND_SEQUENCE_LENGTH: GameRule<i32> = GameRule::integer(
135 Identifier::vanilla_static("max_command_sequence_length"),
136 GameRuleCategory::Misc,
137 65536i32,
138 Some(0i32),
139 None,
140);
141pub static MAX_ENTITY_CRAMMING: GameRule<i32> = GameRule::integer(
142 Identifier::vanilla_static("max_entity_cramming"),
143 GameRuleCategory::Mobs,
144 24i32,
145 Some(0i32),
146 None,
147);
148pub static MAX_MINECART_SPEED: GameRule<i32> = GameRule::integer(
149 Identifier::vanilla_static("max_minecart_speed"),
150 GameRuleCategory::Misc,
151 8i32,
152 Some(1i32),
153 Some(1000i32),
154);
155pub static MAX_SNOW_ACCUMULATION_HEIGHT: GameRule<i32> = GameRule::integer(
156 Identifier::vanilla_static("max_snow_accumulation_height"),
157 GameRuleCategory::Updates,
158 1i32,
159 Some(0i32),
160 Some(8i32),
161);
162pub static MOB_DROPS: GameRule<bool> = GameRule::boolean(
163 Identifier::vanilla_static("mob_drops"),
164 GameRuleCategory::Drops,
165 true,
166);
167pub static MOB_EXPLOSION_DROP_DECAY: GameRule<bool> = GameRule::boolean(
168 Identifier::vanilla_static("mob_explosion_drop_decay"),
169 GameRuleCategory::Drops,
170 true,
171);
172pub static MOB_GRIEFING: GameRule<bool> = GameRule::boolean(
173 Identifier::vanilla_static("mob_griefing"),
174 GameRuleCategory::Mobs,
175 true,
176);
177pub static NATURAL_HEALTH_REGENERATION: GameRule<bool> = GameRule::boolean(
178 Identifier::vanilla_static("natural_health_regeneration"),
179 GameRuleCategory::Player,
180 true,
181);
182pub static PLAYER_MOVEMENT_CHECK: GameRule<bool> = GameRule::boolean(
183 Identifier::vanilla_static("player_movement_check"),
184 GameRuleCategory::Player,
185 true,
186);
187pub static PLAYERS_NETHER_PORTAL_CREATIVE_DELAY: GameRule<i32> = GameRule::integer(
188 Identifier::vanilla_static("players_nether_portal_creative_delay"),
189 GameRuleCategory::Player,
190 0i32,
191 Some(0i32),
192 None,
193);
194pub static PLAYERS_NETHER_PORTAL_DEFAULT_DELAY: GameRule<i32> = GameRule::integer(
195 Identifier::vanilla_static("players_nether_portal_default_delay"),
196 GameRuleCategory::Player,
197 80i32,
198 Some(0i32),
199 None,
200);
201pub static PLAYERS_SLEEPING_PERCENTAGE: GameRule<i32> = GameRule::integer(
202 Identifier::vanilla_static("players_sleeping_percentage"),
203 GameRuleCategory::Player,
204 100i32,
205 Some(0i32),
206 None,
207);
208pub static PROJECTILES_CAN_BREAK_BLOCKS: GameRule<bool> = GameRule::boolean(
209 Identifier::vanilla_static("projectiles_can_break_blocks"),
210 GameRuleCategory::Drops,
211 true,
212);
213pub static PVP: GameRule<bool> = GameRule::boolean(
214 Identifier::vanilla_static("pvp"),
215 GameRuleCategory::Player,
216 true,
217);
218pub static RAIDS: GameRule<bool> = GameRule::boolean(
219 Identifier::vanilla_static("raids"),
220 GameRuleCategory::Mobs,
221 true,
222);
223pub static RANDOM_TICK_SPEED: GameRule<i32> = GameRule::integer(
224 Identifier::vanilla_static("random_tick_speed"),
225 GameRuleCategory::Updates,
226 3i32,
227 Some(0i32),
228 None,
229);
230pub static REDUCED_DEBUG_INFO: GameRule<bool> = GameRule::boolean(
231 Identifier::vanilla_static("reduced_debug_info"),
232 GameRuleCategory::Misc,
233 false,
234);
235pub static RESPAWN_RADIUS: GameRule<i32> = GameRule::integer(
236 Identifier::vanilla_static("respawn_radius"),
237 GameRuleCategory::Player,
238 10i32,
239 Some(0i32),
240 None,
241);
242pub static SEND_COMMAND_FEEDBACK: GameRule<bool> = GameRule::boolean(
243 Identifier::vanilla_static("send_command_feedback"),
244 GameRuleCategory::Chat,
245 true,
246);
247pub static SHOW_ADVANCEMENT_MESSAGES: GameRule<bool> = GameRule::boolean(
248 Identifier::vanilla_static("show_advancement_messages"),
249 GameRuleCategory::Chat,
250 true,
251);
252pub static SHOW_DEATH_MESSAGES: GameRule<bool> = GameRule::boolean(
253 Identifier::vanilla_static("show_death_messages"),
254 GameRuleCategory::Chat,
255 true,
256);
257pub static SPAWNER_BLOCKS_WORK: GameRule<bool> = GameRule::boolean(
258 Identifier::vanilla_static("spawner_blocks_work"),
259 GameRuleCategory::Misc,
260 true,
261);
262pub static SPAWN_MOBS: GameRule<bool> = GameRule::boolean(
263 Identifier::vanilla_static("spawn_mobs"),
264 GameRuleCategory::Spawning,
265 true,
266);
267pub static SPAWN_MONSTERS: GameRule<bool> = GameRule::boolean(
268 Identifier::vanilla_static("spawn_monsters"),
269 GameRuleCategory::Spawning,
270 true,
271);
272pub static SPAWN_PATROLS: GameRule<bool> = GameRule::boolean(
273 Identifier::vanilla_static("spawn_patrols"),
274 GameRuleCategory::Spawning,
275 true,
276);
277pub static SPAWN_PHANTOMS: GameRule<bool> = GameRule::boolean(
278 Identifier::vanilla_static("spawn_phantoms"),
279 GameRuleCategory::Spawning,
280 true,
281);
282pub static SPAWN_WANDERING_TRADERS: GameRule<bool> = GameRule::boolean(
283 Identifier::vanilla_static("spawn_wandering_traders"),
284 GameRuleCategory::Spawning,
285 true,
286);
287pub static SPAWN_WARDENS: GameRule<bool> = GameRule::boolean(
288 Identifier::vanilla_static("spawn_wardens"),
289 GameRuleCategory::Spawning,
290 true,
291);
292pub static SPECTATORS_GENERATE_CHUNKS: GameRule<bool> = GameRule::boolean(
293 Identifier::vanilla_static("spectators_generate_chunks"),
294 GameRuleCategory::Player,
295 true,
296);
297pub static SPREAD_VINES: GameRule<bool> = GameRule::boolean(
298 Identifier::vanilla_static("spread_vines"),
299 GameRuleCategory::Updates,
300 true,
301);
302pub static TNT_EXPLODES: GameRule<bool> = GameRule::boolean(
303 Identifier::vanilla_static("tnt_explodes"),
304 GameRuleCategory::Misc,
305 true,
306);
307pub static TNT_EXPLOSION_DROP_DECAY: GameRule<bool> = GameRule::boolean(
308 Identifier::vanilla_static("tnt_explosion_drop_decay"),
309 GameRuleCategory::Drops,
310 false,
311);
312pub static UNIVERSAL_ANGER: GameRule<bool> = GameRule::boolean(
313 Identifier::vanilla_static("universal_anger"),
314 GameRuleCategory::Mobs,
315 false,
316);
317pub static WATER_SOURCE_CONVERSION: GameRule<bool> = GameRule::boolean(
318 Identifier::vanilla_static("water_source_conversion"),
319 GameRuleCategory::Updates,
320 true,
321);
322pub fn register_game_rules(registry: &mut GameRuleRegistry) {
323 registry.register(&ADVANCE_TIME);
324 registry.register(&ADVANCE_WEATHER);
325 registry.register(&ALLOW_ENTERING_NETHER_USING_PORTALS);
326 registry.register(&BLOCK_DROPS);
327 registry.register(&BLOCK_EXPLOSION_DROP_DECAY);
328 registry.register(&COMMAND_BLOCKS_WORK);
329 registry.register(&COMMAND_BLOCK_OUTPUT);
330 registry.register(&DROWNING_DAMAGE);
331 registry.register(&ELYTRA_MOVEMENT_CHECK);
332 registry.register(&ENDER_PEARLS_VANISH_ON_DEATH);
333 registry.register(&ENTITY_DROPS);
334 registry.register(&FALL_DAMAGE);
335 registry.register(&FIRE_DAMAGE);
336 registry.register(&FIRE_SPREAD_RADIUS_AROUND_PLAYER);
337 registry.register(&FORGIVE_DEAD_PLAYERS);
338 registry.register(&FREEZE_DAMAGE);
339 registry.register(&GLOBAL_SOUND_EVENTS);
340 registry.register(&IMMEDIATE_RESPAWN);
341 registry.register(&KEEP_INVENTORY);
342 registry.register(&LAVA_SOURCE_CONVERSION);
343 registry.register(&LIMITED_CRAFTING);
344 registry.register(&LOCATOR_BAR);
345 registry.register(&LOG_ADMIN_COMMANDS);
346 registry.register(&MAX_BLOCK_MODIFICATIONS);
347 registry.register(&MAX_COMMAND_FORKS);
348 registry.register(&MAX_COMMAND_SEQUENCE_LENGTH);
349 registry.register(&MAX_ENTITY_CRAMMING);
350 registry.register(&MAX_MINECART_SPEED);
351 registry.register(&MAX_SNOW_ACCUMULATION_HEIGHT);
352 registry.register(&MOB_DROPS);
353 registry.register(&MOB_EXPLOSION_DROP_DECAY);
354 registry.register(&MOB_GRIEFING);
355 registry.register(&NATURAL_HEALTH_REGENERATION);
356 registry.register(&PLAYER_MOVEMENT_CHECK);
357 registry.register(&PLAYERS_NETHER_PORTAL_CREATIVE_DELAY);
358 registry.register(&PLAYERS_NETHER_PORTAL_DEFAULT_DELAY);
359 registry.register(&PLAYERS_SLEEPING_PERCENTAGE);
360 registry.register(&PROJECTILES_CAN_BREAK_BLOCKS);
361 registry.register(&PVP);
362 registry.register(&RAIDS);
363 registry.register(&RANDOM_TICK_SPEED);
364 registry.register(&REDUCED_DEBUG_INFO);
365 registry.register(&RESPAWN_RADIUS);
366 registry.register(&SEND_COMMAND_FEEDBACK);
367 registry.register(&SHOW_ADVANCEMENT_MESSAGES);
368 registry.register(&SHOW_DEATH_MESSAGES);
369 registry.register(&SPAWNER_BLOCKS_WORK);
370 registry.register(&SPAWN_MOBS);
371 registry.register(&SPAWN_MONSTERS);
372 registry.register(&SPAWN_PATROLS);
373 registry.register(&SPAWN_PHANTOMS);
374 registry.register(&SPAWN_WANDERING_TRADERS);
375 registry.register(&SPAWN_WARDENS);
376 registry.register(&SPECTATORS_GENERATE_CHUNKS);
377 registry.register(&SPREAD_VINES);
378 registry.register(&TNT_EXPLODES);
379 registry.register(&TNT_EXPLOSION_DROP_DECAY);
380 registry.register(&UNIVERSAL_ANGER);
381 registry.register(&WATER_SOURCE_CONVERSION);
382}