Skip to content

Commit 9c06c90

Browse files
committed
fix(barrel): Class initialization issue
1 parent f867a6e commit 9c06c90

1 file changed

Lines changed: 12 additions & 19 deletions

File tree

src/main/java/com/dre/brewery/BarrelAsset.java

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424

2525
import java.util.Arrays;
2626
import java.util.Collections;
27-
import java.util.EnumMap;
2827
import java.util.EnumSet;
28+
import java.util.HashMap;
29+
import java.util.HashSet;
2930
import java.util.Map;
3031
import java.util.Objects;
3132
import java.util.Set;
@@ -37,40 +38,32 @@ public enum BarrelAsset {
3738
FENCE; // Optional: Alt 3 Block
3839

3940

40-
private static final Map<BarrelWoodType, Map<BarrelAsset, Set<Material>>> BARREL_ASSET_LIST_MAP = new EnumMap<>(BarrelWoodType.class);
41-
42-
static {
43-
for (BarrelWoodType type : BarrelWoodType.values()) {
44-
Map<BarrelAsset, Set<Material>> newMap = new EnumMap<>(BarrelAsset.class);
45-
for (BarrelAsset asset : values()) {
46-
newMap.put(asset, EnumSet.noneOf(Material.class));
47-
}
48-
49-
BARREL_ASSET_LIST_MAP.put(type, newMap);
50-
}
51-
}
41+
private static final Map<BarrelWoodType, Map<BarrelAsset, Set<Material>>> barrelAssetListMap = new HashMap<>();
5242

5343
public static void addBarrelAsset(BarrelWoodType type, BarrelAsset asset, Material... materials) {
54-
if (materials == null || materials.length == 0) {
44+
if (materials == null) {
5545
return;
5646
}
57-
58-
Collections.addAll(BARREL_ASSET_LIST_MAP.get(type).get(asset), Arrays.stream(materials).filter(Objects::nonNull).toArray(Material[]::new));
47+
Collections.addAll(barrelAssetListMap
48+
.computeIfAbsent(type, ignored -> new HashMap<>())
49+
.computeIfAbsent(asset, ignored -> new HashSet<>()),
50+
Arrays.stream(materials).filter(Objects::nonNull).toArray(Material[]::new)
51+
);
5952
}
6053

6154
public static boolean isBarrelAsset(BarrelAsset assetType, Material material) {
6255
if (material == null) {
6356
return false;
6457
}
6558

66-
return BARREL_ASSET_LIST_MAP.values().stream()
67-
.map((b) -> b.get(assetType))
59+
return barrelAssetListMap.values().stream()
60+
.map((b) -> b.getOrDefault(assetType, Set.of()))
6861
.anyMatch((materialSet) -> materialSet.contains(material));
6962
}
7063

7164
public static Set<Material> getMaterialsOf(BarrelWoodType type) {
7265
var output = EnumSet.noneOf(Material.class);
73-
BARREL_ASSET_LIST_MAP.get(type).values().forEach(output::addAll);
66+
barrelAssetListMap.get(type).values().forEach(output::addAll);
7467
return output;
7568
}
7669
}

0 commit comments

Comments
 (0)