BlockStates pattern loading optimization

This commit is contained in:
Aleksey 2021-01-08 23:54:17 +03:00
parent 1847b25aa9
commit 3b96ee6307
7 changed files with 27 additions and 94 deletions

View file

@ -9,32 +9,24 @@ import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import net.minecraft.block.Block;
import net.minecraft.client.render.model.ModelLoader;
import net.minecraft.client.render.model.json.JsonUnbakedModel;
import net.minecraft.client.render.model.json.ModelVariantMap.DeserializationContext;
import net.minecraft.client.util.ModelIdentifier;
import net.minecraft.item.Item;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import ru.betterend.BetterEnd;
import ru.betterend.interfaces.IdentifiedContext;
import ru.betterend.patterns.Patterned;
@Mixin(ModelLoader.class)
public class ModelLoaderMixin {
@Final
@Shadow
private DeserializationContext variantMapDeserializationContext;
@Final
@Shadow
private ResourceManager resourceManager;
@ -92,24 +84,4 @@ public class ModelLoaderMixin {
return model;
}
@Inject(method = "loadModel", at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/render/model/json/ModelVariantMap$DeserializationContext;setStateFactory(Lnet/minecraft/state/StateManager;)V",
shift = Shift.AFTER))
private void appendContextID(Identifier id, CallbackInfo info) {
IdentifiedContext context = IdentifiedContext.class.cast(variantMapDeserializationContext);
if (id.getNamespace().equals(BetterEnd.MOD_ID)) {
context.setContextId(BetterEnd.makeID("pattern/" + id.getPath()));
} else {
context.setContextId(null);
}
}
@Inject(method = "loadModel", at = @At("HEAD"))
private void loadModel(Identifier id, CallbackInfo info) throws Exception {
// if (!(id instanceof ModelIdentifier)) {
// System.out.println(id);
// }
}
}