Switch core to 1.14 (generated via ./gradlew :1.14:setCoreVersion)
This commit is contained in:
@@ -5,8 +5,8 @@ import de.johni0702.minecraft.gui.utils.lwjgl.ReadableColor;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.client.resource.language.I18n;
|
||||
import net.minecraft.util.SystemUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
@@ -32,11 +32,11 @@ public class RenderSettings {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return I18n.format("replaymod.gui.rendersettings.renderer." + name().toLowerCase());
|
||||
return I18n.translate("replaymod.gui.rendersettings.renderer." + name().toLowerCase());
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return I18n.format("replaymod.gui.rendersettings.renderer." + name().toLowerCase() + ".description");
|
||||
return I18n.translate("replaymod.gui.rendersettings.renderer." + name().toLowerCase() + ".description");
|
||||
}
|
||||
|
||||
public boolean isSpherical() {
|
||||
@@ -89,7 +89,7 @@ public class RenderSettings {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return I18n.format("replaymod.gui.rendersettings.presets." + name().replace('_', '.').toLowerCase());
|
||||
return I18n.translate("replaymod.gui.rendersettings.presets." + name().replace('_', '.').toLowerCase());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ public class RenderSettings {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return I18n.format("replaymod.gui.rendersettings.antialiasing." + name().toLowerCase());
|
||||
return I18n.translate("replaymod.gui.rendersettings.antialiasing." + name().toLowerCase());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,16 +173,16 @@ public class RenderSettings {
|
||||
}
|
||||
|
||||
private static String findFFmpeg() {
|
||||
switch (Util.getOSType()) {
|
||||
switch (SystemUtil.getOperatingSystem()) {
|
||||
case WINDOWS:
|
||||
// Allow windows users to unpack the ffmpeg archive into a sub-folder of their .minecraft folder
|
||||
File inDotMinecraft = new File(MCVer.getMinecraft().gameDir, "ffmpeg/bin/ffmpeg.exe");
|
||||
File inDotMinecraft = new File(MCVer.getMinecraft().runDirectory, "ffmpeg/bin/ffmpeg.exe");
|
||||
if (inDotMinecraft.exists()) {
|
||||
LOGGER.debug("FFmpeg found in .minecraft/ffmpeg");
|
||||
return inDotMinecraft.getAbsolutePath();
|
||||
}
|
||||
break;
|
||||
case OSX:
|
||||
case MAC:
|
||||
// The PATH doesn't seem to be set as expected on OSX, therefore we check some common locations ourselves
|
||||
for (String path : new String[]{"/usr/local/bin/ffmpeg", "/usr/bin/ffmpeg"}) {
|
||||
File file = new File(path);
|
||||
@@ -212,7 +212,7 @@ public class RenderSettings {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LINUX: // Linux users are entrusted to have their PATH configured correctly (most package manager do this)
|
||||
case UNIX: // Linux users are entrusted to have their PATH configured correctly (most package manager do this)
|
||||
case SOLARIS: // Never heard of anyone running this mod on Solaris having any problems
|
||||
case UNKNOWN: // Unknown OS, just try to use "ffmpeg"
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.replaymod.core.Module;
|
||||
import com.replaymod.core.ReplayMod;
|
||||
import com.replaymod.render.utils.RenderJob;
|
||||
import com.replaymod.replay.events.ReplayClosedCallback;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
@@ -45,17 +45,17 @@ public class ReplayModRender implements Module {
|
||||
|
||||
public File getVideoFolder() {
|
||||
String path = core.getSettingsRegistry().get(Setting.RENDER_PATH);
|
||||
File folder = new File(path.startsWith("./") ? core.getMinecraft().gameDir : null, path);
|
||||
File folder = new File(path.startsWith("./") ? core.getMinecraft().runDirectory : null, path);
|
||||
try {
|
||||
FileUtils.forceMkdir(folder);
|
||||
} catch (IOException e) {
|
||||
throw new ReportedException(CrashReport.makeCrashReport(e, "Cannot create video folder."));
|
||||
throw new CrashException(CrashReport.create(e, "Cannot create video folder."));
|
||||
}
|
||||
return folder;
|
||||
}
|
||||
|
||||
public Path getRenderSettingsPath() {
|
||||
return core.getMinecraft().gameDir.toPath().resolve("config/replaymod-rendersettings.json");
|
||||
return core.getMinecraft().runDirectory.toPath().resolve("config/replaymod-rendersettings.json");
|
||||
}
|
||||
|
||||
public List<RenderJob> getRenderQueue() {
|
||||
|
||||
@@ -7,8 +7,8 @@ import com.replaymod.render.rendering.VideoRenderer;
|
||||
import com.replaymod.render.utils.ByteBufferPool;
|
||||
import com.replaymod.render.utils.StreamPipe;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashReportSection;
|
||||
import org.apache.commons.exec.CommandLine;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
@@ -68,7 +68,7 @@ public class VideoWriter implements FrameConsumer<RGBFrame> {
|
||||
} catch (IOException e) {
|
||||
throw new NoFFmpegException(e);
|
||||
}
|
||||
File exportLogFile = new File(MCVer.getMinecraft().gameDir, "export.log");
|
||||
File exportLogFile = new File(MCVer.getMinecraft().runDirectory, "export.log");
|
||||
OutputStream exportLogOut = new TeeOutputStream(new FileOutputStream(exportLogFile), ffmpegLog);
|
||||
new StreamPipe(process.getInputStream(), exportLogOut).start();
|
||||
new StreamPipe(process.getErrorStream(), exportLogOut).start();
|
||||
@@ -122,11 +122,11 @@ public class VideoWriter implements FrameConsumer<RGBFrame> {
|
||||
renderer.setFailure(e);
|
||||
return;
|
||||
}
|
||||
CrashReport report = CrashReport.makeCrashReport(t, "Exporting frame");
|
||||
CrashReportCategory exportDetails = report.makeCategory("Export details");
|
||||
CrashReport report = CrashReport.create(t, "Exporting frame");
|
||||
CrashReportSection exportDetails = report.addElement("Export details");
|
||||
MCVer.addDetail(exportDetails, "Export command", settings::getExportCommand);
|
||||
MCVer.addDetail(exportDetails, "Export args", commandArgs::toString);
|
||||
MCVer.getMinecraft().crashed(report);
|
||||
MCVer.getMinecraft().setCrashReport(report);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.replaymod.render.blend.data.DImage;
|
||||
import com.replaymod.render.blend.data.DMaterial;
|
||||
import com.replaymod.render.blend.data.DPackedFile;
|
||||
import com.replaymod.render.blend.data.DTexture;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.client.util.GlAllocationUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
@@ -27,7 +27,7 @@ public class BlendMaterials {
|
||||
// Read raw image data from GL
|
||||
int width = GL11.glGetTexLevelParameteri(GL11.GL_TEXTURE_2D, 0, GL11.GL_TEXTURE_WIDTH);
|
||||
int height = GL11.glGetTexLevelParameteri(GL11.GL_TEXTURE_2D, 0, GL11.GL_TEXTURE_HEIGHT);
|
||||
ByteBuffer buffer = GLAllocation.createDirectByteBuffer(width * height * 4);
|
||||
ByteBuffer buffer = GlAllocationUtils.allocateByteBuffer(width * height * 4);
|
||||
GL11.glGetTexImage(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer);
|
||||
|
||||
// Convert to BufferedImage
|
||||
|
||||
@@ -6,14 +6,14 @@ 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 net.minecraft.client.render.Tessellator;
|
||||
import net.minecraft.client.render.VertexFormat;
|
||||
import net.minecraft.client.render.VertexFormatElement;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
//#if MC>=10904
|
||||
//#if MC>=11200
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.render.BufferBuilder;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.VertexBuffer;
|
||||
//#endif
|
||||
@@ -68,7 +68,7 @@ public class BlendMeshBuilder
|
||||
// Someone probably finished drawing with the global instance instead of this one,
|
||||
// let's just assume that what's happened and finish our last draw by ourselves
|
||||
// (might miss correct texture though)
|
||||
super.finishDrawing();
|
||||
super.end();
|
||||
addBufferToMesh();
|
||||
} else {
|
||||
throw new IllegalStateException("Already drawing!");
|
||||
@@ -91,14 +91,14 @@ public class BlendMeshBuilder
|
||||
public void maybeFinishDrawing() {
|
||||
if (isDrawing) {
|
||||
isDrawing = false;
|
||||
super.finishDrawing();
|
||||
super.end();
|
||||
addBufferToMesh();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
//#if MC>=10809
|
||||
public void finishDrawing() {
|
||||
public void end() {
|
||||
//#else
|
||||
//$$ public int finishDrawing() {
|
||||
//#endif
|
||||
@@ -106,13 +106,13 @@ public class BlendMeshBuilder
|
||||
throw new IllegalStateException("Not building!");
|
||||
} else {
|
||||
if (!wellBehaved) {
|
||||
Tessellator.getInstance().getBuffer().finishDrawing();
|
||||
Tessellator.getInstance().getBufferBuilder().end();
|
||||
}
|
||||
|
||||
//#if MC<10809
|
||||
//$$ int ret =
|
||||
//#endif
|
||||
super.finishDrawing();
|
||||
super.end();
|
||||
|
||||
addBufferToMesh();
|
||||
|
||||
@@ -140,7 +140,7 @@ public class BlendMeshBuilder
|
||||
|
||||
public static DMesh addBufferToMesh(ByteBuffer buffer, int mode, VertexFormat vertexFormat, DMesh mesh, ReadableVector3f vertOffset) {
|
||||
//#if MC>=11300
|
||||
int vertexCount = buffer.remaining() / vertexFormat.getSize();
|
||||
int vertexCount = buffer.remaining() / vertexFormat.getVertexSize();
|
||||
//#else
|
||||
//$$ int vertexCount = buffer.remaining() / vertexFormat.getNextOffset();
|
||||
//#endif
|
||||
@@ -160,26 +160,26 @@ public class BlendMeshBuilder
|
||||
int index = 0;
|
||||
for (VertexFormatElement element : getElements(vertexFormat)) {
|
||||
//#if MC>=10809
|
||||
int offset = vertexFormat.getOffset(index);
|
||||
int offset = vertexFormat.getElementOffset(index);
|
||||
//#else
|
||||
//$$ int offset = element.getOffset();
|
||||
//#endif
|
||||
switch (element.getUsage()) {
|
||||
switch (element.getType()) {
|
||||
case POSITION:
|
||||
if (element.getType() != VertexFormatElement.EnumType.FLOAT) {
|
||||
if (element.getFormat() != VertexFormatElement.Format.FLOAT) {
|
||||
throw new UnsupportedOperationException("Only float is supported for position elements!");
|
||||
}
|
||||
posOffset = offset;
|
||||
break;
|
||||
case COLOR:
|
||||
if (element.getType() != VertexFormatElement.EnumType.UBYTE) {
|
||||
if (element.getFormat() != VertexFormatElement.Format.UNSIGNED_BYTE) {
|
||||
throw new UnsupportedOperationException("Only unsigned byte is supported for color elements!");
|
||||
}
|
||||
colorOffset = offset;
|
||||
break;
|
||||
case UV:
|
||||
if (element.getIndex() != 0) break;
|
||||
if (element.getType() != VertexFormatElement.EnumType.FLOAT) {
|
||||
if (element.getFormat() != VertexFormatElement.Format.FLOAT) {
|
||||
throw new UnsupportedOperationException("Only float is supported for UV elements!");
|
||||
}
|
||||
uvOffset = offset;
|
||||
@@ -194,7 +194,7 @@ public class BlendMeshBuilder
|
||||
List<Vector2f> uvs = new ArrayList<>(vertexCount);
|
||||
List<Integer> colors = new ArrayList<>(vertexCount);
|
||||
//#if MC>=11300
|
||||
int step = vertexFormat.getSize();
|
||||
int step = vertexFormat.getVertexSize();
|
||||
//#else
|
||||
//$$ int step = vertexFormat.getNextOffset();
|
||||
//#endif
|
||||
|
||||
@@ -10,9 +10,9 @@ import com.replaymod.render.blend.exporters.ParticlesExporter;
|
||||
import com.replaymod.render.blend.exporters.RenderState;
|
||||
import com.replaymod.render.blend.exporters.TileEntityExporter;
|
||||
//#endif
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashReportSection;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
import org.apache.commons.io.output.NullOutputStream;
|
||||
import org.blender.utils.BlenderFactory;
|
||||
import org.cakelab.blender.io.BlenderFile;
|
||||
@@ -80,10 +80,10 @@ public class BlendState implements Exporter {
|
||||
try {
|
||||
exporter.setup();
|
||||
} catch (IOException e) {
|
||||
CrashReport report = CrashReport.makeCrashReport(e, "Setup of blend exporter");
|
||||
CrashReportCategory category = report.makeCategory("Exporter");
|
||||
CrashReport report = CrashReport.create(e, "Setup of blend exporter");
|
||||
CrashReportSection category = report.addElement("Exporter");
|
||||
addDetail(category, "Exporter", exporter::toString);
|
||||
throw new ReportedException(report);
|
||||
throw new CrashException(report);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,10 +94,10 @@ public class BlendState implements Exporter {
|
||||
try {
|
||||
exporter.tearDown();
|
||||
} catch (IOException e) {
|
||||
CrashReport report = CrashReport.makeCrashReport(e, "Tear down of blend exporter");
|
||||
CrashReportCategory category = report.makeCategory("Exporter");
|
||||
CrashReport report = CrashReport.create(e, "Tear down of blend exporter");
|
||||
CrashReportSection category = report.addElement("Exporter");
|
||||
addDetail(category, "Exporter", exporter::toString);
|
||||
throw new ReportedException(report);
|
||||
throw new CrashException(report);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,11 +131,11 @@ public class BlendState implements Exporter {
|
||||
try {
|
||||
exporter.preFrame(frame);
|
||||
} catch (IOException e) {
|
||||
CrashReport report = CrashReport.makeCrashReport(e, "Pre frame of blend exporter");
|
||||
CrashReportCategory category = report.makeCategory("Exporter");
|
||||
CrashReport report = CrashReport.create(e, "Pre frame of blend exporter");
|
||||
CrashReportSection category = report.addElement("Exporter");
|
||||
addDetail(category, "Exporter", exporter::toString);
|
||||
addDetail(category, "Frame", () -> String.valueOf(frame));
|
||||
throw new ReportedException(report);
|
||||
throw new CrashException(report);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,11 +146,11 @@ public class BlendState implements Exporter {
|
||||
try {
|
||||
exporter.postFrame(frame);
|
||||
} catch (IOException e) {
|
||||
CrashReport report = CrashReport.makeCrashReport(e, "Post frame of blend exporter");
|
||||
CrashReportCategory category = report.makeCategory("Exporter");
|
||||
CrashReport report = CrashReport.create(e, "Post frame of blend exporter");
|
||||
CrashReportSection category = report.addElement("Exporter");
|
||||
addDetail(category, "Exporter", exporter::toString);
|
||||
addDetail(category, "Frame", () -> String.valueOf(frame));
|
||||
throw new ReportedException(report);
|
||||
throw new CrashException(report);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ 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.Minecraft;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.util.GlAllocationUtils;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import org.blender.dna.Link;
|
||||
import org.blender.dna.ListBase;
|
||||
import org.blender.utils.BlenderFactory;
|
||||
@@ -18,7 +18,7 @@ import java.io.IOException;
|
||||
import java.nio.FloatBuffer;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
//#endif
|
||||
|
||||
public class Util {
|
||||
@@ -39,7 +39,7 @@ public class Util {
|
||||
}
|
||||
}
|
||||
|
||||
private static FloatBuffer floatBuffer = GLAllocation.createDirectFloatBuffer(16);
|
||||
private static FloatBuffer floatBuffer = GlAllocationUtils.allocateFloatBuffer(16);
|
||||
public static Matrix4f getGlMatrix(int matrix) {
|
||||
floatBuffer.clear();
|
||||
//#if MC>=11300
|
||||
@@ -138,16 +138,16 @@ public class Util {
|
||||
|
||||
//#if MC>=10800
|
||||
public static Vector3f getCameraPos() {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
MinecraftClient mc = MinecraftClient.getInstance();
|
||||
//#if MC>=11400
|
||||
//$$ Vec3d pos = mc.getEntityRenderManager().camera.getPos();
|
||||
//$$ return new Vector3f((float) pos.x, (float) pos.y, (float) pos.z);
|
||||
Vec3d pos = mc.getEntityRenderManager().camera.getPos();
|
||||
return new Vector3f((float) pos.x, (float) pos.y, (float) pos.z);
|
||||
//#else
|
||||
return new Vector3f(
|
||||
(float) -mc.getRenderManager().viewerPosX,
|
||||
(float) -mc.getRenderManager().viewerPosY,
|
||||
(float) -mc.getRenderManager().viewerPosZ
|
||||
);
|
||||
//$$ return new Vector3f(
|
||||
//$$ (float) -mc.getRenderManager().viewerPosX,
|
||||
//$$ (float) -mc.getRenderManager().viewerPosY,
|
||||
//$$ (float) -mc.getRenderManager().viewerPosZ
|
||||
//$$ );
|
||||
//#endif
|
||||
}
|
||||
//#endif
|
||||
@@ -182,10 +182,10 @@ public class Util {
|
||||
}
|
||||
}
|
||||
|
||||
public static String getTileEntityId(TileEntity tileEntity) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
public static String getTileEntityId(BlockEntity tileEntity) {
|
||||
CompoundTag nbt = new CompoundTag();
|
||||
//#if MC>=11300
|
||||
tileEntity.write(nbt);
|
||||
tileEntity.toTag(nbt);
|
||||
//#else
|
||||
//$$ tileEntity.writeToNBT(nbt);
|
||||
//#endif
|
||||
|
||||
@@ -10,19 +10,19 @@ import com.replaymod.render.blend.data.DObject;
|
||||
import com.replaymod.render.blend.mixin.ContainerLocalRenderInformationAccessor;
|
||||
import com.replaymod.render.blend.mixin.WorldRendererAccessor;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.vector.Vector3f;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.chunk.CompiledChunk;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.client.renderer.vertex.VertexBuffer;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.util.GlAllocationUtils;
|
||||
import com.mojang.blaze3d.platform.GLX;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderData;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
import net.minecraft.client.gl.GlBuffer;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL15;
|
||||
|
||||
//#if MC>=10904
|
||||
import net.minecraft.util.BlockRenderLayer;
|
||||
import net.minecraft.block.BlockRenderLayer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
//#else
|
||||
//$$ import net.minecraft.util.BlockPos;
|
||||
@@ -43,7 +43,7 @@ public class ChunkExporter implements Exporter {
|
||||
private final Map<BlockPos, DObject> chunkObjects = new HashMap<>();
|
||||
//#if MC>=10904
|
||||
private final Map<BlockPos, Map<BlockRenderLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
||||
private final List<Pair<RenderChunk, BlockRenderLayer>> chunks = new ArrayList<>();
|
||||
private final List<Pair<ChunkRenderer, BlockRenderLayer>> chunks = new ArrayList<>();
|
||||
//#else
|
||||
//$$ private final Map<BlockPos, Map<EnumWorldBlockLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
||||
//$$ private final List<Pair<RenderChunk, EnumWorldBlockLayer>> chunks = new ArrayList<>();
|
||||
@@ -51,13 +51,13 @@ public class ChunkExporter implements Exporter {
|
||||
private DObject chunksObject;
|
||||
private int frame;
|
||||
|
||||
public void addChunkUpdate(RenderChunk chunk, CompiledChunk compiledChunk) {
|
||||
public void addChunkUpdate(ChunkRenderer chunk, ChunkRenderData compiledChunk) {
|
||||
//#if MC>=10904
|
||||
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
|
||||
//#else
|
||||
//$$ for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
|
||||
//#endif
|
||||
if (compiledChunk == null || compiledChunk.isLayerStarted(layer)) {
|
||||
if (compiledChunk == null || compiledChunk.isBufferInitialized(layer)) {
|
||||
chunks.add(Pair.of(chunk, layer));
|
||||
}
|
||||
}
|
||||
@@ -66,12 +66,12 @@ public class ChunkExporter implements Exporter {
|
||||
@Override
|
||||
public void setup() throws IOException {
|
||||
|
||||
Minecraft mc = MCVer.getMinecraft();
|
||||
MinecraftClient mc = MCVer.getMinecraft();
|
||||
@SuppressWarnings("unchecked")
|
||||
List<ContainerLocalRenderInformationAccessor> renderInfos = ((WorldRendererAccessor) mc.renderGlobal).getRenderInfos();
|
||||
List<ContainerLocalRenderInformationAccessor> renderInfos = ((WorldRendererAccessor) mc.worldRenderer).getRenderInfos();
|
||||
for (ContainerLocalRenderInformationAccessor renderInfo : renderInfos) {
|
||||
RenderChunk renderChunk = renderInfo.getRenderChunk();
|
||||
CompiledChunk compiledChunk = renderChunk.getCompiledChunk();
|
||||
ChunkRenderer renderChunk = renderInfo.getRenderChunk();
|
||||
ChunkRenderData compiledChunk = renderChunk.getChunkRenderData();
|
||||
if (!compiledChunk.isEmpty()) {
|
||||
addChunkUpdate(renderChunk, null);
|
||||
}
|
||||
@@ -98,18 +98,18 @@ public class ChunkExporter implements Exporter {
|
||||
@Override
|
||||
public void postFrame(int frame) throws IOException {
|
||||
//#if MC>=10904
|
||||
for (Pair<RenderChunk, BlockRenderLayer> pair : chunks) {
|
||||
for (Pair<ChunkRenderer, BlockRenderLayer> pair : chunks) {
|
||||
BlockRenderLayer layer = pair.getRight();
|
||||
//#else
|
||||
//$$ for (Pair<RenderChunk, EnumWorldBlockLayer> pair : chunks) {
|
||||
//$$ EnumWorldBlockLayer layer = pair.getRight();
|
||||
//#endif
|
||||
RenderChunk chunk = pair.getLeft();
|
||||
DObject chunkObject = chunkObjects.get(chunk.getPosition());
|
||||
ChunkRenderer chunk = pair.getLeft();
|
||||
DObject chunkObject = chunkObjects.get(chunk.getOrigin());
|
||||
if (chunkObject == null) {
|
||||
chunkObject = buildChunkObject(chunk);
|
||||
chunkObjects.put(chunk.getPosition(), chunkObject);
|
||||
chunkLayerObjects.put(chunk.getPosition(), new EnumMap<>(layer.getDeclaringClass()));
|
||||
chunkObjects.put(chunk.getOrigin(), chunkObject);
|
||||
chunkLayerObjects.put(chunk.getOrigin(), new EnumMap<>(layer.getDeclaringClass()));
|
||||
}
|
||||
DObject layerObject = buildChunkLayerObject(chunkObject, chunk, layer);
|
||||
if (layerObject == null) continue;
|
||||
@@ -118,7 +118,7 @@ public class ChunkExporter implements Exporter {
|
||||
//#else
|
||||
//$$ Map<EnumWorldBlockLayer, DObject> layerObjects
|
||||
//#endif
|
||||
= chunkLayerObjects.get(chunk.getPosition());
|
||||
= chunkLayerObjects.get(chunk.getOrigin());
|
||||
DObject oldLayerObject = layerObjects.get(layer);
|
||||
if (oldLayerObject != null) {
|
||||
oldLayerObject.keyframe("hide", 0, frame, 1f);
|
||||
@@ -134,8 +134,8 @@ public class ChunkExporter implements Exporter {
|
||||
chunks.clear();
|
||||
}
|
||||
|
||||
private DObject buildChunkObject(RenderChunk renderChunk) {
|
||||
BlockPos pos = renderChunk.getPosition();
|
||||
private DObject buildChunkObject(ChunkRenderer renderChunk) {
|
||||
BlockPos pos = renderChunk.getOrigin();
|
||||
DObject chunkObject = new DObject(DObject.Type.OB_EMPTY);
|
||||
chunkObject.setParent(chunksObject);
|
||||
chunkObject.id.name = "Chunk[" + pos.getX()/16 + "/" + pos.getY()/16 + "/" + pos.getZ()/16 + "]";
|
||||
@@ -143,13 +143,13 @@ public class ChunkExporter implements Exporter {
|
||||
return chunkObject;
|
||||
}
|
||||
|
||||
private DObject buildChunkLayerObject(DObject chunkObject, RenderChunk renderChunk,
|
||||
private DObject buildChunkLayerObject(DObject chunkObject, ChunkRenderer renderChunk,
|
||||
//#if MC>=10904
|
||||
BlockRenderLayer layer) {
|
||||
//#else
|
||||
//$$ EnumWorldBlockLayer layer) {
|
||||
//#endif
|
||||
VertexBuffer vertexBuffer = renderChunk.getVertexBufferByLayer(layer.ordinal());
|
||||
GlBuffer vertexBuffer = renderChunk.getGlBuffer(layer.ordinal());
|
||||
if (vertexBuffer == null) return null;
|
||||
|
||||
DObject layerObject = new DObject(buildChunkLayerMesh(vertexBuffer));
|
||||
@@ -158,16 +158,16 @@ public class ChunkExporter implements Exporter {
|
||||
return layerObject;
|
||||
}
|
||||
|
||||
private DMesh buildChunkLayerMesh(VertexBuffer vertexBuffer) {
|
||||
vertexBuffer.bindBuffer();
|
||||
int size = GL15.glGetBufferParameteri(OpenGlHelper.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
|
||||
ByteBuffer byteBuffer = GLAllocation.createDirectByteBuffer(size);
|
||||
GL15.glGetBufferSubData(OpenGlHelper.GL_ARRAY_BUFFER, 0, byteBuffer);
|
||||
vertexBuffer.unbindBuffer();
|
||||
private DMesh buildChunkLayerMesh(GlBuffer vertexBuffer) {
|
||||
vertexBuffer.bind();
|
||||
int size = GL15.glGetBufferParameteri(GLX.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
|
||||
ByteBuffer byteBuffer = GlAllocationUtils.allocateByteBuffer(size);
|
||||
GL15.glGetBufferSubData(GLX.GL_ARRAY_BUFFER, 0, byteBuffer);
|
||||
vertexBuffer.unbind();
|
||||
|
||||
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, VertexFormats.POSITION_COLOR_UV_LMAP, null, null);
|
||||
}
|
||||
|
||||
private static final int STRIDE = 28;
|
||||
|
||||
@@ -7,9 +7,9 @@ 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 net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.Map;
|
||||
@@ -18,7 +18,7 @@ import static com.replaymod.render.blend.Util.getCameraPos;
|
||||
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
||||
|
||||
public class EntityExporter implements Exporter {
|
||||
private final Minecraft mc = MCVer.getMinecraft();
|
||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||
private final RenderState renderState;
|
||||
private DObject entitiesObject;
|
||||
private Map<Entity, DObject> entityObjects;
|
||||
@@ -69,7 +69,7 @@ public class EntityExporter implements Exporter {
|
||||
// So, we translate there, then store the model-view-matrix and then translate back to let the
|
||||
// renderer translate there again.
|
||||
// Instead of actually translating, we just add the translation on the current model-view-matrix.
|
||||
if (!(entity instanceof EntityLivingBase)) { // except for EntityLivingBase which get special (better) treatment
|
||||
if (!(entity instanceof LivingEntity)) { // except for EntityLivingBase which get special (better) treatment
|
||||
Matrix4f modelView = getGlModelViewMatrix();
|
||||
Matrix4f.translate(new Vector3f((float) dx, (float) dy, (float) dz), modelView, modelView);
|
||||
renderState.pushModelView(modelView);
|
||||
|
||||
@@ -5,20 +5,20 @@ 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.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.util.math.Vec3i;
|
||||
import net.minecraft.util.math.Vec3i;
|
||||
//#else
|
||||
import net.minecraftforge.client.model.pipeline.LightUtil;
|
||||
//$$ import net.minecraftforge.client.model.pipeline.LightUtil;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.renderer.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.render.model.BakedQuad;
|
||||
import net.minecraft.client.render.model.BakedModel;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
//#if MC>=10904
|
||||
@@ -42,7 +42,7 @@ public class ItemExporter implements Exporter {
|
||||
this.renderState = renderState;
|
||||
}
|
||||
|
||||
public void onRender(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||
public void onRender(Object renderItem, BakedModel model, ItemStack stack) {
|
||||
DObject object = getObjectForItemStack(renderItem, model, stack);
|
||||
|
||||
renderState.pushObject(object);
|
||||
@@ -55,7 +55,7 @@ public class ItemExporter implements Exporter {
|
||||
renderState.pop();
|
||||
}
|
||||
|
||||
private DObject getObjectForItemStack(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||
private DObject getObjectForItemStack(Object renderItem, BakedModel model, ItemStack stack) {
|
||||
int frame = renderState.getFrame();
|
||||
DObject parent = renderState.peekObject();
|
||||
DObject object = null;
|
||||
@@ -81,19 +81,19 @@ public class ItemExporter implements Exporter {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static DMesh generateMeshForItemStack(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||
private static DMesh generateMeshForItemStack(Object renderItem, BakedModel model, ItemStack stack) {
|
||||
DMesh mesh = new DMesh();
|
||||
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
||||
builder.setWellBehaved(true);
|
||||
//#if MC>=10809
|
||||
builder.begin(GL11.GL_QUADS, DefaultVertexFormats.ITEM);
|
||||
builder.begin(GL11.GL_QUADS, VertexFormats.POSITION_COLOR_UV_NORMAL);
|
||||
//#else
|
||||
//$$ builder.startDrawingQuads();
|
||||
//$$ builder.setVertexFormat(DefaultVertexFormats.ITEM);
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
for (EnumFacing face : EnumFacing.values()) {
|
||||
for (Direction face : Direction.values()) {
|
||||
renderQuads(renderItem, builder, model.getQuads(null, face, new Random()), stack);
|
||||
}
|
||||
renderQuads(renderItem, builder, model.getQuads(null, null, new Random()), stack);
|
||||
@@ -111,26 +111,26 @@ public class ItemExporter implements Exporter {
|
||||
//#endif
|
||||
//#endif
|
||||
|
||||
builder.finishDrawing();
|
||||
builder.end();
|
||||
return mesh;
|
||||
}
|
||||
|
||||
private static void renderQuads(Object renderItem, BlendMeshBuilder buffer, List<BakedQuad> quads, ItemStack stack) {
|
||||
for (BakedQuad quad : quads) {
|
||||
int color = stack != null && quad.hasTintIndex()
|
||||
int color = stack != null && quad.hasColor()
|
||||
//#if MC>=10904
|
||||
? ((ItemRendererAccessor) renderItem).getItemColors().getColor(stack, quad.getTintIndex()) | 0xff000000
|
||||
? ((ItemRendererAccessor) renderItem).getItemColors().getRenderColor(stack, quad.getColorIndex()) | 0xff000000
|
||||
//#else
|
||||
//$$ ? stack.getItem().getColorFromItemStack(stack, quad.getTintIndex()) | 0xff000000
|
||||
//#endif
|
||||
: 0xffffffff;
|
||||
//#if MC>=11400
|
||||
//$$ buffer.putVertexData(quad.getVertexData());
|
||||
//$$ buffer.setQuadColor(color);
|
||||
//$$ Vec3i vec3i_1 = quad.getFace().getVector();
|
||||
//$$ buffer.postNormal(vec3i_1.getX(), vec3i_1.getY(), vec3i_1.getZ());
|
||||
buffer.putVertexData(quad.getVertexData());
|
||||
buffer.setQuadColor(color);
|
||||
Vec3i vec3i_1 = quad.getFace().getVector();
|
||||
buffer.postNormal(vec3i_1.getX(), vec3i_1.getY(), vec3i_1.getZ());
|
||||
//#else
|
||||
LightUtil.renderQuadColor(buffer, quad, color);
|
||||
//$$ LightUtil.renderQuadColor(buffer, quad, color);
|
||||
//#endif
|
||||
}
|
||||
|
||||
@@ -138,18 +138,18 @@ public class ItemExporter implements Exporter {
|
||||
|
||||
private static class ItemBasedDObject extends DObject {
|
||||
private final Object renderItem;
|
||||
private final IBakedModel model;
|
||||
private final BakedModel model;
|
||||
private final ItemStack stack;
|
||||
private boolean valid;
|
||||
|
||||
public ItemBasedDObject(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||
public ItemBasedDObject(Object renderItem, BakedModel model, ItemStack stack) {
|
||||
super(generateMeshForItemStack(renderItem, model, stack));
|
||||
this.renderItem = renderItem;
|
||||
this.model = model;
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
public boolean isBasedOn(Object renderItem, IBakedModel model, ItemStack stack) {
|
||||
public boolean isBasedOn(Object renderItem, BakedModel model, ItemStack stack) {
|
||||
return this.renderItem == renderItem && this.model == model && this.stack == stack;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import com.replaymod.render.blend.data.DObject;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.renderer.entity.model.ModelBox;
|
||||
import net.minecraft.client.renderer.entity.model.ModelRenderer;
|
||||
import net.minecraft.client.model.Box;
|
||||
import net.minecraft.client.model.Cuboid;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.model.ModelBox;
|
||||
//$$ import net.minecraft.client.model.ModelRenderer;
|
||||
@@ -31,7 +31,7 @@ public class ModelRendererExporter implements Exporter {
|
||||
public void setup() throws IOException {
|
||||
}
|
||||
|
||||
public void preRenderModel(ModelRenderer model, float scale) {
|
||||
public void preRenderModel(Cuboid model, float scale) {
|
||||
DObject object = getObjectForModel(model, scale);
|
||||
renderState.pushObject(object);
|
||||
renderState.pushModelView();
|
||||
@@ -53,7 +53,7 @@ public class ModelRendererExporter implements Exporter {
|
||||
renderState.pop();
|
||||
}
|
||||
|
||||
private DObject getObjectForModel(ModelRenderer model, float scale) {
|
||||
private DObject getObjectForModel(Cuboid model, float scale) {
|
||||
int frame = renderState.getFrame();
|
||||
DObject parent = renderState.peekObject();
|
||||
DObject object = null;
|
||||
@@ -67,17 +67,17 @@ public class ModelRendererExporter implements Exporter {
|
||||
}
|
||||
if (object == null) {
|
||||
object = new ModelBasedDObject(model, scale);
|
||||
object.id.name = model.boxName;
|
||||
object.id.name = model.name;
|
||||
object.setParent(parent);
|
||||
}
|
||||
object.lastFrame = frame;
|
||||
return object;
|
||||
}
|
||||
|
||||
private static DMesh generateMesh(ModelRenderer model, float scale) {
|
||||
private static DMesh generateMesh(Cuboid model, float scale) {
|
||||
DMesh mesh = new DMesh();
|
||||
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
||||
for (ModelBox box : cubeList(model)) {
|
||||
for (Box box : cubeList(model)) {
|
||||
box.render(builder, scale);
|
||||
}
|
||||
builder.maybeFinishDrawing();
|
||||
@@ -85,17 +85,17 @@ public class ModelRendererExporter implements Exporter {
|
||||
}
|
||||
|
||||
private static class ModelBasedDObject extends DObject {
|
||||
private final ModelRenderer model;
|
||||
private final Cuboid model;
|
||||
private final float scale;
|
||||
private boolean valid;
|
||||
|
||||
public ModelBasedDObject(ModelRenderer model, float scale) {
|
||||
public ModelBasedDObject(Cuboid model, float scale) {
|
||||
super(generateMesh(model, scale));
|
||||
this.model = model;
|
||||
this.scale = scale;
|
||||
}
|
||||
|
||||
public boolean isBasedOn(ModelRenderer model, float scale) {
|
||||
public boolean isBasedOn(Cuboid model, float scale) {
|
||||
return this.model == model && Math.abs(this.scale - scale) < 1e-4;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@ import com.replaymod.render.blend.data.DObject;
|
||||
import com.replaymod.render.blend.mixin.ParticleAccessor;
|
||||
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.MinecraftClient;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10904
|
||||
@@ -24,7 +24,7 @@ import net.minecraft.client.particle.Particle;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10809
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.client.render.VertexFormats;
|
||||
//#endif
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -35,7 +35,7 @@ import static com.replaymod.render.blend.Util.getCameraPos;
|
||||
import static com.replaymod.render.blend.Util.getGlModelViewMatrix;
|
||||
|
||||
public class ParticlesExporter implements Exporter {
|
||||
private final Minecraft mc = MCVer.getMinecraft();
|
||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||
private final RenderState renderState;
|
||||
private DObject pointAtObject;
|
||||
private DObject particlesObject;
|
||||
@@ -113,9 +113,9 @@ public class ParticlesExporter implements Exporter {
|
||||
// Instead of actually translating, we just add the translation on the current model-view-matrix.
|
||||
Matrix4f modelView = getGlModelViewMatrix();
|
||||
ParticleAccessor acc = (ParticleAccessor) particle;
|
||||
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * renderPartialTicks - Particle.interpPosX;
|
||||
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * renderPartialTicks - Particle.interpPosY;
|
||||
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * renderPartialTicks - Particle.interpPosZ;
|
||||
double dx = acc.getPrevPosX() + (acc.getPosX() - acc.getPrevPosX()) * renderPartialTicks - Particle.cameraX;
|
||||
double dy = acc.getPrevPosY() + (acc.getPosY() - acc.getPrevPosY()) * renderPartialTicks - Particle.cameraY;
|
||||
double dz = acc.getPrevPosZ() + (acc.getPosZ() - acc.getPrevPosZ()) * renderPartialTicks - Particle.cameraZ;
|
||||
Vector3f offset = new Vector3f((float) dx, (float) dy, (float) dz);
|
||||
Matrix4f.translate(offset, modelView, modelView);
|
||||
renderState.pushModelView(modelView);
|
||||
@@ -162,22 +162,22 @@ public class ParticlesExporter implements Exporter {
|
||||
builder.setReverseOffset(offset);
|
||||
builder.setWellBehaved(true);
|
||||
//#if MC>=10809
|
||||
builder.begin(7, DefaultVertexFormats.PARTICLE_POSITION_TEX_COLOR_LMAP);
|
||||
builder.begin(7, VertexFormats.POSITION_UV_COLOR_LMAP);
|
||||
//#else
|
||||
//$$ builder.startDrawingQuads();
|
||||
//#endif
|
||||
//#if MC>=10809
|
||||
particle.renderParticle(builder,
|
||||
particle.buildGeometry(builder,
|
||||
//#if MC>=11400
|
||||
//$$ MCVer.getMinecraft().gameRenderer.getCamera(),
|
||||
MCVer.getMinecraft().gameRenderer.getCamera(),
|
||||
//#else
|
||||
MCVer.getMinecraft().getRenderViewEntity(),
|
||||
//$$ MCVer.getMinecraft().getRenderViewEntity(),
|
||||
//#endif
|
||||
0, 1, 1, 0, 0, 0);
|
||||
//#else
|
||||
//$$ particle.func_180434_a(builder, Minecraft.getMinecraft().getRenderViewEntity(), 0, 1, 1, 0, 0, 0);
|
||||
//#endif
|
||||
builder.finishDrawing();
|
||||
builder.end();
|
||||
return mesh;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ 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 net.minecraft.client.Minecraft;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
|
||||
//#if MC>=10904
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -24,11 +24,11 @@ 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 = MCVer.getMinecraft();
|
||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||
private final RenderState renderState;
|
||||
private DObject tileEntitiesObject;
|
||||
private Map<TileEntity, DObject> tileEntityObjects;
|
||||
private Map<TileEntity, DObject> tileEntityObjectsSeen;
|
||||
private Map<BlockEntity, DObject> tileEntityObjects;
|
||||
private Map<BlockEntity, DObject> tileEntityObjectsSeen;
|
||||
|
||||
public TileEntityExporter(RenderState renderState) {
|
||||
this.renderState = renderState;
|
||||
@@ -52,13 +52,13 @@ public class TileEntityExporter implements Exporter {
|
||||
// so we position it at 0/0/0 and instead have the tile entities themselves move more
|
||||
Matrix4f.translate(new Vector3f(
|
||||
//#if MC>=11400
|
||||
//$$ (float) -mc.getEntityRenderManager().camera.getPos().x,
|
||||
//$$ (float) -mc.getEntityRenderManager().camera.getPos().y,
|
||||
//$$ (float) -mc.getEntityRenderManager().camera.getPos().z
|
||||
(float) -mc.getEntityRenderManager().camera.getPos().x,
|
||||
(float) -mc.getEntityRenderManager().camera.getPos().y,
|
||||
(float) -mc.getEntityRenderManager().camera.getPos().z
|
||||
//#else
|
||||
(float) -mc.getRenderManager().viewerPosX,
|
||||
(float) -mc.getRenderManager().viewerPosY,
|
||||
(float) -mc.getRenderManager().viewerPosZ
|
||||
//$$ (float) -mc.getRenderManager().viewerPosX,
|
||||
//$$ (float) -mc.getRenderManager().viewerPosY,
|
||||
//$$ (float) -mc.getRenderManager().viewerPosZ
|
||||
//#endif
|
||||
), modelView, modelView);
|
||||
renderState.push(tileEntitiesObject, modelView);
|
||||
@@ -68,7 +68,7 @@ public class TileEntityExporter implements Exporter {
|
||||
renderState.pop();
|
||||
}
|
||||
|
||||
public void preRender(TileEntity tileEntity, double dx, double dy, double dz, float renderPartialTicks, int destroyStage, float alpha) {
|
||||
public void preRender(BlockEntity tileEntity, double dx, double dy, double dz, float renderPartialTicks, int destroyStage, float alpha) {
|
||||
// FIXME: handle alpha
|
||||
DObject tileEntityObject = tileEntityObjects.get(tileEntity);
|
||||
if (tileEntityObject == null) {
|
||||
@@ -102,7 +102,7 @@ public class TileEntityExporter implements Exporter {
|
||||
|
||||
@Override
|
||||
public void postFrame(int frame) throws IOException {
|
||||
for (Map.Entry<TileEntity, DObject> entry : tileEntityObjects.entrySet()) {
|
||||
for (Map.Entry<BlockEntity, DObject> entry : tileEntityObjects.entrySet()) {
|
||||
if (!tileEntityObjectsSeen.containsKey(entry.getKey())) {
|
||||
DObject object = entry.getValue();
|
||||
object.keyframe("hide", 0, renderState.getFrame(), 1f);
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
//#if MC>=10800
|
||||
package com.replaymod.render.blend.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Mixin(targets = "net/minecraft/client/render/WorldRenderer/ChunkInfo")
|
||||
@Mixin(targets = "net/minecraft/client/render/WorldRenderer/ChunkInfo")
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
@Mixin(targets = "net/minecraft/client/renderer/WorldRenderer$ContainerLocalRenderInformation")
|
||||
//$$ @Mixin(targets = "net/minecraft/client/renderer/WorldRenderer$ContainerLocalRenderInformation")
|
||||
//#else
|
||||
//$$ @Mixin(targets = "net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation")
|
||||
//#endif
|
||||
//#endif
|
||||
public interface ContainerLocalRenderInformationAccessor {
|
||||
//#if MC>=11400
|
||||
//$$ @Accessor("renderer")
|
||||
@Accessor("renderer")
|
||||
//#else
|
||||
@Accessor
|
||||
//$$ @Accessor
|
||||
//#endif
|
||||
RenderChunk getRenderChunk();
|
||||
ChunkRenderer getRenderChunk();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
//#if MC>=10904
|
||||
package com.replaymod.render.blend.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.ItemRenderer;
|
||||
import net.minecraft.client.renderer.color.ItemColors;
|
||||
import net.minecraft.client.render.item.ItemRenderer;
|
||||
import net.minecraft.client.render.item.ItemColorMap;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(ItemRenderer.class)
|
||||
public interface ItemRendererAccessor {
|
||||
@Accessor
|
||||
ItemColors getItemColors();
|
||||
@Accessor("colorMap")
|
||||
ItemColorMap getItemColors();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -3,14 +3,14 @@ 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.ChunkRenderWorker;
|
||||
import net.minecraft.client.render.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>=11300
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.chunk.ChunkCompileTaskGenerator;
|
||||
//#endif
|
||||
@@ -18,14 +18,14 @@ import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||
@Mixin(ChunkRenderWorker.class)
|
||||
public abstract class MixinChunkRenderWorker {
|
||||
|
||||
@Inject(method = "processTask", at = @At("RETURN"))
|
||||
@Inject(method = "runTask", at = @At("RETURN"))
|
||||
//#if MC>=11300
|
||||
public void afterChunkUpdate(ChunkRenderTask task, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
if (task.getStatus() == ChunkRenderTask.Status.DONE
|
||||
&& task.getType() == ChunkRenderTask.Type.REBUILD_CHUNK) {
|
||||
blendState.get(ChunkExporter.class).addChunkUpdate(task.getRenderChunk(), task.getCompiledChunk());
|
||||
if (task.getStage() == ChunkRenderTask.Stage.DONE
|
||||
&& task.getMode() == ChunkRenderTask.Mode.REBUILD_CHUNK) {
|
||||
blendState.get(ChunkExporter.class).addChunkUpdate(task.getChunkRenderer(), task.getRenderData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.Camera;
|
||||
//#else
|
||||
import net.minecraft.entity.Entity;
|
||||
//$$ import net.minecraft.entity.Entity;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10904
|
||||
@@ -30,9 +30,9 @@ public abstract class MixinEffectRenderer {
|
||||
@Inject(method = "renderParticles", at = @At("HEAD"))
|
||||
private void preRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
float renderPartialTicks,
|
||||
CallbackInfo ci
|
||||
@@ -46,9 +46,9 @@ public abstract class MixinEffectRenderer {
|
||||
@Inject(method = "renderParticles", at = @At("RETURN"))
|
||||
private void postRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
float renderPartialTicks,
|
||||
CallbackInfo ci
|
||||
@@ -60,21 +60,21 @@ public abstract class MixinEffectRenderer {
|
||||
}
|
||||
|
||||
//#if MC<11400
|
||||
@Inject(method = "renderLitParticles", at = @At("HEAD"))
|
||||
public void preLitRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(ParticlesExporter.class).preParticlesRender(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "renderLitParticles", at = @At("RETURN"))
|
||||
public void postLitRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(ParticlesExporter.class).postParticlesRender();
|
||||
}
|
||||
}
|
||||
//$$ @Inject(method = "renderLitParticles", at = @At("HEAD"))
|
||||
//$$ public void preLitRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
|
||||
//$$ BlendState blendState = BlendState.getState();
|
||||
//$$ if (blendState != null) {
|
||||
//$$ blendState.get(ParticlesExporter.class).preParticlesRender(true);
|
||||
//$$ }
|
||||
//$$ }
|
||||
//$$
|
||||
//$$ @Inject(method = "renderLitParticles", at = @At("RETURN"))
|
||||
//$$ public void postLitRender(Entity view, float renderPartialTicks, CallbackInfo ci) {
|
||||
//$$ BlendState blendState = BlendState.getState();
|
||||
//$$ if (blendState != null) {
|
||||
//$$ blendState.get(ParticlesExporter.class).postParticlesRender();
|
||||
//$$ }
|
||||
//$$ }
|
||||
//#endif
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -9,26 +9,26 @@ 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;
|
||||
import net.minecraft.client.model.Cuboid;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.model.ModelRenderer;
|
||||
//#endif
|
||||
|
||||
@Mixin(ModelRenderer.class)
|
||||
@Mixin(Cuboid.class)
|
||||
public abstract class MixinModelRenderer {
|
||||
@Inject(method = "render", at = @At("HEAD"))
|
||||
public void preRender(float scale, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(ModelRendererExporter.class).preRenderModel((ModelRenderer)(Object)this, scale);
|
||||
blendState.get(ModelRendererExporter.class).preRenderModel((Cuboid)(Object)this, scale);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "renderWithRotation", at = @At("HEAD"))
|
||||
@Inject(method = "method_2852", at = @At("HEAD"))
|
||||
public void preRenderWithRotation(float scale, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(ModelRendererExporter.class).preRenderModel((ModelRenderer)(Object)this, scale);
|
||||
blendState.get(ModelRendererExporter.class).preRenderModel((Cuboid)(Object)this, scale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public abstract class MixinModelRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "renderWithRotation", at = @At("RETURN"))
|
||||
@Inject(method = "method_2852", at = @At("RETURN"))
|
||||
public void postRenderWithRotation(float scale, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
@@ -50,7 +50,7 @@ public abstract class MixinModelRenderer {
|
||||
|
||||
@Inject(method = "render",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/renderer/GlStateManager;callList(I)V"),
|
||||
target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"),
|
||||
expect = 3)
|
||||
public void onRender(float scale, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
@@ -59,9 +59,9 @@ public abstract class MixinModelRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "renderWithRotation",
|
||||
@Inject(method = "method_2852",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/renderer/GlStateManager;callList(I)V"))
|
||||
target = "Lcom/mojang/blaze3d/platform/GlStateManager;callList(I)V"))
|
||||
public void onRenderWithRotation(float scale, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
|
||||
@@ -4,20 +4,20 @@ 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.culling.ICamera;
|
||||
import net.minecraft.client.render.VisibleRegion;
|
||||
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>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.Camera;
|
||||
//#else
|
||||
import net.minecraft.entity.Entity;
|
||||
//$$ import net.minecraft.entity.Entity;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.RenderGlobal;
|
||||
//#endif
|
||||
@@ -34,17 +34,17 @@ public abstract class MixinRenderGlobal {
|
||||
@Inject(method = "renderEntities",
|
||||
at = @At(value = "INVOKE",
|
||||
//#if MC>=10904
|
||||
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityStatic(Lnet/minecraft/entity/Entity;FZ)V"))
|
||||
target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V"))
|
||||
//#else
|
||||
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z"))
|
||||
//#endif
|
||||
private void preEntityRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
VisibleRegion camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(EntityExporter.class).preEntitiesRender();
|
||||
@@ -54,18 +54,18 @@ public abstract class MixinRenderGlobal {
|
||||
@Inject(method = "renderEntities",
|
||||
at = @At(value = "INVOKE",
|
||||
//#if MC>=10904
|
||||
target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntityStatic(Lnet/minecraft/entity/Entity;FZ)V",
|
||||
target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;FZ)V",
|
||||
//#else
|
||||
//$$ target = "Lnet/minecraft/client/renderer/entity/RenderManager;renderEntitySimple(Lnet/minecraft/entity/Entity;F)Z",
|
||||
//#endif
|
||||
shift = At.Shift.AFTER))
|
||||
private void postEntityRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
VisibleRegion camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(EntityExporter.class).postEntitiesRender();
|
||||
@@ -75,18 +75,18 @@ public abstract class MixinRenderGlobal {
|
||||
@Inject(method = "renderEntities", at = @At(
|
||||
value = "INVOKE",
|
||||
//#if MC>=11300
|
||||
target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;render(Lnet/minecraft/tileentity/TileEntity;FI)V"
|
||||
target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V"
|
||||
//#else
|
||||
//$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V"
|
||||
//#endif
|
||||
))
|
||||
private void preTileEntityRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
VisibleRegion camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(TileEntityExporter.class).preTileEntitiesRender();
|
||||
@@ -96,7 +96,7 @@ public abstract class MixinRenderGlobal {
|
||||
@Inject(method = "renderEntities", at = @At(
|
||||
value = "INVOKE",
|
||||
//#if MC>=11300
|
||||
target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;render(Lnet/minecraft/tileentity/TileEntity;FI)V",
|
||||
target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;render(Lnet/minecraft/block/entity/BlockEntity;FI)V",
|
||||
//#else
|
||||
//$$ target = "Lnet/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher;renderTileEntity(Lnet/minecraft/tileentity/TileEntity;FI)V",
|
||||
//#endif
|
||||
@@ -104,11 +104,11 @@ public abstract class MixinRenderGlobal {
|
||||
))
|
||||
private void postTileEntityRender(
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
ICamera camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
VisibleRegion camera, float renderPartialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(TileEntityExporter.class).postTileEntitiesRender();
|
||||
|
||||
@@ -10,8 +10,8 @@ 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;
|
||||
import net.minecraft.client.render.item.ItemRenderer;
|
||||
import net.minecraft.client.render.model.BakedModel;
|
||||
//#else
|
||||
//#if MC>=10904
|
||||
//$$ import net.minecraft.client.renderer.RenderItem;
|
||||
@@ -29,11 +29,11 @@ import net.minecraft.client.renderer.model.IBakedModel;
|
||||
//#endif
|
||||
public abstract class MixinRenderItem {
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderItemModel", at = @At("HEAD"))
|
||||
@Inject(method = "renderItemModel", at = @At("HEAD"))
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
@Inject(method = "renderModel(Lnet/minecraft/client/renderer/model/IBakedModel;Lnet/minecraft/item/ItemStack;)V",
|
||||
at = @At("HEAD"))
|
||||
//$$ @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",
|
||||
@@ -44,7 +44,7 @@ public abstract class MixinRenderItem {
|
||||
//#endif
|
||||
//#endif
|
||||
//#endif
|
||||
private void onRenderModel(IBakedModel model, ItemStack stack, CallbackInfo ci) {
|
||||
private void onRenderModel(BakedModel model, ItemStack stack, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(ItemExporter.class).onRender(this, model, stack);
|
||||
|
||||
@@ -3,34 +3,34 @@ package com.replaymod.render.blend.mixin;
|
||||
|
||||
import com.replaymod.render.blend.BlendState;
|
||||
import com.replaymod.render.blend.exporters.EntityExporter;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=10904
|
||||
import net.minecraft.client.renderer.entity.RenderLivingBase;
|
||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.entity.RendererLivingEntity;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10904
|
||||
@Mixin(RenderLivingBase.class)
|
||||
@Mixin(LivingEntityRenderer.class)
|
||||
//#else
|
||||
//$$ @Mixin(RendererLivingEntity.class)
|
||||
//#endif
|
||||
public abstract class MixinRenderLivingBase {
|
||||
@Inject(method = "doRender", at = @At(
|
||||
@Inject(method = "method_4054", at = @At(
|
||||
value = "INVOKE",
|
||||
//#if MC>=10904
|
||||
target = "Lnet/minecraft/client/renderer/entity/RenderLivingBase;prepareScale(Lnet/minecraft/entity/EntityLivingBase;F)F",
|
||||
target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;scaleAndTranslate(Lnet/minecraft/entity/LivingEntity;F)F",
|
||||
//#else
|
||||
//$$ target = "Lnet/minecraft/client/renderer/entity/RendererLivingEntity;preRenderCallback(Lnet/minecraft/entity/EntityLivingBase;F)V",
|
||||
//#endif
|
||||
shift = At.Shift.AFTER
|
||||
))
|
||||
private void recordModelMatrix(EntityLivingBase entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
|
||||
private void recordModelMatrix(LivingEntity entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
|
||||
BlendState blendState = BlendState.getState();
|
||||
if (blendState != null) {
|
||||
blendState.get(EntityExporter.class).postEntityLivingSetup();
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.replaymod.render.blend.mixin;
|
||||
|
||||
import com.replaymod.render.blend.BlendState;
|
||||
import com.replaymod.render.blend.exporters.EntityExporter;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@@ -15,21 +15,21 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
//#endif
|
||||
|
||||
@Mixin(RenderManager.class)
|
||||
@Mixin(EntityRenderDispatcher.class)
|
||||
public abstract class MixinRenderManager {
|
||||
|
||||
@Inject(
|
||||
//#if MC>=11400
|
||||
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
|
||||
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
method = "renderEntity",
|
||||
//$$ method = "renderEntity",
|
||||
//#else
|
||||
//$$ method = "doRenderEntity",
|
||||
//#endif
|
||||
//#endif
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V"))
|
||||
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V"))
|
||||
public void preRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
|
||||
//#if MC>=10904
|
||||
CallbackInfo ci) {
|
||||
@@ -44,16 +44,16 @@ public abstract class MixinRenderManager {
|
||||
|
||||
@Inject(
|
||||
//#if MC>=11400
|
||||
//$$ method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
|
||||
method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V",
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
method = "renderEntity",
|
||||
//$$ method = "renderEntity",
|
||||
//#else
|
||||
//$$ method = "doRenderEntity",
|
||||
//#endif
|
||||
//#endif
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/renderer/entity/Render;doRender(Lnet/minecraft/entity/Entity;DDDFF)V",
|
||||
target = "Lnet/minecraft/client/render/entity/EntityRenderer;render(Lnet/minecraft/entity/Entity;DDDFF)V",
|
||||
shift = At.Shift.AFTER))
|
||||
public void postRender(Entity entity, double x, double y, double z, float yaw, float renderPartialTicks, boolean box,
|
||||
//#if MC>=10904
|
||||
|
||||
@@ -3,25 +3,25 @@ package com.replaymod.render.blend.mixin;
|
||||
|
||||
import com.replaymod.render.blend.BlendState;
|
||||
import com.replaymod.render.blend.exporters.TileEntityExporter;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(TileEntityRendererDispatcher.class)
|
||||
@Mixin(BlockEntityRenderDispatcher.class)
|
||||
public abstract class MixinTileEntityRendererDispatcher {
|
||||
|
||||
//#if MC>=11300
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
|
||||
//$$ at = @At("HEAD"))
|
||||
//#else
|
||||
@Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||
@Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
|
||||
at = @At("HEAD"))
|
||||
//#else
|
||||
//$$ @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||
//$$ at = @At("HEAD"))
|
||||
//#endif
|
||||
public void preRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
|
||||
public void preRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
|
||||
float alpha = 1;
|
||||
//#else
|
||||
//#if MC>=11200
|
||||
@@ -43,13 +43,13 @@ public abstract class MixinTileEntityRendererDispatcher {
|
||||
|
||||
//#if MC>=11300
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
|
||||
//$$ at = @At("RETURN"))
|
||||
//#else
|
||||
@Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||
@Inject(method = "renderEntity(Lnet/minecraft/block/entity/BlockEntity;DDDFIZ)V",
|
||||
at = @At("RETURN"))
|
||||
//#else
|
||||
//$$ @Inject(method = "render(Lnet/minecraft/tileentity/TileEntity;DDDFIZ)V",
|
||||
//$$ at = @At("RETURN"))
|
||||
//#endif
|
||||
public void postRender(TileEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
|
||||
public void postRender(BlockEntity tileEntity, double x, double y, double z, float renderPartialTicks, int destroyStage, boolean hasNoBlock, CallbackInfo ci) {
|
||||
//#else
|
||||
//#if MC>=11200
|
||||
//$$ @Inject(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntity;DDDFIF)V",
|
||||
|
||||
@@ -17,11 +17,11 @@ public interface ParticleAccessor
|
||||
double getPrevPosY();
|
||||
@Accessor
|
||||
double getPrevPosZ();
|
||||
@Accessor
|
||||
@Accessor("x")
|
||||
double getPosX();
|
||||
@Accessor
|
||||
@Accessor("y")
|
||||
double getPosY();
|
||||
@Accessor
|
||||
@Accessor("z")
|
||||
double getPosZ();
|
||||
//#endif
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//#if MC>=10800
|
||||
package com.replaymod.render.blend.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@@ -9,7 +9,7 @@ import java.util.List;
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public interface WorldRendererAccessor {
|
||||
@Accessor
|
||||
@Accessor("chunkInfos")
|
||||
List getRenderInfos();
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -80,9 +80,9 @@ public abstract class MultiFramePboOpenGlFrameCapturer<F extends Frame, D extend
|
||||
pbo.bind();
|
||||
|
||||
int offset = captureData.ordinal() * getFrameWidth() * getFrameHeight() * 4;
|
||||
frameBuffer().bindFramebuffer(true);
|
||||
frameBuffer().beginWrite(true);
|
||||
GL11.glReadPixels(0, 0, getFrameWidth(), getFrameHeight(), GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, offset);
|
||||
frameBuffer().unbindFramebuffer();
|
||||
frameBuffer().endWrite();
|
||||
|
||||
pbo.unbind();
|
||||
return null;
|
||||
|
||||
@@ -10,11 +10,11 @@ import com.replaymod.render.hooks.Texture2DStateCallback;
|
||||
import com.replaymod.render.rendering.FrameCapturer;
|
||||
import com.replaymod.render.shader.Program;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import static net.minecraft.client.renderer.GlStateManager.*;
|
||||
import static com.mojang.blaze3d.platform.GlStateManager.*;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -22,8 +22,8 @@ import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
||||
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
public class ODSFrameCapturer implements FrameCapturer<ODSOpenGlFrame> {
|
||||
private static final ResourceLocation vertexResource = new ResourceLocation("replaymod", "shader/ods.vert");
|
||||
private static final ResourceLocation fragmentResource = new ResourceLocation("replaymod", "shader/ods.frag");
|
||||
private static final Identifier vertexResource = new Identifier("replaymod", "shader/ods.vert");
|
||||
private static final Identifier fragmentResource = new Identifier("replaymod", "shader/ods.frag");
|
||||
|
||||
private final CubicPboOpenGlFrameCapturer left, right;
|
||||
private final Program shaderProgram;
|
||||
@@ -73,7 +73,7 @@ public class ODSFrameCapturer implements FrameCapturer<ODSOpenGlFrame> {
|
||||
leftEyeVariable = shaderProgram.getUniformVariable("leftEye");
|
||||
directionVariable = shaderProgram.getUniformVariable("direction");
|
||||
} catch (Exception e) {
|
||||
throw new ReportedException(CrashReport.makeCrashReport(e, "Creating ODS shaders"));
|
||||
throw new CrashException(CrashReport.create(e, "Creating ODS shaders"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,19 +146,19 @@ public class ODSFrameCapturer implements FrameCapturer<ODSOpenGlFrame> {
|
||||
resize(getFrameWidth(), getFrameHeight());
|
||||
|
||||
pushMatrix();
|
||||
frameBuffer().bindFramebuffer(true);
|
||||
frameBuffer().beginWrite(true);
|
||||
|
||||
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
enableTexture2D();
|
||||
enableTexture();
|
||||
|
||||
directionVariable.set(captureData.ordinal());
|
||||
worldRenderer.renderWorld(partialTicks, null);
|
||||
|
||||
frameBuffer().unbindFramebuffer();
|
||||
frameBuffer().endWrite();
|
||||
popMatrix();
|
||||
|
||||
return captureFrame(frameId, captureData);
|
||||
|
||||
@@ -8,8 +8,8 @@ import com.replaymod.render.utils.ByteBufferPool;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.WritableDimension;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.shader.Framebuffer;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gl.GlFramebuffer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.replaymod.render.mixin.MainWindowAccessor;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10800
|
||||
import static net.minecraft.client.renderer.GlStateManager.*;
|
||||
import static com.mojang.blaze3d.platform.GlStateManager.*;
|
||||
//#else
|
||||
//$$ import static com.replaymod.core.versions.MCVer.GlStateManager.*;
|
||||
//#endif
|
||||
@@ -33,9 +33,9 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
protected final WorldRenderer worldRenderer;
|
||||
protected final RenderInfo renderInfo;
|
||||
protected int framesDone;
|
||||
private Framebuffer frameBuffer;
|
||||
private GlFramebuffer frameBuffer;
|
||||
|
||||
private final Minecraft mc = MCVer.getMinecraft();
|
||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||
|
||||
public OpenGlFrameCapturer(WorldRenderer worldRenderer, RenderInfo renderInfo) {
|
||||
this.worldRenderer = worldRenderer;
|
||||
@@ -67,7 +67,7 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
return renderInfo.getFrameSize().getHeight();
|
||||
}
|
||||
|
||||
protected Framebuffer frameBuffer() {
|
||||
protected GlFramebuffer frameBuffer() {
|
||||
if (frameBuffer == null) {
|
||||
frameBuffer = mc.getFramebuffer();
|
||||
}
|
||||
@@ -87,18 +87,18 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
resize(getFrameWidth(), getFrameHeight());
|
||||
|
||||
pushMatrix();
|
||||
frameBuffer().bindFramebuffer(true);
|
||||
frameBuffer().beginWrite(true);
|
||||
|
||||
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
enableTexture2D();
|
||||
enableTexture();
|
||||
|
||||
worldRenderer.renderWorld(partialTicks, captureData);
|
||||
|
||||
frameBuffer().unbindFramebuffer();
|
||||
frameBuffer().endWrite();
|
||||
popMatrix();
|
||||
|
||||
return captureFrame(frameId, captureData);
|
||||
@@ -106,9 +106,9 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
|
||||
protected OpenGlFrame captureFrame(int frameId, D captureData) {
|
||||
ByteBuffer buffer = ByteBufferPool.allocate(getFrameWidth() * getFrameHeight() * 4);
|
||||
frameBuffer().bindFramebuffer(true);
|
||||
frameBuffer().beginWrite(true);
|
||||
GL11.glReadPixels(0, 0, getFrameWidth(), getFrameHeight(), GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, buffer);
|
||||
frameBuffer().unbindFramebuffer();
|
||||
frameBuffer().endWrite();
|
||||
buffer.rewind();
|
||||
|
||||
return new OpenGlFrame(frameId, new Dimension(getFrameWidth(), getFrameHeight()), buffer);
|
||||
@@ -116,16 +116,16 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
||||
|
||||
protected void resize(int width, int height) {
|
||||
//#if MC>=11300
|
||||
Framebuffer fb = mc.getFramebuffer();
|
||||
if (fb.framebufferWidth != width || fb.framebufferHeight != height) {
|
||||
fb.createFramebuffer(width, height
|
||||
GlFramebuffer fb = mc.getFramebuffer();
|
||||
if (fb.viewWidth != width || fb.viewHeight != height) {
|
||||
fb.initFbo(width, height
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
}
|
||||
//noinspection ConstantConditions
|
||||
MainWindowAccessor mainWindow = (MainWindowAccessor) (Object) mc.mainWindow;
|
||||
MainWindowAccessor mainWindow = (MainWindowAccessor) (Object) mc.window;
|
||||
mainWindow.setFramebufferWidth(width);
|
||||
mainWindow.setFramebufferHeight(height);
|
||||
//#else
|
||||
|
||||
@@ -64,9 +64,9 @@ public class SimplePboOpenGlFrameCapturer extends OpenGlFrameCapturer<OpenGlFram
|
||||
protected OpenGlFrame captureFrame(int frameId, CaptureData data) {
|
||||
pbo.bind();
|
||||
|
||||
frameBuffer().bindFramebuffer(true);
|
||||
frameBuffer().beginWrite(true);
|
||||
GL11.glReadPixels(0, 0, getFrameWidth(), getFrameHeight(), GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, 0);
|
||||
frameBuffer().unbindFramebuffer();
|
||||
frameBuffer().endWrite();
|
||||
|
||||
pbo.unbind();
|
||||
return null;
|
||||
|
||||
@@ -11,9 +11,9 @@ import de.johni0702.minecraft.gui.element.GuiLabel;
|
||||
import de.johni0702.minecraft.gui.layout.CustomLayout;
|
||||
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
||||
import de.johni0702.minecraft.gui.layout.VerticalLayout;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.CrashReportCategory;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashReportSection;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Consumer;
|
||||
@@ -30,11 +30,11 @@ public class GuiExportFailed extends GuiScreen {
|
||||
// Check whether the user has configured some custom ffmpeg arguments
|
||||
if (settings.getEncodingPreset().getValue().equals(settings.getExportArguments())) {
|
||||
// If they haven't, then this is probably a faulty ffmpeg installation and there's nothing we can do
|
||||
CrashReport crashReport = CrashReport.makeCrashReport(e, "Exporting video");
|
||||
CrashReportCategory details = crashReport.makeCategory("Export details");
|
||||
CrashReport crashReport = CrashReport.create(e, "Exporting video");
|
||||
CrashReportSection details = crashReport.addElement("Export details");
|
||||
addDetail(details, "Settings", settings::toString);
|
||||
addDetail(details, "FFmpeg log", e::getLog);
|
||||
throw new ReportedException(crashReport);
|
||||
throw new CrashException(crashReport);
|
||||
} else {
|
||||
// If they have, ask them whether it was intentional
|
||||
GuiExportFailed gui = new GuiExportFailed(e, doRestart);
|
||||
@@ -106,7 +106,7 @@ public class GuiExportFailed extends GuiScreen {
|
||||
|
||||
abortButton.onClick(() -> {
|
||||
// Assume they know what they're doing
|
||||
getMinecraft().displayGuiScreen(null);
|
||||
getMinecraft().openScreen(null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,8 +29,8 @@ import de.johni0702.minecraft.gui.popup.GuiYesNoPopup;
|
||||
import de.johni0702.minecraft.gui.utils.Colors;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.client.gui.GuiErrorScreen;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.client.gui.menu.NoticeScreen;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
@@ -38,7 +38,7 @@ import java.util.List;
|
||||
import static com.replaymod.render.ReplayModRender.LOGGER;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.text.TranslatableTextComponent;
|
||||
import net.minecraft.text.TranslatableTextComponent;
|
||||
//#endif
|
||||
|
||||
public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> {
|
||||
@@ -204,7 +204,7 @@ public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> {
|
||||
|
||||
private void processQueue(Iterable<RenderJob> queue) {
|
||||
// Close all GUIs (so settings in GuiRenderSettings are saved)
|
||||
getMinecraft().displayGuiScreen(null);
|
||||
getMinecraft().openScreen(null);
|
||||
// Start rendering
|
||||
int jobsDone = 0;
|
||||
for (RenderJob renderJob : queue) {
|
||||
@@ -214,17 +214,17 @@ public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> {
|
||||
videoRenderer.renderVideo();
|
||||
} catch (VideoWriter.NoFFmpegException e) {
|
||||
LOGGER.error("Rendering video:", e);
|
||||
GuiErrorScreen errorScreen = new GuiErrorScreen(
|
||||
NoticeScreen errorScreen = new NoticeScreen(
|
||||
//#if MC>=11400
|
||||
//$$ () -> {},
|
||||
//$$ new TranslatableTextComponent("replaymod.gui.rendering.error.title"),
|
||||
//$$ new TranslatableTextComponent("replaymod.gui.rendering.error.message")
|
||||
() -> {},
|
||||
new TranslatableTextComponent("replaymod.gui.rendering.error.title"),
|
||||
new TranslatableTextComponent("replaymod.gui.rendering.error.message")
|
||||
//#else
|
||||
I18n.format("replaymod.gui.rendering.error.title"),
|
||||
I18n.format("replaymod.gui.rendering.error.message")
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.title"),
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.message")
|
||||
//#endif
|
||||
);
|
||||
getMinecraft().displayGuiScreen(errorScreen);
|
||||
getMinecraft().openScreen(errorScreen);
|
||||
return;
|
||||
} catch (VideoWriter.FFmpegStartupException e) {
|
||||
int jobsToSkip = jobsDone;
|
||||
@@ -236,7 +236,7 @@ public class GuiRenderQueue extends AbstractGuiPopup<GuiRenderQueue> {
|
||||
});
|
||||
return;
|
||||
} catch (Throwable t) {
|
||||
Utils.error(LOGGER, this, CrashReport.makeCrashReport(t, "Rendering video"), () -> {});
|
||||
Utils.error(LOGGER, this, CrashReport.create(t, "Rendering video"), () -> {});
|
||||
container.display(); // Re-show the queue popup and the new error popup
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -32,9 +32,9 @@ import de.johni0702.minecraft.gui.utils.lwjgl.Color;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableColor;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.client.gui.GuiErrorScreen;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.client.gui.menu.NoticeScreen;
|
||||
import net.minecraft.client.resource.language.I18n;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.io.File;
|
||||
@@ -52,7 +52,7 @@ import static com.replaymod.core.utils.Utils.error;
|
||||
import static com.replaymod.render.ReplayModRender.LOGGER;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.text.TranslatableTextComponent;
|
||||
import net.minecraft.text.TranslatableTextComponent;
|
||||
//#endif
|
||||
|
||||
public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
@@ -108,7 +108,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
public final GuiSlider frameRateSlider = new GuiSlider().onValueChanged(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
frameRateSlider.setText(I18n.format("replaymod.gui.rendersettings.framerate")
|
||||
frameRateSlider.setText(I18n.translate("replaymod.gui.rendersettings.framerate")
|
||||
+ ": " + (frameRateSlider.getValue() + 10));
|
||||
}
|
||||
}).setSize(122, 20).setSteps(110);
|
||||
@@ -177,7 +177,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
.onValueChanged(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sphericalFovSlider.setText(I18n.format("replaymod.gui.rendersettings.sphericalFov")
|
||||
sphericalFovSlider.setText(I18n.translate("replaymod.gui.rendersettings.sphericalFov")
|
||||
+ ": " + (MIN_SPHERICAL_FOV + sphericalFovSlider.getValue() * SPHERICAL_FOV_STEP_SIZE) + "°");
|
||||
|
||||
updateInputs();
|
||||
@@ -231,23 +231,23 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
@Override
|
||||
public void run() {
|
||||
// Closing this GUI ensures that settings are saved
|
||||
getMinecraft().displayGuiScreen(null);
|
||||
getMinecraft().openScreen(null);
|
||||
try {
|
||||
VideoRenderer videoRenderer = new VideoRenderer(save(false), replayHandler, timeline);
|
||||
videoRenderer.renderVideo();
|
||||
} catch (VideoWriter.NoFFmpegException e) {
|
||||
LOGGER.error("Rendering video:", e);
|
||||
GuiErrorScreen errorScreen = new GuiErrorScreen(
|
||||
NoticeScreen errorScreen = new NoticeScreen(
|
||||
//#if MC>=11400
|
||||
//$$ () -> {},
|
||||
//$$ new TranslatableTextComponent("replaymod.gui.rendering.error.title"),
|
||||
//$$ new TranslatableTextComponent("replaymod.gui.rendering.error.message")
|
||||
() -> {},
|
||||
new TranslatableTextComponent("replaymod.gui.rendering.error.title"),
|
||||
new TranslatableTextComponent("replaymod.gui.rendering.error.message")
|
||||
//#else
|
||||
I18n.format("replaymod.gui.rendering.error.title"),
|
||||
I18n.format("replaymod.gui.rendering.error.message")
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.title"),
|
||||
//$$ I18n.format("replaymod.gui.rendering.error.message")
|
||||
//#endif
|
||||
);
|
||||
getMinecraft().displayGuiScreen(errorScreen);
|
||||
getMinecraft().openScreen(errorScreen);
|
||||
} catch (VideoWriter.FFmpegStartupException e) {
|
||||
GuiExportFailed.tryToRecover(e, newSettings -> {
|
||||
// Update settings with fixed ffmpeg arguments
|
||||
@@ -256,7 +256,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
renderButton.onClick();
|
||||
});
|
||||
} catch (Throwable t) {
|
||||
error(LOGGER, GuiRenderSettings.this, CrashReport.makeCrashReport(t, "Rendering video"), () -> {});
|
||||
error(LOGGER, GuiRenderSettings.this, CrashReport.create(t, "Rendering video"), () -> {});
|
||||
display(); // Re-show the render settings gui and the new error popup
|
||||
}
|
||||
}
|
||||
@@ -264,7 +264,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
public final GuiButton cancelButton = new GuiButton(buttonPanel).onClick(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getMinecraft().displayGuiScreen(null);
|
||||
getMinecraft().openScreen(null);
|
||||
}
|
||||
}).setSize(100, 20).setI18nLabel("replaymod.gui.cancel");
|
||||
|
||||
@@ -538,7 +538,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable {
|
||||
antiAliasingDropdown.getSelectedValue(),
|
||||
exportCommand.getText(),
|
||||
exportArguments.getText(),
|
||||
net.minecraft.client.gui.GuiScreen.isCtrlKeyDown()
|
||||
net.minecraft.client.gui.Screen.hasControlDown()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ public class GuiRenderingDone extends GuiScreen {
|
||||
settingsRegistry.set(Setting.SKIP_POST_RENDER_GUI, true);
|
||||
settingsRegistry.save();
|
||||
}
|
||||
getMinecraft().displayGuiScreen(null);
|
||||
getMinecraft().openScreen(null);
|
||||
}
|
||||
}).setSize(100, 20).setI18nLabel("replaymod.gui.close");
|
||||
|
||||
|
||||
@@ -17,18 +17,18 @@ import de.johni0702.minecraft.gui.layout.HorizontalLayout;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadablePoint;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.client.texture.NativeImageBackedTexture;
|
||||
import net.minecraft.client.resource.language.I18n;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.renderer.texture.NativeImage;
|
||||
import net.minecraft.client.texture.NativeImage;
|
||||
//#endif
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
private static final ResourceLocation NO_PREVIEW_TEXTURE = new ResourceLocation("replaymod", "logo.jpg");
|
||||
private static final Identifier NO_PREVIEW_TEXTURE = new Identifier("replaymod", "logo.jpg");
|
||||
|
||||
private final VideoRenderer renderer;
|
||||
|
||||
@@ -86,7 +86,7 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
}
|
||||
}.setI18nLabel("replaymod.gui.rendering.cancel").setSize(150, 20);
|
||||
|
||||
private DynamicTexture previewTexture;
|
||||
private NativeImageBackedTexture previewTexture;
|
||||
private boolean previewTextureDirty;
|
||||
|
||||
{
|
||||
@@ -205,8 +205,8 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
prevRenderedFrames = renderer.getFramesDone();
|
||||
}
|
||||
|
||||
renderTime.setText(I18n.format("replaymod.gui.rendering.timetaken") + ": " + secToString(renderTimeTaken/1000));
|
||||
remainingTime.setText(I18n.format("replaymod.gui.rendering.timeleft") + ": " + secToString(renderTimeLeft));
|
||||
renderTime.setText(I18n.translate("replaymod.gui.rendering.timetaken") + ": " + secToString(renderTimeTaken/1000));
|
||||
remainingTime.setText(I18n.translate("replaymod.gui.rendering.timeleft") + ": " + secToString(renderTimeLeft));
|
||||
|
||||
int framesDone = renderer.getFramesDone(), framesTotal = renderer.getTotalFrames();
|
||||
progressBar.setI18nLabel("replaymod.gui.rendering.progress", framesDone, framesTotal);
|
||||
@@ -219,9 +219,9 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
int sec = seconds - ((min*60) + (hours*60*60));
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if(hours > 0) builder.append(hours).append(I18n.format("replaymod.gui.hours"));
|
||||
if(min > 0 || hours > 0) builder.append(min).append(I18n.format("replaymod.gui.minutes"));
|
||||
builder.append(sec).append(I18n.format("replaymod.gui.seconds"));
|
||||
if(hours > 0) builder.append(hours).append(I18n.translate("replaymod.gui.hours"));
|
||||
if(min > 0 || hours > 0) builder.append(min).append(I18n.translate("replaymod.gui.minutes"));
|
||||
builder.append(sec).append(I18n.translate("replaymod.gui.seconds"));
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
@@ -233,14 +233,14 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
|
||||
if (previewTexture == null) {
|
||||
//#if MC>=11300
|
||||
previewTexture = new DynamicTexture(videoWidth, videoHeight, true);
|
||||
previewTexture = new NativeImageBackedTexture(videoWidth, videoHeight, true);
|
||||
//#else
|
||||
//$$ previewTexture = new DynamicTexture(videoWidth, videoHeight);
|
||||
//#endif
|
||||
}
|
||||
|
||||
if (previewTextureDirty) {
|
||||
previewTexture.updateDynamicTexture();
|
||||
previewTexture.upload();
|
||||
previewTextureDirty = false;
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
||||
buffer.mark();
|
||||
synchronized (this) {
|
||||
//#if MC>=11300
|
||||
NativeImage data = previewTexture.getTextureData();
|
||||
NativeImage data = previewTexture.getImage();
|
||||
assert data != null;
|
||||
for (int y = 0; y < data.getHeight(); y++) {
|
||||
for (int x = 0; x < data.getWidth(); x++) {
|
||||
|
||||
@@ -4,12 +4,12 @@ package com.replaymod.render.hooks;
|
||||
import com.replaymod.render.mixin.ChunkRenderDispatcherAccessor;
|
||||
import com.replaymod.render.mixin.WorldRendererAccessor;
|
||||
import com.replaymod.render.utils.JailingQueue;
|
||||
import net.minecraft.client.renderer.RegionRenderCacheBuilder;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderWorker;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.render.chunk.BlockLayeredBufferBuilder;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Iterator;
|
||||
@@ -29,7 +29,7 @@ public class ChunkLoadingRenderGlobal {
|
||||
//#else
|
||||
//$$ private final RenderGlobal hooked;
|
||||
//#endif
|
||||
private ChunkRenderDispatcher renderDispatcher;
|
||||
private ChunkBatcher renderDispatcher;
|
||||
//#if MC>=11300
|
||||
private JailingQueue<ChunkRenderTask> workerJailingQueue;
|
||||
//#else
|
||||
@@ -51,7 +51,7 @@ public class ChunkLoadingRenderGlobal {
|
||||
setup(((WorldRendererAccessor) renderGlobal).getRenderDispatcher());
|
||||
}
|
||||
|
||||
public void updateRenderDispatcher(ChunkRenderDispatcher renderDispatcher) {
|
||||
public void updateRenderDispatcher(ChunkBatcher renderDispatcher) {
|
||||
if (this.renderDispatcher != null) {
|
||||
workerJailingQueue.freeAll();
|
||||
this.renderDispatcher = null;
|
||||
@@ -61,9 +61,9 @@ public class ChunkLoadingRenderGlobal {
|
||||
}
|
||||
}
|
||||
|
||||
private void setup(ChunkRenderDispatcher renderDispatcher) {
|
||||
private void setup(ChunkBatcher renderDispatcher) {
|
||||
this.renderDispatcher = renderDispatcher;
|
||||
this.renderWorker = new CustomChunkRenderWorker(renderDispatcher, new RegionRenderCacheBuilder());
|
||||
this.renderWorker = new CustomChunkRenderWorker(renderDispatcher, new BlockLayeredBufferBuilder());
|
||||
ChunkRenderDispatcherAccessor renderDispatcherAcc = (ChunkRenderDispatcherAccessor) renderDispatcher;
|
||||
|
||||
int workerThreads = renderDispatcherAcc.getListThreadedWorkers().size();
|
||||
@@ -80,20 +80,20 @@ public class ChunkLoadingRenderGlobal {
|
||||
null,
|
||||
0
|
||||
//#if MC>=11400
|
||||
//$$ , null
|
||||
, null
|
||||
//#endif
|
||||
);
|
||||
//#else
|
||||
//$$ ChunkCompileTaskGenerator element = new ChunkCompileTaskGenerator(null, null);
|
||||
//#endif
|
||||
element.finish();
|
||||
element.cancel();
|
||||
for (int i = 0; i < workerThreads; i++) {
|
||||
queueChunkUpdates.add(element);
|
||||
}
|
||||
|
||||
// Temporary workaround for dead lock, will be replaced by a new (ShaderMod compatible) mechanism later
|
||||
//noinspection StatementWithEmptyBody
|
||||
while (renderDispatcher.runChunkUploads(0)) {}
|
||||
while (renderDispatcher.method_3631(0)) {}
|
||||
|
||||
workerJailingQueue.jail(workerThreads);
|
||||
renderDispatcherAcc.setQueueChunkUpdates(queueChunkUpdates);
|
||||
@@ -111,7 +111,7 @@ public class ChunkLoadingRenderGlobal {
|
||||
}
|
||||
|
||||
public void updateChunks() {
|
||||
while (renderDispatcher.runChunkUploads(0)) {
|
||||
while (renderDispatcher.method_3631(0)) {
|
||||
((WorldRendererAccessor) hooked).setDisplayListEntitiesDirty(true);
|
||||
}
|
||||
|
||||
@@ -123,18 +123,18 @@ public class ChunkLoadingRenderGlobal {
|
||||
queueChunkUpdates = ((ChunkRenderDispatcherAccessor) renderDispatcher).getQueueChunkUpdates();
|
||||
while (!queueChunkUpdates.isEmpty()) {
|
||||
try {
|
||||
renderWorker.processTask(queueChunkUpdates.poll());
|
||||
renderWorker.runTask(queueChunkUpdates.poll());
|
||||
} catch (InterruptedException ignored) { }
|
||||
}
|
||||
|
||||
Iterator<RenderChunk> iterator = ((WorldRendererAccessor) hooked).getChunksToUpdate().iterator();
|
||||
Iterator<ChunkRenderer> iterator = ((WorldRendererAccessor) hooked).getChunksToUpdate().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
RenderChunk renderchunk = iterator.next();
|
||||
ChunkRenderer renderchunk = iterator.next();
|
||||
|
||||
renderDispatcher.updateChunkNow(renderchunk);
|
||||
renderDispatcher.method_3627(renderchunk);
|
||||
|
||||
//#if MC>=10904
|
||||
renderchunk.clearNeedsUpdate();
|
||||
renderchunk.method_3662();
|
||||
//#else
|
||||
//$$ renderchunk.setNeedsUpdate(false);
|
||||
//#endif
|
||||
@@ -165,19 +165,19 @@ public class ChunkLoadingRenderGlobal {
|
||||
* Custom ChunkRenderWorker class providing access to the protected processTask method
|
||||
*/
|
||||
private static class CustomChunkRenderWorker extends ChunkRenderWorker {
|
||||
public CustomChunkRenderWorker(ChunkRenderDispatcher p_i46202_1_, RegionRenderCacheBuilder p_i46202_2_) {
|
||||
public CustomChunkRenderWorker(ChunkBatcher p_i46202_1_, BlockLayeredBufferBuilder p_i46202_2_) {
|
||||
super(p_i46202_1_, p_i46202_2_);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processTask(
|
||||
protected void runTask(
|
||||
//#if MC>=11300
|
||||
ChunkRenderTask p_178474_1_
|
||||
//#else
|
||||
//$$ ChunkCompileTaskGenerator p_178474_1_
|
||||
//#endif
|
||||
) throws InterruptedException {
|
||||
super.processTask(p_178474_1_);
|
||||
super.runTask(p_178474_1_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ import com.replaymod.render.capturer.CaptureData;
|
||||
import com.replaymod.render.capturer.RenderInfo;
|
||||
import com.replaymod.render.capturer.WorldRenderer;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
|
||||
//#if MC<11400
|
||||
//#if MC>=11300
|
||||
import net.minecraftforge.fml.hooks.BasicEventHooks;
|
||||
//$$ import net.minecraftforge.fml.hooks.BasicEventHooks;
|
||||
//#else
|
||||
//$$ import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
//#endif
|
||||
@@ -19,7 +19,7 @@ import net.minecraftforge.fml.hooks.BasicEventHooks;
|
||||
import java.io.IOException;
|
||||
|
||||
public class EntityRendererHandler implements WorldRenderer {
|
||||
public final Minecraft mc = MCVer.getMinecraft();
|
||||
public final MinecraftClient mc = MCVer.getMinecraft();
|
||||
|
||||
@Getter
|
||||
protected final RenderSettings settings;
|
||||
@@ -35,7 +35,7 @@ public class EntityRendererHandler implements WorldRenderer {
|
||||
this.settings = settings;
|
||||
this.renderInfo = renderInfo;
|
||||
|
||||
((IEntityRenderer) mc.entityRenderer).replayModRender_setHandler(this);
|
||||
((IEntityRenderer) mc.gameRenderer).replayModRender_setHandler(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -47,17 +47,17 @@ public class EntityRendererHandler implements WorldRenderer {
|
||||
public void renderWorld(float partialTicks, long finishTimeNano) {
|
||||
//#if MC<11400
|
||||
//#if MC>=11300
|
||||
BasicEventHooks.onRenderTickStart(partialTicks);
|
||||
//$$ BasicEventHooks.onRenderTickStart(partialTicks);
|
||||
//#else
|
||||
//$$ FMLCommonHandler.instance().onRenderTickStart(partialTicks);
|
||||
//#endif
|
||||
//#endif
|
||||
|
||||
mc.entityRenderer.renderWorld(partialTicks, finishTimeNano);
|
||||
mc.gameRenderer.renderWorld(partialTicks, finishTimeNano);
|
||||
|
||||
//#if MC<11400
|
||||
//#if MC>=11300
|
||||
BasicEventHooks.onRenderTickEnd(partialTicks);
|
||||
//$$ BasicEventHooks.onRenderTickEnd(partialTicks);
|
||||
//#else
|
||||
//$$ FMLCommonHandler.instance().onRenderTickEnd(partialTicks);
|
||||
//#endif
|
||||
@@ -66,7 +66,7 @@ public class EntityRendererHandler implements WorldRenderer {
|
||||
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
((IEntityRenderer) mc.entityRenderer).replayModRender_setHandler(null);
|
||||
((IEntityRenderer) mc.gameRenderer).replayModRender_setHandler(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
//#if MC>=10800
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderWorker;
|
||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@@ -14,15 +14,15 @@ import java.util.concurrent.PriorityBlockingQueue;
|
||||
//$$ import java.util.concurrent.BlockingQueue;
|
||||
//#endif
|
||||
|
||||
@Mixin(ChunkRenderDispatcher.class)
|
||||
@Mixin(ChunkBatcher.class)
|
||||
public interface ChunkRenderDispatcherAccessor {
|
||||
@Accessor
|
||||
@Accessor("workers")
|
||||
List<ChunkRenderWorker> getListThreadedWorkers();
|
||||
|
||||
//#if MC>=10904
|
||||
@Accessor
|
||||
@Accessor("pendingChunks")
|
||||
PriorityBlockingQueue<ChunkRenderTask> getQueueChunkUpdates();
|
||||
@Accessor
|
||||
@Accessor("pendingChunks")
|
||||
void setQueueChunkUpdates(PriorityBlockingQueue<ChunkRenderTask> value);
|
||||
//#else
|
||||
//$$ @Accessor
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//#if MC>=11300
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.MainWindow;
|
||||
import net.minecraft.client.util.Window;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(MainWindow.class)
|
||||
@Mixin(Window.class)
|
||||
public interface MainWindowAccessor {
|
||||
@Accessor
|
||||
void setFramebufferWidth(int value);
|
||||
|
||||
@@ -14,20 +14,20 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
//$$ import net.minecraft.world.BlockView;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.world.BlockView;
|
||||
//#else
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
//$$ import net.minecraft.client.renderer.GameRenderer;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Mixin(value = Camera.class)
|
||||
@Mixin(value = Camera.class)
|
||||
//#else
|
||||
@Mixin(value = GameRenderer.class)
|
||||
//$$ @Mixin(value = GameRenderer.class)
|
||||
//#endif
|
||||
public abstract class MixinCamera {
|
||||
private EntityRendererHandler getHandler() {
|
||||
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
return ((EntityRendererHandler.IEntityRenderer) getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
}
|
||||
|
||||
private float orgYaw;
|
||||
@@ -37,16 +37,16 @@ public abstract class MixinCamera {
|
||||
private float orgRoll;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "update", at = @At("HEAD"))
|
||||
@Inject(method = "update", at = @At("HEAD"))
|
||||
//#else
|
||||
@Inject(method = "setupCameraTransform", at = @At("HEAD"))
|
||||
//$$ @Inject(method = "setupCameraTransform", at = @At("HEAD"))
|
||||
//#endif
|
||||
private void replayModRender_beforeSetupCameraTransform(
|
||||
//#if MC>=11400
|
||||
//$$ BlockView blockView,
|
||||
//$$ Entity entity,
|
||||
//$$ boolean thirdPerson,
|
||||
//$$ boolean inverseView,
|
||||
BlockView blockView,
|
||||
Entity entity,
|
||||
boolean thirdPerson,
|
||||
boolean inverseView,
|
||||
//#endif
|
||||
float partialTicks,
|
||||
//#if MC<11300
|
||||
@@ -56,30 +56,30 @@ public abstract class MixinCamera {
|
||||
) {
|
||||
if (getHandler() != null) {
|
||||
//#if MC<11400
|
||||
Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//$$ Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//#endif
|
||||
orgYaw = entity.rotationYaw;
|
||||
orgPitch = entity.rotationPitch;
|
||||
orgPrevYaw = entity.prevRotationYaw;
|
||||
orgPrevPitch = entity.prevRotationPitch;
|
||||
orgYaw = entity.yaw;
|
||||
orgPitch = entity.pitch;
|
||||
orgPrevYaw = entity.prevYaw;
|
||||
orgPrevPitch = entity.prevPitch;
|
||||
orgRoll = entity instanceof CameraEntity ? ((CameraEntity) entity).roll : 0;
|
||||
}
|
||||
//#if MC<11400
|
||||
}
|
||||
|
||||
@Inject(method = "orientCamera", at = @At("HEAD"))
|
||||
private void replayModRender_resetRotationIfNeeded(float partialTicks, CallbackInfo ci) {
|
||||
//$$ }
|
||||
//$$
|
||||
//$$ @Inject(method = "orientCamera", at = @At("HEAD"))
|
||||
//$$ private void replayModRender_resetRotationIfNeeded(float partialTicks, CallbackInfo ci) {
|
||||
//#endif
|
||||
if (getHandler() != null) {
|
||||
//#if MC<11400
|
||||
Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//$$ Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//#endif
|
||||
RenderSettings settings = getHandler().getSettings();
|
||||
if (settings.isStabilizeYaw()) {
|
||||
entity.prevRotationYaw = entity.rotationYaw = 0;
|
||||
entity.prevYaw = entity.yaw = 0;
|
||||
}
|
||||
if (settings.isStabilizePitch()) {
|
||||
entity.prevRotationPitch = entity.rotationPitch = 0;
|
||||
entity.prevPitch = entity.pitch = 0;
|
||||
}
|
||||
if (settings.isStabilizeRoll() && entity instanceof CameraEntity) {
|
||||
((CameraEntity) entity).roll = 0;
|
||||
@@ -88,16 +88,16 @@ public abstract class MixinCamera {
|
||||
}
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "update", at = @At("RETURN"))
|
||||
@Inject(method = "update", at = @At("RETURN"))
|
||||
//#else
|
||||
@Inject(method = "setupCameraTransform", at = @At("RETURN"))
|
||||
//$$ @Inject(method = "setupCameraTransform", at = @At("RETURN"))
|
||||
//#endif
|
||||
private void replayModRender_afterSetupCameraTransform(
|
||||
//#if MC>=11400
|
||||
//$$ BlockView blockView,
|
||||
//$$ Entity entity,
|
||||
//$$ boolean thirdPerson,
|
||||
//$$ boolean inverseView,
|
||||
BlockView blockView,
|
||||
Entity entity,
|
||||
boolean thirdPerson,
|
||||
boolean inverseView,
|
||||
//#endif
|
||||
float partialTicks,
|
||||
//#if MC<11300
|
||||
@@ -107,12 +107,12 @@ public abstract class MixinCamera {
|
||||
) {
|
||||
if (getHandler() != null) {
|
||||
//#if MC<11400
|
||||
Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//$$ Entity entity = getRenderViewEntity(getMinecraft());
|
||||
//#endif
|
||||
entity.rotationYaw = orgYaw;
|
||||
entity.rotationPitch = orgPitch;
|
||||
entity.prevRotationYaw = orgPrevYaw;
|
||||
entity.prevRotationPitch = orgPrevPitch;
|
||||
entity.yaw = orgYaw;
|
||||
entity.pitch = orgPitch;
|
||||
entity.prevYaw = orgPrevYaw;
|
||||
entity.prevPitch = orgPrevPitch;
|
||||
if (entity instanceof CameraEntity) {
|
||||
((CameraEntity) entity).roll = orgRoll;
|
||||
}
|
||||
@@ -120,16 +120,16 @@ public abstract class MixinCamera {
|
||||
}
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "update", at = @At("HEAD"))
|
||||
@Inject(method = "update", at = @At("HEAD"))
|
||||
//#else
|
||||
@Inject(method = "orientCamera", at = @At("HEAD"))
|
||||
//$$ @Inject(method = "orientCamera", at = @At("HEAD"))
|
||||
//#endif
|
||||
private void replayModRender_setupCubicFrameRotation(
|
||||
//#if MC>=11400
|
||||
//$$ BlockView blockView,
|
||||
//$$ Entity entity,
|
||||
//$$ boolean thirdPerson,
|
||||
//$$ boolean inverseView,
|
||||
BlockView blockView,
|
||||
Entity entity,
|
||||
boolean thirdPerson,
|
||||
boolean inverseView,
|
||||
//#endif
|
||||
float partialTicks,
|
||||
CallbackInfo ci
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableColor;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@@ -15,15 +15,15 @@ import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
//$$ import net.minecraft.util.hit.HitResult;
|
||||
import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.util.hit.HitResult;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.GameSettings;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.client.renderer.Matrix4f;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.options.GameOptions;
|
||||
import net.minecraft.client.render.GameRenderer;
|
||||
import net.minecraft.client.util.math.Matrix4f;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
//#else
|
||||
//$$ import com.replaymod.replay.camera.CameraEntity;
|
||||
//$$ import net.minecraft.client.renderer.EntityRenderer;
|
||||
@@ -34,13 +34,13 @@ import net.minecraft.client.renderer.WorldRenderer;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10904
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.world.RayTraceContext;
|
||||
//#else
|
||||
//$$ import net.minecraft.util.MovingObjectPosition;
|
||||
//#endif
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
//#else
|
||||
//$$ import net.minecraft.entity.EntityLivingBase;
|
||||
//$$ import com.replaymod.core.versions.MCVer.GlStateManager;
|
||||
@@ -55,7 +55,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
||||
//#endif
|
||||
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer {
|
||||
@Shadow
|
||||
public Minecraft mc;
|
||||
public MinecraftClient client;
|
||||
|
||||
private EntityRendererHandler replayModRender_handler;
|
||||
|
||||
@@ -94,7 +94,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
||||
private void replayModRender_renderSpectatorHand(
|
||||
//#if MC>=11400
|
||||
//$$ Camera camera,
|
||||
Camera camera,
|
||||
//#endif
|
||||
float partialTicks,
|
||||
//#if MC<11300
|
||||
@@ -129,16 +129,16 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
//#endif
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;drawHighlightedBlockOutline(Lnet/minecraft/client/render/Camera;Lnet/minecraft/util/hit/HitResult;I)V"))
|
||||
//$$ private void replayModRender_drawSelectionBox(WorldRenderer instance, Camera camera, HitResult hitResult, int something) {
|
||||
//$$ if (replayModRender_handler == null) {
|
||||
//$$ instance.drawHighlightedBlockOutline(camera, hitResult, something);
|
||||
//$$ }
|
||||
//$$ }
|
||||
@Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;drawHighlightedBlockOutline(Lnet/minecraft/client/render/Camera;Lnet/minecraft/util/hit/HitResult;I)V"))
|
||||
private void replayModRender_drawSelectionBox(WorldRenderer instance, Camera camera, HitResult hitResult, int something) {
|
||||
if (replayModRender_handler == null) {
|
||||
instance.drawHighlightedBlockOutline(camera, hitResult, something);
|
||||
}
|
||||
}
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;drawSelectionBox(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/math/RayTraceResult;IF)V"))
|
||||
private void replayModRender_drawSelectionBox(WorldRenderer instance, EntityPlayer player, RayTraceResult rtr, int alwaysZero, float partialTicks) {
|
||||
//$$ @Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;drawSelectionBox(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/math/RayTraceResult;IF)V"))
|
||||
//$$ private void replayModRender_drawSelectionBox(WorldRenderer instance, EntityPlayer player, RayTraceResult rtr, int alwaysZero, float partialTicks) {
|
||||
//#else
|
||||
//#if MC>=10904
|
||||
//$$ @Redirect(method = "renderWorldPass", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/RenderGlobal;drawSelectionBox(Lnet/minecraft/entity/player/EntityPlayer;Lnet/minecraft/util/math/RayTraceResult;IF)V"))
|
||||
@@ -152,19 +152,19 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
//$$ private void replayModRender_drawSelectionBox(RenderGlobal instance, EntityPlayer player, MovingObjectPosition rtr, int alwaysZero, float partialTicks) {
|
||||
//#endif
|
||||
//#endif
|
||||
if (replayModRender_handler == null) {
|
||||
instance.drawSelectionBox(player, rtr, alwaysZero, partialTicks);
|
||||
}
|
||||
}
|
||||
//$$ if (replayModRender_handler == null) {
|
||||
//$$ instance.drawSelectionBox(player, rtr, alwaysZero, partialTicks);
|
||||
//$$ }
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
private int orgRenderDistanceChunks;
|
||||
|
||||
//#if MC>=11300
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderCenter", at = @At(value = "JUMP", ordinal = 0))
|
||||
@Inject(method = "renderCenter", at = @At(value = "JUMP", ordinal = 0))
|
||||
//#else
|
||||
@Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "JUMP", ordinal = 0))
|
||||
//$$ @Inject(method = "updateCameraAndRender(FJ)V", at = @At(value = "JUMP", ordinal = 0))
|
||||
//#endif
|
||||
//#else
|
||||
//#if MC>=10800
|
||||
@@ -176,17 +176,17 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
//#endif
|
||||
private void replayModRender_beforeRenderSky(CallbackInfo ci) {
|
||||
if (replayModRender_handler != null && replayModRender_handler.getSettings().getChromaKeyingColor() != null) {
|
||||
GameSettings settings = MCVer.getMinecraft().gameSettings;
|
||||
orgRenderDistanceChunks = settings.renderDistanceChunks;
|
||||
settings.renderDistanceChunks = 5; // Set render distance to 5 so we're always rendering sky when chroma keying
|
||||
GameOptions settings = MCVer.getMinecraft().options;
|
||||
orgRenderDistanceChunks = settings.viewDistance;
|
||||
settings.viewDistance = 5; // Set render distance to 5 so we're always rendering sky when chroma keying
|
||||
}
|
||||
}
|
||||
|
||||
//#if MC>=11300
|
||||
//#if MC>=11400
|
||||
//$$ @Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;renderSky(F)V"))
|
||||
@Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;renderSky(F)V"))
|
||||
//#else
|
||||
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;renderSky(F)V"))
|
||||
//$$ @Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;renderSky(F)V"))
|
||||
//#endif
|
||||
private void replayModRender_renderSky(WorldRenderer instance, float partialTicks) {
|
||||
//#else
|
||||
@@ -199,12 +199,12 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
//#endif
|
||||
//#endif
|
||||
if (replayModRender_handler != null && replayModRender_handler.getSettings().getChromaKeyingColor() != null) {
|
||||
MCVer.getMinecraft().gameSettings.renderDistanceChunks = orgRenderDistanceChunks;
|
||||
MCVer.getMinecraft().options.viewDistance = orgRenderDistanceChunks;
|
||||
ReadableColor color = replayModRender_handler.getSettings().getChromaKeyingColor();
|
||||
GlStateManager.clearColor(color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, 1);
|
||||
GlStateManager.clear(GL11.GL_COLOR_BUFFER_BIT
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
} else {
|
||||
@@ -225,7 +225,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
*/
|
||||
|
||||
//#if MC>=10800
|
||||
@Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
|
||||
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
|
||||
//#else
|
||||
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
|
||||
//#endif
|
||||
@@ -246,7 +246,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
}
|
||||
|
||||
//#if MC>=10800
|
||||
@Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
|
||||
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
|
||||
//#else
|
||||
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
|
||||
//#endif
|
||||
@@ -271,21 +271,21 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
*/
|
||||
|
||||
//#if MC>=11300
|
||||
@Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||
@Redirect(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
|
||||
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
|
||||
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
|
||||
}
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
|
||||
@Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
|
||||
//#else
|
||||
@Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||
//$$ @Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||
//#endif
|
||||
private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
|
||||
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
|
||||
}
|
||||
|
||||
@Redirect(method = "renderCloudsCheck", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
|
||||
@Redirect(method = "renderAboveClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
|
||||
private Matrix4f replayModRender_perspective$2(double fovY, float aspect, float zNear, float zFar) {
|
||||
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
|
||||
}
|
||||
@@ -295,7 +295,7 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
|
||||
fovY = 90;
|
||||
aspect = 1;
|
||||
}
|
||||
return Matrix4f.perspective(fovY, aspect, zNear, zFar);
|
||||
return Matrix4f.method_4929(fovY, aspect, zNear, zFar);
|
||||
}
|
||||
//#else
|
||||
//$$ @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
|
||||
|
||||
@@ -3,31 +3,31 @@ package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.renderer.FogRenderer;
|
||||
import net.minecraft.client.render.BackgroundRenderer;
|
||||
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>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.Camera;
|
||||
//#endif
|
||||
|
||||
@Mixin(FogRenderer.class)
|
||||
@Mixin(BackgroundRenderer.class)
|
||||
public abstract class MixinFogRenderer {
|
||||
@Inject(method = "setupFog", at = @At("HEAD"), cancellable = true)
|
||||
@Inject(method = "applyFog", at = @At("HEAD"), cancellable = true)
|
||||
private void replayModRender_onSetupFog(
|
||||
//#if MC>=11400
|
||||
//$$ Camera camera,
|
||||
//$$ int something,
|
||||
Camera camera,
|
||||
int something,
|
||||
//#else
|
||||
int fogDistanceFlag,
|
||||
float partialTicks,
|
||||
//$$ int fogDistanceFlag,
|
||||
//$$ float partialTicks,
|
||||
//#endif
|
||||
CallbackInfo ci
|
||||
) {
|
||||
EntityRendererHandler handler =
|
||||
((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
if (handler == null) return;
|
||||
if (handler.getSettings().getChromaKeyingColor() != null) {
|
||||
ci.cancel();
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.client.renderer.culling.Frustum;
|
||||
import net.minecraft.client.render.Frustum;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.culling.Frustrum;
|
||||
//#endif
|
||||
@@ -19,9 +19,9 @@ import net.minecraft.client.renderer.culling.Frustum;
|
||||
//$$ @Mixin(Frustrum.class)
|
||||
//#endif
|
||||
public abstract class MixinFrustum {
|
||||
@Inject(method = "isBoxInFrustum", at = @At("HEAD"), cancellable = true)
|
||||
public void isBoxInFrustum(double minX, double minY, double minZ, double maxX, double maxY, double maxZ, CallbackInfoReturnable<Boolean> ci) {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
@Inject(method = "intersects", at = @At("HEAD"), cancellable = true)
|
||||
public void intersects(double minX, double minY, double minZ, double maxX, double maxY, double maxZ, CallbackInfoReturnable<Boolean> ci) {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
if (handler != null && handler.omnidirectional && handler.data == null) {
|
||||
// Normally the camera is always facing the direction of the omnidirectional image face that is currently
|
||||
// getting rendered. With ODS however, the camera is always facing forwards and the turning happens in the
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.render.hooks.FogStateCallback;
|
||||
import com.replaymod.render.hooks.Texture2DStateCallback;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@@ -24,13 +24,13 @@ public abstract class MixinGlStateManager {
|
||||
FogStateCallback.EVENT.invoker().fogStateChanged(false);
|
||||
}
|
||||
|
||||
@Inject(method = "enableTexture2D", at = @At("HEAD"))
|
||||
private static void enableTexture2D(CallbackInfo ci) {
|
||||
@Inject(method = "enableTexture", at = @At("HEAD"))
|
||||
private static void enableTexture(CallbackInfo ci) {
|
||||
Texture2DStateCallback.EVENT.invoker().texture2DStateChanged(MixinGlStateManager.activeTexture, true);
|
||||
}
|
||||
|
||||
@Inject(method = "disableTexture2D", at = @At("HEAD"))
|
||||
private static void disableTexture2D(CallbackInfo ci) {
|
||||
@Inject(method = "disableTexture", at = @At("HEAD"))
|
||||
private static void disableTexture(CallbackInfo ci) {
|
||||
Texture2DStateCallback.EVENT.invoker().texture2DStateChanged(MixinGlStateManager.activeTexture, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,27 +8,27 @@ import com.replaymod.render.blend.mixin.ParticleAccessor;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.particle.Particle;
|
||||
import net.minecraft.client.particle.ParticleManager;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.render.BufferBuilder;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.Camera;
|
||||
//#else
|
||||
import net.minecraft.entity.Entity;
|
||||
//$$ import net.minecraft.entity.Entity;
|
||||
//#endif
|
||||
|
||||
@Mixin(ParticleManager.class)
|
||||
public abstract class MixinParticleManager {
|
||||
//#if MC>=11200
|
||||
//#if MC>=11400
|
||||
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/BufferBuilder;Lnet/minecraft/client/render/Camera;FFFFFF)V"))
|
||||
//$$ private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Camera view, float partialTicks,
|
||||
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;buildGeometry(Lnet/minecraft/client/render/BufferBuilder;Lnet/minecraft/client/render/Camera;FFFFFF)V"))
|
||||
private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Camera view, float partialTicks,
|
||||
//#else
|
||||
@Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
//$$ private void renderNormalParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
//#endif
|
||||
//#else
|
||||
//$$ @Redirect(method = "renderParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
@@ -41,33 +41,33 @@ public abstract class MixinParticleManager {
|
||||
// Seems to be gone by 1.14
|
||||
//#if MC<11400
|
||||
//#if MC>=11200
|
||||
@Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
private void renderLitParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
//$$ @Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/BufferBuilder;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
//$$ private void renderLitParticle(Particle particle, BufferBuilder vertexBuffer, Entity view, float partialTicks,
|
||||
//#else
|
||||
//$$ @Redirect(method = "renderLitParticles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/Particle;renderParticle(Lnet/minecraft/client/renderer/VertexBuffer;Lnet/minecraft/entity/Entity;FFFFFF)V"))
|
||||
//$$ private void renderLitParticle(Particle particle, VertexBuffer vertexBuffer, Entity view, float partialTicks,
|
||||
//#endif
|
||||
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
}
|
||||
//$$ float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
//$$ renderParticle(particle, vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
private void renderParticle(Particle particle,
|
||||
BufferBuilder vertexBuffer,
|
||||
//#if MC>=11400
|
||||
//$$ Camera view,
|
||||
Camera view,
|
||||
//#else
|
||||
Entity view,
|
||||
//$$ Entity view,
|
||||
//#endif
|
||||
float partialTicks,
|
||||
float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY) {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
if (handler != null && handler.omnidirectional) {
|
||||
// Align all particles towards the camera
|
||||
//#if MC>=11400
|
||||
//$$ Vec3d pos = view.getPos();
|
||||
Vec3d pos = view.getPos();
|
||||
//#else
|
||||
Vec3d pos = new Vec3d(view.posX, view.posY, view.posZ);
|
||||
//$$ Vec3d pos = new Vec3d(view.posX, view.posY, view.posZ);
|
||||
//#endif
|
||||
Vec3d d = MCVer.getPosition(particle, partialTicks).subtract(pos);
|
||||
double pitch = -Math.atan2(d.y, Math.sqrt(d.x * d.x + d.z * d.z));
|
||||
@@ -84,7 +84,7 @@ public abstract class MixinParticleManager {
|
||||
if (blendState != null) {
|
||||
blendState.get(ParticlesExporter.class).onRender(particle, partialTicks);
|
||||
}
|
||||
particle.renderParticle(vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
particle.buildGeometry(vertexBuffer, view, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
|
||||
@@ -2,22 +2,22 @@ package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.render.entity.EntityRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(Render.class)
|
||||
@Mixin(EntityRenderer.class)
|
||||
public abstract class MixinRender {
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "renderLabel(Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V", at = @At("HEAD"), cancellable = true)
|
||||
@Inject(method = "renderLabel(Lnet/minecraft/entity/Entity;Ljava/lang/String;DDDI)V", at = @At("HEAD"), cancellable = true)
|
||||
//#else
|
||||
@Inject(method = "renderLivingLabel", at = @At("HEAD"), cancellable = true)
|
||||
//$$ @Inject(method = "renderLivingLabel", at = @At("HEAD"), cancellable = true)
|
||||
//#endif
|
||||
private void replayModRender_areAllNamesHidden(Entity entityIn, String str, double x, double y, double z, int maxDistance, CallbackInfo ci) {
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
if (handler != null && !handler.getSettings().isRenderNameTags()) {
|
||||
ci.cancel();
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.culling.ICamera;
|
||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
||||
import net.minecraft.client.render.VisibleRegion;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@@ -12,11 +12,11 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ import net.minecraft.client.render.Camera;
|
||||
import net.minecraft.client.render.Camera;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.renderer.RenderGlobal;
|
||||
//#endif
|
||||
@@ -37,41 +37,41 @@ public abstract class MixinRenderGlobal {
|
||||
private boolean replayModRender_passThroughSetupTerrain;
|
||||
|
||||
@Shadow
|
||||
public boolean displayListEntitiesDirty;
|
||||
public boolean terrainUpdateNecessary;
|
||||
|
||||
@Shadow
|
||||
public ChunkRenderDispatcher renderDispatcher;
|
||||
public ChunkBatcher chunkBatcher;
|
||||
|
||||
@Shadow
|
||||
public abstract void setupTerrain(
|
||||
public abstract void setUpTerrain(
|
||||
//#if MC>=11400
|
||||
//$$ Camera viewEntity,
|
||||
Camera viewEntity,
|
||||
//#else
|
||||
Entity viewEntity,
|
||||
//$$ Entity viewEntity,
|
||||
//#if MC>=11300
|
||||
float partialTicks,
|
||||
//$$ float partialTicks,
|
||||
//#else
|
||||
//$$ double partialTicks,
|
||||
//#endif
|
||||
//#endif
|
||||
ICamera camera,
|
||||
VisibleRegion camera,
|
||||
int frameCount,
|
||||
boolean playerSpectator
|
||||
);
|
||||
|
||||
@Inject(method = "setupTerrain", at = @At("HEAD"), cancellable = true)
|
||||
@Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
|
||||
private void replayModRender_setupTerrain(
|
||||
//#if MC>=11400
|
||||
//$$ Camera viewEntity,
|
||||
Camera viewEntity,
|
||||
//#else
|
||||
Entity viewEntity,
|
||||
//$$ Entity viewEntity,
|
||||
//#if MC>=11300
|
||||
float partialTicks,
|
||||
//$$ float partialTicks,
|
||||
//#else
|
||||
//$$ double partialTicks,
|
||||
//#endif
|
||||
//#endif
|
||||
ICamera camera,
|
||||
VisibleRegion camera,
|
||||
int frameCount,
|
||||
boolean playerSpectator,
|
||||
CallbackInfo ci
|
||||
@@ -80,19 +80,19 @@ public abstract class MixinRenderGlobal {
|
||||
replayModRender_passThroughSetupTerrain = true;
|
||||
|
||||
do {
|
||||
setupTerrain(
|
||||
setUpTerrain(
|
||||
viewEntity,
|
||||
//#if MC<11400
|
||||
partialTicks,
|
||||
//$$ partialTicks,
|
||||
//#endif
|
||||
camera,
|
||||
replayModRender_hook.nextFrameId(),
|
||||
playerSpectator
|
||||
);
|
||||
replayModRender_hook.updateChunks();
|
||||
} while (this.displayListEntitiesDirty);
|
||||
} while (this.terrainUpdateNecessary);
|
||||
|
||||
this.displayListEntitiesDirty = true;
|
||||
this.terrainUpdateNecessary = true;
|
||||
|
||||
replayModRender_passThroughSetupTerrain = false;
|
||||
ci.cancel();
|
||||
@@ -118,7 +118,7 @@ public abstract class MixinRenderGlobal {
|
||||
|
||||
// Prior to 1.9.4, MC always uses the same ChunkRenderDispatcher instance
|
||||
//#if MC>=10904
|
||||
@Inject(method = "setWorldAndLoadRenderers", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher;stopWorkerThreads()V"))
|
||||
@Inject(method = "setWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/chunk/ChunkBatcher;method_3619()V"))
|
||||
private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) {
|
||||
if (replayModRender_hook != null) {
|
||||
replayModRender_hook.updateRenderDispatcher(null);
|
||||
@@ -126,10 +126,10 @@ public abstract class MixinRenderGlobal {
|
||||
}
|
||||
//#endif
|
||||
|
||||
@Inject(method = "loadRenderers", at = @At(value = "RETURN"))
|
||||
@Inject(method = "reload", at = @At(value = "RETURN"))
|
||||
private void setupChunkLoadingRenderGlobal(CallbackInfo ci) {
|
||||
if (replayModRender_hook != null) {
|
||||
replayModRender_hook.updateRenderDispatcher(this.renderDispatcher);
|
||||
replayModRender_hook.updateRenderDispatcher(this.chunkBatcher);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.replaymod.render.mixin;
|
||||
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@@ -15,19 +15,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
//#endif
|
||||
|
||||
@Mixin(RenderManager.class)
|
||||
@Mixin(EntityRenderDispatcher.class)
|
||||
public abstract class MixinRenderManager {
|
||||
@Shadow
|
||||
private float playerViewX;
|
||||
private float cameraPitch;
|
||||
|
||||
@Shadow
|
||||
private float playerViewY;
|
||||
private float cameraYaw;
|
||||
|
||||
//#if MC>=11400
|
||||
//$$ @Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At("HEAD"))
|
||||
@Inject(method = "render(Lnet/minecraft/entity/Entity;DDDFFZ)V", at = @At("HEAD"))
|
||||
//#else
|
||||
//#if MC>=11300
|
||||
@Inject(method = "renderEntity", at = @At("HEAD"))
|
||||
//$$ @Inject(method = "renderEntity", at = @At("HEAD"))
|
||||
//#else
|
||||
//$$ @Inject(method = "doRenderEntity", at = @At("HEAD"))
|
||||
//#endif
|
||||
@@ -37,12 +37,12 @@ public abstract class MixinRenderManager {
|
||||
//#else
|
||||
//$$ private void replayModRender_reorientForCubicRendering(Entity entity, double dx, double dy, double dz, float iDoNotKnow, float partialTicks, boolean iDoNotCare, CallbackInfoReturnable<Boolean> ci) {
|
||||
//#endif
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().entityRenderer).replayModRender_getHandler();
|
||||
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MCVer.getMinecraft().gameRenderer).replayModRender_getHandler();
|
||||
if (handler != null && handler.omnidirectional) {
|
||||
double pitch = -Math.atan2(dy, Math.sqrt(dx * dx + dz * dz));
|
||||
double yaw = -Math.atan2(dx, dz);
|
||||
this.playerViewX = (float) Math.toDegrees(pitch);
|
||||
this.playerViewY = (float) Math.toDegrees(yaw);
|
||||
this.cameraPitch = (float) Math.toDegrees(pitch);
|
||||
this.cameraYaw = (float) Math.toDegrees(yaw);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
package com.replaymod.render.mixin;
|
||||
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.render.WorldRenderer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
//#if MC>=10800
|
||||
import net.minecraft.client.renderer.chunk.ChunkRenderDispatcher;
|
||||
import net.minecraft.client.renderer.chunk.RenderChunk;
|
||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||
//#endif
|
||||
|
||||
@Mixin(WorldRenderer.class)
|
||||
public interface WorldRendererAccessor {
|
||||
@Accessor
|
||||
@Accessor("field_4076")
|
||||
void setRenderEntitiesStartupCounter(int value);
|
||||
|
||||
//#if MC>=10800
|
||||
@Accessor
|
||||
ChunkRenderDispatcher getRenderDispatcher();
|
||||
@Accessor("chunkBatcher")
|
||||
ChunkBatcher getRenderDispatcher();
|
||||
|
||||
@Accessor
|
||||
@Accessor("terrainUpdateNecessary")
|
||||
void setDisplayListEntitiesDirty(boolean value);
|
||||
|
||||
@Accessor
|
||||
Set<RenderChunk> getChunksToUpdate();
|
||||
@Accessor("chunkRenderers")
|
||||
Set<ChunkRenderer> getChunksToUpdate();
|
||||
//#endif
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.replaymod.render.rendering;
|
||||
import com.replaymod.core.mixin.MinecraftAccessor;
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.util.crash.CrashReport;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
|
||||
//#if MC>=11300
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
@@ -55,10 +55,10 @@ public class Pipeline<R extends Frame, P extends Frame> implements Runnable {
|
||||
}
|
||||
}, new ThreadPoolExecutor.DiscardPolicy());
|
||||
|
||||
Minecraft mc = MCVer.getMinecraft();
|
||||
MinecraftClient mc = MCVer.getMinecraft();
|
||||
while (!capturer.isDone() && !Thread.currentThread().isInterrupted()) {
|
||||
//#if MC>=11300
|
||||
if (GLFW.glfwWindowShouldClose(mc.mainWindow.getHandle()) || ((MinecraftAccessor) mc).hasCrashed()) {
|
||||
if (GLFW.glfwWindowShouldClose(mc.window.getHandle()) || ((MinecraftAccessor) mc).hasCrashed()) {
|
||||
//#else
|
||||
//$$ if (Display.isCloseRequested() || ((MinecraftAccessor) mc).hasCrashed()) {
|
||||
//#endif
|
||||
@@ -83,8 +83,8 @@ public class Pipeline<R extends Frame, P extends Frame> implements Runnable {
|
||||
processor.close();
|
||||
consumer.close();
|
||||
} catch (Throwable t) {
|
||||
CrashReport crashReport = CrashReport.makeCrashReport(t, "Cleaning up rendering pipeline");
|
||||
throw new ReportedException(crashReport);
|
||||
CrashReport crashReport = CrashReport.create(t, "Cleaning up rendering pipeline");
|
||||
throw new CrashException(crashReport);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,8 +115,8 @@ public class Pipeline<R extends Frame, P extends Frame> implements Runnable {
|
||||
consumerLock.notifyAll();
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
CrashReport crashReport = CrashReport.makeCrashReport(t, "Processing frame");
|
||||
MCVer.getMinecraft().crashed(crashReport);
|
||||
CrashReport crashReport = CrashReport.create(t, "Processing frame");
|
||||
MCVer.getMinecraft().setCrashReport(crashReport);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,12 +25,12 @@ import com.replaymod.replaystudio.pathing.path.Path;
|
||||
import com.replaymod.replaystudio.pathing.path.Timeline;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.shader.Framebuffer;
|
||||
import net.minecraft.crash.ReportedException;
|
||||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.Timer;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import com.mojang.blaze3d.platform.GLX;
|
||||
import net.minecraft.client.gl.GlFramebuffer;
|
||||
import net.minecraft.util.crash.CrashException;
|
||||
import net.minecraft.sound.SoundCategory;
|
||||
import net.minecraft.client.render.RenderTickCounter;
|
||||
|
||||
//#if MC>=11300
|
||||
import com.replaymod.render.mixin.MainWindowAccessor;
|
||||
@@ -44,7 +44,7 @@ import org.lwjgl.glfw.GLFW;
|
||||
|
||||
//#if MC>=10800
|
||||
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
|
||||
import static net.minecraft.client.renderer.GlStateManager.*;
|
||||
import static com.mojang.blaze3d.platform.GlStateManager.*;
|
||||
//#else
|
||||
//$$ import static com.replaymod.core.versions.MCVer.GlStateManager.*;
|
||||
//#endif
|
||||
@@ -64,7 +64,7 @@ import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
||||
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
public class VideoRenderer implements RenderInfo {
|
||||
private final Minecraft mc = MCVer.getMinecraft();
|
||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||
private final RenderSettings settings;
|
||||
private final ReplayHandler replayHandler;
|
||||
private final Timeline timeline;
|
||||
@@ -90,7 +90,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
private boolean cancelled;
|
||||
private volatile Throwable failureCause;
|
||||
|
||||
private Framebuffer guiFramebuffer;
|
||||
private GlFramebuffer guiFramebuffer;
|
||||
private int displayWidth, displayHeight;
|
||||
|
||||
public VideoRenderer(RenderSettings settings, ReplayHandler replayHandler, Timeline timeline) throws IOException {
|
||||
@@ -127,7 +127,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
// Because this might take some time to prepare we'll render the GUI at least once to not confuse the user
|
||||
drawGui();
|
||||
|
||||
Timer timer = ((MinecraftAccessor) mc).getTimer();
|
||||
RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer();
|
||||
|
||||
// Play up to one second before starting to render
|
||||
// This is necessary in order to ensure that all entities have at least two position packets
|
||||
@@ -142,14 +142,14 @@ public class VideoRenderer implements RenderInfo {
|
||||
if (videoStart > 1000) {
|
||||
int replayTime = videoStart - 1000;
|
||||
//#if MC>=11200
|
||||
timer.renderPartialTicks = 0;
|
||||
timer.tickDelta = 0;
|
||||
((TimerAccessor) timer).setTickLength(WrappedTimer.DEFAULT_MS_PER_TICK);
|
||||
//#else
|
||||
//$$ timer.elapsedPartialTicks = timer.renderPartialTicks = 0;
|
||||
//$$ timer.timerSpeed = 1;
|
||||
//#endif
|
||||
while (replayTime < videoStart) {
|
||||
timer.elapsedTicks = 1;
|
||||
timer.ticksThisFrame = 1;
|
||||
replayTime += 50;
|
||||
replayHandler.getReplaySender().sendPacketsTill(replayTime);
|
||||
tick();
|
||||
@@ -157,12 +157,12 @@ public class VideoRenderer implements RenderInfo {
|
||||
}
|
||||
}
|
||||
|
||||
((WorldRendererAccessor) mc.renderGlobal).setRenderEntitiesStartupCounter(0);
|
||||
((WorldRendererAccessor) mc.worldRenderer).setRenderEntitiesStartupCounter(0);
|
||||
|
||||
renderingPipeline.run();
|
||||
|
||||
if (((MinecraftAccessor) mc).hasCrashed()) {
|
||||
throw new ReportedException(((MinecraftAccessor) mc).getCrashReporter());
|
||||
throw new CrashException(((MinecraftAccessor) mc).getCrashReporter());
|
||||
}
|
||||
|
||||
if (settings.isInjectSphericalMetadata()) {
|
||||
@@ -186,10 +186,10 @@ public class VideoRenderer implements RenderInfo {
|
||||
public float updateForNextFrame() {
|
||||
// because the jGui lib uses Minecraft's displayWidth and displayHeight values, update these temporarily
|
||||
//#if MC>=11300
|
||||
int displayWidthBefore = mc.mainWindow.getFramebufferWidth();
|
||||
int displayHeightBefore = mc.mainWindow.getFramebufferHeight();
|
||||
int displayWidthBefore = mc.window.getFramebufferWidth();
|
||||
int displayHeightBefore = mc.window.getFramebufferHeight();
|
||||
//noinspection ConstantConditions
|
||||
MainWindowAccessor acc = (MainWindowAccessor) (Object) mc.mainWindow;
|
||||
MainWindowAccessor acc = (MainWindowAccessor) (Object) mc.window;
|
||||
acc.setFramebufferWidth(displayWidth);
|
||||
acc.setFramebufferHeight(displayHeight);
|
||||
//#else
|
||||
@@ -204,14 +204,14 @@ public class VideoRenderer implements RenderInfo {
|
||||
}
|
||||
|
||||
// Updating the timer will cause the timeline player to update the game state
|
||||
Timer timer = ((MinecraftAccessor) mc).getTimer();
|
||||
timer.updateTimer(
|
||||
RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer();
|
||||
timer.beginRenderTick(
|
||||
//#if MC>=11300
|
||||
MCVer.milliTime()
|
||||
//#endif
|
||||
);
|
||||
|
||||
int elapsedTicks = timer.elapsedTicks;
|
||||
int elapsedTicks = timer.ticksThisFrame;
|
||||
while (elapsedTicks-- > 0) {
|
||||
tick();
|
||||
}
|
||||
@@ -226,7 +226,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
//#endif
|
||||
|
||||
framesDone++;
|
||||
return timer.renderPartialTicks;
|
||||
return timer.tickDelta;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -238,22 +238,22 @@ public class VideoRenderer implements RenderInfo {
|
||||
timelinePlayer = new TimelinePlayer(replayHandler);
|
||||
timelinePlayerFuture = timelinePlayer.start(timeline);
|
||||
|
||||
if (!OpenGlHelper.isFramebufferEnabled()) {
|
||||
if (!GLX.isUsingFBOs()) {
|
||||
//#if MC>=11300
|
||||
GLFW.glfwSetWindowAttrib(mc.mainWindow.getHandle(), GLFW.GLFW_RESIZABLE, 1);
|
||||
GLFW.glfwSetWindowAttrib(mc.window.getHandle(), GLFW.GLFW_RESIZABLE, 1);
|
||||
//#else
|
||||
//$$ Display.setResizable(false);
|
||||
//#endif
|
||||
}
|
||||
if (mc.gameSettings.showDebugInfo) {
|
||||
if (mc.options.debugEnabled) {
|
||||
debugInfoWasShown = true;
|
||||
mc.gameSettings.showDebugInfo = false;
|
||||
mc.options.debugEnabled = false;
|
||||
}
|
||||
//#if MC>=11300
|
||||
if (mc.mouseHelper.isMouseGrabbed()) {
|
||||
if (mc.mouse.isCursorLocked()) {
|
||||
mouseWasGrabbed = true;
|
||||
}
|
||||
mc.mouseHelper.ungrabMouse();
|
||||
mc.mouse.unlockCursor();
|
||||
//#else
|
||||
//$$ if (Mouse.isGrabbed()) {
|
||||
//$$ mouseWasGrabbed = true;
|
||||
@@ -265,8 +265,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
originalSoundLevels = new EnumMap<>(SoundCategory.class);
|
||||
for (SoundCategory category : SoundCategory.values()) {
|
||||
if (category != SoundCategory.MASTER) {
|
||||
originalSoundLevels.put(category, mc.gameSettings.getSoundLevel(category));
|
||||
mc.gameSettings.setSoundLevel(category, 0);
|
||||
originalSoundLevels.put(category, mc.options.getSoundVolume(category));
|
||||
mc.options.setSoundVolume(category, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,13 +295,13 @@ public class VideoRenderer implements RenderInfo {
|
||||
//#endif
|
||||
|
||||
//#if MC>=10800
|
||||
chunkLoadingRenderGlobal = new ChunkLoadingRenderGlobal(mc.renderGlobal);
|
||||
chunkLoadingRenderGlobal = new ChunkLoadingRenderGlobal(mc.worldRenderer);
|
||||
//#endif
|
||||
|
||||
// Set up our own framebuffer to render the GUI to
|
||||
guiFramebuffer = new Framebuffer(displayWidth, displayHeight, true
|
||||
guiFramebuffer = new GlFramebuffer(displayWidth, displayHeight, true
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
}
|
||||
@@ -313,25 +313,25 @@ public class VideoRenderer implements RenderInfo {
|
||||
// Tear down of the timeline player might only happen the next tick after it was cancelled
|
||||
timelinePlayer.onTick();
|
||||
|
||||
if (!OpenGlHelper.isFramebufferEnabled()) {
|
||||
if (!GLX.isUsingFBOs()) {
|
||||
//#if MC>=11300
|
||||
GLFW.glfwSetWindowAttrib(mc.mainWindow.getHandle(), GLFW.GLFW_RESIZABLE, 0);
|
||||
GLFW.glfwSetWindowAttrib(mc.window.getHandle(), GLFW.GLFW_RESIZABLE, 0);
|
||||
//#else
|
||||
//$$ Display.setResizable(true);
|
||||
//#endif
|
||||
}
|
||||
mc.gameSettings.showDebugInfo = debugInfoWasShown;
|
||||
mc.options.debugEnabled = debugInfoWasShown;
|
||||
if (mouseWasGrabbed) {
|
||||
//#if MC>=11300
|
||||
mc.mouseHelper.grabMouse();
|
||||
mc.mouse.lockCursor();
|
||||
//#else
|
||||
//$$ mc.mouseHelper.grabMouseCursor();
|
||||
//#endif
|
||||
}
|
||||
for (Map.Entry<SoundCategory, Float> entry : originalSoundLevels.entrySet()) {
|
||||
mc.gameSettings.setSoundLevel(entry.getKey(), entry.getValue());
|
||||
mc.options.setSoundVolume(entry.getKey(), entry.getValue());
|
||||
}
|
||||
mc.displayGuiScreen(null);
|
||||
mc.openScreen(null);
|
||||
//#if MC>=10800
|
||||
if (chunkLoadingRenderGlobal != null) {
|
||||
chunkLoadingRenderGlobal.uninstall();
|
||||
@@ -350,13 +350,13 @@ public class VideoRenderer implements RenderInfo {
|
||||
|
||||
// Finally, resize the Minecraft framebuffer to the actual width/height of the window
|
||||
//#if MC>=11300
|
||||
mc.getFramebuffer().createFramebuffer(displayWidth, displayHeight
|
||||
mc.getFramebuffer().initFbo(displayWidth, displayHeight
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
//noinspection ConstantConditions
|
||||
MainWindowAccessor acc = (MainWindowAccessor) (Object) mc.mainWindow;
|
||||
MainWindowAccessor acc = (MainWindowAccessor) (Object) mc.window;
|
||||
acc.setFramebufferWidth(displayWidth);
|
||||
acc.setFramebufferHeight(displayHeight);
|
||||
//#else
|
||||
@@ -366,15 +366,15 @@ public class VideoRenderer implements RenderInfo {
|
||||
|
||||
private void tick() {
|
||||
//#if MC>=11400
|
||||
//$$ ((MCVer.MinecraftMethodAccessor) mc).replayModExecuteTaskQueue();
|
||||
((MCVer.MinecraftMethodAccessor) mc).replayModExecuteTaskQueue();
|
||||
//#else
|
||||
Queue<FutureTask<?>> scheduledTasks = ((MinecraftAccessor) mc).getScheduledTasks();
|
||||
//noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||
synchronized (scheduledTasks) {
|
||||
while (!scheduledTasks.isEmpty()) {
|
||||
scheduledTasks.poll().run();
|
||||
}
|
||||
}
|
||||
//$$ Queue<FutureTask<?>> scheduledTasks = ((MinecraftAccessor) mc).getScheduledTasks();
|
||||
//$$ //noinspection SynchronizationOnLocalVariableOrMethodParameter
|
||||
//$$ synchronized (scheduledTasks) {
|
||||
//$$ while (!scheduledTasks.isEmpty()) {
|
||||
//$$ scheduledTasks.poll().run();
|
||||
//$$ }
|
||||
//$$ }
|
||||
//#endif
|
||||
|
||||
mc.currentScreen = gui.toMinecraft();
|
||||
@@ -385,7 +385,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
//$$ throw new RuntimeException(e);
|
||||
//$$ }
|
||||
//#else
|
||||
mc.runTick();
|
||||
mc.tick();
|
||||
//#endif
|
||||
}
|
||||
|
||||
@@ -395,9 +395,9 @@ public class VideoRenderer implements RenderInfo {
|
||||
if (!settings.isHighPerformance() && displaySizeChanged()) {
|
||||
updateDisplaySize();
|
||||
//#if MC>=11300
|
||||
guiFramebuffer.createBindFramebuffer(mc.mainWindow.getFramebufferWidth(), mc.mainWindow.getFramebufferHeight()
|
||||
guiFramebuffer.resize(mc.window.getFramebufferWidth(), mc.window.getFramebufferHeight()
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
//#else
|
||||
@@ -408,16 +408,16 @@ public class VideoRenderer implements RenderInfo {
|
||||
pushMatrix();
|
||||
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
|
||||
//#if MC>=11400
|
||||
//$$ , false
|
||||
, false
|
||||
//#endif
|
||||
);
|
||||
enableTexture2D();
|
||||
guiFramebuffer.bindFramebuffer(true);
|
||||
enableTexture();
|
||||
guiFramebuffer.beginWrite(true);
|
||||
|
||||
//#if MC>=11300
|
||||
mc.mainWindow.setupOverlayRendering(
|
||||
mc.window.method_4493(
|
||||
//#if MC>=11400
|
||||
//$$ false
|
||||
false
|
||||
//#endif
|
||||
);
|
||||
//#else
|
||||
@@ -425,7 +425,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
gui.toMinecraft().setWorldAndResolution(mc, mc.mainWindow.getScaledWidth(), mc.mainWindow.getScaledHeight());
|
||||
gui.toMinecraft().init(mc, mc.window.getScaledWidth(), mc.window.getScaledHeight());
|
||||
//#else
|
||||
//$$ ScaledResolution scaled = newScaledResolution(mc);
|
||||
//$$ gui.toMinecraft().setWorldAndResolution(mc, scaled.getScaledWidth(), scaled.getScaledHeight());
|
||||
@@ -447,8 +447,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
//#endif
|
||||
|
||||
//#if MC>=11300
|
||||
int mouseX = (int) mc.mouseHelper.getMouseX();
|
||||
int mouseY = (int) mc.mouseHelper.getMouseY();
|
||||
int mouseX = (int) mc.mouse.getX();
|
||||
int mouseY = (int) mc.mouse.getY();
|
||||
|
||||
gui.toMinecraft().tick();
|
||||
gui.toMinecraft().render(mouseX, mouseY, 0);
|
||||
@@ -460,14 +460,14 @@ public class VideoRenderer implements RenderInfo {
|
||||
//$$ gui.toMinecraft().drawScreen(mouseX, mouseY, 0);
|
||||
//#endif
|
||||
|
||||
guiFramebuffer.unbindFramebuffer();
|
||||
guiFramebuffer.endWrite();
|
||||
popMatrix();
|
||||
pushMatrix();
|
||||
guiFramebuffer.framebufferRender(displayWidth, displayHeight);
|
||||
guiFramebuffer.draw(displayWidth, displayHeight);
|
||||
popMatrix();
|
||||
|
||||
//#if MC>=11300
|
||||
mc.mainWindow.update(false);
|
||||
mc.window.setFullscreen(false);
|
||||
//#else
|
||||
//$$ // if not in high performance mode, update the gui size if screen size changed
|
||||
//$$ // otherwise just swap the progress gui to screen
|
||||
@@ -482,8 +482,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
//$$ }
|
||||
//#endif
|
||||
//#if MC>=11300
|
||||
if (mc.mouseHelper.isMouseGrabbed()) {
|
||||
mc.mouseHelper.ungrabMouse();
|
||||
if (mc.mouse.isCursorLocked()) {
|
||||
mc.mouse.unlockCursor();
|
||||
}
|
||||
//#else
|
||||
//$$ if (Mouse.isGrabbed()) {
|
||||
@@ -503,7 +503,7 @@ public class VideoRenderer implements RenderInfo {
|
||||
|
||||
private boolean displaySizeChanged() {
|
||||
//#if MC>=11300
|
||||
return displayWidth != mc.mainWindow.getWidth() || displayHeight != mc.mainWindow.getHeight();
|
||||
return displayWidth != mc.window.getWidth() || displayHeight != mc.window.getHeight();
|
||||
//#else
|
||||
//$$ return displayWidth != Display.getWidth() || displayHeight != Display.getHeight();
|
||||
//#endif
|
||||
@@ -511,8 +511,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
|
||||
private void updateDisplaySize() {
|
||||
//#if MC>=11300
|
||||
displayWidth = mc.mainWindow.getWidth();
|
||||
displayHeight = mc.mainWindow.getHeight();
|
||||
displayWidth = mc.window.getWidth();
|
||||
displayHeight = mc.window.getHeight();
|
||||
//#else
|
||||
//$$ displayWidth = Display.getWidth();
|
||||
//$$ displayHeight = Display.getHeight();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.replaymod.render.shader;
|
||||
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.lwjgl.opengl.ARBFragmentShader;
|
||||
import org.lwjgl.opengl.ARBShaderObjects;
|
||||
@@ -9,7 +9,7 @@ import org.lwjgl.opengl.ARBVertexShader;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
//#if MC>=11300
|
||||
import net.minecraft.resources.IResource;
|
||||
import net.minecraft.resource.Resource;
|
||||
//#else
|
||||
//$$ import net.minecraft.client.resources.IResource;
|
||||
//#endif
|
||||
@@ -21,7 +21,7 @@ import static org.lwjgl.opengl.ARBShaderObjects.*;
|
||||
public class Program {
|
||||
private final int program;
|
||||
|
||||
public Program(ResourceLocation vertexShader, ResourceLocation fragmentShader) throws Exception {
|
||||
public Program(Identifier vertexShader, Identifier fragmentShader) throws Exception {
|
||||
int vertShader = createShader(vertexShader, ARBVertexShader.GL_VERTEX_SHADER_ARB);
|
||||
int fragShader = createShader(fragmentShader, ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class Program {
|
||||
}
|
||||
}
|
||||
|
||||
private int createShader(ResourceLocation resourceLocation, int shaderType) throws Exception {
|
||||
private int createShader(Identifier resourceLocation, int shaderType) throws Exception {
|
||||
int shader = 0;
|
||||
try {
|
||||
shader = glCreateShaderObjectARB(shaderType);
|
||||
@@ -52,7 +52,7 @@ public class Program {
|
||||
if(shader == 0)
|
||||
throw new Exception("glCreateShaderObjectARB failed");
|
||||
|
||||
IResource resource = MCVer.getMinecraft().getResourceManager().getResource(resourceLocation);
|
||||
Resource resource = MCVer.getMinecraft().getResourceManager().getResource(resourceLocation);
|
||||
try (InputStream is = resource.getInputStream()) {
|
||||
glShaderSourceARB(shader, IOUtils.toString(is));
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.replaymod.render.utils;
|
||||
|
||||
import com.replaymod.core.versions.MCVer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
@@ -12,7 +12,7 @@ import java.io.InputStream;
|
||||
|
||||
public class SoundHandler {
|
||||
|
||||
private final ResourceLocation successSoundLocation = new ResourceLocation("replaymod", "render_success.wav");
|
||||
private final Identifier successSoundLocation = new Identifier("replaymod", "render_success.wav");
|
||||
|
||||
public void playRenderSuccessSound() {
|
||||
playSound(successSoundLocation);
|
||||
@@ -22,7 +22,7 @@ public class SoundHandler {
|
||||
* Plays a <b>.wav</b> Sound from a ResourceLocation. This method does <b>not</b> respect Game Settings like Audio Volume.
|
||||
* @param loc The Sound File's ResourceLocation
|
||||
*/
|
||||
public void playSound(ResourceLocation loc) {
|
||||
public void playSound(Identifier loc) {
|
||||
try {
|
||||
InputStream is = MCVer.getMinecraft().getResourceManager().getResource(loc).getInputStream();
|
||||
byte[] bytes = IOUtils.toByteArray(is);
|
||||
|
||||
Reference in New Issue
Block a user