diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BiomeConfig.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BiomeConfig.java index d6d296d4..51ce91fb 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BiomeConfig.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BiomeConfig.java @@ -25,8 +25,9 @@ package de.bluecolored.bluemap.core.config; import java.io.IOException; -import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; import de.bluecolored.bluemap.core.logger.Logger; import de.bluecolored.bluemap.core.mca.mapping.BiomeMapper; @@ -37,7 +38,7 @@ public class BiomeConfig implements BiomeMapper { private ConfigurationLoader autopoulationConfigLoader; - private HashMap biomes; + private Map biomes; public BiomeConfig(ConfigurationNode node) { this(node, null); @@ -46,7 +47,7 @@ public BiomeConfig(ConfigurationNode node) { public BiomeConfig(ConfigurationNode node, ConfigurationLoader autopoulationConfigLoader) { this.autopoulationConfigLoader = autopoulationConfigLoader; - biomes = new HashMap<>(); + biomes = new ConcurrentHashMap<>(200, 0.5f, 8); for (Entry e : node.getChildrenMap().entrySet()){ String id = e.getKey().toString(); diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockIdConfig.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockIdConfig.java index 1ee5360a..a3b7426e 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockIdConfig.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockIdConfig.java @@ -25,9 +25,11 @@ package de.bluecolored.bluemap.core.config; import java.io.IOException; -import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.concurrent.ConcurrentHashMap; + +import com.google.common.base.Preconditions; import de.bluecolored.bluemap.core.logger.Logger; import de.bluecolored.bluemap.core.mca.mapping.BlockIdMapper; @@ -48,8 +50,8 @@ public BlockIdConfig(ConfigurationNode node) { public BlockIdConfig(ConfigurationNode node, ConfigurationLoader autopoulationConfigLoader) { this.autopoulationConfigLoader = autopoulationConfigLoader; - numeralMappings = new HashMap<>(); - idMappings = new HashMap<>(); + numeralMappings = new ConcurrentHashMap<>(200, 0.5f, 8); + idMappings = new ConcurrentHashMap<>(200, 0.5f, 8); for (Entry e : node.getChildrenMap().entrySet()){ String key = e.getKey().toString(); @@ -135,7 +137,7 @@ public BlockState get(String id, int numeralId, int meta) { } idMappings.put(idmeta, state); - numeralMappings.put(numidmeta, state); + Preconditions.checkArgument(numeralMappings.put(numidmeta, state) == null); if (autopoulationConfigLoader != null) { synchronized (autopoulationConfigLoader) { diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockPropertiesConfig.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockPropertiesConfig.java index 8b9f771b..9949cf1e 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockPropertiesConfig.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/BlockPropertiesConfig.java @@ -33,6 +33,7 @@ import com.google.common.cache.LoadingCache; import com.google.common.collect.Multimap; import com.google.common.collect.MultimapBuilder; +import com.google.common.collect.Multimaps; import de.bluecolored.bluemap.core.logger.Logger; import de.bluecolored.bluemap.core.mca.mapping.BlockPropertiesMapper; @@ -61,7 +62,7 @@ public BlockPropertiesConfig(ConfigurationNode node, ResourcePack resourcePack, this.resourcePack = resourcePack; this.autopoulationConfigLoader = autopoulationConfigLoader; - mappings = MultimapBuilder.hashKeys().arrayListValues().build(); + mappings = Multimaps.synchronizedListMultimap(MultimapBuilder.hashKeys().arrayListValues().build()); for (Entry e : node.getChildrenMap().entrySet()){ String key = e.getKey().toString();