Remove duplicate list held by DebugLevelSource
This commit is contained in:
parent
2081b63b56
commit
8ee85f2c16
|
|
@ -0,0 +1,38 @@
|
||||||
|
package org.embeddedt.modernfix.common.mixin.perf.forge_registry_alloc;
|
||||||
|
|
||||||
|
import net.minecraft.world.level.levelgen.DebugLevelSource;
|
||||||
|
import net.minecraftforge.registries.GameData;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.util.stream.Collector;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@Mixin(DebugLevelSource.class)
|
||||||
|
public class DebugLevelSourceMixin {
|
||||||
|
/**
|
||||||
|
* @author embeddedt
|
||||||
|
* @reason Reuse the existing blockstate list held by Forge instead of making a new one
|
||||||
|
*/
|
||||||
|
@Redirect(method = "initValidStates", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;collect(Ljava/util/stream/Collector;)Ljava/lang/Object;", ordinal = 0), remap = false)
|
||||||
|
private static Object getStateList(Stream<?> instance, Collector<?, ?, ?> arCollector) {
|
||||||
|
var idMapper = GameData.getBlockStateIDMap();
|
||||||
|
return new AbstractList<>() {
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return idMapper.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object get(int index) {
|
||||||
|
var o = idMapper.byId(index);
|
||||||
|
if (o == null) {
|
||||||
|
throw new IndexOutOfBoundsException();
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user