From 22ab39c2db7fe2ca4ddcad5a830f0d0a079b5e26 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Wed, 13 Mar 2019 19:10:44 +0100 Subject: [PATCH] Get blend export running on 1.13 --- .../render/blend/BlendFrameCapturer.java | 6 +-- .../render/blend/BlendMeshBuilder.java | 19 +++++-- .../replaymod/render/blend/BlendState.java | 13 +++-- .../java/com/replaymod/render/blend/Util.java | 20 ++++--- .../replaymod/render/blend/data/DMesh.java | 10 ++-- .../replaymod/render/blend/data/DObject.java | 4 +- .../render/blend/exporters/ChunkExporter.java | 19 ++++--- .../blend/exporters/EntityExporter.java | 13 +++-- .../render/blend/exporters/ItemExporter.java | 52 +++++++++++++------ .../blend/exporters/ParticlesExporter.java | 11 ++-- .../render/blend/exporters/RenderState.java | 2 +- .../blend/exporters/TileEntityExporter.java | 7 +-- .../blend/mixin/MixinChunkRenderWorker.java | 25 ++++++--- .../blend/mixin/MixinModelRenderer.java | 7 ++- .../render/blend/mixin/MixinRenderGlobal.java | 37 +++++++++---- .../render/blend/mixin/MixinRenderItem.java | 25 ++++++--- .../blend/mixin/MixinRenderManager.java | 14 ++++- .../MixinTileEntityRendererDispatcher.java | 24 ++++++--- src/main/resources/META-INF/replaymod_at.cfg | 7 ++- versions/common.gradle | 2 +- 20 files changed, 220 insertions(+), 97 deletions(-) diff --git a/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java b/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java index 71378bc9..3627c9d0 100644 --- a/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java +++ b/src/main/java/com/replaymod/render/blend/BlendFrameCapturer.java @@ -1,12 +1,12 @@ package com.replaymod.render.blend; +import com.replaymod.core.versions.MCVer; import com.replaymod.render.capturer.RenderInfo; import com.replaymod.render.capturer.WorldRenderer; import com.replaymod.render.frame.RGBFrame; import com.replaymod.render.rendering.FrameCapturer; import com.replaymod.render.utils.ByteBufferPool; -import net.minecraft.client.Minecraft; -import org.lwjgl.util.Dimension; +import de.johni0702.minecraft.gui.utils.lwjgl.Dimension; import java.io.IOException; @@ -34,7 +34,7 @@ public class BlendFrameCapturer implements FrameCapturer { renderInfo.updateForNextFrame(); BlendState.getState().preFrame(framesDone); - worldRenderer.renderWorld(Minecraft.getMinecraft().timer.renderPartialTicks, null); + worldRenderer.renderWorld(MCVer.getMinecraft().timer.renderPartialTicks, null); BlendState.getState().postFrame(framesDone); return new RGBFrame(framesDone++, new Dimension(0, 0), ByteBufferPool.allocate(0)); diff --git a/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java b/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java index 48fdd148..62c6c876 100644 --- a/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java +++ b/src/main/java/com/replaymod/render/blend/BlendMeshBuilder.java @@ -3,13 +3,13 @@ package com.replaymod.render.blend; import com.replaymod.render.blend.data.DMaterial; import com.replaymod.render.blend.data.DMesh; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.ReadableVector3f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector2f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormatElement; import org.lwjgl.opengl.GL11; -import org.lwjgl.util.vector.ReadableVector3f; -import org.lwjgl.util.vector.Vector2f; -import org.lwjgl.util.vector.Vector3f; //#if MC>=10904 //#if MC>=11200 @@ -139,7 +139,12 @@ public class BlendMeshBuilder } public static DMesh addBufferToMesh(ByteBuffer buffer, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) { - return addBufferToMesh(buffer, buffer.remaining() / vertexFormat.getNextOffset(), mode, vertexFormat, mesh, vertOffset); + //#if MC>=11300 + int vertexCount = buffer.remaining() / vertexFormat.getSize(); + //#else + //$$ int vertexCount = buffer.remaining() / vertexFormat.getNextOffset(); + //#endif + return addBufferToMesh(buffer, vertexCount, mode, vertexFormat, mesh, vertOffset); } public static DMesh addBufferToMesh(ByteBuffer buffer, int vertexCount, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) { @@ -188,7 +193,11 @@ public class BlendMeshBuilder List vertices = new ArrayList<>(vertexCount); List uvs = new ArrayList<>(vertexCount); List colors = new ArrayList<>(vertexCount); - int step = vertexFormat.getNextOffset(); + //#if MC>=11300 + int step = vertexFormat.getSize(); + //#else + //$$ int step = vertexFormat.getNextOffset(); + //#endif for (int offset = 0; offset < vertexCount * step; offset += step) { vertices.add(new DMesh.Vertex( buffer.getFloat(offset ) - vertOffset.getX(), diff --git a/src/main/java/com/replaymod/render/blend/BlendState.java b/src/main/java/com/replaymod/render/blend/BlendState.java index 19133842..1eab7fd4 100644 --- a/src/main/java/com/replaymod/render/blend/BlendState.java +++ b/src/main/java/com/replaymod/render/blend/BlendState.java @@ -12,7 +12,6 @@ import com.replaymod.render.blend.exporters.TileEntityExporter; //#endif import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReportCategory; -import net.minecraft.util.ReportedException; import org.apache.commons.io.output.NullOutputStream; import org.blender.utils.BlenderFactory; import org.cakelab.blender.io.BlenderFile; @@ -83,7 +82,7 @@ public class BlendState implements Exporter { CrashReport report = CrashReport.makeCrashReport(e, "Setup of blend exporter"); CrashReportCategory category = report.makeCategory("Exporter"); addDetail(category, "Exporter", exporter::toString); - throw new ReportedException(report); + throw newReportedException(report); } } } @@ -97,7 +96,7 @@ public class BlendState implements Exporter { CrashReport report = CrashReport.makeCrashReport(e, "Tear down of blend exporter"); CrashReportCategory category = report.makeCategory("Exporter"); addDetail(category, "Exporter", exporter::toString); - throw new ReportedException(report); + throw newReportedException(report); } } @@ -134,8 +133,8 @@ public class BlendState implements Exporter { CrashReport report = CrashReport.makeCrashReport(e, "Pre frame of blend exporter"); CrashReportCategory category = report.makeCategory("Exporter"); addDetail(category, "Exporter", exporter::toString); - category.addCrashSection("Frame", frame); - throw new ReportedException(report); + addDetail(category, "Frame", () -> String.valueOf(frame)); + throw newReportedException(report); } } } @@ -149,8 +148,8 @@ public class BlendState implements Exporter { CrashReport report = CrashReport.makeCrashReport(e, "Post frame of blend exporter"); CrashReportCategory category = report.makeCategory("Exporter"); addDetail(category, "Exporter", exporter::toString); - category.addCrashSection("Frame", frame); - throw new ReportedException(report); + addDetail(category, "Frame", () -> String.valueOf(frame)); + throw newReportedException(report); } } diff --git a/src/main/java/com/replaymod/render/blend/Util.java b/src/main/java/com/replaymod/render/blend/Util.java index f438f87e..4f10c55c 100644 --- a/src/main/java/com/replaymod/render/blend/Util.java +++ b/src/main/java/com/replaymod/render/blend/Util.java @@ -1,5 +1,9 @@ package com.replaymod.render.blend; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix3f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Quaternion; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -8,10 +12,6 @@ import org.blender.dna.ListBase; import org.blender.utils.BlenderFactory; import org.cakelab.blender.nio.CPointer; import org.lwjgl.opengl.GL11; -import org.lwjgl.util.vector.Matrix3f; -import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Quaternion; -import org.lwjgl.util.vector.Vector3f; import java.io.IOException; import java.nio.FloatBuffer; @@ -37,7 +37,11 @@ public class Util { private static FloatBuffer floatBuffer = GLAllocation.createDirectFloatBuffer(16); public static Matrix4f getGlMatrix(int matrix) { floatBuffer.clear(); - GL11.glGetFloat(matrix, floatBuffer); + //#if MC>=11300 + GL11.glGetFloatv(matrix, floatBuffer); + //#else + //$$ GL11.glGetFloat(matrix, floatBuffer); + //#endif floatBuffer.rewind(); Matrix4f mat = new Matrix4f(); mat.load(floatBuffer); @@ -159,7 +163,11 @@ public class Util { public static String getTileEntityId(TileEntity tileEntity) { NBTTagCompound nbt = new NBTTagCompound(); - tileEntity.writeToNBT(nbt); + //#if MC>=11300 + tileEntity.write(nbt); + //#else + //$$ tileEntity.writeToNBT(nbt); + //#endif return nbt.getString("id"); } diff --git a/src/main/java/com/replaymod/render/blend/data/DMesh.java b/src/main/java/com/replaymod/render/blend/data/DMesh.java index e9f29879..c281fa0e 100644 --- a/src/main/java/com/replaymod/render/blend/data/DMesh.java +++ b/src/main/java/com/replaymod/render/blend/data/DMesh.java @@ -1,5 +1,7 @@ package com.replaymod.render.blend.data; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector2f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import org.blender.dna.CustomData; import org.blender.dna.CustomDataLayer; import org.blender.dna.Image; @@ -16,8 +18,6 @@ import org.blender.dna.Mesh; import org.cakelab.blender.io.block.BlockCodes; import org.cakelab.blender.nio.CArrayFacade; import org.cakelab.blender.nio.CPointer; -import org.lwjgl.util.vector.Vector2f; -import org.lwjgl.util.vector.Vector3f; import java.io.IOException; import java.util.ArrayList; @@ -199,9 +199,9 @@ public class DMesh { public void serialize(MVert mVert) throws IOException { CArrayFacade pos = mVert.getCo(); - pos.set(0, this.pos.x); - pos.set(1, this.pos.y); - pos.set(2, this.pos.z); + pos.set(0, this.pos.getX()); + pos.set(1, this.pos.getY()); + pos.set(2, this.pos.getZ()); CArrayFacade norm = mVert.getNo(); norm.set(0, this.normX); norm.set(1, this.normY); diff --git a/src/main/java/com/replaymod/render/blend/data/DObject.java b/src/main/java/com/replaymod/render/blend/data/DObject.java index 2ea96831..c375dfc3 100644 --- a/src/main/java/com/replaymod/render/blend/data/DObject.java +++ b/src/main/java/com/replaymod/render/blend/data/DObject.java @@ -1,6 +1,8 @@ package com.replaymod.render.blend.data; import com.replaymod.render.blend.Util; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Quaternion; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import org.blender.dna.AnimData; import org.blender.dna.BlenderObject; import org.blender.dna.Material; @@ -11,8 +13,6 @@ import org.blender.dna.bTrackToConstraint; import org.cakelab.blender.io.block.BlockCodes; import org.cakelab.blender.nio.CArrayFacade; import org.cakelab.blender.nio.CPointer; -import org.lwjgl.util.vector.Quaternion; -import org.lwjgl.util.vector.Vector3f; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/com/replaymod/render/blend/exporters/ChunkExporter.java b/src/main/java/com/replaymod/render/blend/exporters/ChunkExporter.java index 2f7a5d18..ef0d4a65 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/ChunkExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/ChunkExporter.java @@ -1,18 +1,18 @@ //#if MC>=10800 package com.replaymod.render.blend.exporters; +import com.replaymod.core.versions.MCVer; import com.replaymod.render.blend.BlendMeshBuilder; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.Exporter; -import com.replaymod.render.blend.data.DMaterial; import com.replaymod.render.blend.data.DMesh; import com.replaymod.render.blend.data.DObject; import com.replaymod.replaystudio.us.myles.ViaVersion.util.ReflectionUtil; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import lombok.SneakyThrows; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.chunk.CompiledChunk; import net.minecraft.client.renderer.chunk.RenderChunk; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; @@ -20,7 +20,12 @@ import net.minecraft.client.renderer.vertex.VertexBuffer; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL15; -import org.lwjgl.util.vector.Vector3f; + +//#if MC>=11300 +import net.minecraft.client.renderer.WorldRenderer.ContainerLocalRenderInformation; +//#else +//$$ import net.minecraft.client.renderer.RenderGlobal.ContainerLocalRenderInformation; +//#endif //#if MC>=10904 import net.minecraft.util.BlockRenderLayer; @@ -68,10 +73,10 @@ public class ChunkExporter implements Exporter { @SneakyThrows public void setup() throws IOException { - Minecraft mc = Minecraft.getMinecraft(); + Minecraft mc = MCVer.getMinecraft(); @SuppressWarnings("unchecked") - List renderInfos = mc.renderGlobal.renderInfos; - for (RenderGlobal.ContainerLocalRenderInformation renderInfo : renderInfos) { + List renderInfos = mc.renderGlobal.renderInfos; + for (ContainerLocalRenderInformation renderInfo : renderInfos) { RenderChunk renderChunk = ReflectionUtil.get(renderInfo, "renderChunk", RenderChunk.class); // SneakyThrows CompiledChunk compiledChunk = renderChunk.getCompiledChunk(); if (!compiledChunk.isEmpty()) { @@ -167,7 +172,7 @@ public class ChunkExporter implements Exporter { GL15.glGetBufferSubData(OpenGlHelper.GL_ARRAY_BUFFER, 0, byteBuffer); vertexBuffer.unbindBuffer(); - Minecraft.getMinecraft().getTextureManager().bindTexture(LOCATION_BLOCKS_TEXTURE); + MCVer.getMinecraft().getTextureManager().bindTexture(LOCATION_BLOCKS_TEXTURE); return BlendMeshBuilder.addBufferToMesh(byteBuffer, GL11.GL_QUADS, DefaultVertexFormats.BLOCK, null, null); } diff --git a/src/main/java/com/replaymod/render/blend/exporters/EntityExporter.java b/src/main/java/com/replaymod/render/blend/exporters/EntityExporter.java index 4d32339a..a8146885 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/EntityExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/EntityExporter.java @@ -1,14 +1,15 @@ //#if MC>=10800 package com.replaymod.render.blend.exporters; +import com.replaymod.core.versions.MCVer; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.Exporter; import com.replaymod.render.blend.data.DObject; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import lombok.SneakyThrows; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; -import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Vector3f; import java.io.IOException; import java.util.IdentityHashMap; @@ -17,7 +18,7 @@ import java.util.Map; import static com.replaymod.render.blend.Util.getGlModelViewMatrix; public class EntityExporter implements Exporter { - private final Minecraft mc = Minecraft.getMinecraft(); + private final Minecraft mc = MCVer.getMinecraft(); private final RenderState renderState; private DObject entitiesObject; private Map entityObjects; @@ -59,7 +60,11 @@ public class EntityExporter implements Exporter { if (entityObject == null) { entityObject = new DObject(DObject.Type.OB_EMPTY); entityObject.setParent(renderState.peekObject()); - entityObject.id.name = entity.getName(); + //#if MC>=11300 + entityObject.id.name = entity.getName().getString(); + //#else + //$$ entityObject.id.name = entity.getName(); + //#endif entityObjects.put(entity, entityObject); } renderState.pushObject(entityObject); diff --git a/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java b/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java index 8493b78c..7f7a9178 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/ItemExporter.java @@ -5,22 +5,29 @@ import com.replaymod.render.blend.BlendMeshBuilder; import com.replaymod.render.blend.Exporter; import com.replaymod.render.blend.data.DMesh; import com.replaymod.render.blend.data.DObject; -import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraftforge.client.model.pipeline.LightUtil; import org.lwjgl.opengl.GL11; +//#if MC>=11300 +import net.minecraft.client.renderer.model.IBakedModel; +//#else +//$$ import net.minecraft.client.renderer.block.model.BakedQuad; //#if MC>=10904 -import net.minecraft.client.renderer.RenderItem; -import net.minecraft.client.renderer.block.model.IBakedModel; +//$$ 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 +//#endif import java.util.List; +import java.util.Random; public class ItemExporter implements Exporter { private final RenderState renderState; @@ -29,7 +36,7 @@ public class ItemExporter implements Exporter { this.renderState = renderState; } - public void onRender(RenderItem renderItem, IBakedModel model, ItemStack stack) { + public void onRender(Object renderItem, IBakedModel model, ItemStack stack) { DObject object = getObjectForItemStack(renderItem, model, stack); renderState.pushObject(object); @@ -42,7 +49,7 @@ public class ItemExporter implements Exporter { renderState.pop(); } - private DObject getObjectForItemStack(RenderItem renderItem, IBakedModel model, ItemStack stack) { + private DObject getObjectForItemStack(Object renderItem, IBakedModel model, ItemStack stack) { int frame = renderState.getFrame(); DObject parent = renderState.peekObject(); DObject object = null; @@ -56,7 +63,11 @@ public class ItemExporter implements Exporter { } if (object == null) { object = new ItemBasedDObject(renderItem, model, stack); - object.id.name = stack.getDisplayName(); + //#if MC>=11300 + object.id.name = stack.getDisplayName().getString(); + //#else + //$$ object.id.name = stack.getDisplayName(); + //#endif object.setParent(parent); } object.lastFrame = frame; @@ -64,7 +75,7 @@ public class ItemExporter implements Exporter { } @SuppressWarnings("unchecked") - private static DMesh generateMeshForItemStack(RenderItem renderItem, IBakedModel model, ItemStack stack) { + private static DMesh generateMeshForItemStack(Object renderItem, IBakedModel model, ItemStack stack) { DMesh mesh = new DMesh(); BlendMeshBuilder builder = new BlendMeshBuilder(mesh); builder.setWellBehaved(true); @@ -75,30 +86,41 @@ public class ItemExporter implements Exporter { //$$ builder.setVertexFormat(DefaultVertexFormats.ITEM); //#endif - //#if MC>=10904 + //#if MC>=11300 for (EnumFacing face : EnumFacing.values()) { - renderQuads(renderItem, builder, model.getQuads(null, face, 0), stack); + renderQuads(renderItem, builder, model.getQuads(null, face, new Random()), stack); } - renderQuads(renderItem, builder, model.getQuads(null, null, 0), stack); + renderQuads(renderItem, builder, model.getQuads(null, null, new Random()), stack); + //#else + //#if MC>=10904 + //$$ for (EnumFacing face : EnumFacing.values()) { + //$$ renderQuads(renderItem, builder, model.getQuads(null, face, 0), stack); + //$$ } + //$$ renderQuads(renderItem, builder, model.getQuads(null, null, 0), stack); //#else //$$ for (EnumFacing face : EnumFacing.values()) { //$$ renderQuads(renderItem, builder, model.getFaceQuads(face), stack); //$$ } //$$ renderQuads(renderItem, builder, model.getGeneralQuads(), stack); //#endif + //#endif builder.finishDrawing(); return mesh; } - private static void renderQuads(RenderItem renderItem, BlendMeshBuilder buffer, List quads, ItemStack stack) { + private static void renderQuads(Object renderItem, BlendMeshBuilder buffer, List quads, ItemStack stack) { for (BakedQuad quad : quads) { int color = stack != null && quad.hasTintIndex() //#if MC>=10904 - ? renderItem.itemColors.getColorFromItemstack(stack, quad.getTintIndex()) | 0xff000000 + ? ((ItemRenderer) renderItem).itemColors.getColor(stack, quad.getTintIndex()) | 0xff000000 + //#else + //#if MC>=10904 + //$$ ? ((RenderItem) renderItem).itemColors.getColorFromItemstack(stack, quad.getTintIndex()) | 0xff000000 //#else //$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000 //#endif + //#endif : 0xffffffff; LightUtil.renderQuadColor(buffer, quad, color); } @@ -106,19 +128,19 @@ public class ItemExporter implements Exporter { } private static class ItemBasedDObject extends DObject { - private final RenderItem renderItem; + private final Object renderItem; private final IBakedModel model; private final ItemStack stack; private boolean valid; - public ItemBasedDObject(RenderItem renderItem, IBakedModel model, ItemStack stack) { + public ItemBasedDObject(Object renderItem, IBakedModel model, ItemStack stack) { super(generateMeshForItemStack(renderItem, model, stack)); this.renderItem = renderItem; this.model = model; this.stack = stack; } - public boolean isBasedOn(RenderItem renderItem, IBakedModel model, ItemStack stack) { + public boolean isBasedOn(Object renderItem, IBakedModel model, ItemStack stack) { return this.renderItem == renderItem && this.model == model && this.stack == stack; } diff --git a/src/main/java/com/replaymod/render/blend/exporters/ParticlesExporter.java b/src/main/java/com/replaymod/render/blend/exporters/ParticlesExporter.java index 565e63f7..5b06caa4 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/ParticlesExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/ParticlesExporter.java @@ -1,20 +1,21 @@ //#if MC>=10800 package com.replaymod.render.blend.exporters; +import com.replaymod.core.versions.MCVer; import com.replaymod.render.blend.BlendMeshBuilder; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.Exporter; import com.replaymod.render.blend.data.DMesh; import com.replaymod.render.blend.data.DObject; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Vector3f; //#if MC>=10904 import net.minecraft.client.particle.Particle; //#else //$$ import net.minecraft.client.particle.EntityFX; +//$$ import net.minecraft.entity.Entity; //#endif //#if MC>=10809 @@ -29,7 +30,7 @@ import static com.replaymod.core.versions.MCVer.*; import static com.replaymod.render.blend.Util.getGlModelViewMatrix; public class ParticlesExporter implements Exporter { - private final Minecraft mc = Minecraft.getMinecraft(); + private final Minecraft mc = MCVer.getMinecraft(); private final RenderState renderState; private DObject pointAtObject; private DObject particlesObject; @@ -151,7 +152,7 @@ public class ParticlesExporter implements Exporter { //$$ builder.startDrawingQuads(); //#endif //#if MC>=10809 - particle.renderParticle(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0); + particle.renderParticle(builder, MCVer.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0); //#else //$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0); //#endif diff --git a/src/main/java/com/replaymod/render/blend/exporters/RenderState.java b/src/main/java/com/replaymod/render/blend/exporters/RenderState.java index fbf4ab9b..9f385ce3 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/RenderState.java +++ b/src/main/java/com/replaymod/render/blend/exporters/RenderState.java @@ -5,7 +5,7 @@ import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.Exporter; import com.replaymod.render.blend.data.DMaterial; import com.replaymod.render.blend.data.DObject; -import org.lwjgl.util.vector.Matrix4f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f; import java.io.IOException; import java.util.Deque; diff --git a/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java b/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java index 7f77f858..b6fd2c59 100644 --- a/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java +++ b/src/main/java/com/replaymod/render/blend/exporters/TileEntityExporter.java @@ -1,14 +1,15 @@ //#if MC>=10800 package com.replaymod.render.blend.exporters; +import com.replaymod.core.versions.MCVer; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.Exporter; import com.replaymod.render.blend.data.DObject; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Matrix4f; +import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f; import lombok.SneakyThrows; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; -import org.lwjgl.util.vector.Matrix4f; -import org.lwjgl.util.vector.Vector3f; //#if MC>=10904 import net.minecraft.util.math.BlockPos; @@ -24,7 +25,7 @@ import static com.replaymod.render.blend.Util.getGlModelViewMatrix; import static com.replaymod.render.blend.Util.getTileEntityId; public class TileEntityExporter implements Exporter { - private final Minecraft mc = Minecraft.getMinecraft(); + private final Minecraft mc = MCVer.getMinecraft(); private final RenderState renderState; private DObject tileEntitiesObject; private Map tileEntityObjects; diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinChunkRenderWorker.java b/src/main/java/com/replaymod/render/blend/mixin/MixinChunkRenderWorker.java index 4c59e6cd..1ef82647 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinChunkRenderWorker.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinChunkRenderWorker.java @@ -3,31 +3,42 @@ package com.replaymod.render.blend.mixin; 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 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; +//#if MC>=11300 +import net.minecraft.client.renderer.chunk.ChunkRenderTask; //#else -//$$ import net.minecraft.util.EnumWorldBlockLayer; +//$$ import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator; //#endif @Mixin(ChunkRenderWorker.class) public abstract class MixinChunkRenderWorker { @Inject(method = "processTask", at = @At("RETURN")) - public void afterChunkUpdate(ChunkCompileTaskGenerator task, CallbackInfo ci) { + //if MC>=11300 + public void afterChunkUpdate(ChunkRenderTask task, CallbackInfo ci) { BlendState blendState = BlendState.getState(); if (blendState != null) { - if (task.getStatus() == ChunkCompileTaskGenerator.Status.DONE - && task.getType() == ChunkCompileTaskGenerator.Type.REBUILD_CHUNK) { + if (task.getStatus() == ChunkRenderTask.Status.DONE + && task.getType() == ChunkRenderTask.Type.REBUILD_CHUNK) { blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), task.getCompiledChunk()); } } } + //#else + //$$ public void afterChunkUpdate(ChunkCompileTaskGenerator task, CallbackInfo ci) { + //$$ BlendState blendState = BlendState.getState(); + //$$ if (blendState != null) { + //$$ if (task.getStatus() == ChunkCompileTaskGenerator.Status.DONE + //$$ && task.getType() == ChunkCompileTaskGenerator.Type.REBUILD_CHUNK) { + //$$ blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), task.getCompiledChunk()); + //$$ } + //$$ } + //$$ } + //#endif } //#endif diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinModelRenderer.java b/src/main/java/com/replaymod/render/blend/mixin/MixinModelRenderer.java index 9a540bad..e452b1f5 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinModelRenderer.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinModelRenderer.java @@ -3,12 +3,17 @@ package com.replaymod.render.blend.mixin; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.exporters.ModelRendererExporter; -import net.minecraft.client.model.ModelRenderer; 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>=11300 +import net.minecraft.client.renderer.entity.model.ModelRenderer; +//#else +//$$ import net.minecraft.client.model.ModelRenderer; +//#endif + @Mixin(ModelRenderer.class) public abstract class MixinModelRenderer { @Inject(method = "render", at = @At("HEAD")) diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderGlobal.java b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderGlobal.java index 44256e49..b77e4e0d 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderGlobal.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderGlobal.java @@ -4,7 +4,6 @@ package com.replaymod.render.blend.mixin; import com.replaymod.render.blend.BlendState; import com.replaymod.render.blend.exporters.EntityExporter; import com.replaymod.render.blend.exporters.TileEntityExporter; -import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.culling.ICamera; import net.minecraft.entity.Entity; import org.spongepowered.asm.mixin.Mixin; @@ -12,7 +11,17 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(RenderGlobal.class) +//#if MC>=11300 +import net.minecraft.client.renderer.WorldRenderer; +//#else +//$$ import net.minecraft.client.renderer.RenderGlobal; +//#endif + +//#if MC>=11300 +@Mixin(WorldRenderer.class) +//#else +//$$ @Mixin(RenderGlobal.class) +//#endif public abstract class MixinRenderGlobal { // FIXME wither skull ._. mojang pls @@ -46,9 +55,14 @@ public abstract class MixinRenderGlobal { } } - @Inject(method = "renderEntities", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V")) + @Inject(method = "renderEntities", at = @At( + value = "INVOKE", + //#if MC>=11300 + target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;render(Lnet/minecraft/tileentity/TileEntity;FI)V" + //#else + //$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V") + //#endif + )) public void preTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) { BlendState blendState = BlendState.getState(); if (blendState != null) { @@ -56,10 +70,15 @@ public abstract class MixinRenderGlobal { } } - @Inject(method = "renderEntities", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V", - shift = At.Shift.AFTER)) + @Inject(method = "renderEntities", at = @At( + value = "INVOKE", + //#if MC>=11300 + target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;render(Lnet/minecraft/tileentity/TileEntity;FI)V", + //#else + //$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V"), + //#endif + shift = At.Shift.AFTER + )) public void postTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) { BlendState blendState = BlendState.getState(); if (blendState != null) { diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderItem.java b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderItem.java index 09f38a1d..083384c7 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderItem.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderItem.java @@ -9,27 +9,40 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//#if MC>=11300 +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.model.IBakedModel; +//#else //#if MC>=10904 -import net.minecraft.client.renderer.RenderItem; -import net.minecraft.client.renderer.block.model.IBakedModel; +//$$ 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) +//#if MC>=11300 +@Mixin(ItemRenderer.class) +//#else +//$$ @Mixin(RenderItem.class) +//#endif public abstract class MixinRenderItem { - //#if MC>=10904 - @Inject(method = "renderModel(Lnet/minecraft/client/renderer/block/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V", + //#if MC>=11300 + @Inject(method = "renderModel(Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V", at = @At("HEAD")) //#else + //#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 + //#endif private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) { BlendState blendState = BlendState.getState(); if (blendState != null) { - blendState.get(ItemExporter.class).onRender((RenderItem)(Object)this, model, stack); + blendState.get(ItemExporter.class).onRender(this, model, stack); } } } diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderManager.java b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderManager.java index ca777c2b..17931095 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinRenderManager.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinRenderManager.java @@ -18,7 +18,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(RenderManager.class) public abstract class MixinRenderManager { - @Inject(method = "doRenderEntity", + @Inject( + //#if MC>=11300 + method = "renderEntity", + //#else + //$$ method = "doRenderEntity", + //#endif at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V")) public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box, @@ -33,7 +38,12 @@ public abstract class MixinRenderManager { } } - @Inject(method = "doRenderEntity", + @Inject( + //#if MC>=11300 + method = "renderEntity", + //#else + //$$ method = "doRenderEntity", + //#endif at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V", shift = At.Shift.AFTER)) diff --git a/src/main/java/com/replaymod/render/blend/mixin/MixinTileEntityRendererDispatcher.java b/src/main/java/com/replaymod/render/blend/mixin/MixinTileEntityRendererDispatcher.java index 65d95761..089ecea7 100644 --- a/src/main/java/com/replaymod/render/blend/mixin/MixinTileEntityRendererDispatcher.java +++ b/src/main/java/com/replaymod/render/blend/mixin/MixinTileEntityRendererDispatcher.java @@ -13,15 +13,22 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(TileEntityRendererDispatcher.class) public abstract class MixinTileEntityRendererDispatcher { - //#if MC>=11200 - @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V", + //#if MC>=11300 + @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V", at = @At("HEAD")) - public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, float alpha, CallbackInfo ci) { + public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) { + float alpha = 1; + //#else + //#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, 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 //#endif BlendState blendState = BlendState.getState(); if (blendState != null) { @@ -29,14 +36,19 @@ public abstract class MixinTileEntityRendererDispatcher { } } - //#if MC>=11200 - @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V", + //#if MC>=11300 + @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V", at = @At("RETURN")) - public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, float alpha, CallbackInfo ci) { + public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) { + //#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, 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 //#endif BlendState blendState = BlendState.getState(); if (blendState != null) { diff --git a/src/main/resources/META-INF/replaymod_at.cfg b/src/main/resources/META-INF/replaymod_at.cfg index 866e5a48..0df2108e 100644 --- a/src/main/resources/META-INF/replaymod_at.cfg +++ b/src/main/resources/META-INF/replaymod_at.cfg @@ -110,8 +110,11 @@ public net.minecraft.client.renderer.WorldRenderer field_72740_G # renderEntitie ##endif ##endif -public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation -#public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation field_178553_a # renderChunk +##if MC>=11300 +public net.minecraft.client.renderer.WorldRenderer$ContainerLocalRenderInformation +##else +#$$ public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation +##endif # ChunkRenderDispatcher public-f net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178519_d # queueChunkUpdates diff --git a/versions/common.gradle b/versions/common.gradle index ac5c198d..0b90624c 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -179,7 +179,7 @@ dependencies { shade 'org.aspectj:aspectjrt:1.8.2' - shade 'com.github.ReplayMod.JavaBlend:2.79.0:e0a1b9a' + shade 'com.github.ReplayMod.JavaBlend:2.79.0:a0696f8' def studioVersion = mcVersionStr if (studioVersion == '1.8.9') studioVersion = '1.8'