diff --git a/gradle.properties b/gradle.properties index d9b95bb..5156ffe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ yarn_mappings=1.17.1+build.14 loader_version=0.11.6 # Mod Properties -mod_version=2.1.2 +mod_version=2.2.0 maven_group=de.dafuqs.lootcrates archives_base_name=lootcrates diff --git a/src/main/java/de/dafuqs/lootcrates/config/LootCratesConfig.java b/src/main/java/de/dafuqs/lootcrates/config/LootCratesConfig.java index 98fd563..c99e717 100644 --- a/src/main/java/de/dafuqs/lootcrates/config/LootCratesConfig.java +++ b/src/main/java/de/dafuqs/lootcrates/config/LootCratesConfig.java @@ -5,6 +5,8 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry; import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.Comment; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Config(name = "LootCrates") @@ -55,6 +57,8 @@ public class LootCratesConfig implements ConfigData { So feel free to leave it at 1 if you want loot to be available instantly for every unique player.""") public boolean ReplaceVanillaWorldgenChests = true; @ConfigEntry.Category("worldgen") - public List ReplaceVanillaWorldgenChestsDimensionsBlacklist = List.of("spectrum:deeper_down"); + @Comment(value = """ + Dimension identifiers where chests will not be replaced""") + public final List ReplaceVanillaWorldgenChestsDimensionsBlacklist = new ArrayList<>(); } diff --git a/src/main/java/de/dafuqs/lootcrates/worldgen/LootCratesWorldgenReplacer.java b/src/main/java/de/dafuqs/lootcrates/worldgen/LootCratesWorldgenReplacer.java index 60fce6d..61a8dc5 100644 --- a/src/main/java/de/dafuqs/lootcrates/worldgen/LootCratesWorldgenReplacer.java +++ b/src/main/java/de/dafuqs/lootcrates/worldgen/LootCratesWorldgenReplacer.java @@ -278,6 +278,7 @@ public static void tick(MinecraftServer server) { // Some protection against concurrent modifications List list = new ArrayList<>(replacements); + List tryAgainList = new ArrayList<>(); replacements.clear(); for (LootCrateReplacementPosition replacementPosition : list) { @@ -289,6 +290,7 @@ public static void tick(MinecraftServer server) { blockEntity = serverWorld.getBlockEntity(replacementPosition.blockPos); } catch (Exception e) { LootCrates.LOGGER.error("[LootCrates] Error while replacing a container with loot table '" + replacementPosition.lootTable + "' in the world '" + replacementPosition.worldKey + "' at '" + replacementPosition.blockPos + "' ) + " + e.getLocalizedMessage()); + tryAgainList.add(replacementPosition); continue; } if(blockEntity != null && !(blockEntity instanceof LootCrateBlockEntity)) { @@ -340,12 +342,15 @@ public static void tick(MinecraftServer server) { } } } else { - LootCrates.LOGGER.error("[LootCrates] Error while replacing a container with loot table '" + replacementPosition.lootTable + "' in the world '" + replacementPosition.worldKey + "' at '" + replacementPosition.blockPos + "' ). The chunk at that pos is not loaded."); + tryAgainList.add(replacementPosition); } } catch (Exception e) { - LootCrates.LOGGER.error("[LootCrates] Error while replacing a container with loot table '" + replacementPosition.lootTable + "' in the world '" + replacementPosition.worldKey + "' at '" + replacementPosition.blockPos + "' ) + " + e.getLocalizedMessage()); + LootCrates.LOGGER.error("[LootCrates] Error while replacing a container with loot table '" + replacementPosition.lootTable + "' in the world '" + replacementPosition.worldKey + "' at '" + replacementPosition.blockPos + "') + " + e.getLocalizedMessage()); + tryAgainList.add(replacementPosition); } } + + replacements = tryAgainList; } }