mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-06 15:52:03 +00:00
使用snakeyaml取代
This commit is contained in:
@@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableMap;
|
|||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import dev.dejvokep.boostedyaml.YamlDocument;
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
||||||
@@ -628,12 +627,16 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
|||||||
if (!Files.exists(mappingsFile)) {
|
if (!Files.exists(mappingsFile)) {
|
||||||
this.plugin.saveResource("mappings.yml");
|
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()));
|
Yaml yaml = new Yaml(new StringKeyConstructor(mappingsFile, new LoaderOptions()));
|
||||||
try (InputStream inputStream = Files.newInputStream(mappingsFile)) {
|
Map<Key, Integer> blockTypeCounter = new LinkedHashMap<>();
|
||||||
Map<String, String> blockStateMappings = loadBlockStateMappings(yaml.load(inputStream));
|
try (InputStream is = Files.newInputStream(mappingsFile)) {
|
||||||
|
Map<String, String> blockStateMappings = loadBlockStateMappings(yaml.load(is));
|
||||||
this.validateBlockStateMappings(mappingsFile, blockStateMappings);
|
this.validateBlockStateMappings(mappingsFile, blockStateMappings);
|
||||||
Map<Integer, String> stateMap = new Int2ObjectOpenHashMap<>();
|
Map<Integer, String> stateMap = new Int2ObjectOpenHashMap<>();
|
||||||
Map<Key, Integer> blockTypeCounter = new LinkedHashMap<>();
|
|
||||||
Map<Integer, Integer> appearanceMapper = new Int2IntOpenHashMap();
|
Map<Integer, Integer> appearanceMapper = new Int2IntOpenHashMap();
|
||||||
Map<Key, List<Integer>> appearanceArranger = new HashMap<>();
|
Map<Key, List<Integer>> appearanceArranger = new HashMap<>();
|
||||||
for (Map.Entry<String, String> entry : blockStateMappings.entrySet()) {
|
for (Map.Entry<String, String> entry : blockStateMappings.entrySet()) {
|
||||||
@@ -642,11 +645,14 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
|||||||
this.blockAppearanceMapper = ImmutableMap.copyOf(appearanceMapper);
|
this.blockAppearanceMapper = ImmutableMap.copyOf(appearanceMapper);
|
||||||
this.blockAppearanceArranger = ImmutableMap.copyOf(appearanceArranger);
|
this.blockAppearanceArranger = ImmutableMap.copyOf(appearanceArranger);
|
||||||
this.plugin.logger().info("Freed " + this.blockAppearanceMapper.size() + " block state appearances.");
|
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) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException("Failed to init mappings.yml", 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() {
|
private void recordVanillaNoteBlocks() {
|
||||||
@@ -751,11 +757,11 @@ public final class BukkitBlockManager extends AbstractBlockManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private LinkedHashMap<Key, Integer> buildRegisteredRealBlockSlots(Map<Key, Integer> counter, YamlDocument additionalYaml) {
|
private LinkedHashMap<Key, Integer> buildRegisteredRealBlockSlots(Map<Key, Integer> counter, Map<String, Object> additionalYaml) {
|
||||||
LinkedHashMap<Key, Integer> map = new LinkedHashMap<>();
|
LinkedHashMap<Key, Integer> map = new LinkedHashMap<>();
|
||||||
for (Map.Entry<Key, Integer> entry : counter.entrySet()) {
|
for (Map.Entry<Key, Integer> entry : counter.entrySet()) {
|
||||||
String id = entry.getKey().toString();
|
String id = entry.getKey().toString();
|
||||||
int additionalStates = additionalYaml.getInt(id, 0);
|
int additionalStates = (int) additionalYaml.getOrDefault(id, 0);
|
||||||
int internalIds = entry.getValue() + additionalStates;
|
int internalIds = entry.getValue() + additionalStates;
|
||||||
plugin.logger().info("Loaded " + id + " with " + entry.getValue() + " appearances and " + internalIds + " real block states");
|
plugin.logger().info("Loaded " + id + " with " + entry.getValue() + " appearances and " + internalIds + " real block states");
|
||||||
map.put(entry.getKey(), internalIds);
|
map.put(entry.getKey(), internalIds);
|
||||||
|
|||||||
Reference in New Issue
Block a user