diff --git a/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java b/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java index 77ded4d59..8c8d152a3 100644 --- a/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java +++ b/common/src/main/java/com/dfsek/terra/api/util/collections/ProbabilityCollection.java @@ -49,10 +49,14 @@ public class ProbabilityCollection implements Collection { public ProbabilityCollection map(Function mapper, boolean carryNull) { ProbabilityCollection newCollection = new ProbabilityCollection<>(); - cont.forEach((o, count) -> { - if(o != null) newCollection.add(mapper.apply(o), count.get()); - else if(carryNull) newCollection.add(null, count.get()); - }); + newCollection.array = new Object[array.length]; + + Map cache = new HashMap<>(); + + for(int i = 0; i < array.length; i++) { + if(carryNull && array[i] == null) continue; + newCollection.array[i] = cache.computeIfAbsent((E) array[i], mapper); + } return newCollection; }