Skip to content

Commit 5c44227

Browse files
committed
Fix biome material condition + add more colors
1 parent 9bc1748 commit 5c44227

6 files changed

Lines changed: 174 additions & 137 deletions

File tree

‎package-lock.json‎

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"@zip.js/zip.js": "^2.4.5",
2626
"brace": "^0.11.1",
2727
"buffer": "^6.0.3",
28-
"deepslate": "0.27.0",
28+
"deepslate": "0.27.1",
2929
"deepslate-1.19": "npm:deepslate@0.26.1",
3030
"deepslate-1.18": "npm:deepslate@0.9.0-beta.9",
3131
"deepslate-1.18.2": "npm:deepslate@0.9.0",

‎src/app/Utils.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ export function getWeightedRandom<T>(random: Random, entries: T[], getWeight: (e
284284
return undefined
285285
}
286286

287-
export function iterateWorld2D<D>(img: ImageData, transform: mat3, getData: (x: number, y: number) => D, getColor: (d: D) => [number, number, number]) {
287+
export function iterateWorld2D<D>(img: ImageData, transform: mat3, getData: (x: number, y: number) => D, getColor: (d: D) => Color) {
288288
const pos = vec2.create()
289289
const arr = Array(img.width * img.height)
290290
for (let x = 0; x < img.width; x += 1) {

‎src/app/components/previews/BiomeSourcePreview.tsx‎

Lines changed: 113 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { mat3 } from 'gl-matrix'
22
import { useCallback, useRef, useState } from 'preact/hooks'
33
import { getWorldgenProjectData, useLocale, useProject, useStore, useVersion } from '../../contexts/index.js'
44
import { useAsync } from '../../hooks/index.js'
5-
import { iterateWorld2D, randomSeed, safeJsonParse, stringToColor } from '../../Utils.js'
5+
import type { Color } from '../../Utils.js'
6+
import { hexToRgb, iterateWorld2D, randomSeed, safeJsonParse, stringToColor } from '../../Utils.js'
67
import { ErrorPanel } from '../ErrorPanel.jsx'
78
import { Btn, BtnMenu, NumberInput } from '../index.js'
89
import { Deepslate } from './Deepslate.js'
@@ -121,9 +122,8 @@ export const BiomeSourcePreview = ({ docAndNode, shown }: PreviewProps) => {
121122
</>
122123
}
123124

124-
type Triple = [number, number, number]
125-
type BiomeColors = Record<string, Triple>
126-
function getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {
125+
type BiomeColors = Record<string, Color>
126+
function getBiomeColor(biome: string, biomeColors: BiomeColors): Color {
127127
if (!biome) {
128128
return [128, 128, 128]
129129
}
@@ -134,109 +134,113 @@ function getBiomeColor(biome: string, biomeColors: BiomeColors): Triple {
134134
return color
135135
}
136136

137-
export const VanillaColors: Record<string, Triple> = {
138-
'minecraft:badlands': [217,69,21],
139-
'minecraft:badlands_plateau': [202,140,101],
140-
'minecraft:bamboo_jungle': [118,142,20],
141-
'minecraft:bamboo_jungle_hills': [59,71,10],
142-
'minecraft:basalt_deltas': [64,54,54],
143-
'minecraft:beach': [250,222,85],
144-
'minecraft:birch_forest': [48,116,68],
145-
'minecraft:birch_forest_hills': [31,95,50],
146-
'minecraft:cold_ocean': [32,32,112],
147-
'minecraft:crimson_forest': [221,8,8],
148-
'minecraft:dark_forest': [64,81,26],
149-
'minecraft:dark_forest_hills': [104,121,66],
150-
'minecraft:deep_cold_ocean': [32,32,56],
151-
'minecraft:deep_frozen_ocean': [64,64,144],
152-
'minecraft:deep_lukewarm_ocean': [0,0,64],
153-
'minecraft:deep_ocean': [0,0,48],
154-
'minecraft:deep_warm_ocean': [0,0,80],
155-
'minecraft:desert': [250,148,24],
156-
'minecraft:desert_hills': [210,95,18],
157-
'minecraft:desert_lakes': [255,188,64],
158-
'minecraft:end_barrens': [39,30,61],
159-
'minecraft:end_highlands': [232,244,178],
160-
'minecraft:end_midlands': [194,187,136],
161-
'minecraft:eroded_badlands': [255,109,61],
162-
'minecraft:flower_forest': [45,142,73],
163-
'minecraft:forest': [5,102,33],
164-
'minecraft:frozen_ocean': [112,112,214],
165-
'minecraft:frozen_river': [160,160,255],
166-
'minecraft:giant_spruce_taiga': [129,142,121],
167-
'minecraft:old_growth_spruce_taiga': [129,142,121],
168-
'minecraft:giant_spruce_taiga_hills': [109,119,102],
169-
'minecraft:giant_tree_taiga': [89,102,81],
170-
'minecraft:old_growth_pine_taiga': [89,102,81],
171-
'minecraft:giant_tree_taiga_hills': [69,79,62],
172-
'minecraft:gravelly_hills': [136,136,136],
173-
'minecraft:gravelly_mountains': [136,136,136],
174-
'minecraft:windswept_gravelly_hills': [136,136,136],
175-
'minecraft:ice_spikes': [180,220,220],
176-
'minecraft:jungle': [83,123,9],
177-
'minecraft:jungle_edge': [98,139,23],
178-
'minecraft:sparse_jungle': [98,139,23],
179-
'minecraft:jungle_hills': [44,66,5],
180-
'minecraft:lukewarm_ocean': [0,0,144],
181-
'minecraft:modified_badlands_plateau': [242,180,141],
182-
'minecraft:modified_gravelly_mountains': [120,152,120],
183-
'minecraft:modified_jungle': [123,163,49],
184-
'minecraft:modified_jungle_edge': [138,179,63],
185-
'minecraft:modified_wooded_badlands_plateau': [216,191,141],
186-
'minecraft:mountain_edge': [114,120,154],
187-
'minecraft:extreme_hills': [96,96,96],
188-
'minecraft:mountains': [96,96,96],
189-
'minecraft:windswept_hills': [96,96,96],
190-
'minecraft:mushroom_field_shore': [160,0,255],
191-
'minecraft:mushroom_fields': [255,0,255],
192-
'minecraft:nether_wastes': [191,59,59],
193-
'minecraft:ocean': [0,0,112],
194-
'minecraft:plains': [141,179,96],
195-
'minecraft:river': [0,0,255],
196-
'minecraft:savanna': [189,178,95],
197-
'minecraft:savanna_plateau': [167,157,100],
198-
'minecraft:shattered_savanna': [229,218,135],
199-
'minecraft:windswept_savanna': [229,218,135],
200-
'minecraft:shattered_savanna_plateau': [207,197,140],
201-
'minecraft:small_end_islands': [16,12,28],
202-
'minecraft:snowy_beach': [250,240,192],
203-
'minecraft:snowy_mountains': [160,160,160],
204-
'minecraft:snowy_taiga': [49,85,74],
205-
'minecraft:snowy_taiga_hills': [36,63,54],
206-
'minecraft:snowy_taiga_mountains': [89,125,114],
207-
'minecraft:snowy_tundra': [255,255,255],
208-
'minecraft:snowy_plains': [255,255,255],
209-
'minecraft:soul_sand_valley': [94,56,48],
210-
'minecraft:stone_shore': [162,162,132],
211-
'minecraft:stony_shore': [162,162,132],
212-
'minecraft:sunflower_plains': [181,219,136],
213-
'minecraft:swamp': [7,249,178],
214-
'minecraft:swamp_hills': [47,255,218],
215-
'minecraft:taiga': [11,102,89],
216-
'minecraft:taiga_hills': [22,57,51],
217-
'minecraft:taiga_mountains': [51,142,129],
218-
'minecraft:tall_birch_forest': [88,156,108],
219-
'minecraft:old_growth_birch_forest': [88,156,108],
220-
'minecraft:tall_birch_hills': [71,135,90],
221-
'minecraft:the_end': [59,39,84],
222-
'minecraft:the_void': [0,0,0],
223-
'minecraft:warm_ocean': [0,0,172],
224-
'minecraft:warped_forest': [73,144,123],
225-
'minecraft:wooded_badlands_plateau': [176,151,101],
226-
'minecraft:wooded_badlands': [176,151,101],
227-
'minecraft:wooded_hills': [34,85,28],
228-
'minecraft:wooded_mountains': [80,112,80],
229-
'minecraft:windswept_forest': [80,112,80],
230-
'minecraft:snowy_slopes': [140, 195, 222],
231-
'minecraft:lofty_peaks': [196, 168, 193],
232-
'minecraft:jagged_peaks': [196, 168, 193],
233-
'minecraft:snowcapped_peaks': [200, 198, 200],
234-
'minecraft:frozen_peaks': [200, 198, 200],
235-
'minecraft:stony_peaks': [82, 92, 103],
236-
'minecraft:grove': [150, 150, 189],
237-
'minecraft:meadow': [169, 197, 80],
238-
'minecraft:lush_caves': [112, 255, 79],
239-
'minecraft:dripstone_caves': [140, 124, 0],
240-
'minecraft:deep_dark': [10, 14, 19],
241-
'minecraft:mangrove_swamp': [36,196,142],
137+
export const VanillaColors: Record<string, Color> = {
138+
'minecraft:badlands': hexToRgb('#d94515'),
139+
'minecraft:badlands_plateau': hexToRgb('#ca8c65'),
140+
'minecraft:bamboo_jungle': hexToRgb('#768e14'),
141+
'minecraft:bamboo_jungle_hills': hexToRgb('#3b470a'),
142+
'minecraft:basalt_deltas': hexToRgb('#403636'),
143+
'minecraft:beach': hexToRgb('#fade55'),
144+
'minecraft:birch_forest': hexToRgb('#307444'),
145+
'minecraft:birch_forest_hills': hexToRgb('#1f5f32'),
146+
'minecraft:cold_ocean': hexToRgb('#202070'),
147+
'minecraft:crimson_forest': hexToRgb('#dd0808'),
148+
'minecraft:dark_forest': hexToRgb('#40511a'),
149+
'minecraft:dark_forest_hills': hexToRgb('#687942'),
150+
'minecraft:deep_cold_ocean': hexToRgb('#202038'),
151+
'minecraft:deep_frozen_ocean': hexToRgb('#404090'),
152+
'minecraft:deep_lukewarm_ocean': hexToRgb('#000040'),
153+
'minecraft:deep_ocean': hexToRgb('#000030'),
154+
'minecraft:deep_warm_ocean': hexToRgb('#000050'),
155+
'minecraft:desert': hexToRgb('#fa9418'),
156+
'minecraft:desert_hills': hexToRgb('#d25f12'),
157+
'minecraft:desert_lakes': hexToRgb('#ffbc40'),
158+
'minecraft:end_barrens': hexToRgb('#271e3d'),
159+
'minecraft:end_highlands': hexToRgb('#e8f4b2'),
160+
'minecraft:end_midlands': hexToRgb('#c2bb88'),
161+
'minecraft:eroded_badlands': hexToRgb('#ff6d3d'),
162+
'minecraft:flower_forest': hexToRgb('#2d8e49'),
163+
'minecraft:forest': hexToRgb('#056621'),
164+
'minecraft:frozen_ocean': hexToRgb('#7070d6'),
165+
'minecraft:frozen_river': hexToRgb('#a0a0ff'),
166+
'minecraft:giant_spruce_taiga': hexToRgb('#818e79'),
167+
'minecraft:old_growth_spruce_taiga': hexToRgb('#818e79'),
168+
'minecraft:giant_spruce_taiga_hills': hexToRgb('#6d7766'),
169+
'minecraft:giant_tree_taiga': hexToRgb('#596651'),
170+
'minecraft:old_growth_pine_taiga': hexToRgb('#596651'),
171+
'minecraft:giant_tree_taiga_hills': hexToRgb('#454f3e'),
172+
'minecraft:gravelly_hills': hexToRgb('#888888'),
173+
'minecraft:gravelly_mountains': hexToRgb('#888888'),
174+
'minecraft:windswept_gravelly_hills': hexToRgb('#888888'),
175+
'minecraft:ice_spikes': hexToRgb('#b4dcdc'),
176+
'minecraft:jungle': hexToRgb('#537b09'),
177+
'minecraft:jungle_edge': hexToRgb('#628b17'),
178+
'minecraft:sparse_jungle': hexToRgb('#628b17'),
179+
'minecraft:jungle_hills': hexToRgb('#2c4205'),
180+
'minecraft:lukewarm_ocean': hexToRgb('#000090'),
181+
'minecraft:modified_badlands_plateau': hexToRgb('#f2b48d'),
182+
'minecraft:modified_gravelly_mountains': hexToRgb('#789878'),
183+
'minecraft:modified_jungle': hexToRgb('#7ba331'),
184+
'minecraft:modified_jungle_edge': hexToRgb('#8ab33f'),
185+
'minecraft:modified_wooded_badlands_plateau': hexToRgb('#d8bf8d'),
186+
'minecraft:mountain_edge': hexToRgb('#72789a'),
187+
'minecraft:extreme_hills': hexToRgb('#606060'),
188+
'minecraft:mountains': hexToRgb('#606060'),
189+
'minecraft:windswept_hills': hexToRgb('#606060'),
190+
'minecraft:mushroom_field_shore': hexToRgb('#a000ff'),
191+
'minecraft:mushroom_fields': hexToRgb('#ff00ff'),
192+
'minecraft:nether_wastes': hexToRgb('#bf3b3b'),
193+
'minecraft:ocean': hexToRgb('#000070'),
194+
'minecraft:plains': hexToRgb('#8db360'),
195+
'minecraft:river': hexToRgb('#0000ff'),
196+
'minecraft:savanna': hexToRgb('#bdb25f'),
197+
'minecraft:savanna_plateau': hexToRgb('#a79d64'),
198+
'minecraft:shattered_savanna': hexToRgb('#e5da87'),
199+
'minecraft:windswept_savanna': hexToRgb('#e5da87'),
200+
'minecraft:shattered_savanna_plateau': hexToRgb('#cfc58c'),
201+
'minecraft:small_end_islands': hexToRgb('#100c1c'),
202+
'minecraft:snowy_beach': hexToRgb('#faf0c0'),
203+
'minecraft:snowy_mountains': hexToRgb('#a0a0a0'),
204+
'minecraft:snowy_taiga': hexToRgb('#31554a'),
205+
'minecraft:snowy_taiga_hills': hexToRgb('#243f36'),
206+
'minecraft:snowy_taiga_mountains': hexToRgb('#597d72'),
207+
'minecraft:snowy_tundra': hexToRgb('#ffffff'),
208+
'minecraft:snowy_plains': hexToRgb('#ffffff'),
209+
'minecraft:soul_sand_valley': hexToRgb('#5e3830'),
210+
'minecraft:stone_shore': hexToRgb('#a2a284'),
211+
'minecraft:stony_shore': hexToRgb('#a2a284'),
212+
'minecraft:sunflower_plains': hexToRgb('#b7dc89'),
213+
'minecraft:swamp': hexToRgb('#07f9b2'),
214+
'minecraft:swamp_hills': hexToRgb('#2fffda'),
215+
'minecraft:taiga': hexToRgb('#0b6659'),
216+
'minecraft:taiga_hills': hexToRgb('#163933'),
217+
'minecraft:taiga_mountains': hexToRgb('#338e81'),
218+
'minecraft:tall_birch_forest': hexToRgb('#589c6c'),
219+
'minecraft:old_growth_birch_forest': hexToRgb('#589c6c'),
220+
'minecraft:tall_birch_hills': hexToRgb('#47875a'),
221+
'minecraft:the_end': hexToRgb('#3b2754'),
222+
'minecraft:the_void': hexToRgb('#000000'),
223+
'minecraft:warm_ocean': hexToRgb('#0000ac'),
224+
'minecraft:warped_forest': hexToRgb('#49907b'),
225+
'minecraft:wooded_badlands_plateau': hexToRgb('#b09765'),
226+
'minecraft:wooded_badlands': hexToRgb('#b09765'),
227+
'minecraft:wooded_hills': hexToRgb('#22551c'),
228+
'minecraft:wooded_mountains': hexToRgb('#507050'),
229+
'minecraft:windswept_forest': hexToRgb('#507050'),
230+
'minecraft:snowy_slopes': hexToRgb('#8cc3de'),
231+
'minecraft:lofty_peaks': hexToRgb('#c4a8c1'),
232+
'minecraft:jagged_peaks': hexToRgb('#c4a8c1'),
233+
'minecraft:snowcapped_peaks': hexToRgb('#c8c6c8'),
234+
'minecraft:frozen_peaks': hexToRgb('#c8c6c8'),
235+
'minecraft:stony_peaks': hexToRgb('#525c67'),
236+
'minecraft:grove': hexToRgb('#9696bd'),
237+
'minecraft:meadow': hexToRgb('#a9c550'),
238+
'minecraft:lush_caves': hexToRgb('#70ff4f'),
239+
'minecraft:dripstone_caves': hexToRgb('#8c7c00'),
240+
'minecraft:deep_dark': hexToRgb('#0a0e13'),
241+
'minecraft:mangrove_swamp': hexToRgb('#24c48e'),
242+
'minecraft:cherry_grove': hexToRgb('#e1abcb'),
243+
'minecraft:pale_garden': hexToRgb('#7b8078'),
244+
'minecraft:sulfur_caves': hexToRgb('#bdb275'),
245+
'minecraft:dappled_forest': hexToRgb('#bf632d'),
242246
}

‎src/app/components/previews/Deepslate.ts‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import type * as deepslate263 from 'deepslate'
2+
import { HolderSet } from 'deepslate'
23
import type * as deepslate118 from 'deepslate-1.18'
34
import type * as deepslate1182 from 'deepslate-1.18.2'
45
import type * as deepslate119 from 'deepslate-1.19'
56
import type { VersionId } from '../../services/index.js'
6-
import { checkVersion, fetchAllPresets } from '../../services/index.js'
7+
import { checkVersion, fetchAllPresets, fetchRegistries } from '../../services/index.js'
78
import { computeIfAbsent, isObject } from '../../Utils.js'
89

910
export type ProjectData = Record<string, Record<string, unknown>>
@@ -58,12 +59,24 @@ export class Deepslate263 implements Deepslate {
5859

5960
static async init(version: VersionId, d: typeof deepslate263) {
6061
const dynamicRegistries = new Set(['minecraft:worldgen/noise', 'minecraft:worldgen/density_function', 'minecraft:worldgen/noise_settings', 'minecraft:worldgen/material_rule', 'minecraft:worldgen/material_condition'])
62+
const allRegistries = await fetchRegistries(version)
6163
await Promise.all(d.Registry.REGISTRY.map(async (id, registry) => {
6264
if (dynamicRegistries.has(id.toString())) {
6365
const entries = await fetchAllPresets(version, id.path)
6466
for (const [key, value] of entries.entries()) {
6567
registry.register(d.Identifier.parse(key), registry.parse(value), true)
6668
}
69+
} else if (id.is('minecraft:worldgen/biome')) {
70+
const keys = allRegistries.get(id.path)
71+
for (const key of keys ?? []) {
72+
registry.register(d.Identifier.parse(key), {}, true)
73+
}
74+
const tags = await fetchAllPresets(version, `tag/${id.path}`)
75+
const tagsRegistry = registry.getTagRegistry()
76+
for (const [key, value] of tags.entries()) {
77+
const tagId = d.Identifier.parse(key)
78+
tagsRegistry.register(tagId, HolderSet.fromJson(tagsRegistry, value, tagId), true)
79+
}
6780
}
6881
}))
6982
return new Deepslate263(d)

‎src/app/components/previews/NoiseSettingsPreview.tsx‎

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { getWorldgenProjectData, useLocale, useProject, useVersion } from '../..
55
import { useAsync } from '../../hooks/index.js'
66
import { checkVersion, fetchRegistries } from '../../services/index.js'
77
import { Store } from '../../Store.js'
8-
import { iterateWorld2D, randomSeed, safeJsonParse } from '../../Utils.js'
8+
import type { Color } from '../../Utils.js'
9+
import { hexToRgb, iterateWorld2D, randomSeed, safeJsonParse } from '../../Utils.js'
910
import { Btn, BtnInput, BtnMenu, ErrorPanel } from '../index.js'
1011
import type { ColormapType } from './Colormap.js'
1112
import { getColormap } from './Colormap.js'
@@ -113,21 +114,40 @@ export const NoiseSettingsPreview = ({ docAndNode, shown }: PreviewProps) => {
113114
</>
114115
}
115116

116-
const BlockColors: Record<string, [number, number, number]> = {
117-
'minecraft:air': [150, 160, 170],
118-
'minecraft:water': [20, 80, 170],
119-
'minecraft:lava': [200, 100, 0],
120-
'minecraft:stone': [55, 55, 55],
121-
'minecraft:deepslate': [34, 34, 36],
122-
'minecraft:bedrock': [10, 10, 10],
123-
'minecraft:grass_block': [47, 120, 23],
124-
'minecraft:dirt': [64, 40, 8],
125-
'minecraft:gravel': [70, 70, 70],
126-
'minecraft:sand': [196, 180, 77],
127-
'minecraft:sandstone': [148, 135, 52],
128-
'minecraft:netherrack': [100, 40, 40],
129-
'minecraft:crimson_nylium': [144, 22, 22],
130-
'minecraft:warped_nylium': [28, 115, 113],
131-
'minecraft:basalt': [73, 74, 85],
132-
'minecraft:end_stone': [200, 200, 140],
117+
const BlockColors: Record<string, Color> = {
118+
'minecraft:air': hexToRgb('#96a0aa'),
119+
'minecraft:water': hexToRgb('#1450aa'),
120+
'minecraft:lava': hexToRgb('#c86400'),
121+
'minecraft:stone': hexToRgb('#686868'),
122+
'minecraft:deepslate': hexToRgb('#2f2f36'),
123+
'minecraft:bedrock': hexToRgb('#0a0a0a'),
124+
'minecraft:grass_block': hexToRgb('#2f7817'),
125+
'minecraft:dirt': hexToRgb('#71563e'),
126+
'minecraft:coarse_dirt': hexToRgb('#684f39'),
127+
'minecraft:podzol': hexToRgb('#4d3d1e'),
128+
'minecraft:mycelium': hexToRgb('#675e62'),
129+
'minecraft:mud': hexToRgb('#3c3836'),
130+
'minecraft:gravel': hexToRgb('#464646'),
131+
'minecraft:sand': hexToRgb('#c4b44d'),
132+
'minecraft:sandstone': hexToRgb('#948734'),
133+
'minecraft:snow_block': hexToRgb('#ffffff'),
134+
'minecraft:powder_snow': hexToRgb('#f0fbfb'),
135+
'minecraft:ice': hexToRgb('#7c8fbe'),
136+
'minecraft:packed_ice': hexToRgb('#93aef2'),
137+
'minecraft:calcite': hexToRgb('#d9dbd7'),
138+
'minecraft:sulfur': hexToRgb('#bdb275'),
139+
'minecraft:cinnabar': hexToRgb('#884f45'),
140+
'minecraft:red_sand': hexToRgb('#ae6b33'),
141+
'minecraft:red_sandstone': hexToRgb('#9c5b26'),
142+
'minecraft:terracotta': hexToRgb('#8a6048'),
143+
'minecraft:orange_terracotta': hexToRgb('#915730'),
144+
'minecraft:white_terracotta': hexToRgb('#c7b0a1'),
145+
'minecraft:netherrack': hexToRgb('#642828'),
146+
'minecraft:crimson_nylium': hexToRgb('#901616'),
147+
'minecraft:warped_nylium': hexToRgb('#1c7371'),
148+
'minecraft:basalt': hexToRgb('#32333c'),
149+
'minecraft:blackstone': hexToRgb('#26221d'),
150+
'minecraft:soul_sand': hexToRgb('#45382e'),
151+
'minecraft:soul_soil': hexToRgb('#3a2f26'),
152+
'minecraft:end_stone': hexToRgb('#c8c88c'),
133153
}

0 commit comments

Comments
 (0)