Update to 1.21.7
This commit is contained in:
@@ -90,6 +90,7 @@ dependencies {
|
|||||||
12102 -> "0.106.1+1.21.2"
|
12102 -> "0.106.1+1.21.2"
|
||||||
12104 -> "0.111.0+1.21.4"
|
12104 -> "0.111.0+1.21.4"
|
||||||
12105 -> "0.119.9+1.21.5"
|
12105 -> "0.119.9+1.21.5"
|
||||||
|
12107 -> "0.128.1+1.21.7"
|
||||||
else -> throw UnsupportedOperationException()
|
else -> throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
val fabricApiModules = mutableListOf(
|
val fabricApiModules = mutableListOf(
|
||||||
@@ -168,6 +169,7 @@ dependencies {
|
|||||||
|
|
||||||
if (platform.isFabric) {
|
if (platform.isFabric) {
|
||||||
val modMenuVersion = when {
|
val modMenuVersion = when {
|
||||||
|
mcVersion >= 12107 -> "15.0.0-beta.3"
|
||||||
mcVersion >= 12105 -> "14.0.0-rc.2"
|
mcVersion >= 12105 -> "14.0.0-rc.2"
|
||||||
mcVersion >= 12104 -> "13.0.0-beta.1"
|
mcVersion >= 12104 -> "13.0.0-beta.1"
|
||||||
mcVersion >= 12102 -> "12.0.0-beta.1"
|
mcVersion >= 12102 -> "12.0.0-beta.1"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
essential.defaults.loom=0
|
essential.defaults.loom=0
|
||||||
essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.16.12
|
essential.defaults.loom.fabric-loader=net.fabricmc:fabric-loader:0.16.14
|
||||||
|
|
||||||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||||
# This is required to provide enough memory for the Minecraft decompilation process.
|
# This is required to provide enough memory for the Minecraft decompilation process.
|
||||||
|
|||||||
2
jGui
2
jGui
Submodule jGui updated: be4bf44276...31106f5dae
Submodule libs/ReplayStudio updated: d23e0ec824...3fdc6c42e3
@@ -204,6 +204,7 @@ defaultTasks("bundleJar")
|
|||||||
preprocess {
|
preprocess {
|
||||||
strictExtraMappings.set(true)
|
strictExtraMappings.set(true)
|
||||||
|
|
||||||
|
val mc12107 = createNode("1.21.7", 12107, "yarn")
|
||||||
val mc12105 = createNode("1.21.5", 12105, "yarn")
|
val mc12105 = createNode("1.21.5", 12105, "yarn")
|
||||||
val mc12104 = createNode("1.21.4", 12104, "yarn")
|
val mc12104 = createNode("1.21.4", 12104, "yarn")
|
||||||
val mc12102 = createNode("1.21.2", 12102, "yarn")
|
val mc12102 = createNode("1.21.2", 12102, "yarn")
|
||||||
@@ -236,6 +237,7 @@ preprocess {
|
|||||||
val mc10800 = createNode("1.8", 10800, "srg")
|
val mc10800 = createNode("1.8", 10800, "srg")
|
||||||
val mc10710 = createNode("1.7.10", 10710, "srg")
|
val mc10710 = createNode("1.7.10", 10710, "srg")
|
||||||
|
|
||||||
|
mc12107.link(mc12105)
|
||||||
mc12105.link(mc12104, file("versions/mapping-fabric-1.21.5-1.21.4.txt"))
|
mc12105.link(mc12104, file("versions/mapping-fabric-1.21.5-1.21.4.txt"))
|
||||||
mc12104.link(mc12102)
|
mc12104.link(mc12102)
|
||||||
mc12102.link(mc12100)
|
mc12102.link(mc12100)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ val jGuiVersions = listOf(
|
|||||||
"1.21.2",
|
"1.21.2",
|
||||||
"1.21.4",
|
"1.21.4",
|
||||||
"1.21.5",
|
"1.21.5",
|
||||||
|
"1.21.7",
|
||||||
)
|
)
|
||||||
val replayModVersions = listOf(
|
val replayModVersions = listOf(
|
||||||
// "1.7.10",
|
// "1.7.10",
|
||||||
@@ -76,6 +77,7 @@ val replayModVersions = listOf(
|
|||||||
"1.21.2",
|
"1.21.2",
|
||||||
"1.21.4",
|
"1.21.4",
|
||||||
"1.21.5",
|
"1.21.5",
|
||||||
|
"1.21.7",
|
||||||
)
|
)
|
||||||
|
|
||||||
rootProject.buildFileName = "root.gradle.kts"
|
rootProject.buildFileName = "root.gradle.kts"
|
||||||
|
|||||||
@@ -21,7 +21,11 @@ public class ReplayModBackend implements ClientModInitializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getMinecraftVersion() {
|
public String getMinecraftVersion() {
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ return SharedConstants.getGameVersion().comp_4025();
|
||||||
|
//#else
|
||||||
return SharedConstants.getGameVersion().getName();
|
return SharedConstants.getGameVersion().getName();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isModLoaded(String id) {
|
public boolean isModLoaded(String id) {
|
||||||
|
|||||||
@@ -2,32 +2,16 @@
|
|||||||
package com.replaymod.core.mixin;
|
package com.replaymod.core.mixin;
|
||||||
|
|
||||||
import com.replaymod.core.events.PreRenderHandCallback;
|
import com.replaymod.core.events.PreRenderHandCallback;
|
||||||
import net.minecraft.client.render.Camera;
|
|
||||||
import net.minecraft.client.render.GameRenderer;
|
import net.minecraft.client.render.GameRenderer;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
//#if MC>=12005
|
|
||||||
//$$ import org.joml.Matrix4f;
|
|
||||||
//#else
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
@Mixin(GameRenderer.class)
|
@Mixin(GameRenderer.class)
|
||||||
public class Mixin_PreRenderHandCallback {
|
public class Mixin_PreRenderHandCallback {
|
||||||
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
|
||||||
private void preRenderHand(
|
private void preRenderHand(CallbackInfo ci) {
|
||||||
//#if MC>=11500 && MC<12005
|
|
||||||
MatrixStack matrixStack,
|
|
||||||
//#endif
|
|
||||||
Camera camera,
|
|
||||||
float partialTicks,
|
|
||||||
//#if MC>=12005
|
|
||||||
//$$ Matrix4f matrixStack,
|
|
||||||
//#endif
|
|
||||||
CallbackInfo ci) {
|
|
||||||
if (PreRenderHandCallback.EVENT.invoker().preRenderHand()) {
|
if (PreRenderHandCallback.EVENT.invoker().preRenderHand()) {
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,9 @@ import java.util.Optional;
|
|||||||
*/
|
*/
|
||||||
public class MCVer {
|
public class MCVer {
|
||||||
public static int getProtocolVersion() {
|
public static int getProtocolVersion() {
|
||||||
//#if MC>=11400
|
//#if MC>=12106
|
||||||
|
//$$ return SharedConstants.getProtocolVersion();
|
||||||
|
//#elseif MC>=11400
|
||||||
return SharedConstants.getGameVersion().getProtocolVersion();
|
return SharedConstants.getGameVersion().getProtocolVersion();
|
||||||
//#else
|
//#else
|
||||||
//$$ return RealmsSharedConstants.NETWORK_PROTOCOL_VERSION;
|
//$$ return RealmsSharedConstants.NETWORK_PROTOCOL_VERSION;
|
||||||
@@ -488,9 +490,11 @@ public class MCVer {
|
|||||||
buffer.next();
|
buffer.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC<12105
|
||||||
public static void bindTexture(Identifier id) {
|
public static void bindTexture(Identifier id) {
|
||||||
de.johni0702.minecraft.gui.versions.MCVer.bindTexture(id);
|
de.johni0702.minecraft.gui.versions.MCVer.bindTexture(id);
|
||||||
}
|
}
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC<10900
|
//#if MC<10900
|
||||||
//$$ public static class SoundEvent {}
|
//$$ public static class SoundEvent {}
|
||||||
|
|||||||
@@ -35,7 +35,11 @@ public class SpectatorProperty extends AbstractProperty<Integer> {
|
|||||||
ReplayHandler handler = ((ReplayHandler) replayHandler);
|
ReplayHandler handler = ((ReplayHandler) replayHandler);
|
||||||
CameraEntity cameraEntity = handler.getCameraEntity();
|
CameraEntity cameraEntity = handler.getCameraEntity();
|
||||||
if (cameraEntity == null) return;
|
if (cameraEntity == null) return;
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ World world = cameraEntity.getWorld();
|
||||||
|
//#else
|
||||||
World world = cameraEntity.getEntityWorld();
|
World world = cameraEntity.getEntityWorld();
|
||||||
|
//#endif
|
||||||
// Lookup entity by id, returns null if an entity with the id does not exists
|
// Lookup entity by id, returns null if an entity with the id does not exists
|
||||||
Entity target = world.getEntityById(value);
|
Entity target = world.getEntityById(value);
|
||||||
// Spectate entity, when called with null, returns to camera
|
// Spectate entity, when called with null, returns to camera
|
||||||
|
|||||||
@@ -24,8 +24,10 @@ import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
|||||||
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
|
//#if MC<12106
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
||||||
|
//#endif
|
||||||
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
||||||
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -121,9 +123,17 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
|||||||
ByteBuffer buffer = ByteBufferPool.allocate(getFrameWidth() * getFrameHeight() * 4);
|
ByteBuffer buffer = ByteBufferPool.allocate(getFrameWidth() * getFrameHeight() * 4);
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ GpuDevice device = RenderSystem.getDevice();
|
//$$ GpuDevice device = RenderSystem.getDevice();
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, getFrameWidth() * getFrameHeight() * 4)) {
|
||||||
|
//#else
|
||||||
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STATIC_READ, getFrameWidth() * getFrameHeight() * 4)) {
|
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STATIC_READ, getFrameWidth() * getFrameHeight() * 4)) {
|
||||||
|
//#endif
|
||||||
//$$ device.createCommandEncoder().copyTextureToBuffer(frameBuffer().getColorAttachment(), gpuBuffer, 0, () -> {}, 0);
|
//$$ device.createCommandEncoder().copyTextureToBuffer(frameBuffer().getColorAttachment(), gpuBuffer, 0, () -> {}, 0);
|
||||||
//$$ try (GpuBuffer.ReadView view = device.createCommandEncoder().readBuffer(gpuBuffer)) {
|
//#if MC>=12106
|
||||||
|
//$$ try (GpuBuffer.MappedView view = device.createCommandEncoder().mapBuffer(gpuBuffer, true, false)) {
|
||||||
|
//#else
|
||||||
|
//$$ try (GpuBuffer.ReadView view = device.createCommandEncoder().readBuffer(gpuBuffer)) {
|
||||||
|
//#endif
|
||||||
//$$ buffer.put(view.data());
|
//$$ buffer.put(view.data());
|
||||||
//$$ }
|
//$$ }
|
||||||
//$$ }
|
//$$ }
|
||||||
|
|||||||
@@ -14,8 +14,10 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
|
//#if MC<12106
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
||||||
|
//#endif
|
||||||
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
||||||
//$$ import com.mojang.blaze3d.systems.CommandEncoder;
|
//$$ import com.mojang.blaze3d.systems.CommandEncoder;
|
||||||
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
||||||
@@ -38,7 +40,10 @@ public abstract class PboOpenGlFrameCapturer<F extends Frame, D extends Enum<D>
|
|||||||
withDepth = renderInfo.getRenderSettings().isDepthMap();
|
withDepth = renderInfo.getRenderSettings().isDepthMap();
|
||||||
data = type.getEnumConstants();
|
data = type.getEnumConstants();
|
||||||
int bufferSize = framePixels * (4 /* bgra */ + (withDepth ? 4 /* float */ : 0)) * data.length;
|
int bufferSize = framePixels * (4 /* bgra */ + (withDepth ? 4 /* float */ : 0)) * data.length;
|
||||||
//#if MC>=12105
|
//#if MC>=12106
|
||||||
|
//$$ pbo = RenderSystem.getDevice().createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, bufferSize);
|
||||||
|
//$$ otherPBO = RenderSystem.getDevice().createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, bufferSize);
|
||||||
|
//#elseif MC>=12105
|
||||||
//$$ pbo = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
//$$ pbo = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
||||||
//$$ otherPBO = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
//$$ otherPBO = RenderSystem.getDevice().createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STREAM_READ, bufferSize);
|
||||||
//#else
|
//#else
|
||||||
@@ -97,7 +102,11 @@ public abstract class PboOpenGlFrameCapturer<F extends Frame, D extends Enum<D>
|
|||||||
if (framesDone > 1) {
|
if (framesDone > 1) {
|
||||||
// Read pbo to memory
|
// Read pbo to memory
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ try (GpuBuffer.MappedView view = RenderSystem.getDevice().createCommandEncoder().mapBuffer(pbo, true, false)) {
|
||||||
|
//#else
|
||||||
//$$ try (GpuBuffer.ReadView view = RenderSystem.getDevice().createCommandEncoder().readBuffer(pbo)) {
|
//$$ try (GpuBuffer.ReadView view = RenderSystem.getDevice().createCommandEncoder().readBuffer(pbo)) {
|
||||||
|
//#endif
|
||||||
//$$ channels = new HashMap<>();
|
//$$ channels = new HashMap<>();
|
||||||
//$$ channels.put(Channel.BRGA, readFromPbo(view.data(), 4, true));
|
//$$ channels.put(Channel.BRGA, readFromPbo(view.data(), 4, true));
|
||||||
//$$ if (withDepth) {
|
//$$ if (withDepth) {
|
||||||
|
|||||||
@@ -88,12 +88,21 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
Screen orgScreen = mc.currentScreen;
|
Screen orgScreen = mc.currentScreen;
|
||||||
boolean orgPauseOnLostFocus = mc.options.pauseOnLostFocus;
|
boolean orgPauseOnLostFocus = mc.options.pauseOnLostFocus;
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ boolean orgRenderHand = mc.gameRenderer.isRenderingPanorama();
|
||||||
|
//#else
|
||||||
boolean orgRenderHand = gameRenderer.getRenderHand();
|
boolean orgRenderHand = gameRenderer.getRenderHand();
|
||||||
|
//#endif
|
||||||
try {
|
try {
|
||||||
mc.currentScreen = null; // do not want to render the current screen (that'd just be the progress gui)
|
mc.currentScreen = null; // do not want to render the current screen (that'd just be the progress gui)
|
||||||
mc.options.pauseOnLostFocus = false; // do not want the pause menu to open if the window is unfocused
|
mc.options.pauseOnLostFocus = false; // do not want the pause menu to open if the window is unfocused
|
||||||
if (omnidirectional) {
|
if (omnidirectional) {
|
||||||
gameRenderer.setRenderHand(false); // makes no sense, we wouldn't even know where to put it
|
// makes no sense, we wouldn't even know where to put it
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ mc.gameRenderer.setRenderingPanorama(false);
|
||||||
|
//#else
|
||||||
|
gameRenderer.setRenderHand(false);
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=12100
|
//#if MC>=12100
|
||||||
@@ -111,7 +120,11 @@ public class EntityRendererHandler extends EventRegistrations implements WorldRe
|
|||||||
} finally {
|
} finally {
|
||||||
mc.currentScreen = orgScreen;
|
mc.currentScreen = orgScreen;
|
||||||
mc.options.pauseOnLostFocus = orgPauseOnLostFocus;
|
mc.options.pauseOnLostFocus = orgPauseOnLostFocus;
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ mc.gameRenderer.setRenderingPanorama(orgRenderHand);
|
||||||
|
//#else
|
||||||
gameRenderer.setRenderHand(orgRenderHand);
|
gameRenderer.setRenderHand(orgRenderHand);
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,30 @@ import net.minecraft.client.render.GameRenderer;
|
|||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
||||||
|
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||||
|
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||||
|
//$$ import net.minecraft.client.util.Pool;
|
||||||
|
//#endif
|
||||||
|
|
||||||
@Mixin(GameRenderer.class)
|
@Mixin(GameRenderer.class)
|
||||||
public interface GameRendererAccessor {
|
public interface GameRendererAccessor {
|
||||||
|
//#if MC<12106
|
||||||
@Accessor
|
@Accessor
|
||||||
boolean getRenderHand();
|
boolean getRenderHand();
|
||||||
@Accessor
|
@Accessor
|
||||||
void setRenderHand(boolean value);
|
void setRenderHand(boolean value);
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ @Accessor
|
||||||
|
//$$ Pool getPool();
|
||||||
|
//$$ @Accessor
|
||||||
|
//$$ GuiRenderer getGuiRenderer();
|
||||||
|
//$$ @Accessor
|
||||||
|
//$$ GuiRenderState getGuiState();
|
||||||
|
//$$ @Accessor
|
||||||
|
//$$ FogRenderer getFogRenderer();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ import java.util.concurrent.locks.Condition;
|
|||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import net.minecraft.client.render.chunk.AbstractChunkRenderData;
|
||||||
|
//$$ import org.spongepowered.asm.mixin.Mutable;
|
||||||
|
//$$ import java.util.concurrent.Executor;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ import org.spongepowered.asm.mixin.Mutable;
|
//$$ import org.spongepowered.asm.mixin.Mutable;
|
||||||
//$$ import java.util.AbstractQueue;
|
//$$ import java.util.AbstractQueue;
|
||||||
@@ -60,6 +66,13 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo
|
|||||||
//$$ runnable.run();
|
//$$ runnable.run();
|
||||||
//$$ anything = true;
|
//$$ anything = true;
|
||||||
//$$ }
|
//$$ }
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ AbstractChunkRenderData entry;
|
||||||
|
//$$ while ((entry = this.renderQueue.poll()) != null) {
|
||||||
|
//$$ entry.close();
|
||||||
|
//$$ anything = true;
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
//$$ return anything;
|
//$$ return anything;
|
||||||
//$$ }
|
//$$ }
|
||||||
//#else
|
//#else
|
||||||
@@ -105,7 +118,42 @@ public abstract class Mixin_BlockOnChunkRebuilds implements ForceChunkLoadingHoo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12106
|
||||||
|
//$$ @Shadow @Final @Mutable
|
||||||
|
//$$ Executor uploadExecutor;
|
||||||
|
//$$ @Shadow @Final @Mutable Queue<AbstractChunkRenderData> renderQueue;
|
||||||
|
//$$ @Inject(method = "<init>", at = @At("RETURN"))
|
||||||
|
//$$ private void notifyMainThreadOfNewUpload(CallbackInfo ci) {
|
||||||
|
//$$ Executor innerUploadExecutor = this.uploadExecutor;
|
||||||
|
//$$ this.uploadExecutor = runnable -> {
|
||||||
|
//$$ innerUploadExecutor.execute(runnable);
|
||||||
|
//$$ waitingForWorkLock.lock();
|
||||||
|
//$$ try {
|
||||||
|
//$$ newWork.signal();
|
||||||
|
//$$ } finally {
|
||||||
|
//$$ waitingForWorkLock.unlock();
|
||||||
|
//$$ }
|
||||||
|
//$$ };
|
||||||
|
//$$ Queue<AbstractChunkRenderData> innerRenderQueue = this.renderQueue;
|
||||||
|
//$$ this.renderQueue = new AbstractQueue<>() {
|
||||||
|
//$$ @Override
|
||||||
|
//$$ public boolean offer(AbstractChunkRenderData runnable) {
|
||||||
|
//$$ boolean result = innerRenderQueue.offer(runnable);
|
||||||
|
//$$ waitingForWorkLock.lock();
|
||||||
|
//$$ try {
|
||||||
|
//$$ newWork.signal();
|
||||||
|
//$$ } finally {
|
||||||
|
//$$ waitingForWorkLock.unlock();
|
||||||
|
//$$ }
|
||||||
|
//$$ return result;
|
||||||
|
//$$ }
|
||||||
|
//$$ @Override public AbstractChunkRenderData poll() { return innerRenderQueue.poll(); }
|
||||||
|
//$$ @Override public AbstractChunkRenderData peek() { return innerRenderQueue.peek(); }
|
||||||
|
//$$ @Override public int size() { return innerRenderQueue.size(); }
|
||||||
|
//$$ @Override public Iterator<AbstractChunkRenderData> iterator() { return innerRenderQueue.iterator(); }
|
||||||
|
//$$ };
|
||||||
|
//$$ }
|
||||||
|
//#elseif MC>=12105
|
||||||
//$$ @Inject(method = "<init>", at = @At("RETURN"))
|
//$$ @Inject(method = "<init>", at = @At("RETURN"))
|
||||||
//$$ private void notifyMainThreadOfNewUpload(CallbackInfo ci) {
|
//$$ private void notifyMainThreadOfNewUpload(CallbackInfo ci) {
|
||||||
//$$ Queue<Runnable> inner = this.uploadQueue;
|
//$$ Queue<Runnable> inner = this.uploadQueue;
|
||||||
|
|||||||
@@ -40,6 +40,14 @@ import net.minecraft.util.crash.CrashException;
|
|||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import com.replaymod.render.mixin.GameRendererAccessor;
|
||||||
|
//$$ import net.minecraft.client.gui.render.GuiRenderer;
|
||||||
|
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||||
|
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||||
|
//$$ import java.util.Collections;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12102
|
//#if MC>=12102
|
||||||
//$$ import com.mojang.blaze3d.systems.ProjectionType;
|
//$$ import com.mojang.blaze3d.systems.ProjectionType;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -523,7 +531,8 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11700
|
//#if MC>=12106
|
||||||
|
//#elseif MC>=11700
|
||||||
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
||||||
//$$ 0,
|
//$$ 0,
|
||||||
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
||||||
@@ -591,7 +600,12 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / Math.max(window.getWidth(), 1);
|
int mouseX = (int) mc.mouse.getX() * window.getScaledWidth() / Math.max(window.getWidth(), 1);
|
||||||
int mouseY = (int) mc.mouse.getY() * window.getScaledHeight() / Math.max(window.getHeight(), 1);
|
int mouseY = (int) mc.mouse.getY() * window.getScaledHeight() / Math.max(window.getHeight(), 1);
|
||||||
|
|
||||||
//#if MC>=12000
|
//#if MC>=12106
|
||||||
|
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
||||||
|
//$$ guiRenderState.clear();
|
||||||
|
//$$ DrawContext drawContext = new DrawContext(mc, guiRenderState);
|
||||||
|
//#elseif MC>=12000
|
||||||
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@@ -611,15 +625,26 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
gui.toMinecraft().tick();
|
gui.toMinecraft().tick();
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ gui.toMinecraft().renderWithTooltip(
|
||||||
|
//#else
|
||||||
gui.toMinecraft().render(
|
gui.toMinecraft().render(
|
||||||
|
//#endif
|
||||||
//#if MC>=12000
|
//#if MC>=12000
|
||||||
//$$ new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers()),
|
//$$ drawContext,
|
||||||
//#elseif MC>=11600
|
//#elseif MC>=11600
|
||||||
new MatrixStack(),
|
new MatrixStack(),
|
||||||
//#endif
|
//#endif
|
||||||
mouseX, mouseY, 0);
|
mouseX, mouseY, 0);
|
||||||
}
|
}
|
||||||
//#if MC>=12000
|
//#if MC>=12106
|
||||||
|
//$$ var orgFog = RenderSystem.getShaderFog();
|
||||||
|
//$$ var orgProjBuf = RenderSystem.getProjectionMatrixBuffer();
|
||||||
|
//$$ var orgProjType = RenderSystem.getProjectionType();
|
||||||
|
//$$ gameRenderer.getGuiRenderer().render(gameRenderer.getFogRenderer().getFogBuffer(FogRenderer.FogType.NONE));
|
||||||
|
//$$ RenderSystem.setShaderFog(orgFog);
|
||||||
|
//$$ RenderSystem.setProjectionMatrix(orgProjBuf, orgProjType);
|
||||||
|
//#elseif MC>=12000
|
||||||
//$$ drawContext.draw();
|
//$$ drawContext.draw();
|
||||||
//#endif
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -12,8 +12,10 @@ import static com.replaymod.core.versions.MCVer.popMatrix;
|
|||||||
import static com.replaymod.core.versions.MCVer.pushMatrix;
|
import static com.replaymod.core.versions.MCVer.pushMatrix;
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
|
//#if MC<12106
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
//$$ import com.mojang.blaze3d.buffers.BufferType;
|
||||||
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
//$$ import com.mojang.blaze3d.buffers.BufferUsage;
|
||||||
|
//#endif
|
||||||
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
//$$ import com.mojang.blaze3d.buffers.GpuBuffer;
|
||||||
//$$ import com.mojang.blaze3d.systems.CommandEncoder;
|
//$$ import com.mojang.blaze3d.systems.CommandEncoder;
|
||||||
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
//$$ import com.mojang.blaze3d.systems.GpuDevice;
|
||||||
@@ -136,10 +138,18 @@ public class NoGuiScreenshot {
|
|||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ Image image;
|
//$$ Image image;
|
||||||
//$$ GpuDevice device = RenderSystem.getDevice();
|
//$$ GpuDevice device = RenderSystem.getDevice();
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, GpuBuffer.USAGE_COPY_DST | GpuBuffer.USAGE_MAP_READ, frameWidth * frameHeight * 4)) {
|
||||||
|
//#else
|
||||||
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STATIC_READ, frameWidth * frameHeight * 4)) {
|
//$$ try (GpuBuffer gpuBuffer = device.createBuffer(null, BufferType.PIXEL_PACK, BufferUsage.STATIC_READ, frameWidth * frameHeight * 4)) {
|
||||||
|
//#endif
|
||||||
//$$ CommandEncoder cmd = device.createCommandEncoder();
|
//$$ CommandEncoder cmd = device.createCommandEncoder();
|
||||||
//$$ cmd.copyTextureToBuffer(mc.getFramebuffer().getColorAttachment(), gpuBuffer, 0, () -> {}, 0);
|
//$$ cmd.copyTextureToBuffer(mc.getFramebuffer().getColorAttachment(), gpuBuffer, 0, () -> {}, 0);
|
||||||
//$$ try (GpuBuffer.ReadView readView = cmd.readBuffer(gpuBuffer)) {
|
//#if MC>=12106
|
||||||
|
//$$ try (GpuBuffer.MappedView readView = cmd.mapBuffer(gpuBuffer, true, false)) {
|
||||||
|
//#else
|
||||||
|
//$$ try (GpuBuffer.ReadView readView = cmd.readBuffer(gpuBuffer)) {
|
||||||
|
//#endif
|
||||||
//$$ NativeImage nativeImage = new NativeImage(frameWidth, frameHeight, false);
|
//$$ NativeImage nativeImage = new NativeImage(frameWidth, frameHeight, false);
|
||||||
//$$ for (int y = 0; y < frameHeight; ++y) {
|
//$$ for (int y = 0; y < frameHeight; ++y) {
|
||||||
//$$ for (int x = 0; x < frameWidth; ++x) {
|
//$$ for (int x = 0; x < frameWidth; ++x) {
|
||||||
|
|||||||
@@ -45,6 +45,12 @@ import net.minecraft.network.ClientConnection;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import com.replaymod.render.mixin.GameRendererAccessor;
|
||||||
|
//$$ import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||||
|
//$$ import net.minecraft.client.render.fog.FogRenderer;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ import net.minecraft.entity.PositionInterpolator;
|
//$$ import net.minecraft.entity.PositionInterpolator;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -219,7 +225,9 @@ public class ReplayHandler {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
// Force re-creation of camera entity by unloading the previous world
|
// Force re-creation of camera entity by unloading the previous world
|
||||||
//#if MC>=11400
|
//#if MC>=12106
|
||||||
|
//$$ mc.disconnectWithProgressScreen();
|
||||||
|
//#elseif MC>=11400
|
||||||
mc.disconnect();
|
mc.disconnect();
|
||||||
//#else
|
//#else
|
||||||
//$$ // We need to re-set the GUI screen because having one with `allowsUserInput = true` active during world
|
//$$ // We need to re-set the GUI screen because having one with `allowsUserInput = true` active during world
|
||||||
@@ -261,7 +269,9 @@ public class ReplayHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mc.world != null) {
|
if (mc.world != null) {
|
||||||
//#if MC>=11400
|
//#if MC>=12106
|
||||||
|
//$$ mc.disconnectWithProgressScreen();
|
||||||
|
//#elseif MC>=11400
|
||||||
mc.disconnect();
|
mc.disconnect();
|
||||||
//#else
|
//#else
|
||||||
//$$ mc.world.sendQuittingDisconnectingPacket();
|
//$$ mc.world.sendQuittingDisconnectingPacket();
|
||||||
@@ -743,7 +753,8 @@ public class ReplayHandler {
|
|||||||
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11700
|
//#if MC>=12106
|
||||||
|
//#elseif MC>=11700
|
||||||
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
||||||
//$$ 0,
|
//$$ 0,
|
||||||
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
||||||
@@ -787,7 +798,18 @@ public class ReplayHandler {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
guiScreen.toMinecraft().init(mc, window.getScaledWidth(), window.getScaledHeight());
|
guiScreen.toMinecraft().init(mc, window.getScaledWidth(), window.getScaledHeight());
|
||||||
//#if MC>=12000
|
//#if MC>=12106
|
||||||
|
//$$ GameRendererAccessor gameRenderer = (GameRendererAccessor) mc.gameRenderer;
|
||||||
|
//$$ GuiRenderState guiRenderState = gameRenderer.getGuiState();
|
||||||
|
//$$ guiRenderState.clear();
|
||||||
|
//$$ guiScreen.toMinecraft().renderWithTooltip(new DrawContext(mc, guiRenderState), 0, 0, 0);
|
||||||
|
//$$ var orgFog = RenderSystem.getShaderFog();
|
||||||
|
//$$ var orgProjBuf = RenderSystem.getProjectionMatrixBuffer();
|
||||||
|
//$$ var orgProjType = RenderSystem.getProjectionType();
|
||||||
|
//$$ gameRenderer.getGuiRenderer().render(gameRenderer.getFogRenderer().getFogBuffer(FogRenderer.FogType.NONE));
|
||||||
|
//$$ RenderSystem.setShaderFog(orgFog);
|
||||||
|
//$$ RenderSystem.setProjectionMatrix(orgProjBuf, orgProjType);
|
||||||
|
//#elseif MC>=12000
|
||||||
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
//$$ DrawContext drawContext = new DrawContext(mc, mc.getBufferBuilders().getEntityVertexConsumers());
|
||||||
//$$ guiScreen.toMinecraft().render(drawContext, 0, 0, 0);
|
//$$ guiScreen.toMinecraft().render(drawContext, 0, 0, 0);
|
||||||
//$$ drawContext.draw();
|
//$$ drawContext.draw();
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ import net.minecraft.stat.StatHandler;
|
|||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.Box;
|
import net.minecraft.util.math.Box;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import net.minecraft.util.PlayerInput;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraftforge.client.event.EntityViewRenderEvent;
|
//$$ import net.minecraftforge.client.event.EntityViewRenderEvent;
|
||||||
@@ -164,7 +168,11 @@ public class CameraEntity
|
|||||||
, recipeBook
|
, recipeBook
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11600
|
//#if MC>=11600
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ , PlayerInput.DEFAULT
|
||||||
|
//#else
|
||||||
, false
|
, false
|
||||||
|
//#endif
|
||||||
, false
|
, false
|
||||||
//#endif
|
//#endif
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import net.minecraft.util.PlayerInput;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.client.world.ClientWorld;
|
import net.minecraft.client.world.ClientWorld;
|
||||||
//#else
|
//#else
|
||||||
@@ -51,7 +55,9 @@ public abstract class Mixin_CreateReplayCamera {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
//#if MC>=11602
|
//#if MC>=12106
|
||||||
|
//$$ @Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;Lnet/minecraft/util/PlayerInput;Z)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true)
|
||||||
|
//#elseif MC>=11602
|
||||||
@Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true)
|
@Inject(method = "createPlayer(Lnet/minecraft/client/world/ClientWorld;Lnet/minecraft/stat/StatHandler;Lnet/minecraft/client/recipebook/ClientRecipeBook;ZZ)Lnet/minecraft/client/network/ClientPlayerEntity;", at=@At("HEAD"), cancellable = true)
|
||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true)
|
//$$ @Inject(method = "createPlayer", at=@At("HEAD"), cancellable = true)
|
||||||
@@ -65,7 +71,11 @@ public abstract class Mixin_CreateReplayCamera {
|
|||||||
StatHandler statisticsManager,
|
StatHandler statisticsManager,
|
||||||
ClientRecipeBook recipeBookClient,
|
ClientRecipeBook recipeBookClient,
|
||||||
//#if MC>=11600
|
//#if MC>=11600
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ PlayerInput playerInput,
|
||||||
|
//#else
|
||||||
boolean lastIsHoldingSneakKey,
|
boolean lastIsHoldingSneakKey,
|
||||||
|
//#endif
|
||||||
boolean lastSprinting,
|
boolean lastSprinting,
|
||||||
//#endif
|
//#endif
|
||||||
CallbackInfoReturnable<ClientPlayerEntity> ci
|
CallbackInfoReturnable<ClientPlayerEntity> ci
|
||||||
|
|||||||
@@ -37,6 +37,22 @@ import static de.johni0702.minecraft.gui.versions.MCVer.popScissorState;
|
|||||||
import static de.johni0702.minecraft.gui.versions.MCVer.pushScissorState;
|
import static de.johni0702.minecraft.gui.versions.MCVer.pushScissorState;
|
||||||
import static de.johni0702.minecraft.gui.versions.MCVer.setScissorDisabled;
|
import static de.johni0702.minecraft.gui.versions.MCVer.setScissorDisabled;
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ import com.replaymod.replay.mixin.DrawContextAccessor;
|
||||||
|
//$$ import com.replaymod.render.mixin.GameRendererAccessor;
|
||||||
|
//$$ import net.minecraft.client.MinecraftClient;
|
||||||
|
//$$ import net.minecraft.client.gui.ScreenRect;
|
||||||
|
//$$ import net.minecraft.client.gui.render.SpecialGuiElementRenderer;
|
||||||
|
//$$ import net.minecraft.client.gui.render.state.special.SpecialGuiElementRenderState;
|
||||||
|
//$$ import net.minecraft.client.util.ClosableFactory;
|
||||||
|
//$$ import net.minecraft.client.util.Pool;
|
||||||
|
//$$ import net.minecraft.client.render.RenderLayer;
|
||||||
|
//$$ import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
|
//$$ import org.jetbrains.annotations.Nullable;
|
||||||
|
//$$ import java.util.ArrayList;
|
||||||
|
//$$ import java.util.List;
|
||||||
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ import net.minecraft.client.render.RenderLayer;
|
//$$ import net.minecraft.client.render.RenderLayer;
|
||||||
//$$ import net.minecraft.client.render.VertexConsumer;
|
//$$ import net.minecraft.client.render.VertexConsumer;
|
||||||
@@ -116,6 +132,10 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
|
|||||||
|
|
||||||
renderer.bindTexture(ReplayMod.TEXTURE);
|
renderer.bindTexture(ReplayMod.TEXTURE);
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ TimeTimelineLinesRenderState linesRenderState = new TimeTimelineLinesRenderState();
|
||||||
|
//#endif
|
||||||
|
|
||||||
SPTimeline timeline = mod.getCurrentTimeline();
|
SPTimeline timeline = mod.getCurrentTimeline();
|
||||||
|
|
||||||
timeline.getTimeline().getPaths().stream().flatMap(path -> path.getKeyframes().stream()).forEach(keyframe -> {
|
timeline.getTimeline().getPaths().stream().flatMap(path -> path.getKeyframes().stream()).forEach(keyframe -> {
|
||||||
@@ -188,6 +208,12 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
|
|||||||
// And finally another vertical bit (the timeline is already crammed enough, so only the border)
|
// And finally another vertical bit (the timeline is already crammed enough, so only the border)
|
||||||
Vector2f p4 = new Vector2f(keyframeTimelineLeft + positionXKeyframeTimeline, keyframeTimelineTop + BORDER_TOP);
|
Vector2f p4 = new Vector2f(keyframeTimelineLeft + positionXKeyframeTimeline, keyframeTimelineTop + BORDER_TOP);
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ linesRenderState.color = color;
|
||||||
|
//$$ linesRenderState.line(p1, p2);
|
||||||
|
//$$ linesRenderState.line(p2, p3);
|
||||||
|
//$$ linesRenderState.line(p3, p4);
|
||||||
|
//#else
|
||||||
MatrixStack matrixStack = renderer.getMatrixStack();
|
MatrixStack matrixStack = renderer.getMatrixStack();
|
||||||
emitLine(matrixStack, buffer, p1, p2, color);
|
emitLine(matrixStack, buffer, p1, p2, color);
|
||||||
emitLine(matrixStack, buffer, p2, p3, color);
|
emitLine(matrixStack, buffer, p2, p3, color);
|
||||||
@@ -222,10 +248,31 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
popScissorState();
|
popScissorState();
|
||||||
|
//#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ if (!linesRenderState.lines.isEmpty()) {
|
||||||
|
//$$ MinecraftClient mc = getMinecraft();
|
||||||
|
//$$ int scale = mc.getWindow().getScaleFactor();
|
||||||
|
//$$ // MC's special rendering code has multiple issues, we'll use a size matching the screen to avoid some
|
||||||
|
//$$ linesRenderState.x1 = 0;
|
||||||
|
//$$ linesRenderState.y1 = 0;
|
||||||
|
//$$ linesRenderState.x2 = mc.getWindow().getFramebufferWidth() / scale;
|
||||||
|
//$$ linesRenderState.y2 = mc.getWindow().getFramebufferHeight() / scale;
|
||||||
|
//$$
|
||||||
|
//$$ Pool pool = ((GameRendererAccessor) mc.gameRenderer).getPool();
|
||||||
|
//$$ TimeTimelineLinesRenderer linesRenderer = pool.acquire(TimeTimelineLinesRenderer.FACTORY);
|
||||||
|
//$$ pushScissorState();
|
||||||
|
//$$ setScissorDisabled();
|
||||||
|
//$$ linesRenderer.render(linesRenderState, ((DrawContextAccessor) renderer.getContext()).getState(), scale);
|
||||||
|
//$$ popScissorState();
|
||||||
|
//$$ pool.release(TimeTimelineLinesRenderer.FACTORY, linesRenderer); // Note: Assumes we only render one per frame
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
|
||||||
// Draw colored quads on spectator path segments
|
// Draw colored quads on spectator path segments
|
||||||
for (PathSegment segment : timeline.getPositionPath().getSegments()) {
|
for (PathSegment segment : timeline.getPositionPath().getSegments()) {
|
||||||
if (segment.getInterpolator() == null
|
if (segment.getInterpolator() == null
|
||||||
@@ -248,6 +295,65 @@ public class GuiKeyframeTimeline extends AbstractGuiTimeline<GuiKeyframeTimeline
|
|||||||
super.drawTimelineCursor(renderer, size);
|
super.drawTimelineCursor(renderer, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ private static class TimeTimelineLinesRenderState implements SpecialGuiElementRenderState {
|
||||||
|
//$$ int x1, x2, y1, y2;
|
||||||
|
//$$ ScreenRect scissorState;
|
||||||
|
//$$
|
||||||
|
//$$ List<Pair<Vector2f, Vector2f>> lines = new ArrayList<>();
|
||||||
|
//$$ int color;
|
||||||
|
//$$
|
||||||
|
//$$ public void line(Vector2f p1, Vector2f p2) {
|
||||||
|
//$$ lines.add(Pair.of(p1, p2));
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ @Override public int x1() {return x1;}
|
||||||
|
//$$ @Override public int x2() {return x2;}
|
||||||
|
//$$ @Override public int y1() {return y1;}
|
||||||
|
//$$ @Override public int y2() {return y2;}
|
||||||
|
//$$ @Override public float comp_4133() {return 1; /* scale */}
|
||||||
|
//$$ @Override public @Nullable ScreenRect comp_4128() {return scissorState;}
|
||||||
|
//$$ @Override public @Nullable ScreenRect comp_4274() {return SpecialGuiElementRenderState.createBounds(x1, y1, x2, y2, scissorState);}
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ private static class TimeTimelineLinesRenderer extends SpecialGuiElementRenderer<TimeTimelineLinesRenderState> {
|
||||||
|
//$$ private static ClosableFactory<TimeTimelineLinesRenderer> FACTORY = new ClosableFactory<>() {
|
||||||
|
//$$ @Override
|
||||||
|
//$$ public TimeTimelineLinesRenderer create() {
|
||||||
|
//$$ return new TimeTimelineLinesRenderer(MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers());
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ @Override
|
||||||
|
//$$ public void close(TimeTimelineLinesRenderer object) {
|
||||||
|
//$$ object.close();
|
||||||
|
//$$ }
|
||||||
|
//$$ };
|
||||||
|
//$$
|
||||||
|
//$$ protected TimeTimelineLinesRenderer(VertexConsumerProvider.Immediate immediate) {
|
||||||
|
//$$ super(immediate);
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ @Override
|
||||||
|
//$$ public Class<TimeTimelineLinesRenderState> getElementClass() {
|
||||||
|
//$$ return TimeTimelineLinesRenderState.class;
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ @Override
|
||||||
|
//$$ protected void render(TimeTimelineLinesRenderState state, MatrixStack matrixStack) {
|
||||||
|
//$$ matrixStack.translate(-state.x2 / 2f, -state.y2, 100);
|
||||||
|
//$$ RenderSystem.lineWidth(2);
|
||||||
|
//$$ for (Pair<Vector2f, Vector2f> line : state.lines) {
|
||||||
|
//$$ emitLine(matrixStack, vertexConsumers.getBuffer(RenderLayer.LINES), line.getLeft(), line.getRight(), state.color);
|
||||||
|
//$$ }
|
||||||
|
//$$ }
|
||||||
|
//$$
|
||||||
|
//$$ @Override
|
||||||
|
//$$ protected String getName() {
|
||||||
|
//$$ return "time_timeline_lines";
|
||||||
|
//$$ }
|
||||||
|
//$$ }
|
||||||
|
//#endif
|
||||||
|
|
||||||
private void drawQuadOnSegment(GuiRenderer renderer, int visibleWidth, PathSegment segment, int y, int color) {
|
private void drawQuadOnSegment(GuiRenderer renderer, int visibleWidth, PathSegment segment, int y, int color) {
|
||||||
int startTime = getOffset();
|
int startTime = getOffset();
|
||||||
int visibleTime = (int) (getZoom() * getLength());
|
int visibleTime = (int) (getZoom() * getLength());
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ import org.lwjgl.opengl.GL11;
|
|||||||
//$$ import net.minecraft.client.render.RenderLayer;
|
//$$ import net.minecraft.client.render.RenderLayer;
|
||||||
//$$ import net.minecraft.client.render.VertexConsumer;
|
//$$ import net.minecraft.client.render.VertexConsumer;
|
||||||
//$$ import net.minecraft.client.render.VertexConsumerProvider;
|
//$$ import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
|
//#else
|
||||||
|
import static com.replaymod.core.versions.MCVer.bindTexture;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=12102
|
//#if MC>=12102
|
||||||
@@ -54,7 +56,6 @@ import java.util.Comparator;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import static com.replaymod.core.ReplayMod.TEXTURE;
|
import static com.replaymod.core.ReplayMod.TEXTURE;
|
||||||
import static com.replaymod.core.versions.MCVer.bindTexture;
|
|
||||||
import static com.replaymod.core.versions.MCVer.emitLine;
|
import static com.replaymod.core.versions.MCVer.emitLine;
|
||||||
import static com.replaymod.core.versions.MCVer.popMatrix;
|
import static com.replaymod.core.versions.MCVer.popMatrix;
|
||||||
import static com.replaymod.core.versions.MCVer.pushMatrix;
|
import static com.replaymod.core.versions.MCVer.pushMatrix;
|
||||||
@@ -310,7 +311,9 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
|
|
||||||
private void drawPoint(Vector3f view, Vector3f pos, Keyframe keyframe) {
|
private void drawPoint(Vector3f view, Vector3f pos, Keyframe keyframe) {
|
||||||
|
|
||||||
|
//#if MC<12105
|
||||||
bindTexture(TEXTURE);
|
bindTexture(TEXTURE);
|
||||||
|
//#endif
|
||||||
|
|
||||||
float posX = 80f / ReplayMod.TEXTURE_SIZE;
|
float posX = 80f / ReplayMod.TEXTURE_SIZE;
|
||||||
float posY = 0f;
|
float posY = 0f;
|
||||||
@@ -332,7 +335,11 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ VertexConsumerProvider.Immediate immediate = mc.getBufferBuilders().getEntityVertexConsumers();
|
//$$ VertexConsumerProvider.Immediate immediate = mc.getBufferBuilders().getEntityVertexConsumers();
|
||||||
//$$ immediate.draw();
|
//$$ immediate.draw();
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ VertexConsumer buffer = immediate.getBuffer(RenderLayer.getTextSeeThrough(TEXTURE));
|
||||||
|
//#else
|
||||||
//$$ VertexConsumer buffer = immediate.getBuffer(RenderLayer.getGuiTexturedOverlay(TEXTURE));
|
//$$ VertexConsumer buffer = immediate.getBuffer(RenderLayer.getGuiTexturedOverlay(TEXTURE));
|
||||||
|
//#endif
|
||||||
//#else
|
//#else
|
||||||
Tessellator tessellator = Tessellator.getInstance();
|
Tessellator tessellator = Tessellator.getInstance();
|
||||||
//#if MC>=12100
|
//#if MC>=12100
|
||||||
@@ -343,10 +350,10 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
buffer.vertex(minX, minY, 0).texture(posX + size, posY + size).color(255, 255, 255, 255).next();
|
vertex(buffer, minX, minY, 0, posX + size, posY + size, 255);
|
||||||
buffer.vertex(minX, maxY, 0).texture(posX + size, posY).color(255, 255, 255, 255).next();
|
vertex(buffer, minX, maxY, 0, posX + size, posY, 255);
|
||||||
buffer.vertex(maxX, maxY, 0).texture(posX, posY).color(255, 255, 255, 255).next();
|
vertex(buffer, maxX, maxY, 0, posX, posY, 255);
|
||||||
buffer.vertex(maxX, minY, 0).texture(posX, posY + size).color(255, 255, 255, 255).next();
|
vertex(buffer, maxX, minY, 0, posX, posY + size, 255);
|
||||||
|
|
||||||
pushMatrix();
|
pushMatrix();
|
||||||
|
|
||||||
@@ -378,7 +385,9 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
|
|
||||||
private void drawCamera(Vector3f view, Vector3f pos, Vector3f rot) {
|
private void drawCamera(Vector3f view, Vector3f pos, Vector3f rot) {
|
||||||
|
|
||||||
|
//#if MC<12105
|
||||||
bindTexture(CAMERA_HEAD);
|
bindTexture(CAMERA_HEAD);
|
||||||
|
//#endif
|
||||||
|
|
||||||
pushMatrix();
|
pushMatrix();
|
||||||
|
|
||||||
@@ -434,13 +443,11 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
|
|
||||||
float cubeSize = 0.5f;
|
float cubeSize = 0.5f;
|
||||||
|
|
||||||
//#if MC>=12100
|
float r = -cubeSize/2;
|
||||||
//$$ float r = -cubeSize/2;
|
|
||||||
//#else
|
|
||||||
double r = -cubeSize/2;
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12106
|
||||||
|
//$$ buffer = immediate.getBuffer(RenderLayer.getText(CAMERA_HEAD));
|
||||||
|
//#elseif MC>=12105
|
||||||
//$$ buffer = immediate.getBuffer(RenderLayer.getGuiTextured(CAMERA_HEAD));
|
//$$ buffer = immediate.getBuffer(RenderLayer.getGuiTextured(CAMERA_HEAD));
|
||||||
//#elseif MC>=12100
|
//#elseif MC>=12100
|
||||||
//$$ buffer = tessellator.begin(net.minecraft.client.render.VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
|
//$$ buffer = tessellator.begin(net.minecraft.client.render.VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
|
||||||
@@ -449,40 +456,40 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//back
|
//back
|
||||||
buffer.vertex(r, r + cubeSize, r).texture(3 * 8 / 64f, 8 / 64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r, 3 * 8 / 64f, 8 / 64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r).texture(4*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r, 4*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r, r).texture(4*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r, r, 4*8/64f, 2*8/64f, 200);
|
||||||
buffer.vertex(r, r, r).texture(3*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r, 3*8/64f, 2*8/64f, 200);
|
||||||
|
|
||||||
//front
|
//front
|
||||||
buffer.vertex(r + cubeSize, r, r + cubeSize).texture(2 * 8 / 64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r, r + cubeSize, 2 * 8 / 64f, 2*8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(2 * 8 / 64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r + cubeSize, 2 * 8 / 64f, 8/64f, 200);
|
||||||
buffer.vertex(r, r + cubeSize, r + cubeSize).texture(8 / 64f, 8 / 64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r + cubeSize, 8 / 64f, 8 / 64f, 200);
|
||||||
buffer.vertex(r, r, r + cubeSize).texture(8 / 64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r + cubeSize, 8 / 64f, 2*8/64f, 200);
|
||||||
|
|
||||||
//left
|
//left
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r).texture(0, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r, 0, 8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r + cubeSize, 8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r, r + cubeSize).texture(8/64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r, r + cubeSize, 8/64f, 2*8/64f, 200);
|
||||||
buffer.vertex(r+cubeSize, r, r).texture(0, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r+cubeSize, r, r, 0, 2*8/64f, 200);
|
||||||
|
|
||||||
//right
|
//right
|
||||||
buffer.vertex(r, r + cubeSize, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r + cubeSize, 2*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r, r + cubeSize, r).texture(3*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r, 3*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r, r, r).texture(3*8/64f, 2*8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r, 3*8/64f, 2*8/64f, 200);
|
||||||
buffer.vertex(r, r, r + cubeSize).texture(2 * 8 / 64f, 2 * 8 / 64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r + cubeSize, 2 * 8 / 64f, 2 * 8 / 64f, 200);
|
||||||
|
|
||||||
//bottom
|
//bottom
|
||||||
buffer.vertex(r + cubeSize, r, r).texture(3*8/64f, 0).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r, r, 3*8/64f, 0, 200);
|
||||||
buffer.vertex(r + cubeSize, r, r + cubeSize).texture(3*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r, r + cubeSize, 3*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r, r, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r + cubeSize, 2*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r, r, r).texture(2 * 8 / 64f, 0).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r, r, 2 * 8 / 64f, 0, 200);
|
||||||
|
|
||||||
//top
|
//top
|
||||||
buffer.vertex(r, r + cubeSize, r).texture(8/64f, 0).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r, 8/64f, 0, 200);
|
||||||
buffer.vertex(r, r + cubeSize, r + cubeSize).texture(8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r, r + cubeSize, r + cubeSize, 8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r + cubeSize).texture(2*8/64f, 8/64f).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r + cubeSize, 2*8/64f, 8/64f, 200);
|
||||||
buffer.vertex(r + cubeSize, r + cubeSize, r).texture(2 * 8 / 64f, 0).color(255, 255, 255, 200).next();
|
vertex(buffer, r + cubeSize, r + cubeSize, r, 2 * 8 / 64f, 0, 200);
|
||||||
|
|
||||||
//#if MC>=12105
|
//#if MC>=12105
|
||||||
//$$ immediate.draw();
|
//$$ immediate.draw();
|
||||||
@@ -505,6 +512,18 @@ public class PathPreviewRenderer extends EventRegistrations {
|
|||||||
popMatrix();
|
popMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#if MC>=12105
|
||||||
|
//$$ private void vertex(VertexConsumer buffer, float x, float y, float z, float u, float v, int alpha) {
|
||||||
|
//#else
|
||||||
|
private void vertex(BufferBuilder buffer, float x, float y, float z, float u, float v, int alpha) {
|
||||||
|
//#endif
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ buffer.vertex(x, y, z).color(255, 255, 255, alpha).texture(u, v).light(240, 240);
|
||||||
|
//#else
|
||||||
|
buffer.vertex(x, y, z).texture(u, v).color(255, 255, 255, alpha).next();
|
||||||
|
//#endif
|
||||||
|
}
|
||||||
|
|
||||||
private class KeyframeComparator implements Comparator<Pair<Keyframe, Vector3f>> {
|
private class KeyframeComparator implements Comparator<Pair<Keyframe, Vector3f>> {
|
||||||
private final Vector3f viewPos;
|
private final Vector3f viewPos;
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,9 @@
|
|||||||
//#else
|
//#else
|
||||||
//$$ "EntityOtherPlayerMPAccessor",
|
//$$ "EntityOtherPlayerMPAccessor",
|
||||||
//#endif
|
//#endif
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ "DrawContextAccessor",
|
||||||
|
//#endif
|
||||||
"EntityPlayerAccessor",
|
"EntityPlayerAccessor",
|
||||||
"FirstPersonRendererAccessor",
|
"FirstPersonRendererAccessor",
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
|
|||||||
@@ -100,7 +100,11 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
|
|||||||
}
|
}
|
||||||
// MC sometimes schedules invalid chunks when you're outside of loaded chunks (e.g. y > 256)
|
// MC sometimes schedules invalid chunks when you're outside of loaded chunks (e.g. y > 256)
|
||||||
if (builtChunk.shouldBuild()) {
|
if (builtChunk.shouldBuild()) {
|
||||||
|
//#if MC>=12106
|
||||||
|
//$$ builtChunk.scheduleRebuild(chunkRendererRegionBuilder);
|
||||||
|
//#else
|
||||||
builtChunk.scheduleRebuild(this.field_45614, chunkRendererRegionBuilder);
|
builtChunk.scheduleRebuild(this.field_45614, chunkRendererRegionBuilder);
|
||||||
|
//#endif
|
||||||
areWeDoneYet = false;
|
areWeDoneYet = false;
|
||||||
}
|
}
|
||||||
builtChunk.cancelRebuild();
|
builtChunk.cancelRebuild();
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
||||||
|
import com.mojang.blaze3d.systems.CommandEncoder;
|
||||||
|
import com.mojang.blaze3d.textures.GpuTexture;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.render.GameRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
|
@Mixin(GameRenderer.class)
|
||||||
|
public abstract class Mixin_PreserveDepthDuringGuiRendering {
|
||||||
|
@WrapWithCondition(
|
||||||
|
method = "render",
|
||||||
|
at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/CommandEncoder;clearDepthTexture(Lcom/mojang/blaze3d/textures/GpuTexture;D)V")
|
||||||
|
)
|
||||||
|
private boolean replayModRender_skipClearWhenRecordingDepth(CommandEncoder instance, GpuTexture texture, double v) {
|
||||||
|
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) MinecraftClient.getInstance().gameRenderer).replayModRender_getHandler();
|
||||||
|
return handler == null || !handler.getSettings().isDepthMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
|
||||||
|
import com.mojang.blaze3d.systems.CommandEncoder;
|
||||||
|
import com.mojang.blaze3d.textures.GpuTexture;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.render.GameRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
|
@Mixin(GameRenderer.class)
|
||||||
|
public abstract class Mixin_PreserveDepthDuringHandRendering {
|
||||||
|
@WrapWithCondition(
|
||||||
|
method = "renderWorld",
|
||||||
|
at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/CommandEncoder;clearDepthTexture(Lcom/mojang/blaze3d/textures/GpuTexture;D)V")
|
||||||
|
)
|
||||||
|
private boolean replayModRender_skipClearWhenRecordingDepth(CommandEncoder instance, GpuTexture texture, double v) {
|
||||||
|
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) this).replayModRender_getHandler();
|
||||||
|
return handler == null || !handler.getSettings().isDepthMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
0
versions/1.21.7/.gitkeep
Normal file
0
versions/1.21.7/.gitkeep
Normal file
2
versions/1.21.7/gradle.properties
Normal file
2
versions/1.21.7/gradle.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
essential.defaults.loom.minecraft=com.mojang:minecraft:1.21.7
|
||||||
|
essential.defaults.loom.mappings=net.fabricmc:yarn:1.21.7+build.1
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
|
import com.replaymod.core.versions.MCVer;
|
||||||
|
import com.replaymod.render.hooks.EntityRendererHandler;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.render.GameRenderer;
|
||||||
|
import net.minecraft.client.render.fog.FogRenderer;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
|
|
||||||
|
@Mixin(FogRenderer.class)
|
||||||
|
public abstract class Mixin_ChromaKeyDisableFog {
|
||||||
|
@ModifyVariable(method = "getFogBuffer", at = @At("HEAD"), argsOnly = true)
|
||||||
|
private FogRenderer.FogType replayModRender_suppressFogIfChromaKeyIsActive(FogRenderer.FogType fogType) {
|
||||||
|
MinecraftClient mc = MCVer.getMinecraft();
|
||||||
|
if (mc == null) return fogType;
|
||||||
|
GameRenderer gameRenderer = mc.gameRenderer;
|
||||||
|
if (gameRenderer == null) return fogType;
|
||||||
|
EntityRendererHandler handler = ((EntityRendererHandler.IEntityRenderer) gameRenderer).replayModRender_getHandler();
|
||||||
|
if (handler != null && handler.getSettings().getChromaKeyingColor() != null) {
|
||||||
|
fogType = FogRenderer.FogType.NONE;
|
||||||
|
}
|
||||||
|
return fogType;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.render.state.GuiRenderState;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@Mixin(DrawContext.class)
|
||||||
|
public interface DrawContextAccessor {
|
||||||
|
@Accessor
|
||||||
|
GuiRenderState getState();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user