2424
2525import java .util .Arrays ;
2626import java .util .Collections ;
27- import java .util .EnumMap ;
2827import java .util .EnumSet ;
28+ import java .util .HashMap ;
29+ import java .util .HashSet ;
2930import java .util .Map ;
3031import java .util .Objects ;
3132import 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