Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.

merge 2.5.2

+7 -7
+3 -3
common/src/main/java/net/lerariemann/infinity/compat/cloth/AmendmentConfigFactory.java
··· 35 35 AmendmentConfigFactory(ConfigBuilder builder) { 36 36 this.builder = builder; 37 37 38 - NbtList list = readNbt(configPath()+"/amendments.json").getList("elements", 10); 38 + NbtList list = readNbt(configPath()+"/amendments.json").getListOrEmpty("elements"); 39 39 int N = list.size(); 40 40 for (int i = 0; i < N; i++) if (list.get(i) instanceof NbtCompound e) { 41 41 amendments.put(i, e); ··· 201 201 202 202 List<String> getSafeList(String name) { 203 203 NbtCompound data = getData(); 204 - if (data.contains(name, NbtElement.LIST_TYPE)) return convertNbtList(data.getList(name, NbtElement.STRING_TYPE)); 204 + if (data.contains(name)) return convertNbtList(NbtUtils.getList(data, name, NbtElement.STRING_TYPE)); 205 205 return List.of(""); 206 206 } 207 207 ··· 259 259 static List<String> convertNbtList(NbtList nbtList) { 260 260 ArrayList<String> list = new ArrayList<>(); 261 261 for (NbtElement s : nbtList) { 262 - list.add(s.asString()); 262 + list.add(s.asString().orElse("")); 263 263 } 264 264 return list; 265 265 }
+1 -1
common/src/main/java/net/lerariemann/infinity/features/RandomEndGatewayFeature.java
··· 33 33 if (bl && bl2 && bl3) { 34 34 BlockPos destination = new BlockPos(bp.getX() + context.getRandom().nextBetween(-config.spread, config.spread), 35 35 bp.getY(), bp.getZ() + context.getRandom().nextBetween(-config.spread, config.spread)); 36 - destination = structureWorldAccess.getWorldBorder().clamp(destination); 36 + destination = structureWorldAccess.getWorldBorder().clampFloored(destination); 37 37 this.setBlockState(structureWorldAccess, bp, Blocks.END_GATEWAY.getDefaultState()); 38 38 if (structureWorldAccess.getBlockEntity(bp) instanceof EndGatewayBlockEntity egbe) { 39 39 egbe.setExitPortalPos(destination, false);
+1 -1
common/src/main/java/net/lerariemann/infinity/util/config/Amendment.java
··· 45 45 case "matching" -> new MatchingSelector(NbtUtils.getString(data, "matching")); 46 46 case "matching_block_tag" -> new MatchingBlockTagSelector(NbtUtils.getString(data, "matching_block_tag")); 47 47 case "matching_any" -> new MatchingAnySelector(NbtUtils.getList(data, "matching_any", NbtElement.STRING_TYPE) 48 - .stream().map(e->(NbtString)e).map(NbtString::asString).toList()); 48 + .stream().map(e->(NbtString)e).map(nbtString -> nbtString.asString().orElse("")).toList()); 49 49 default -> { 50 50 InfinityMod.LOGGER.warn("Unknown amendment selector type: {}", selectorType); 51 51 yield null;
+1 -1
common/src/main/java/net/lerariemann/infinity/util/core/Easterizer.java
··· 31 31 NbtCompound compound = CommonIO.read(p.toFile()); 32 32 if (compound.contains("name")) 33 33 name = NbtUtils.getString(compound, "name"); 34 - if (compound.getType("aliases") == NbtElement.LIST_TYPE) { 34 + if (compound.contains("aliases")) { 35 35 String finalName = name; 36 36 NbtUtils.getList(compound, "aliases", NbtElement.STRING_TYPE) 37 37 .stream()
+1 -1
common/src/main/java/net/lerariemann/infinity/util/core/RandomProvider.java
··· 261 261 public void kickGhostsOut(DynamicRegistryManager s) { 262 262 registry.remove(ConfigType.BIOMES); 263 263 List<NbtCompound> biomes = CommonIO.readCategory(ConfigType.BIOMES); 264 - Registry<Biome> reg = s.get(RegistryKeys.BIOME); 264 + Registry<Biome> reg = s.getOrThrow(RegistryKeys.BIOME); 265 265 registerCategory(ConfigType.BIOMES, biomes.stream().filter(comp -> reg.containsId(Identifier.of(NbtUtils.getString(comp,"key")))).toList()); 266 266 } 267 267 }