diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java index 3c491a10a..d345f3772 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BukkitBlockManager.java @@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import dev.dejvokep.boostedyaml.YamlDocument; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.IntArrayList; @@ -628,12 +627,16 @@ public final class BukkitBlockManager extends AbstractBlockManager { if (!Files.exists(mappingsFile)) { this.plugin.saveResource("mappings.yml"); } + Path additionalFile = this.plugin.dataFolderPath().resolve("additional-real-blocks.yml"); + if (!Files.exists(additionalFile)) { + this.plugin.saveResource("additional-real-blocks.yml"); + } Yaml yaml = new Yaml(new StringKeyConstructor(mappingsFile, new LoaderOptions())); - try (InputStream inputStream = Files.newInputStream(mappingsFile)) { - Map blockStateMappings = loadBlockStateMappings(yaml.load(inputStream)); + Map blockTypeCounter = new LinkedHashMap<>(); + try (InputStream is = Files.newInputStream(mappingsFile)) { + Map blockStateMappings = loadBlockStateMappings(yaml.load(is)); this.validateBlockStateMappings(mappingsFile, blockStateMappings); Map stateMap = new Int2ObjectOpenHashMap<>(); - Map blockTypeCounter = new LinkedHashMap<>(); Map appearanceMapper = new Int2IntOpenHashMap(); Map> appearanceArranger = new HashMap<>(); for (Map.Entry entry : blockStateMappings.entrySet()) { @@ -642,11 +645,14 @@ public final class BukkitBlockManager extends AbstractBlockManager { this.blockAppearanceMapper = ImmutableMap.copyOf(appearanceMapper); this.blockAppearanceArranger = ImmutableMap.copyOf(appearanceArranger); this.plugin.logger().info("Freed " + this.blockAppearanceMapper.size() + " block state appearances."); - YamlDocument additionalYaml = Config.instance().loadOrCreateYamlData("additional-real-blocks.yml"); - this.registeredRealBlockSlots = this.buildRegisteredRealBlockSlots(blockTypeCounter, additionalYaml); } catch (IOException e) { throw new RuntimeException("Failed to init mappings.yml", e); } + try (InputStream is = Files.newInputStream(additionalFile)) { + this.registeredRealBlockSlots = this.buildRegisteredRealBlockSlots(blockTypeCounter, yaml.load(is)); + } catch (IOException e) { + throw new RuntimeException("Failed to init additional-real-blocks.yml", e); + } } private void recordVanillaNoteBlocks() { @@ -751,11 +757,11 @@ public final class BukkitBlockManager extends AbstractBlockManager { } } - private LinkedHashMap buildRegisteredRealBlockSlots(Map counter, YamlDocument additionalYaml) { + private LinkedHashMap buildRegisteredRealBlockSlots(Map counter, Map additionalYaml) { LinkedHashMap map = new LinkedHashMap<>(); for (Map.Entry entry : counter.entrySet()) { String id = entry.getKey().toString(); - int additionalStates = additionalYaml.getInt(id, 0); + int additionalStates = (int) additionalYaml.getOrDefault(id, 0); int internalIds = entry.getValue() + additionalStates; plugin.logger().info("Loaded " + id + " with " + entry.getValue() + " appearances and " + internalIds + " real block states"); map.put(entry.getKey(), internalIds);