Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 72 lines 2.4 kB view raw
1package net.lerariemann.infinity.dimensions; 2 3import net.lerariemann.infinity.util.core.CommonIO; 4import net.minecraft.nbt.CompoundTag; 5import net.minecraft.nbt.ListTag; 6import net.minecraft.nbt.StringTag; 7 8public class DimensionData { 9 CompoundTag data; 10 String path; 11 DimensionData(RandomDimension parent) { 12 data = new CompoundTag(); 13 path = parent.getStoragePath(); 14 data.put("stats", stats(parent)); 15 data.put("blocks", blocks(parent)); 16 data.put("biomes", biomes(parent)); 17 data.put("structures", structures(parent)); 18 } 19 20 void save() { 21 CommonIO.write(data, path, "data.json"); 22 } 23 24 CompoundTag stats(RandomDimension parent) { 25 CompoundTag res = new CompoundTag(); 26 res.putString("type", parent.type_alike); 27 res.putInt("height", parent.height); 28 res.putInt("min_y", parent.min_y); 29 res.putInt("sea_level", parent.sea_level); 30 return res; 31 } 32 33 CompoundTag blocks(RandomDimension parent) { 34 CompoundTag res = new CompoundTag(); 35 res.put("default", parent.default_block); 36 res.put("deepslate", parent.deepslate); 37 res.put("fluid", parent.default_fluid); 38 return res; 39 } 40 41 CompoundTag biomes(RandomDimension parent) { 42 CompoundTag res = new CompoundTag(); 43 ListTag vanilla = new ListTag(); 44 parent.vanilla_biomes.forEach(s -> vanilla.add(StringTag.valueOf(s))); 45 res.put("vanilla", vanilla); 46 ListTag random = new ListTag(); 47 parent.random_biomes.forEach(biome -> { 48 CompoundTag b = new CompoundTag(); 49 String name = biome.fullname; 50 b.putString("name", name); 51 b.put("grass", parent.top_blocks.get(name)); 52 b.put("dirt", parent.underwater.get(name)); 53 b.put("colors", biome.colors); 54 ListTag mobs = new ListTag(); 55 biome.mobs.forEach(mob -> mobs.add(StringTag.valueOf(mob))); 56 b.put("mobs", mobs); 57 random.add(b); 58 }); 59 res.put("random", random); 60 return res; 61 } 62 63 CompoundTag structures(RandomDimension parent) { 64 CompoundTag res = new CompoundTag(); 65 parent.structure_ids.forEach((type, list) -> { 66 ListTag ids = new ListTag(); 67 list.forEach(id -> ids.add(StringTag.valueOf(id))); 68 res.put(type, ids); 69 }); 70 return res; 71 } 72}