mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 03:39:58 +03:00
39 lines
1.8 KiB
Diff
39 lines
1.8 KiB
Diff
--- ../src-base/minecraft/net/minecraft/util/ClassInheritanceMultiMap.java
|
|
+++ ../src-work/minecraft/net/minecraft/util/ClassInheritanceMultiMap.java
|
|
@@ -13,7 +13,8 @@
|
|
|
|
public class ClassInheritanceMultiMap<T> extends AbstractSet<T>
|
|
{
|
|
- private static final Set < Class<? >> ALL_KNOWN = Sets. < Class<? >> newHashSet();
|
|
+ // Forge: Use concurrent collection to allow creating chunks from multiple threads safely
|
|
+ private static final Set < Class<? >> ALL_KNOWN = Collections.newSetFromMap(new java.util.concurrent.ConcurrentHashMap<Class<?>, Boolean>());
|
|
private final Map < Class<?>, List<T >> map = Maps. < Class<?>, List<T >> newHashMap();
|
|
private final Set < Class<? >> knownKeys = Sets. < Class<? >> newIdentityHashSet();
|
|
private final Class<T> baseClass;
|
|
@@ -122,6 +123,17 @@
|
|
{
|
|
public Iterator<S> iterator()
|
|
{
|
|
+ // CatServer start - Optimization from Foamfix
|
|
+ Class c = ClassInheritanceMultiMap.this.initializeClassLookup(clazz);
|
|
+ List<T> list = ClassInheritanceMultiMap.this.map.get(c);
|
|
+ if (list == null) {
|
|
+ return Collections.emptyIterator();
|
|
+ } else {
|
|
+ Iterator<T> iterator = list.iterator();
|
|
+ return clazz == c ? (Iterator<S>) iterator : Iterators.filter(iterator, clazz);
|
|
+ }
|
|
+ // CatServer end
|
|
+ /*
|
|
List<T> list = (List)ClassInheritanceMultiMap.this.map.get(ClassInheritanceMultiMap.this.initializeClassLookup(clazz));
|
|
|
|
if (list == null)
|
|
@@ -133,6 +145,7 @@
|
|
Iterator<T> iterator = list.iterator();
|
|
return Iterators.filter(iterator, clazz);
|
|
}
|
|
+ */
|
|
}
|
|
};
|
|
}
|