Get blend export running on 1.13
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
package com.replaymod.render.blend;
|
package com.replaymod.render.blend;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.render.capturer.RenderInfo;
|
import com.replaymod.render.capturer.RenderInfo;
|
||||||
import com.replaymod.render.capturer.WorldRenderer;
|
import com.replaymod.render.capturer.WorldRenderer;
|
||||||
import com.replaymod.render.frame.RGBFrame;
|
import com.replaymod.render.frame.RGBFrame;
|
||||||
import com.replaymod.render.rendering.FrameCapturer;
|
import com.replaymod.render.rendering.FrameCapturer;
|
||||||
import com.replaymod.render.utils.ByteBufferPool;
|
import com.replaymod.render.utils.ByteBufferPool;
|
||||||
import net.minecraft.client.Minecraft;
|
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||||
import org.lwjgl.util.Dimension;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ public class BlendFrameCapturer implements FrameCapturer<RGBFrame> {
|
|||||||
renderInfo.updateForNextFrame();
|
renderInfo.updateForNextFrame();
|
||||||
|
|
||||||
BlendState.getState().preFrame(framesDone);
|
BlendState.getState().preFrame(framesDone);
|
||||||
worldRenderer.renderWorld(Minecraft.getMinecraft().timer.renderPartialTicks, null);
|
worldRenderer.renderWorld(MCVer.getMinecraft().timer.renderPartialTicks, null);
|
||||||
BlendState.getState().postFrame(framesDone);
|
BlendState.getState().postFrame(framesDone);
|
||||||
|
|
||||||
return new RGBFrame(framesDone++, new Dimension(0, 0), ByteBufferPool.allocate(0));
|
return new RGBFrame(framesDone++, new Dimension(0, 0), ByteBufferPool.allocate(0));
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ package com.replaymod.render.blend;
|
|||||||
|
|
||||||
import com.replaymod.render.blend.data.DMaterial;
|
import com.replaymod.render.blend.data.DMaterial;
|
||||||
import com.replaymod.render.blend.data.DMesh;
|
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.Tessellator;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||||
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
import net.minecraft.client.renderer.vertex.VertexFormatElement;
|
||||||
import org.lwjgl.opengl.GL11;
|
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>=10904
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
@@ -139,7 +139,12 @@ public class BlendMeshBuilder
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static DMesh addBufferToMesh(ByteBuffer buffer, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) {
|
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) {
|
public static DMesh addBufferToMesh(ByteBuffer buffer, int vertexCount, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) {
|
||||||
@@ -188,7 +193,11 @@ public class BlendMeshBuilder
|
|||||||
List<DMesh.Vertex> vertices = new ArrayList<>(vertexCount);
|
List<DMesh.Vertex> vertices = new ArrayList<>(vertexCount);
|
||||||
List<Vector2f> uvs = new ArrayList<>(vertexCount);
|
List<Vector2f> uvs = new ArrayList<>(vertexCount);
|
||||||
List<Integer> colors = new ArrayList<>(vertexCount);
|
List<Integer> 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) {
|
for (int offset = 0; offset < vertexCount * step; offset += step) {
|
||||||
vertices.add(new DMesh.Vertex(
|
vertices.add(new DMesh.Vertex(
|
||||||
buffer.getFloat(offset ) - vertOffset.getX(),
|
buffer.getFloat(offset ) - vertOffset.getX(),
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import com.replaymod.render.blend.exporters.TileEntityExporter;
|
|||||||
//#endif
|
//#endif
|
||||||
import net.minecraft.crash.CrashReport;
|
import net.minecraft.crash.CrashReport;
|
||||||
import net.minecraft.crash.CrashReportCategory;
|
import net.minecraft.crash.CrashReportCategory;
|
||||||
import net.minecraft.util.ReportedException;
|
|
||||||
import org.apache.commons.io.output.NullOutputStream;
|
import org.apache.commons.io.output.NullOutputStream;
|
||||||
import org.blender.utils.BlenderFactory;
|
import org.blender.utils.BlenderFactory;
|
||||||
import org.cakelab.blender.io.BlenderFile;
|
import org.cakelab.blender.io.BlenderFile;
|
||||||
@@ -83,7 +82,7 @@ public class BlendState implements Exporter {
|
|||||||
CrashReport report = CrashReport.makeCrashReport(e, "Setup of blend exporter");
|
CrashReport report = CrashReport.makeCrashReport(e, "Setup of blend exporter");
|
||||||
CrashReportCategory category = report.makeCategory("Exporter");
|
CrashReportCategory category = report.makeCategory("Exporter");
|
||||||
addDetail(category, "Exporter", exporter::toString);
|
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");
|
CrashReport report = CrashReport.makeCrashReport(e, "Tear down of blend exporter");
|
||||||
CrashReportCategory category = report.makeCategory("Exporter");
|
CrashReportCategory category = report.makeCategory("Exporter");
|
||||||
addDetail(category, "Exporter", exporter::toString);
|
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");
|
CrashReport report = CrashReport.makeCrashReport(e, "Pre frame of blend exporter");
|
||||||
CrashReportCategory category = report.makeCategory("Exporter");
|
CrashReportCategory category = report.makeCategory("Exporter");
|
||||||
addDetail(category, "Exporter", exporter::toString);
|
addDetail(category, "Exporter", exporter::toString);
|
||||||
category.addCrashSection("Frame", frame);
|
addDetail(category, "Frame", () -> String.valueOf(frame));
|
||||||
throw new ReportedException(report);
|
throw newReportedException(report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -149,8 +148,8 @@ public class BlendState implements Exporter {
|
|||||||
CrashReport report = CrashReport.makeCrashReport(e, "Post frame of blend exporter");
|
CrashReport report = CrashReport.makeCrashReport(e, "Post frame of blend exporter");
|
||||||
CrashReportCategory category = report.makeCategory("Exporter");
|
CrashReportCategory category = report.makeCategory("Exporter");
|
||||||
addDetail(category, "Exporter", exporter::toString);
|
addDetail(category, "Exporter", exporter::toString);
|
||||||
category.addCrashSection("Frame", frame);
|
addDetail(category, "Frame", () -> String.valueOf(frame));
|
||||||
throw new ReportedException(report);
|
throw newReportedException(report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
package com.replaymod.render.blend;
|
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.client.renderer.GLAllocation;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
@@ -8,10 +12,6 @@ import org.blender.dna.ListBase;
|
|||||||
import org.blender.utils.BlenderFactory;
|
import org.blender.utils.BlenderFactory;
|
||||||
import org.cakelab.blender.nio.CPointer;
|
import org.cakelab.blender.nio.CPointer;
|
||||||
import org.lwjgl.opengl.GL11;
|
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.io.IOException;
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
@@ -37,7 +37,11 @@ public class Util {
|
|||||||
private static FloatBuffer floatBuffer = GLAllocation.createDirectFloatBuffer(16);
|
private static FloatBuffer floatBuffer = GLAllocation.createDirectFloatBuffer(16);
|
||||||
public static Matrix4f getGlMatrix(int matrix) {
|
public static Matrix4f getGlMatrix(int matrix) {
|
||||||
floatBuffer.clear();
|
floatBuffer.clear();
|
||||||
GL11.glGetFloat(matrix, floatBuffer);
|
//#if MC>=11300
|
||||||
|
GL11.glGetFloatv(matrix, floatBuffer);
|
||||||
|
//#else
|
||||||
|
//$$ GL11.glGetFloat(matrix, floatBuffer);
|
||||||
|
//#endif
|
||||||
floatBuffer.rewind();
|
floatBuffer.rewind();
|
||||||
Matrix4f mat = new Matrix4f();
|
Matrix4f mat = new Matrix4f();
|
||||||
mat.load(floatBuffer);
|
mat.load(floatBuffer);
|
||||||
@@ -159,7 +163,11 @@ public class Util {
|
|||||||
|
|
||||||
public static String getTileEntityId(TileEntity tileEntity) {
|
public static String getTileEntityId(TileEntity tileEntity) {
|
||||||
NBTTagCompound nbt = new NBTTagCompound();
|
NBTTagCompound nbt = new NBTTagCompound();
|
||||||
tileEntity.writeToNBT(nbt);
|
//#if MC>=11300
|
||||||
|
tileEntity.write(nbt);
|
||||||
|
//#else
|
||||||
|
//$$ tileEntity.writeToNBT(nbt);
|
||||||
|
//#endif
|
||||||
return nbt.getString("id");
|
return nbt.getString("id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.replaymod.render.blend.data;
|
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.CustomData;
|
||||||
import org.blender.dna.CustomDataLayer;
|
import org.blender.dna.CustomDataLayer;
|
||||||
import org.blender.dna.Image;
|
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.io.block.BlockCodes;
|
||||||
import org.cakelab.blender.nio.CArrayFacade;
|
import org.cakelab.blender.nio.CArrayFacade;
|
||||||
import org.cakelab.blender.nio.CPointer;
|
import org.cakelab.blender.nio.CPointer;
|
||||||
import org.lwjgl.util.vector.Vector2f;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -199,9 +199,9 @@ public class DMesh {
|
|||||||
|
|
||||||
public void serialize(MVert mVert) throws IOException {
|
public void serialize(MVert mVert) throws IOException {
|
||||||
CArrayFacade<Float> pos = mVert.getCo();
|
CArrayFacade<Float> pos = mVert.getCo();
|
||||||
pos.set(0, this.pos.x);
|
pos.set(0, this.pos.getX());
|
||||||
pos.set(1, this.pos.y);
|
pos.set(1, this.pos.getY());
|
||||||
pos.set(2, this.pos.z);
|
pos.set(2, this.pos.getZ());
|
||||||
CArrayFacade<Short> norm = mVert.getNo();
|
CArrayFacade<Short> norm = mVert.getNo();
|
||||||
norm.set(0, this.normX);
|
norm.set(0, this.normX);
|
||||||
norm.set(1, this.normY);
|
norm.set(1, this.normY);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.replaymod.render.blend.data;
|
package com.replaymod.render.blend.data;
|
||||||
|
|
||||||
import com.replaymod.render.blend.Util;
|
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.AnimData;
|
||||||
import org.blender.dna.BlenderObject;
|
import org.blender.dna.BlenderObject;
|
||||||
import org.blender.dna.Material;
|
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.io.block.BlockCodes;
|
||||||
import org.cakelab.blender.nio.CArrayFacade;
|
import org.cakelab.blender.nio.CArrayFacade;
|
||||||
import org.cakelab.blender.nio.CPointer;
|
import org.cakelab.blender.nio.CPointer;
|
||||||
import org.lwjgl.util.vector.Quaternion;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
package com.replaymod.render.blend.exporters;
|
package com.replaymod.render.blend.exporters;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.render.blend.BlendMeshBuilder;
|
import com.replaymod.render.blend.BlendMeshBuilder;
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.Exporter;
|
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.DMesh;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
import com.replaymod.render.blend.data.DObject;
|
||||||
import com.replaymod.replaystudio.us.myles.ViaVersion.util.ReflectionUtil;
|
import com.replaymod.replaystudio.us.myles.ViaVersion.util.ReflectionUtil;
|
||||||
|
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.GLAllocation;
|
import net.minecraft.client.renderer.GLAllocation;
|
||||||
import net.minecraft.client.renderer.OpenGlHelper;
|
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.CompiledChunk;
|
||||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
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.apache.commons.lang3.tuple.Pair;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
import org.lwjgl.opengl.GL15;
|
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
|
//#if MC>=10904
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
@@ -68,10 +73,10 @@ public class ChunkExporter implements Exporter {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
|
|
||||||
Minecraft mc = Minecraft.getMinecraft();
|
Minecraft mc = MCVer.getMinecraft();
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<RenderGlobal.ContainerLocalRenderInformation> renderInfos = mc.renderGlobal.renderInfos;
|
List<ContainerLocalRenderInformation> renderInfos = mc.renderGlobal.renderInfos;
|
||||||
for (RenderGlobal.ContainerLocalRenderInformation renderInfo : renderInfos) {
|
for (ContainerLocalRenderInformation renderInfo : renderInfos) {
|
||||||
RenderChunk renderChunk = ReflectionUtil.get(renderInfo, "renderChunk", RenderChunk.class); // SneakyThrows
|
RenderChunk renderChunk = ReflectionUtil.get(renderInfo, "renderChunk", RenderChunk.class); // SneakyThrows
|
||||||
CompiledChunk compiledChunk = renderChunk.getCompiledChunk();
|
CompiledChunk compiledChunk = renderChunk.getCompiledChunk();
|
||||||
if (!compiledChunk.isEmpty()) {
|
if (!compiledChunk.isEmpty()) {
|
||||||
@@ -167,7 +172,7 @@ public class ChunkExporter implements Exporter {
|
|||||||
GL15.glGetBufferSubData(OpenGlHelper.GL_ARRAY_BUFFER, 0, byteBuffer);
|
GL15.glGetBufferSubData(OpenGlHelper.GL_ARRAY_BUFFER, 0, byteBuffer);
|
||||||
vertexBuffer.unbindBuffer();
|
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);
|
return BlendMeshBuilder.addBufferToMesh(byteBuffer, GL11.GL_QUADS, DefaultVertexFormats.BLOCK, null, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
package com.replaymod.render.blend.exporters;
|
package com.replaymod.render.blend.exporters;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.Exporter;
|
import com.replaymod.render.blend.Exporter;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
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 lombok.SneakyThrows;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import org.lwjgl.util.vector.Matrix4f;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.IdentityHashMap;
|
import java.util.IdentityHashMap;
|
||||||
@@ -17,7 +18,7 @@ import java.util.Map;
|
|||||||
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
||||||
|
|
||||||
public class EntityExporter implements Exporter {
|
public class EntityExporter implements Exporter {
|
||||||
private final Minecraft mc = Minecraft.getMinecraft();
|
private final Minecraft mc = MCVer.getMinecraft();
|
||||||
private final RenderState renderState;
|
private final RenderState renderState;
|
||||||
private DObject entitiesObject;
|
private DObject entitiesObject;
|
||||||
private Map<Entity, DObject> entityObjects;
|
private Map<Entity, DObject> entityObjects;
|
||||||
@@ -59,7 +60,11 @@ public class EntityExporter implements Exporter {
|
|||||||
if (entityObject == null) {
|
if (entityObject == null) {
|
||||||
entityObject = new DObject(DObject.Type.OB_EMPTY);
|
entityObject = new DObject(DObject.Type.OB_EMPTY);
|
||||||
entityObject.setParent(renderState.peekObject());
|
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);
|
entityObjects.put(entity, entityObject);
|
||||||
}
|
}
|
||||||
renderState.pushObject(entityObject);
|
renderState.pushObject(entityObject);
|
||||||
|
|||||||
@@ -5,22 +5,29 @@ import com.replaymod.render.blend.BlendMeshBuilder;
|
|||||||
import com.replaymod.render.blend.Exporter;
|
import com.replaymod.render.blend.Exporter;
|
||||||
import com.replaymod.render.blend.data.DMesh;
|
import com.replaymod.render.blend.data.DMesh;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
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.client.renderer.vertex.DefaultVertexFormats;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.client.model.pipeline.LightUtil;
|
import net.minecraftforge.client.model.pipeline.LightUtil;
|
||||||
import org.lwjgl.opengl.GL11;
|
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
|
//#if MC>=10904
|
||||||
import net.minecraft.client.renderer.RenderItem;
|
//$$ import net.minecraft.client.renderer.RenderItem;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
//$$ import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
//$$ import net.minecraft.client.resources.model.IBakedModel;
|
//$$ import net.minecraft.client.resources.model.IBakedModel;
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class ItemExporter implements Exporter {
|
public class ItemExporter implements Exporter {
|
||||||
private final RenderState renderState;
|
private final RenderState renderState;
|
||||||
@@ -29,7 +36,7 @@ public class ItemExporter implements Exporter {
|
|||||||
this.renderState = renderState;
|
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);
|
DObject object = getObjectForItemStack(renderItem, model, stack);
|
||||||
|
|
||||||
renderState.pushObject(object);
|
renderState.pushObject(object);
|
||||||
@@ -42,7 +49,7 @@ public class ItemExporter implements Exporter {
|
|||||||
renderState.pop();
|
renderState.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DObject getObjectForItemStack(RenderItem renderItem, IBakedModel model, ItemStack stack) {
|
private DObject getObjectForItemStack(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||||
int frame = renderState.getFrame();
|
int frame = renderState.getFrame();
|
||||||
DObject parent = renderState.peekObject();
|
DObject parent = renderState.peekObject();
|
||||||
DObject object = null;
|
DObject object = null;
|
||||||
@@ -56,7 +63,11 @@ public class ItemExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
if (object == null) {
|
if (object == null) {
|
||||||
object = new ItemBasedDObject(renderItem, model, stack);
|
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.setParent(parent);
|
||||||
}
|
}
|
||||||
object.lastFrame = frame;
|
object.lastFrame = frame;
|
||||||
@@ -64,7 +75,7 @@ public class ItemExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@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();
|
DMesh mesh = new DMesh();
|
||||||
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
||||||
builder.setWellBehaved(true);
|
builder.setWellBehaved(true);
|
||||||
@@ -75,30 +86,41 @@ public class ItemExporter implements Exporter {
|
|||||||
//$$ builder.setVertexFormat(DefaultVertexFormats.ITEM);
|
//$$ builder.setVertexFormat(DefaultVertexFormats.ITEM);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=11300
|
||||||
for (EnumFacing face : EnumFacing.values()) {
|
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
|
//#else
|
||||||
//$$ for (EnumFacing face : EnumFacing.values()) {
|
//$$ for (EnumFacing face : EnumFacing.values()) {
|
||||||
//$$ renderQuads(renderItem, builder, model.getFaceQuads(face), stack);
|
//$$ renderQuads(renderItem, builder, model.getFaceQuads(face), stack);
|
||||||
//$$ }
|
//$$ }
|
||||||
//$$ renderQuads(renderItem, builder, model.getGeneralQuads(), stack);
|
//$$ renderQuads(renderItem, builder, model.getGeneralQuads(), stack);
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
|
|
||||||
builder.finishDrawing();
|
builder.finishDrawing();
|
||||||
return mesh;
|
return mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void renderQuads(RenderItem renderItem, BlendMeshBuilder buffer, List<BakedQuad> quads, ItemStack stack) {
|
private static void renderQuads(Object renderItem, BlendMeshBuilder buffer, List<BakedQuad> quads, ItemStack stack) {
|
||||||
for (BakedQuad quad : quads) {
|
for (BakedQuad quad : quads) {
|
||||||
int color = stack != null && quad.hasTintIndex()
|
int color = stack != null && quad.hasTintIndex()
|
||||||
//#if MC>=10904
|
//#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
|
//#else
|
||||||
//$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000
|
//$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
: 0xffffffff;
|
: 0xffffffff;
|
||||||
LightUtil.renderQuadColor(buffer, quad, color);
|
LightUtil.renderQuadColor(buffer, quad, color);
|
||||||
}
|
}
|
||||||
@@ -106,19 +128,19 @@ public class ItemExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static class ItemBasedDObject extends DObject {
|
private static class ItemBasedDObject extends DObject {
|
||||||
private final RenderItem renderItem;
|
private final Object renderItem;
|
||||||
private final IBakedModel model;
|
private final IBakedModel model;
|
||||||
private final ItemStack stack;
|
private final ItemStack stack;
|
||||||
private boolean valid;
|
private boolean valid;
|
||||||
|
|
||||||
public ItemBasedDObject(RenderItem renderItem, IBakedModel model, ItemStack stack) {
|
public ItemBasedDObject(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||||
super(generateMeshForItemStack(renderItem, model, stack));
|
super(generateMeshForItemStack(renderItem, model, stack));
|
||||||
this.renderItem = renderItem;
|
this.renderItem = renderItem;
|
||||||
this.model = model;
|
this.model = model;
|
||||||
this.stack = stack;
|
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;
|
return this.renderItem == renderItem && this.model == model && this.stack == stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
package com.replaymod.render.blend.exporters;
|
package com.replaymod.render.blend.exporters;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.render.blend.BlendMeshBuilder;
|
import com.replaymod.render.blend.BlendMeshBuilder;
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.Exporter;
|
import com.replaymod.render.blend.Exporter;
|
||||||
import com.replaymod.render.blend.data.DMesh;
|
import com.replaymod.render.blend.data.DMesh;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
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.client.Minecraft;
|
||||||
import net.minecraft.entity.Entity;
|
|
||||||
import org.lwjgl.util.vector.Matrix4f;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.client.particle.Particle;
|
import net.minecraft.client.particle.Particle;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.particle.EntityFX;
|
//$$ import net.minecraft.client.particle.EntityFX;
|
||||||
|
//$$ import net.minecraft.entity.Entity;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
@@ -29,7 +30,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
|||||||
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
||||||
|
|
||||||
public class ParticlesExporter implements Exporter {
|
public class ParticlesExporter implements Exporter {
|
||||||
private final Minecraft mc = Minecraft.getMinecraft();
|
private final Minecraft mc = MCVer.getMinecraft();
|
||||||
private final RenderState renderState;
|
private final RenderState renderState;
|
||||||
private DObject pointAtObject;
|
private DObject pointAtObject;
|
||||||
private DObject particlesObject;
|
private DObject particlesObject;
|
||||||
@@ -151,7 +152,7 @@ public class ParticlesExporter implements Exporter {
|
|||||||
//$$ builder.startDrawingQuads();
|
//$$ builder.startDrawingQuads();
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=10809
|
//#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
|
//#else
|
||||||
//$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
|
//$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import com.replaymod.render.blend.BlendState;
|
|||||||
import com.replaymod.render.blend.Exporter;
|
import com.replaymod.render.blend.Exporter;
|
||||||
import com.replaymod.render.blend.data.DMaterial;
|
import com.replaymod.render.blend.data.DMaterial;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
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.io.IOException;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
package com.replaymod.render.blend.exporters;
|
package com.replaymod.render.blend.exporters;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.Exporter;
|
import com.replaymod.render.blend.Exporter;
|
||||||
import com.replaymod.render.blend.data.DObject;
|
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 lombok.SneakyThrows;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import org.lwjgl.util.vector.Matrix4f;
|
|
||||||
import org.lwjgl.util.vector.Vector3f;
|
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.util.math.BlockPos;
|
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;
|
import static com.replaymod.render.blend.Util.getTileEntityId;
|
||||||
|
|
||||||
public class TileEntityExporter implements Exporter {
|
public class TileEntityExporter implements Exporter {
|
||||||
private final Minecraft mc = Minecraft.getMinecraft();
|
private final Minecraft mc = MCVer.getMinecraft();
|
||||||
private final RenderState renderState;
|
private final RenderState renderState;
|
||||||
private DObject tileEntitiesObject;
|
private DObject tileEntitiesObject;
|
||||||
private Map<TileEntity, DObject> tileEntityObjects;
|
private Map<TileEntity, DObject> tileEntityObjects;
|
||||||
|
|||||||
@@ -3,31 +3,42 @@ package com.replaymod.render.blend.mixin;
|
|||||||
|
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.exporters.ChunkExporter;
|
import com.replaymod.render.blend.exporters.ChunkExporter;
|
||||||
import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator;
|
|
||||||
import net.minecraft.client.renderer.chunk.ChunkRenderWorker;
|
import net.minecraft.client.renderer.chunk.ChunkRenderWorker;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=11300
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.util.EnumWorldBlockLayer;
|
//$$ import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(ChunkRenderWorker.class)
|
@Mixin(ChunkRenderWorker.class)
|
||||||
public abstract class MixinChunkRenderWorker {
|
public abstract class MixinChunkRenderWorker {
|
||||||
|
|
||||||
@Inject(method = "processTask", at = @At("RETURN"))
|
@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();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
if (task.getStatus() == ChunkCompileTaskGenerator.Status.DONE
|
if (task.getStatus() == ChunkRenderTask.Status.DONE
|
||||||
&& task.getType() == ChunkCompileTaskGenerator.Type.REBUILD_CHUNK) {
|
&& task.getType() == ChunkRenderTask.Type.REBUILD_CHUNK) {
|
||||||
blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), task.getCompiledChunk());
|
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
|
//#endif
|
||||||
|
|||||||
@@ -3,12 +3,17 @@ package com.replaymod.render.blend.mixin;
|
|||||||
|
|
||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.exporters.ModelRendererExporter;
|
import com.replaymod.render.blend.exporters.ModelRendererExporter;
|
||||||
import net.minecraft.client.model.ModelRenderer;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
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)
|
@Mixin(ModelRenderer.class)
|
||||||
public abstract class MixinModelRenderer {
|
public abstract class MixinModelRenderer {
|
||||||
@Inject(method = "render", at = @At("HEAD"))
|
@Inject(method = "render", at = @At("HEAD"))
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ package com.replaymod.render.blend.mixin;
|
|||||||
import com.replaymod.render.blend.BlendState;
|
import com.replaymod.render.blend.BlendState;
|
||||||
import com.replaymod.render.blend.exporters.EntityExporter;
|
import com.replaymod.render.blend.exporters.EntityExporter;
|
||||||
import com.replaymod.render.blend.exporters.TileEntityExporter;
|
import com.replaymod.render.blend.exporters.TileEntityExporter;
|
||||||
import net.minecraft.client.renderer.RenderGlobal;
|
|
||||||
import net.minecraft.client.renderer.culling.ICamera;
|
import net.minecraft.client.renderer.culling.ICamera;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
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.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
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 {
|
public abstract class MixinRenderGlobal {
|
||||||
|
|
||||||
// FIXME wither skull ._. mojang pls
|
// FIXME wither skull ._. mojang pls
|
||||||
@@ -46,9 +55,14 @@ public abstract class MixinRenderGlobal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "renderEntities",
|
@Inject(method = "renderEntities", at = @At(
|
||||||
at = @At(value = "INVOKE",
|
value = "INVOKE",
|
||||||
target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V"))
|
//#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) {
|
public void preTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
@@ -56,10 +70,15 @@ public abstract class MixinRenderGlobal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "renderEntities",
|
@Inject(method = "renderEntities", at = @At(
|
||||||
at = @At(value = "INVOKE",
|
value = "INVOKE",
|
||||||
target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V",
|
//#if MC>=11300
|
||||||
shift = At.Shift.AFTER))
|
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) {
|
public void postTileEntityRender(Entity view, ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
|
|||||||
@@ -9,27 +9,40 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
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
|
//#if MC>=10904
|
||||||
import net.minecraft.client.renderer.RenderItem;
|
//$$ import net.minecraft.client.renderer.RenderItem;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
//$$ import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
//$$ import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
//$$ import net.minecraft.client.resources.model.IBakedModel;
|
//$$ import net.minecraft.client.resources.model.IBakedModel;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(RenderItem.class)
|
//#if MC>=11300
|
||||||
|
@Mixin(ItemRenderer.class)
|
||||||
|
//#else
|
||||||
|
//$$ @Mixin(RenderItem.class)
|
||||||
|
//#endif
|
||||||
public abstract class MixinRenderItem {
|
public abstract class MixinRenderItem {
|
||||||
//#if MC>=10904
|
//#if MC>=11300
|
||||||
@Inject(method = "renderModel(Lnet/minecraft/client/renderer/block/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
|
@Inject(method = "renderModel(Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
|
||||||
at = @At("HEAD"))
|
at = @At("HEAD"))
|
||||||
//#else
|
//#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",
|
//$$ @Inject(method = "renderModel(Lnet/minecraft/client/resources/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
|
||||||
//$$ at = @At("HEAD"))
|
//$$ at = @At("HEAD"))
|
||||||
//#endif
|
//#endif
|
||||||
|
//#endif
|
||||||
private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) {
|
private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
blendState.get(ItemExporter.class).onRender((RenderItem)(Object)this, model, stack);
|
blendState.get(ItemExporter.class).onRender(this, model, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
@Mixin(RenderManager.class)
|
@Mixin(RenderManager.class)
|
||||||
public abstract class MixinRenderManager {
|
public abstract class MixinRenderManager {
|
||||||
|
|
||||||
@Inject(method = "doRenderEntity",
|
@Inject(
|
||||||
|
//#if MC>=11300
|
||||||
|
method = "renderEntity",
|
||||||
|
//#else
|
||||||
|
//$$ method = "doRenderEntity",
|
||||||
|
//#endif
|
||||||
at = @At(value = "INVOKE",
|
at = @At(value = "INVOKE",
|
||||||
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V"))
|
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,
|
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",
|
at = @At(value = "INVOKE",
|
||||||
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V",
|
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V",
|
||||||
shift = At.Shift.AFTER))
|
shift = At.Shift.AFTER))
|
||||||
|
|||||||
@@ -13,15 +13,22 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
@Mixin(TileEntityRendererDispatcher.class)
|
@Mixin(TileEntityRendererDispatcher.class)
|
||||||
public abstract class MixinTileEntityRendererDispatcher {
|
public abstract class MixinTileEntityRendererDispatcher {
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11300
|
||||||
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
|
@Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||||
at = @At("HEAD"))
|
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
|
//#else
|
||||||
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
|
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
|
||||||
//$$ at = @At("HEAD"))
|
//$$ 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, CallbackInfo ci) {
|
||||||
//$$ float alpha = 1;
|
//$$ float alpha = 1;
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
@@ -29,14 +36,19 @@ public abstract class MixinTileEntityRendererDispatcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11300
|
||||||
@Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
|
@Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||||
at = @At("RETURN"))
|
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
|
//#else
|
||||||
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
|
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFI)V",
|
||||||
//$$ at = @At("RETURN"))
|
//$$ 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, CallbackInfo ci) {
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
|
|||||||
@@ -110,8 +110,11 @@ public net.minecraft.client.renderer.WorldRenderer field_72740_G # renderEntitie
|
|||||||
##endif
|
##endif
|
||||||
##endif
|
##endif
|
||||||
|
|
||||||
public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation
|
##if MC>=11300
|
||||||
#public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation field_178553_a # renderChunk
|
public net.minecraft.client.renderer.WorldRenderer$ContainerLocalRenderInformation
|
||||||
|
##else
|
||||||
|
#$$ public net.minecraft.client.renderer.RenderGlobal$ContainerLocalRenderInformation
|
||||||
|
##endif
|
||||||
|
|
||||||
# ChunkRenderDispatcher
|
# ChunkRenderDispatcher
|
||||||
public-f net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178519_d # queueChunkUpdates
|
public-f net.minecraft.client.renderer.chunk.ChunkRenderDispatcher field_178519_d # queueChunkUpdates
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ dependencies {
|
|||||||
|
|
||||||
shade 'org.aspectj:aspectjrt:1.8.2'
|
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
|
def studioVersion = mcVersionStr
|
||||||
if (studioVersion == '1.8.9') studioVersion = '1.8'
|
if (studioVersion == '1.8.9') studioVersion = '1.8'
|
||||||
|
|||||||
Reference in New Issue
Block a user