diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-06-26 21:50:58 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-06-26 21:50:58 +0200 |
commit | 289faaf0ec2063c42acc54f80f9b9298106b8e32 (patch) | |
tree | dc695d33da917a63c9297a775955d1544f7c01d3 /src | |
parent | 9104556192e966c52b28c2e95e3e9692ed8e7932 (diff) |
Diffstat (limited to 'src')
-rw-r--r-- | src/enum.js | 16 | ||||
-rw-r--r-- | src/worldgen/structure/index.js | 71 |
2 files changed, 87 insertions, 0 deletions
diff --git a/src/enum.js b/src/enum.js new file mode 100644 index 0000000..8f1629d --- /dev/null +++ b/src/enum.js @@ -0,0 +1,16 @@ +const TemplatePool = Object.freeze({ + EMPTY_16: 'original_skyblock:empty_16', + EMPTY_FULL: 'original_skyblock:empty_full', +}); + +const JigsawStartHeight = Object.freeze({ + UNIFORM: Symbol('uniform'), + BIASED_TO_BOTTOM: Symbol('biased_to_bottom'), + VERY_BIASED_TO_BOTTOM: Symbol('very_biased_to_bottom'), +}); + + +module.exports = { + TemplatePool, + JigsawStartHeight, +}; diff --git a/src/worldgen/structure/index.js b/src/worldgen/structure/index.js new file mode 100644 index 0000000..8f19547 --- /dev/null +++ b/src/worldgen/structure/index.js @@ -0,0 +1,71 @@ +const { JigsawStartHeight } = require('../../enum.js'); + + +const jigsawConversionFields = { + type: 'minecraft:jigsaw', + start_pool: null, + size: 1, + start_height: { + absolute: { + value: 0, + }, + }, + max_distance_from_center: 1, + use_expansion_hack: false, +}; + +const jigsawStartHeightUniform = { + type: 'minecraft:uniform', + min_inclusive: { + above_bottom: 0, + }, + max_inclusive: { + below_top: 0, + }, +}; + +const jigsawStartHeightBiasedToBottom = { + type: 'minecraft:biased_to_bottom', + min_inclusive: { + above_bottom: 0, + }, + max_inclusive: { + below_top: 0, + }, +}; + +const jigsawStartHeightVeryBiasedToBottom = { + type: 'minecraft:very_biased_to_bottom', + min_inclusive: { + above_bottom: 0, + }, + max_inclusive: { + below_top: 0, + }, +}; + + +function jigsawConversion(structure, fields) { + fields = Object.assign({ + ...jigsawConversionFields, + }, fields); + + if (fields.start_height === JigsawStartHeight.UNIFORM) { + fields.start_height = jigsawStartHeightUniform; + } + else if (fields.start_height === JigsawStartHeight.BIASED_TO_BOTTOM) { + fields.start_height = jigsawStartHeightBiasedToBottom; + } + else if (fields.start_height === JigsawStartHeight.VERY_BIASED_TO_BOTTOM) { + fields.start_height = jigsawStartHeightVeryBiasedToBottom; + } + + return Object.assign({}, structure, fields); +} + + +module.exports = { + jigsawConversionFields, + jigsawStartHeightUniform, + jigsawConversion, +}; |