Update blend export to 1.12.2

This commit is contained in:
Jonas Herzig
2018-03-03 18:40:52 +01:00
parent 6794b58524
commit 1bdf7da525
16 changed files with 407 additions and 102 deletions

View File

@@ -4,12 +4,17 @@ import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ChunkExporter;
import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator;
import net.minecraft.client.renderer.chunk.ChunkRenderWorker;
import net.minecraft.util.EnumWorldBlockLayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=10904
import net.minecraft.util.BlockRenderLayer;
//#else
//$$ import net.minecraft.util.EnumWorldBlockLayer;
//#endif
@Mixin(ChunkRenderWorker.class)
public abstract class MixinChunkRenderWorker {
@@ -19,11 +24,7 @@ public abstract class MixinChunkRenderWorker {
if (blendState != null) {
if (task.getStatus() == ChunkCompileTaskGenerator.Status.DONE
&& task.getType() == ChunkCompileTaskGenerator.Type.REBUILD_CHUNK) {
for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
if (task.getCompiledChunk().isLayerStarted(layer)) {
blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), layer);
}
}
blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), task.getCompiledChunk());
}
}
}

View File

@@ -2,14 +2,23 @@ package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ParticlesExporter;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(EffectRenderer.class)
//#if MC>=10904
import net.minecraft.client.particle.ParticleManager;
//#else
//$$ import net.minecraft.client.particle.EffectRenderer;
//#endif
//#if MC>=10904
@Mixin(ParticleManager.class)
//#else
//$$ @Mixin(EffectRenderer.class)
//#endif
public abstract class MixinEffectRenderer {
@Inject(method = "renderParticles", at = @At("HEAD"))

View File

@@ -18,7 +18,11 @@ public abstract class MixinRenderGlobal {
@Inject(method = "renderEntities",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)V"))
//#if MC>=10904
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityStatic(Lnet/minecraft/entity/Entity;FZ)V"))
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)V"))
//#endif
public void preEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
@@ -28,7 +32,11 @@ public abstract class MixinRenderGlobal {
@Inject(method = "renderEntities",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)V",
//#if MC>=10904
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityStatic(Lnet/minecraft/entity/Entity;FZ)V",
//#else
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)V",
//#endif
shift = At.Shift.AFTER))
public void postEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
BlendState blendState = BlendState.getState();

View File

@@ -2,22 +2,33 @@ package com.replaymod.render.blend.mixin;
import com.replaymod.render.blend.BlendState;
import com.replaymod.render.blend.exporters.ItemExporter;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=10904
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.IBakedModel;
//#else
//$$ import net.minecraft.client.renderer.entity.RenderItem;
//$$ import net.minecraft.client.resources.model.IBakedModel;
//#endif
@Mixin(RenderItem.class)
public abstract class MixinRenderItem {
@Inject(method = "renderModel(Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
//#if MC>=10904
@Inject(method = "renderModel(Lnet/minecraft/client/renderer/block/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
at = @At("HEAD"))
//#else
//$$ @Inject(method = "renderModel(Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
//$$ at = @At("HEAD"))
//#endif
private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) {
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(ItemExporter.class).onRender(model, stack);
blendState.get(ItemExporter.class).onRender((RenderItem)(Object)this, model, stack);
}
}
}

View File

@@ -7,7 +7,12 @@ import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#if MC>=10904
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#else
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#endif
@Mixin(RenderManager.class)
public abstract class MixinRenderManager {
@@ -15,7 +20,12 @@ public abstract class MixinRenderManager {
@Inject(method = "doRenderEntity",
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFFZ)V"))
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box, CallbackInfoReturnable<Boolean> ci) {
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
//#if MC>=10904
CallbackInfo ci) {
//#else
//$$ CallbackInfoReturnable<Boolean> ci) {
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(EntityExporter.class).preRender(entity, x, y, z, yaw, renderPartialTicks);
@@ -26,7 +36,12 @@ public abstract class MixinRenderManager {
at = @At(value = "INVOKE",
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFFZ)V",
shift = At.Shift.AFTER))
public void postRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box, CallbackInfoReturnable<Boolean> ci) {
public void postRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
//#if MC>=10904
CallbackInfo ci) {
//#else
//$$ CallbackInfoReturnable<Boolean> ci) {
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(EntityExporter.class).postRender(entity, x, y, z, yaw, renderPartialTicks);

View File

@@ -12,18 +12,31 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(TileEntityRendererDispatcher.class)
public abstract class MixinTileEntityRendererDispatcher {
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
//#if MC>=11200
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
at = @At("HEAD"))
public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, CallbackInfo ci) {
public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, float alpha, CallbackInfo ci) {
//#else
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
//$$ at = @At("HEAD"))
//$$ public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, CallbackInfo ci) {
//$$ float alpha = 1;
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).preRender(tileEntity, x, y, z, renderPartialTicks, destroyStage);
blendState.get(TileEntityExporter.class).preRender(tileEntity, x, y, z, renderPartialTicks, destroyStage, alpha);
}
}
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
//#if MC>=11200
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
at = @At("RETURN"))
public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, CallbackInfo ci) {
public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, float alpha, CallbackInfo ci) {
//#else
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
//$$ at = @At("RETURN"))
//$$ public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, CallbackInfo ci) {
//#endif
BlendState blendState = BlendState.getState();
if (blendState != null) {
blendState.get(TileEntityExporter.class).postRender();