Switch core to 1.14 (generated via ./gradlew :1.14:setCoreVersion)

This commit is contained in:
Jonas Herzig
2019-05-10 14:09:22 +02:00
parent 7f7d33def8
commit 7cbf7f7c94
183 changed files with 3250 additions and 3250 deletions

View File

@@ -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"
}

View File

@@ -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() {

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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());
}
}
}

View File

@@ -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

View File

@@ -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) {

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();

View File

@@ -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

View File

@@ -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",

View File

@@ -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
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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;

View File

@@ -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);
});
}
}

View File

@@ -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;
}

View File

@@ -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()
);
}

View File

@@ -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");

View File

@@ -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++) {

View File

@@ -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_);
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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))

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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
}

View File

@@ -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);
}
}
}

View File

@@ -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();

View File

@@ -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));
}

View File

@@ -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);