package net.minecraft.util; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.Util; public class ClassTreeIdRegistry { public static final int NO_ID_VALUE = -1; private final Object2IntMap> classToLastIdCache = Util.make(new Object2IntOpenHashMap<>(), p_327761_ -> p_327761_.defaultReturnValue(-1)); public int getLastIdFor(Class p_330417_) { int i = this.classToLastIdCache.getInt(p_330417_); if (i != -1) { return i; } else { Class oclass = p_330417_; while ((oclass = oclass.getSuperclass()) != Object.class) { int j = this.classToLastIdCache.getInt(oclass); if (j != -1) { return j; } } return -1; } } public int getCount(Class p_335504_) { return this.getLastIdFor(p_335504_) + 1; } public int define(Class p_334105_) { int i = this.getLastIdFor(p_334105_); int j = i == -1 ? 0 : i + 1; this.classToLastIdCache.put(p_334105_, j); return j; } }