1use crate::dimension_type::{
2 DimensionType, DimensionTypeRegistry, MonsterSpawnLightLevel, BedRule, BedRuleValue,
3 MoodSound, MusicEntry, BackgroundMusic,
4};
5use steel_utils::Identifier;
6use std::borrow::Cow;
7pub static OVERWORLD: DimensionType = DimensionType {
8 key: Identifier::vanilla_static("overworld"),
9 fixed_time: None,
10 has_skylight: true,
11 has_ceiling: false,
12 coordinate_scale: 1f64,
13 min_y: -64i32,
14 height: 384i32,
15 logical_height: 384i32,
16 infiniburn: "#minecraft:infiniburn_overworld",
17 ambient_light: 0f32,
18 default_clock: Some(&crate::vanilla_world_clocks::OVERWORLD),
19 timelines: Some("#minecraft:in_overworld"),
20 has_ender_dragon_fight: false,
21 monster_spawn_light_level: MonsterSpawnLightLevel::Complex {
22 distribution_type: "minecraft:uniform",
23 min_inclusive: 0i32,
24 max_inclusive: 7i32,
25 },
26 monster_spawn_block_light_limit: 0i32,
27 skybox: None,
28 cardinal_light: None,
29 sky_color: Some("#78a7ff"),
30 fog_color: Some("#c0d8ff"),
31 cloud_color: Some("#ccffffff"),
32 cloud_height: Some(192.33f32),
33 ambient_light_color: Some("#0a0a0a"),
34 sky_light_color: None,
35 sky_light_factor: None,
36 fog_start_distance: None,
37 fog_end_distance: None,
38 default_dripstone_particle: None,
39 respawn_anchor_works: false,
40 can_start_raid: true,
41 fast_lava: false,
42 piglins_zombify: true,
43 sky_light_level: None,
44 snow_golem_melts: false,
45 water_evaporates: false,
46 nether_portal_spawns_piglin: true,
47 bed_rule: BedRule {
48 can_set_spawn: BedRuleValue::Always,
49 can_sleep: BedRuleValue::WhenDark,
50 destroy_on_use: false,
51 destroy_on_leave: false,
52 error_message_key: Some("block.minecraft.bed.no_sleep"),
53 error_message: Some(|| {
54 steel_utils::translations::BLOCK_MINECRAFT_BED_NO_SLEEP.msg().component()
55 }),
56 },
57 straw_bed_rule: BedRule {
58 can_set_spawn: BedRuleValue::Never,
59 can_sleep: BedRuleValue::WhenDark,
60 destroy_on_use: false,
61 destroy_on_leave: true,
62 error_message_key: Some("block.minecraft.bed.no_sleep"),
63 error_message: Some(|| {
64 steel_utils::translations::BLOCK_MINECRAFT_BED_NO_SLEEP.msg().component()
65 }),
66 },
67 mood_sound: Some(MoodSound {
68 sound: &crate::sound_events::AMBIENT_CAVE,
69 tick_delay: 6000i32,
70 block_search_extent: 8i32,
71 offset: 2f64,
72 }),
73 background_music: Some(BackgroundMusic {
74 default: MusicEntry {
75 sound: &crate::sound_events::MUSIC_GAME,
76 min_delay: 12000i32,
77 max_delay: 24000i32,
78 replace_current_music: false,
79 },
80 creative: Some(MusicEntry {
81 sound: &crate::sound_events::MUSIC_CREATIVE,
82 min_delay: 12000i32,
83 max_delay: 24000i32,
84 replace_current_music: false,
85 }),
86 }),
87};
88pub static OVERWORLD_CAVES: DimensionType = DimensionType {
89 key: Identifier::vanilla_static("overworld_caves"),
90 fixed_time: None,
91 has_skylight: true,
92 has_ceiling: true,
93 coordinate_scale: 1f64,
94 min_y: -64i32,
95 height: 384i32,
96 logical_height: 384i32,
97 infiniburn: "#minecraft:infiniburn_overworld",
98 ambient_light: 0f32,
99 default_clock: Some(&crate::vanilla_world_clocks::OVERWORLD),
100 timelines: Some("#minecraft:in_overworld"),
101 has_ender_dragon_fight: false,
102 monster_spawn_light_level: MonsterSpawnLightLevel::Complex {
103 distribution_type: "minecraft:uniform",
104 min_inclusive: 0i32,
105 max_inclusive: 7i32,
106 },
107 monster_spawn_block_light_limit: 0i32,
108 skybox: None,
109 cardinal_light: None,
110 sky_color: Some("#78a7ff"),
111 fog_color: Some("#c0d8ff"),
112 cloud_color: Some("#ccffffff"),
113 cloud_height: Some(192.33f32),
114 ambient_light_color: Some("#0a0a0a"),
115 sky_light_color: None,
116 sky_light_factor: None,
117 fog_start_distance: None,
118 fog_end_distance: None,
119 default_dripstone_particle: None,
120 respawn_anchor_works: false,
121 can_start_raid: true,
122 fast_lava: false,
123 piglins_zombify: true,
124 sky_light_level: None,
125 snow_golem_melts: false,
126 water_evaporates: false,
127 nether_portal_spawns_piglin: true,
128 bed_rule: BedRule {
129 can_set_spawn: BedRuleValue::Always,
130 can_sleep: BedRuleValue::WhenDark,
131 destroy_on_use: false,
132 destroy_on_leave: false,
133 error_message_key: Some("block.minecraft.bed.no_sleep"),
134 error_message: Some(|| {
135 steel_utils::translations::BLOCK_MINECRAFT_BED_NO_SLEEP.msg().component()
136 }),
137 },
138 straw_bed_rule: BedRule {
139 can_set_spawn: BedRuleValue::Never,
140 can_sleep: BedRuleValue::WhenDark,
141 destroy_on_use: false,
142 destroy_on_leave: true,
143 error_message_key: Some("block.minecraft.bed.no_sleep"),
144 error_message: Some(|| {
145 steel_utils::translations::BLOCK_MINECRAFT_BED_NO_SLEEP.msg().component()
146 }),
147 },
148 mood_sound: Some(MoodSound {
149 sound: &crate::sound_events::AMBIENT_CAVE,
150 tick_delay: 6000i32,
151 block_search_extent: 8i32,
152 offset: 2f64,
153 }),
154 background_music: Some(BackgroundMusic {
155 default: MusicEntry {
156 sound: &crate::sound_events::MUSIC_GAME,
157 min_delay: 12000i32,
158 max_delay: 24000i32,
159 replace_current_music: false,
160 },
161 creative: Some(MusicEntry {
162 sound: &crate::sound_events::MUSIC_CREATIVE,
163 min_delay: 12000i32,
164 max_delay: 24000i32,
165 replace_current_music: false,
166 }),
167 }),
168};
169pub static THE_END: DimensionType = DimensionType {
170 key: Identifier::vanilla_static("the_end"),
171 fixed_time: Some(6000i64),
172 has_skylight: true,
173 has_ceiling: false,
174 coordinate_scale: 1f64,
175 min_y: 0i32,
176 height: 256i32,
177 logical_height: 256i32,
178 infiniburn: "#minecraft:infiniburn_end",
179 ambient_light: 0.25f32,
180 default_clock: Some(&crate::vanilla_world_clocks::THE_END),
181 timelines: Some("#minecraft:in_end"),
182 has_ender_dragon_fight: true,
183 monster_spawn_light_level: MonsterSpawnLightLevel::Simple(15i32),
184 monster_spawn_block_light_limit: 0i32,
185 skybox: Some("end"),
186 cardinal_light: None,
187 sky_color: Some("#000000"),
188 fog_color: Some("#181318"),
189 cloud_color: None,
190 cloud_height: None,
191 ambient_light_color: Some("#3f473f"),
192 sky_light_color: Some("#ac60cd"),
193 sky_light_factor: Some(0f32),
194 fog_start_distance: None,
195 fog_end_distance: None,
196 default_dripstone_particle: None,
197 respawn_anchor_works: false,
198 can_start_raid: true,
199 fast_lava: false,
200 piglins_zombify: true,
201 sky_light_level: None,
202 snow_golem_melts: false,
203 water_evaporates: false,
204 nether_portal_spawns_piglin: false,
205 bed_rule: BedRule {
206 can_set_spawn: BedRuleValue::Never,
207 can_sleep: BedRuleValue::Never,
208 destroy_on_use: true,
209 destroy_on_leave: false,
210 error_message_key: None,
211 error_message: None,
212 },
213 straw_bed_rule: BedRule {
214 can_set_spawn: BedRuleValue::Never,
215 can_sleep: BedRuleValue::Never,
216 destroy_on_use: true,
217 destroy_on_leave: false,
218 error_message_key: None,
219 error_message: None,
220 },
221 mood_sound: Some(MoodSound {
222 sound: &crate::sound_events::AMBIENT_CAVE,
223 tick_delay: 6000i32,
224 block_search_extent: 8i32,
225 offset: 2f64,
226 }),
227 background_music: Some(BackgroundMusic {
228 default: MusicEntry {
229 sound: &crate::sound_events::MUSIC_END,
230 min_delay: 6000i32,
231 max_delay: 24000i32,
232 replace_current_music: true,
233 },
234 creative: None,
235 }),
236};
237pub static THE_NETHER: DimensionType = DimensionType {
238 key: Identifier::vanilla_static("the_nether"),
239 fixed_time: Some(18000i64),
240 has_skylight: false,
241 has_ceiling: true,
242 coordinate_scale: 8f64,
243 min_y: 0i32,
244 height: 256i32,
245 logical_height: 128i32,
246 infiniburn: "#minecraft:infiniburn_nether",
247 ambient_light: 0.1f32,
248 default_clock: None,
249 timelines: Some("#minecraft:in_nether"),
250 has_ender_dragon_fight: false,
251 monster_spawn_light_level: MonsterSpawnLightLevel::Simple(7i32),
252 monster_spawn_block_light_limit: 15i32,
253 skybox: Some("none"),
254 cardinal_light: Some("nether"),
255 sky_color: None,
256 fog_color: None,
257 cloud_color: None,
258 cloud_height: None,
259 ambient_light_color: Some("#302821"),
260 sky_light_color: Some("#7a7aff"),
261 sky_light_factor: Some(0f32),
262 fog_start_distance: Some(10f32),
263 fog_end_distance: Some(96f32),
264 default_dripstone_particle: Some("minecraft:dripping_dripstone_lava"),
265 respawn_anchor_works: true,
266 can_start_raid: false,
267 fast_lava: true,
268 piglins_zombify: false,
269 sky_light_level: Some(4f32),
270 snow_golem_melts: true,
271 water_evaporates: true,
272 nether_portal_spawns_piglin: false,
273 bed_rule: BedRule {
274 can_set_spawn: BedRuleValue::Never,
275 can_sleep: BedRuleValue::Never,
276 destroy_on_use: true,
277 destroy_on_leave: false,
278 error_message_key: None,
279 error_message: None,
280 },
281 straw_bed_rule: BedRule {
282 can_set_spawn: BedRuleValue::Never,
283 can_sleep: BedRuleValue::Never,
284 destroy_on_use: true,
285 destroy_on_leave: false,
286 error_message_key: None,
287 error_message: None,
288 },
289 mood_sound: None,
290 background_music: None,
291};
292pub fn register_dimension_types(registry: &mut DimensionTypeRegistry) {
293 registry.register(&OVERWORLD);
294 registry.register(&OVERWORLD_CAVES);
295 registry.register(&THE_END);
296 registry.register(&THE_NETHER);
297}