summaryrefslogtreecommitdiff
path: root/src/worldgen/structure
diff options
context:
space:
mode:
Diffstat (limited to 'src/worldgen/structure')
-rw-r--r--src/worldgen/structure/index.js71
1 files changed, 71 insertions, 0 deletions
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,
+};