Update 1.14.4 yarn
This commit is contained in:
2
jGui
2
jGui
Submodule jGui updated: 6f8e8bfe0b...b485a7b078
@@ -24,7 +24,7 @@ public abstract class MixinShaderRenderGlobal {
|
|||||||
private final MinecraftClient mc = MinecraftClient.getInstance();
|
private final MinecraftClient mc = MinecraftClient.getInstance();
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public boolean terrainUpdateNecessary;
|
public boolean needsTerrainUpdate;
|
||||||
|
|
||||||
@Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "setUpTerrain", at = @At("HEAD"), cancellable = true)
|
||||||
public void replayModCompat_setupTerrain(
|
public void replayModCompat_setupTerrain(
|
||||||
@@ -51,7 +51,7 @@ public abstract class MixinShaderRenderGlobal {
|
|||||||
// set it to false manually to exit the loop imposed by MixinRenderGlobal#replayModRender_setupTerrain.
|
// set it to false manually to exit the loop imposed by MixinRenderGlobal#replayModRender_setupTerrain.
|
||||||
try {
|
try {
|
||||||
if ((boolean) ShaderReflection.shaders_isShadowPass.get(null) == true) {
|
if ((boolean) ShaderReflection.shaders_isShadowPass.get(null) == true) {
|
||||||
this.terrainUpdateNecessary = false;
|
this.needsTerrainUpdate = false;
|
||||||
}
|
}
|
||||||
} catch (IllegalAccessException ignore) {}
|
} catch (IllegalAccessException ignore) {}
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ import org.apache.commons.io.FileUtils;
|
|||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.client.options.Option;
|
import net.minecraft.client.options.Option;
|
||||||
import net.minecraft.resource.ResourcePackCreator;
|
import net.minecraft.resource.ResourcePackProvider;
|
||||||
import net.minecraft.resource.ResourcePackContainer;
|
import net.minecraft.resource.ResourcePackProfile;
|
||||||
import net.minecraft.util.NonBlockingThreadExecutor;
|
import net.minecraft.util.thread.ReentrantThreadExecutor;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
@@ -263,10 +263,10 @@ public class ReplayMod implements
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
mc.getResourcePackContainerManager().addCreator(new ResourcePackCreator() {
|
mc.getResourcePackManager().registerProvider(new ResourcePackProvider() {
|
||||||
@Override
|
@Override
|
||||||
public <T extends ResourcePackContainer> void registerContainer(Map<String, T> map, ResourcePackContainer.Factory<T> factory) {
|
public <T extends ResourcePackProfile> void register(Map<String, T> map, ResourcePackProfile.Factory<T> factory) {
|
||||||
map.put("jgui", ResourcePackContainer.of("jgui", true, () -> jGuiResourcePack, factory, ResourcePackContainer.InsertionPosition.BOTTOM));
|
map.put("jgui", ResourcePackProfile.of("jgui", true, () -> jGuiResourcePack, factory, ResourcePackProfile.InsertionPosition.BOTTOM));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//#else
|
//#else
|
||||||
@@ -389,7 +389,7 @@ public class ReplayMod implements
|
|||||||
if (mc.isOnThread()) {
|
if (mc.isOnThread()) {
|
||||||
runnable.run();
|
runnable.run();
|
||||||
} else {
|
} else {
|
||||||
executor.executeFuture(() -> {
|
executor.submit(() -> {
|
||||||
runnable.run();
|
runnable.run();
|
||||||
return null;
|
return null;
|
||||||
}).get(30, TimeUnit.SECONDS);
|
}).get(30, TimeUnit.SECONDS);
|
||||||
@@ -439,7 +439,7 @@ public class ReplayMod implements
|
|||||||
// stuff submitted via runLater is actually always run (e.g. recording might not be fully stopped because parts
|
// stuff submitted via runLater is actually always run (e.g. recording might not be fully stopped because parts
|
||||||
// of that are run via runLater and stopping the recording happens right around the time MC clears the queue).
|
// of that are run via runLater and stopping the recording happens right around the time MC clears the queue).
|
||||||
// Luckily, that's also the version where MC pulled out the executor implementation, so we can just spin up our own.
|
// Luckily, that's also the version where MC pulled out the executor implementation, so we can just spin up our own.
|
||||||
public static class ReplayModExecutor extends NonBlockingThreadExecutor<Runnable> {
|
public static class ReplayModExecutor extends ReentrantThreadExecutor<Runnable> {
|
||||||
private final Thread mcThread = Thread.currentThread();
|
private final Thread mcThread = Thread.currentThread();
|
||||||
// Fail-fast in case we ever switch to async loading and forget to change this
|
// Fail-fast in case we ever switch to async loading and forget to change this
|
||||||
// (except for fabric 1.15+ because it loads the mod before the client thread is set)
|
// (except for fabric 1.15+ because it loads the mod before the client thread is set)
|
||||||
@@ -452,12 +452,12 @@ public class ReplayMod implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Runnable prepareRunnable(Runnable runnable) {
|
protected Runnable createTask(Runnable runnable) {
|
||||||
return runnable;
|
return runnable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean canRun(Runnable runnable) {
|
protected boolean canExecute(Runnable runnable) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -466,16 +466,9 @@ public class ReplayMod implements
|
|||||||
return mcThread;
|
return mcThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if FABRIC>=1 && MC<11500
|
|
||||||
@Override
|
@Override
|
||||||
public void send(Runnable runnable) {
|
public void runTasks() {
|
||||||
method_18858(runnable);
|
super.runTasks();
|
||||||
}
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void executeTaskQueue() {
|
|
||||||
super.executeTaskQueue();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public final ReplayModExecutor executor = new ReplayModExecutor("Client/ReplayMod");
|
public final ReplayModExecutor executor = new ReplayModExecutor("Client/ReplayMod");
|
||||||
@@ -493,7 +486,7 @@ public class ReplayMod implements
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
executor.method_18858(() -> {
|
executor.send(() -> {
|
||||||
inRunLater = true;
|
inRunLater = true;
|
||||||
try {
|
try {
|
||||||
runnable.run();
|
runnable.run();
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ import com.replaymod.core.events.PreRenderCallback;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.util.NonBlockingThreadExecutor;
|
import net.minecraft.util.thread.ReentrantThreadExecutor;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(MinecraftClient.class)
|
@Mixin(MinecraftClient.class)
|
||||||
public abstract class MixinMinecraft
|
public abstract class MixinMinecraft
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
extends NonBlockingThreadExecutor<Runnable>
|
extends ReentrantThreadExecutor<Runnable>
|
||||||
//#endif
|
//#endif
|
||||||
implements MCVer.MinecraftMethodAccessor {
|
implements MCVer.MinecraftMethodAccessor {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@@ -44,7 +44,7 @@ public abstract class MixinMinecraft
|
|||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@Override
|
@Override
|
||||||
public void replayModExecuteTaskQueue() {
|
public void replayModExecuteTaskQueue() {
|
||||||
executeTaskQueue();
|
runTasks();
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ public interface TimerAccessor {
|
|||||||
void setLastSyncSysClock(long value);
|
void setLastSyncSysClock(long value);
|
||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
@Accessor("timeScale")
|
@Accessor("tickTime")
|
||||||
float getTickLength();
|
float getTickLength();
|
||||||
@Accessor("timeScale")
|
@Accessor("tickTime")
|
||||||
void setTickLength(float value);
|
void setTickLength(float value);
|
||||||
//#else
|
//#else
|
||||||
//$$ @Accessor
|
//$$ @Accessor
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.replaymod.core.utils;
|
package com.replaymod.core.utils;
|
||||||
|
|
||||||
import net.minecraft.client.network.packet.CustomPayloadS2CPacket;
|
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
|
||||||
import net.minecraft.util.PacketByteBuf;
|
import net.minecraft.util.PacketByteBuf;
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ import net.minecraft.client.world.ClientWorld;
|
|||||||
import net.minecraft.client.render.Tessellator;
|
import net.minecraft.client.render.Tessellator;
|
||||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||||
import net.minecraft.client.model.Box;
|
import net.minecraft.client.model.Box;
|
||||||
import net.minecraft.client.model.Cuboid;
|
import net.minecraft.client.model.ModelPart;
|
||||||
import net.minecraft.util.crash.CrashReportSection;
|
import net.minecraft.util.crash.CrashReportSection;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.util.PacketByteBuf;
|
import net.minecraft.util.PacketByteBuf;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.chunk.WorldChunk;
|
import net.minecraft.world.chunk.WorldChunk;
|
||||||
@@ -362,7 +362,7 @@ public class MCVer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static List<Box> cubeList(Cuboid modelRenderer) {
|
public static List<Box> cubeList(ModelPart modelRenderer) {
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
//$$ return new ArrayList<>(); // FIXME 1.15
|
//$$ return new ArrayList<>(); // FIXME 1.15
|
||||||
//#else
|
//#else
|
||||||
@@ -465,7 +465,7 @@ public class MCVer {
|
|||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
public static BufferBuilder Tessellator_getBufferBuilder() {
|
public static BufferBuilder Tessellator_getBufferBuilder() {
|
||||||
return Tessellator.getInstance().getBufferBuilder();
|
return Tessellator.getInstance().getBuffer();
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
//$$ public static Tessellator Tessellator_getBufferBuilder() {
|
//$$ public static Tessellator Tessellator_getBufferBuilder() {
|
||||||
@@ -495,7 +495,7 @@ public class MCVer {
|
|||||||
Tessellator_getBufferBuilder().begin(
|
Tessellator_getBufferBuilder().begin(
|
||||||
mode
|
mode
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
, VertexFormats.POSITION_UV
|
, VertexFormats.POSITION_TEXTURE
|
||||||
//#endif
|
//#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -512,7 +512,7 @@ public class MCVer {
|
|||||||
Tessellator_getBufferBuilder().begin(
|
Tessellator_getBufferBuilder().begin(
|
||||||
mode
|
mode
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
, VertexFormats.POSITION_UV_COLOR
|
, VertexFormats.POSITION_TEXTURE_COLOR
|
||||||
//#endif
|
//#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -609,7 +609,7 @@ public class MCVer {
|
|||||||
|
|
||||||
public static long milliTime() {
|
public static long milliTime() {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
return SystemUtil.getMeasuringTimeMs();
|
return Util.getMeasuringTimeMs();
|
||||||
//#else
|
//#else
|
||||||
//$$ return Minecraft.getSystemTime();
|
//$$ return Minecraft.getSystemTime();
|
||||||
//#endif
|
//#endif
|
||||||
@@ -648,7 +648,7 @@ public class MCVer {
|
|||||||
|
|
||||||
public static void openFile(File file) {
|
public static void openFile(File file) {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
SystemUtil.getOperatingSystem().open(file);
|
Util.getOperatingSystem().open(file);
|
||||||
//#else
|
//#else
|
||||||
//$$ String path = file.getAbsolutePath();
|
//$$ String path = file.getAbsolutePath();
|
||||||
//$$
|
//$$
|
||||||
@@ -679,7 +679,7 @@ public class MCVer {
|
|||||||
public static void openURL(URI url) {
|
public static void openURL(URI url) {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
SystemUtil.getOperatingSystem().open(url);
|
Util.getOperatingSystem().open(url);
|
||||||
//#else
|
//#else
|
||||||
//$$ Util.getOSType().openURI(url);
|
//$$ Util.getOSType().openURI(url);
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
|
|||||||
renderer.bindTexture(texture);
|
renderer.bindTexture(texture);
|
||||||
renderer.drawTexturedRect(0, 0, 8, 8, 16, 16, 8, 8, 64, 64);
|
renderer.drawTexturedRect(0, 0, 8, 8, 16, 16, 8, 8, 64, 64);
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
if (p.isSkinOverlayVisible(PlayerModelPart.HAT)) {
|
if (p.isPartVisible(PlayerModelPart.HAT)) {
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
//$$ if (p.func_175148_a(EnumPlayerModelParts.HAT)) {
|
//$$ if (p.func_175148_a(EnumPlayerModelParts.HAT)) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.replaymod.extras.urischeme;
|
package com.replaymod.extras.urischeme;
|
||||||
|
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -70,7 +70,7 @@ public abstract class UriScheme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static UriScheme create() {
|
public static UriScheme create() {
|
||||||
switch (SystemUtil.getOperatingSystem()) {
|
switch (Util.getOperatingSystem()) {
|
||||||
case LINUX:
|
case LINUX:
|
||||||
return new LinuxUriScheme();
|
return new LinuxUriScheme();
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import net.minecraft.client.resource.language.I18n;
|
|||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
//#else
|
//#else
|
||||||
//$$ import org.lwjgl.Sys;
|
//$$ import org.lwjgl.Sys;
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ import com.replaymod.recording.packet.PacketListener;
|
|||||||
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
import de.johni0702.minecraft.gui.utils.EventRegistrations;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
||||||
import net.minecraft.client.network.packet.BlockBreakingProgressS2CPacket;
|
import net.minecraft.network.packet.s2c.play.BlockBreakingProgressS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityAnimationS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityAnimationS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityAttachS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityAttachS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityEquipmentUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityEquipmentUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityPositionS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntitySetHeadYawS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntitySetHeadYawS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntityVelocityUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerSpawnS2CPacket;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
@@ -38,9 +38,9 @@ import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
|
|||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import com.replaymod.recording.mixin.EntityLivingBaseAccessor;
|
import com.replaymod.recording.mixin.EntityLivingBaseAccessor;
|
||||||
import net.minecraft.client.network.packet.EntityTrackerUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlaySoundS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket;
|
||||||
import net.minecraft.client.network.packet.WorldEventS2CPacket;
|
import net.minecraft.network.packet.s2c.play.WorldEventS2CPacket;
|
||||||
import net.minecraft.entity.EquipmentSlot;
|
import net.minecraft.entity.EquipmentSlot;
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.replaymod.recording.mixin;
|
|||||||
|
|
||||||
import com.replaymod.recording.packet.ResourcePackRecorder;
|
import com.replaymod.recording.packet.ResourcePackRecorder;
|
||||||
import de.johni0702.minecraft.gui.utils.Consumer;
|
import de.johni0702.minecraft.gui.utils.Consumer;
|
||||||
import net.minecraft.client.resource.ClientResourcePackCreator;
|
import net.minecraft.client.resource.ClientBuiltinResourcePackProvider;
|
||||||
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;
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||||||
//$$ import java.util.Map;
|
//$$ import java.util.Map;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(ClientResourcePackCreator.class)
|
@Mixin(ClientBuiltinResourcePackProvider.class)
|
||||||
public abstract class MixinDownloadingPackFinder implements ResourcePackRecorder.IDownloadingPackFinder {
|
public abstract class MixinDownloadingPackFinder implements ResourcePackRecorder.IDownloadingPackFinder {
|
||||||
private Consumer<File> requestCallback;
|
private Consumer<File> requestCallback;
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
import com.replaymod.core.versions.MCVer;
|
import com.replaymod.core.versions.MCVer;
|
||||||
import com.replaymod.recording.handler.RecordingEventHandler.RecordingEventSender;
|
import com.replaymod.recording.handler.RecordingEventHandler.RecordingEventSender;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.client.network.packet.LoginQueryRequestS2CPacket;
|
import net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket;
|
||||||
import net.minecraft.client.network.packet.LoginSuccessS2CPacket;
|
import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
//$$ import net.minecraftforge.fml.common.network.FMLNetworkEvent;
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.replaymod.core.versions.MCVer;
|
|||||||
import com.replaymod.recording.handler.RecordingEventHandler;
|
import com.replaymod.recording.handler.RecordingEventHandler;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
||||||
import net.minecraft.client.network.packet.PlayerRespawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
@@ -18,7 +18,7 @@ import com.replaymod.replaystudio.protocol.packets.PacketPlayerListEntry;
|
|||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import net.minecraft.util.PacketByteBuf;
|
import net.minecraft.util.PacketByteBuf;
|
||||||
import net.minecraft.client.network.packet.PlayerListS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket;
|
||||||
import net.minecraft.client.network.PlayerListEntry;
|
import net.minecraft.client.network.PlayerListEntry;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public abstract class MixinRenderGlobal implements RecordingEventHandler.Recordi
|
|||||||
}
|
}
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@Inject(method = "setBlockBreakingProgress", at = @At("HEAD"))
|
@Inject(method = "setBlockBreakingInfo", at = @At("HEAD"))
|
||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "destroyBlockPartially", at = @At("HEAD"))
|
//$$ @Inject(method = "destroyBlockPartially", at = @At("HEAD"))
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.replaymod.recording.mixin;
|
package com.replaymod.recording.mixin;
|
||||||
|
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.client.network.packet.MobSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket;
|
||||||
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;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.replaymod.recording.mixin;
|
package com.replaymod.recording.mixin;
|
||||||
|
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.client.network.packet.PlayerSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerSpawnS2CPacket;
|
||||||
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;
|
||||||
|
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ import io.netty.buffer.Unpooled;
|
|||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import io.netty.channel.ChannelInboundHandlerAdapter;
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.packet.CustomPayloadS2CPacket;
|
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
|
||||||
import net.minecraft.client.network.packet.DisconnectS2CPacket;
|
import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket;
|
||||||
import net.minecraft.client.network.packet.ItemPickupAnimationS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ItemPickupAnimationS2CPacket;
|
||||||
import net.minecraft.client.network.packet.MobSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerSpawnS2CPacket;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.data.DataTracker;
|
import net.minecraft.entity.data.DataTracker;
|
||||||
import net.minecraft.network.NetworkState;
|
import net.minecraft.network.NetworkState;
|
||||||
@@ -39,7 +39,7 @@ import org.apache.logging.log4j.LogManager;
|
|||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.client.network.packet.LoginSuccessS2CPacket;
|
import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
|
//$$ import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -53,8 +53,8 @@ import net.minecraft.client.network.packet.LoginSuccessS2CPacket;
|
|||||||
//#if MC<10904
|
//#if MC<10904
|
||||||
//$$ import net.minecraft.network.play.server.S46PacketSetCompressionLevel;
|
//$$ import net.minecraft.network.play.server.S46PacketSetCompressionLevel;
|
||||||
//#endif
|
//#endif
|
||||||
import net.minecraft.client.network.packet.LoginCompressionS2CPacket;
|
import net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket;
|
||||||
import net.minecraft.client.network.packet.ResourcePackSendS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ResourcePackSendS2CPacket;
|
||||||
import net.minecraft.network.NetworkSide;
|
import net.minecraft.network.NetworkSide;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import com.google.common.io.Files;
|
|||||||
import com.replaymod.replaystudio.replay.ReplayFile;
|
import com.replaymod.replaystudio.replay.ReplayFile;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.ConfirmScreen;
|
import net.minecraft.client.gui.screen.ConfirmScreen;
|
||||||
import net.minecraft.client.options.ServerEntry;
|
import net.minecraft.client.network.ServerInfo;
|
||||||
import net.minecraft.client.options.ServerList;
|
import net.minecraft.client.options.ServerList;
|
||||||
import net.minecraft.client.resource.ClientResourcePackCreator;
|
import net.minecraft.client.resource.ClientBuiltinResourcePackProvider;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@@ -26,9 +26,9 @@ import de.johni0702.minecraft.gui.utils.Consumer;
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraft.server.network.packet.ResourcePackStatusC2SPacket;
|
import net.minecraft.network.packet.c2s.play.ResourcePackStatusC2SPacket;
|
||||||
import net.minecraft.server.network.packet.ResourcePackStatusC2SPacket.Status;
|
import net.minecraft.network.packet.c2s.play.ResourcePackStatusC2SPacket.Status;
|
||||||
import net.minecraft.client.network.packet.ResourcePackSendS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ResourcePackSendS2CPacket;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@@ -135,11 +135,11 @@ public class ResourcePackRecorder {
|
|||||||
netManager.send(makeStatusPacket(hash, Status.FAILED_DOWNLOAD));
|
netManager.send(makeStatusPacket(hash, Status.FAILED_DOWNLOAD));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final ServerEntry serverData = mc.getCurrentServerEntry();
|
final ServerInfo serverData = mc.getCurrentServerEntry();
|
||||||
if (serverData != null && serverData.getResourcePack() == ServerEntry.ResourcePackState.ENABLED) {
|
if (serverData != null && serverData.getResourcePack() == ServerInfo.ResourcePackState.ENABLED) {
|
||||||
netManager.send(makeStatusPacket(hash, Status.ACCEPTED));
|
netManager.send(makeStatusPacket(hash, Status.ACCEPTED));
|
||||||
downloadResourcePackFuture(requestId, url, hash);
|
downloadResourcePackFuture(requestId, url, hash);
|
||||||
} else if (serverData != null && serverData.getResourcePack() != ServerEntry.ResourcePackState.PROMPT) {
|
} else if (serverData != null && serverData.getResourcePack() != ServerInfo.ResourcePackState.PROMPT) {
|
||||||
netManager.send(makeStatusPacket(hash, Status.DECLINED));
|
netManager.send(makeStatusPacket(hash, Status.DECLINED));
|
||||||
} else {
|
} else {
|
||||||
// Lambdas MUST NOT be used with methods that need re-obfuscation in FG prior to 2.2 (will result in AbstractMethodError)
|
// Lambdas MUST NOT be used with methods that need re-obfuscation in FG prior to 2.2 (will result in AbstractMethodError)
|
||||||
@@ -152,7 +152,7 @@ public class ResourcePackRecorder {
|
|||||||
//$$ public void confirmClicked(boolean result, int id) {
|
//$$ public void confirmClicked(boolean result, int id) {
|
||||||
//#endif
|
//#endif
|
||||||
if (serverData != null) {
|
if (serverData != null) {
|
||||||
serverData.setResourcePackState(result ? ServerEntry.ResourcePackState.ENABLED : ServerEntry.ResourcePackState.DISABLED);
|
serverData.setResourcePackState(result ? ServerInfo.ResourcePackState.ENABLED : ServerInfo.ResourcePackState.DISABLED);
|
||||||
}
|
}
|
||||||
if (result) {
|
if (result) {
|
||||||
netManager.send(makeStatusPacket(hash, Status.ACCEPTED));
|
netManager.send(makeStatusPacket(hash, Status.ACCEPTED));
|
||||||
@@ -188,7 +188,7 @@ public class ResourcePackRecorder {
|
|||||||
//$$ ListenableFuture<?>
|
//$$ ListenableFuture<?>
|
||||||
//#endif
|
//#endif
|
||||||
downloadResourcePack(final int requestId, String url, String hash) {
|
downloadResourcePack(final int requestId, String url, String hash) {
|
||||||
ClientResourcePackCreator packFinder = mc.getResourcePackDownloader();
|
ClientBuiltinResourcePackProvider packFinder = mc.getResourcePackDownloader();
|
||||||
((IDownloadingPackFinder) packFinder).setRequestCallback(file -> recordResourcePack(file, requestId));
|
((IDownloadingPackFinder) packFinder).setRequestCallback(file -> recordResourcePack(file, requestId));
|
||||||
return packFinder.download(url, hash);
|
return packFinder.download(url, hash);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.client.resource.language.I18n;
|
import net.minecraft.client.resource.language.I18n;
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -173,7 +173,7 @@ public class RenderSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String findFFmpeg() {
|
private static String findFFmpeg() {
|
||||||
switch (SystemUtil.getOperatingSystem()) {
|
switch (Util.getOperatingSystem()) {
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
// Allow windows users to unpack the ffmpeg archive into a sub-folder of their .minecraft folder
|
// Allow windows users to unpack the ffmpeg archive into a sub-folder of their .minecraft folder
|
||||||
File inDotMinecraft = new File(MCVer.getMinecraft().runDirectory, "ffmpeg/bin/ffmpeg.exe");
|
File inDotMinecraft = new File(MCVer.getMinecraft().runDirectory, "ffmpeg/bin/ffmpeg.exe");
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class BlendMeshBuilder
|
|||||||
throw new IllegalStateException("Not building!");
|
throw new IllegalStateException("Not building!");
|
||||||
} else {
|
} else {
|
||||||
if (!wellBehaved) {
|
if (!wellBehaved) {
|
||||||
Tessellator.getInstance().getBufferBuilder().end();
|
Tessellator.getInstance().getBuffer().end();
|
||||||
}
|
}
|
||||||
|
|
||||||
//#if MC<10809
|
//#if MC<10809
|
||||||
@@ -168,7 +168,7 @@ public class BlendMeshBuilder
|
|||||||
int posOffset = -1, colorOffset = -1, uvOffset = -1;
|
int posOffset = -1, colorOffset = -1, uvOffset = -1;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
int elementOffset = 0;
|
//$$ int elementOffset = 0;
|
||||||
//#endif
|
//#endif
|
||||||
for (VertexFormatElement element : getElements(vertexFormat)) {
|
for (VertexFormatElement element : getElements(vertexFormat)) {
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
|
|||||||
@@ -18,13 +18,13 @@ import com.mojang.blaze3d.platform.GLX;
|
|||||||
import net.minecraft.client.render.chunk.ChunkRenderData;
|
import net.minecraft.client.render.chunk.ChunkRenderData;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||||
import net.minecraft.client.render.VertexFormats;
|
import net.minecraft.client.render.VertexFormats;
|
||||||
import net.minecraft.client.gl.GlBuffer;
|
import net.minecraft.client.gl.VertexBuffer;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
import org.lwjgl.opengl.GL15;
|
import org.lwjgl.opengl.GL15;
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.block.BlockRenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.util.BlockPos;
|
//$$ import net.minecraft.util.BlockPos;
|
||||||
@@ -42,8 +42,8 @@ import java.util.Map;
|
|||||||
public class ChunkExporter implements Exporter {
|
public class ChunkExporter implements Exporter {
|
||||||
private final Map<BlockPos, DObject> chunkObjects = new HashMap<>();
|
private final Map<BlockPos, DObject> chunkObjects = new HashMap<>();
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
private final Map<BlockPos, Map<BlockRenderLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
private final Map<BlockPos, Map<RenderLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
||||||
private final List<Pair<ChunkRenderer, BlockRenderLayer>> chunks = new ArrayList<>();
|
private final List<Pair<ChunkRenderer, RenderLayer>> chunks = new ArrayList<>();
|
||||||
//#else
|
//#else
|
||||||
//$$ private final Map<BlockPos, Map<EnumWorldBlockLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
//$$ private final Map<BlockPos, Map<EnumWorldBlockLayer, DObject>> chunkLayerObjects = new HashMap<>();
|
||||||
//$$ private final List<Pair<RenderChunk, EnumWorldBlockLayer>> chunks = new ArrayList<>();
|
//$$ private final List<Pair<RenderChunk, EnumWorldBlockLayer>> chunks = new ArrayList<>();
|
||||||
@@ -53,7 +53,7 @@ public class ChunkExporter implements Exporter {
|
|||||||
|
|
||||||
public void addChunkUpdate(ChunkRenderer chunk, ChunkRenderData compiledChunk) {
|
public void addChunkUpdate(ChunkRenderer chunk, ChunkRenderData compiledChunk) {
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
|
for (RenderLayer layer : RenderLayer.values()) {
|
||||||
//#else
|
//#else
|
||||||
//$$ for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
|
//$$ for (EnumWorldBlockLayer layer : EnumWorldBlockLayer.values()) {
|
||||||
//#endif
|
//#endif
|
||||||
@@ -98,8 +98,8 @@ public class ChunkExporter implements Exporter {
|
|||||||
@Override
|
@Override
|
||||||
public void postFrame(int frame) throws IOException {
|
public void postFrame(int frame) throws IOException {
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
for (Pair<ChunkRenderer, BlockRenderLayer> pair : chunks) {
|
for (Pair<ChunkRenderer, RenderLayer> pair : chunks) {
|
||||||
BlockRenderLayer layer = pair.getRight();
|
RenderLayer layer = pair.getRight();
|
||||||
//#else
|
//#else
|
||||||
//$$ for (Pair<RenderChunk, EnumWorldBlockLayer> pair : chunks) {
|
//$$ for (Pair<RenderChunk, EnumWorldBlockLayer> pair : chunks) {
|
||||||
//$$ EnumWorldBlockLayer layer = pair.getRight();
|
//$$ EnumWorldBlockLayer layer = pair.getRight();
|
||||||
@@ -114,7 +114,7 @@ public class ChunkExporter implements Exporter {
|
|||||||
DObject layerObject = buildChunkLayerObject(chunkObject, chunk, layer);
|
DObject layerObject = buildChunkLayerObject(chunkObject, chunk, layer);
|
||||||
if (layerObject == null) continue;
|
if (layerObject == null) continue;
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
Map<BlockRenderLayer, DObject> layerObjects
|
Map<RenderLayer, DObject> layerObjects
|
||||||
//#else
|
//#else
|
||||||
//$$ Map<EnumWorldBlockLayer, DObject> layerObjects
|
//$$ Map<EnumWorldBlockLayer, DObject> layerObjects
|
||||||
//#endif
|
//#endif
|
||||||
@@ -145,11 +145,11 @@ public class ChunkExporter implements Exporter {
|
|||||||
|
|
||||||
private DObject buildChunkLayerObject(DObject chunkObject, ChunkRenderer renderChunk,
|
private DObject buildChunkLayerObject(DObject chunkObject, ChunkRenderer renderChunk,
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
BlockRenderLayer layer) {
|
RenderLayer layer) {
|
||||||
//#else
|
//#else
|
||||||
//$$ EnumWorldBlockLayer layer) {
|
//$$ EnumWorldBlockLayer layer) {
|
||||||
//#endif
|
//#endif
|
||||||
GlBuffer vertexBuffer = renderChunk.getGlBuffer(layer.ordinal());
|
VertexBuffer vertexBuffer = renderChunk.getGlBuffer(layer.ordinal());
|
||||||
if (vertexBuffer == null) return null;
|
if (vertexBuffer == null) return null;
|
||||||
|
|
||||||
DObject layerObject = new DObject(buildChunkLayerMesh(vertexBuffer));
|
DObject layerObject = new DObject(buildChunkLayerMesh(vertexBuffer));
|
||||||
@@ -158,7 +158,7 @@ public class ChunkExporter implements Exporter {
|
|||||||
return layerObject;
|
return layerObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DMesh buildChunkLayerMesh(GlBuffer vertexBuffer) {
|
private DMesh buildChunkLayerMesh(VertexBuffer vertexBuffer) {
|
||||||
vertexBuffer.bind();
|
vertexBuffer.bind();
|
||||||
int size = GL15.glGetBufferParameteri(GLX.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
|
int size = GL15.glGetBufferParameteri(GLX.GL_ARRAY_BUFFER, GL15.GL_BUFFER_SIZE);
|
||||||
ByteBuffer byteBuffer = GlAllocationUtils.allocateByteBuffer(size);
|
ByteBuffer byteBuffer = GlAllocationUtils.allocateByteBuffer(size);
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class ItemExporter implements Exporter {
|
|||||||
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
||||||
builder.setWellBehaved(true);
|
builder.setWellBehaved(true);
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
builder.begin(GL11.GL_QUADS, VertexFormats.POSITION_COLOR_UV_NORMAL);
|
builder.begin(GL11.GL_QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL);
|
||||||
//#else
|
//#else
|
||||||
//$$ builder.startDrawingQuads();
|
//$$ builder.startDrawingQuads();
|
||||||
//$$ builder.setVertexFormat(DefaultVertexFormats.ITEM);
|
//$$ builder.setVertexFormat(DefaultVertexFormats.ITEM);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.lwjgl.opengl.GL11;
|
|||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.client.model.Box;
|
import net.minecraft.client.model.Box;
|
||||||
import net.minecraft.client.model.Cuboid;
|
import net.minecraft.client.model.ModelPart;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.model.ModelBox;
|
//$$ import net.minecraft.client.model.ModelBox;
|
||||||
//$$ import net.minecraft.client.model.ModelRenderer;
|
//$$ import net.minecraft.client.model.ModelRenderer;
|
||||||
@@ -31,7 +31,7 @@ public class ModelRendererExporter implements Exporter {
|
|||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void preRenderModel(Cuboid model, float scale) {
|
public void preRenderModel(ModelPart model, float scale) {
|
||||||
DObject object = getObjectForModel(model, scale);
|
DObject object = getObjectForModel(model, scale);
|
||||||
renderState.pushObject(object);
|
renderState.pushObject(object);
|
||||||
renderState.pushModelView();
|
renderState.pushModelView();
|
||||||
@@ -53,7 +53,7 @@ public class ModelRendererExporter implements Exporter {
|
|||||||
renderState.pop();
|
renderState.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DObject getObjectForModel(Cuboid model, float scale) {
|
private DObject getObjectForModel(ModelPart model, float scale) {
|
||||||
int frame = renderState.getFrame();
|
int frame = renderState.getFrame();
|
||||||
DObject parent = renderState.peekObject();
|
DObject parent = renderState.peekObject();
|
||||||
DObject object = null;
|
DObject object = null;
|
||||||
@@ -78,7 +78,7 @@ public class ModelRendererExporter implements Exporter {
|
|||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DMesh generateMesh(Cuboid model, float scale) {
|
private static DMesh generateMesh(ModelPart model, float scale) {
|
||||||
DMesh mesh = new DMesh();
|
DMesh mesh = new DMesh();
|
||||||
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
BlendMeshBuilder builder = new BlendMeshBuilder(mesh);
|
||||||
for (Box box : cubeList(model)) {
|
for (Box box : cubeList(model)) {
|
||||||
@@ -93,17 +93,17 @@ public class ModelRendererExporter implements Exporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static class ModelBasedDObject extends DObject {
|
private static class ModelBasedDObject extends DObject {
|
||||||
private final Cuboid model;
|
private final ModelPart model;
|
||||||
private final float scale;
|
private final float scale;
|
||||||
private boolean valid;
|
private boolean valid;
|
||||||
|
|
||||||
public ModelBasedDObject(Cuboid model, float scale) {
|
public ModelBasedDObject(ModelPart model, float scale) {
|
||||||
super(generateMesh(model, scale));
|
super(generateMesh(model, scale));
|
||||||
this.model = model;
|
this.model = model;
|
||||||
this.scale = scale;
|
this.scale = scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBasedOn(Cuboid model, float scale) {
|
public boolean isBasedOn(ModelPart model, float scale) {
|
||||||
return this.model == model && Math.abs(this.scale - scale) < 1e-4;
|
return this.model == model && Math.abs(this.scale - scale) < 1e-4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public class ParticlesExporter implements Exporter {
|
|||||||
builder.setReverseOffset(offset);
|
builder.setReverseOffset(offset);
|
||||||
builder.setWellBehaved(true);
|
builder.setWellBehaved(true);
|
||||||
//#if MC>=10809
|
//#if MC>=10809
|
||||||
builder.begin(7, VertexFormats.POSITION_UV_COLOR_LMAP);
|
builder.begin(7, VertexFormats.POSITION_TEXTURE_COLOR_LIGHT);
|
||||||
//#else
|
//#else
|
||||||
//$$ builder.startDrawingQuads();
|
//$$ builder.startDrawingQuads();
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -5,15 +5,7 @@ import net.minecraft.client.render.chunk.ChunkRenderer;
|
|||||||
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>=11400
|
|
||||||
@Mixin(targets = "net.minecraft.client.render.WorldRenderer$ChunkInfo")
|
@Mixin(targets = "net.minecraft.client.render.WorldRenderer$ChunkInfo")
|
||||||
//#else
|
|
||||||
//#if MC>=11400
|
|
||||||
//$$ @Mixin(targets = "net/minecraft/client/renderer/WorldRenderer$ContainerLocalRenderInformation")
|
|
||||||
//#else
|
|
||||||
//$$ @Mixin(targets = "net/minecraft/client/renderer/RenderGlobal$ContainerLocalRenderInformation")
|
|
||||||
//#endif
|
|
||||||
//#endif
|
|
||||||
public interface ContainerLocalRenderInformationAccessor {
|
public interface ContainerLocalRenderInformationAccessor {
|
||||||
//#if MC>=11500
|
//#if MC>=11500
|
||||||
//$$ @Accessor("chunk")
|
//$$ @Accessor("chunk")
|
||||||
|
|||||||
@@ -10,18 +10,18 @@ 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>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.client.model.Cuboid;
|
import net.minecraft.client.model.ModelPart;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.model.ModelRenderer;
|
//$$ import net.minecraft.client.model.ModelRenderer;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(Cuboid.class)
|
@Mixin(ModelPart.class)
|
||||||
public abstract class MixinModelRenderer {
|
public abstract class MixinModelRenderer {
|
||||||
@Inject(method = "render", at = @At("HEAD"))
|
@Inject(method = "render", at = @At("HEAD"))
|
||||||
public void preRender(float scale, CallbackInfo ci) {
|
public void preRender(float scale, CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
blendState.get(ModelRendererExporter.class).preRenderModel((Cuboid)(Object)this, scale);
|
blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ public abstract class MixinModelRenderer {
|
|||||||
public void preRenderWithRotation(float scale, CallbackInfo ci) {
|
public void preRenderWithRotation(float scale, CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
blendState.get(ModelRendererExporter.class).preRenderModel((Cuboid)(Object)this, scale);
|
blendState.get(ModelRendererExporter.class).preRenderModel((ModelPart)(Object)this, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,10 +21,14 @@ import net.minecraft.client.render.entity.LivingEntityRenderer;
|
|||||||
//$$ @Mixin(RendererLivingEntity.class)
|
//$$ @Mixin(RendererLivingEntity.class)
|
||||||
//#endif
|
//#endif
|
||||||
public abstract class MixinRenderLivingBase {
|
public abstract class MixinRenderLivingBase {
|
||||||
|
//#if MC>=11500
|
||||||
|
//$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(
|
||||||
|
//#else
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
@Inject(method = "method_4054", at = @At(
|
@Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
|
||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "doRender(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
|
//$$ @Inject(method = "doRender(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At(
|
||||||
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
value = "INVOKE",
|
value = "INVOKE",
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
@@ -34,7 +38,7 @@ public abstract class MixinRenderLivingBase {
|
|||||||
//#endif
|
//#endif
|
||||||
shift = At.Shift.AFTER
|
shift = At.Shift.AFTER
|
||||||
))
|
))
|
||||||
private void recordModelMatrix(LivingEntity entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
|
private void recordModelMatrix(CallbackInfo ci) {
|
||||||
BlendState blendState = BlendState.getState();
|
BlendState blendState = BlendState.getState();
|
||||||
if (blendState != null) {
|
if (blendState != null) {
|
||||||
blendState.get(EntityExporter.class).postEntityLivingSetup();
|
blendState.get(EntityExporter.class).postEntityLivingSetup();
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
|||||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||||
import de.johni0702.minecraft.gui.utils.lwjgl.WritableDimension;
|
import de.johni0702.minecraft.gui.utils.lwjgl.WritableDimension;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gl.GlFramebuffer;
|
import net.minecraft.client.gl.Framebuffer;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
import org.lwjgl.opengl.GL12;
|
import org.lwjgl.opengl.GL12;
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
|||||||
protected final WorldRenderer worldRenderer;
|
protected final WorldRenderer worldRenderer;
|
||||||
protected final RenderInfo renderInfo;
|
protected final RenderInfo renderInfo;
|
||||||
protected int framesDone;
|
protected int framesDone;
|
||||||
private GlFramebuffer frameBuffer;
|
private Framebuffer frameBuffer;
|
||||||
|
|
||||||
private final MinecraftClient mc = MCVer.getMinecraft();
|
private final MinecraftClient mc = MCVer.getMinecraft();
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
|||||||
return renderInfo.getFrameSize().getHeight();
|
return renderInfo.getFrameSize().getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GlFramebuffer frameBuffer() {
|
protected Framebuffer frameBuffer() {
|
||||||
if (frameBuffer == null) {
|
if (frameBuffer == null) {
|
||||||
frameBuffer = mc.getFramebuffer();
|
frameBuffer = mc.getFramebuffer();
|
||||||
}
|
}
|
||||||
@@ -117,8 +117,8 @@ public abstract class OpenGlFrameCapturer<F extends Frame, D extends CaptureData
|
|||||||
|
|
||||||
protected void resize(int width, int height) {
|
protected void resize(int width, int height) {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
GlFramebuffer fb = mc.getFramebuffer();
|
Framebuffer fb = mc.getFramebuffer();
|
||||||
if (fb.viewWidth != width || fb.viewHeight != height) {
|
if (fb.viewportWidth != width || fb.viewportHeight != height) {
|
||||||
fb.resize(width, height
|
fb.resize(width, height
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
, false
|
, false
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ public class GuiVideoRenderer extends GuiScreen implements Tickable {
|
|||||||
buffer.get(); // alpha
|
buffer.get(); // alpha
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
int value = 0xff << 24 | b << 16 | g << 8 | r;
|
int value = 0xff << 24 | b << 16 | g << 8 | r;
|
||||||
data.setPixelRGBA(x, y, value); // actually takes ABGR, not RGBA
|
data.setPixelRgba(x, y, value); // actually takes ABGR, not RGBA
|
||||||
//#else
|
//#else
|
||||||
//$$ int value = 0xff << 24 | r << 16 | g << 8 | b;
|
//$$ int value = 0xff << 24 | r << 16 | g << 8 | b;
|
||||||
//$$ data[y * width + x] = value;
|
//$$ data[y * width + x] = value;
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ package com.replaymod.render.hooks;
|
|||||||
import com.replaymod.render.mixin.ChunkRenderDispatcherAccessor;
|
import com.replaymod.render.mixin.ChunkRenderDispatcherAccessor;
|
||||||
import com.replaymod.render.mixin.WorldRendererAccessor;
|
import com.replaymod.render.mixin.WorldRendererAccessor;
|
||||||
import com.replaymod.render.utils.JailingQueue;
|
import com.replaymod.render.utils.JailingQueue;
|
||||||
import net.minecraft.client.render.chunk.BlockLayeredBufferBuilder;
|
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
|
||||||
import net.minecraft.client.render.WorldRenderer;
|
import net.minecraft.client.render.WorldRenderer;
|
||||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
import net.minecraft.client.render.chunk.ChunkBuilder;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||||
@@ -30,7 +30,7 @@ public class ChunkLoadingRenderGlobal {
|
|||||||
//#else
|
//#else
|
||||||
//$$ private final RenderGlobal hooked;
|
//$$ private final RenderGlobal hooked;
|
||||||
//#endif
|
//#endif
|
||||||
private ChunkBatcher renderDispatcher;
|
private ChunkBuilder renderDispatcher;
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
private JailingQueue<ChunkRenderTask> workerJailingQueue;
|
private JailingQueue<ChunkRenderTask> workerJailingQueue;
|
||||||
//#else
|
//#else
|
||||||
@@ -52,7 +52,7 @@ public class ChunkLoadingRenderGlobal {
|
|||||||
setup(((WorldRendererAccessor) renderGlobal).getRenderDispatcher());
|
setup(((WorldRendererAccessor) renderGlobal).getRenderDispatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateRenderDispatcher(ChunkBatcher renderDispatcher) {
|
public void updateRenderDispatcher(ChunkBuilder renderDispatcher) {
|
||||||
if (this.renderDispatcher != null) {
|
if (this.renderDispatcher != null) {
|
||||||
workerJailingQueue.freeAll();
|
workerJailingQueue.freeAll();
|
||||||
this.renderDispatcher = null;
|
this.renderDispatcher = null;
|
||||||
@@ -62,9 +62,9 @@ public class ChunkLoadingRenderGlobal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setup(ChunkBatcher renderDispatcher) {
|
private void setup(ChunkBuilder renderDispatcher) {
|
||||||
this.renderDispatcher = renderDispatcher;
|
this.renderDispatcher = renderDispatcher;
|
||||||
this.renderWorker = (ChunkRenderWorkerAccessor) new ChunkRenderWorker(renderDispatcher, new BlockLayeredBufferBuilder());
|
this.renderWorker = (ChunkRenderWorkerAccessor) new ChunkRenderWorker(renderDispatcher, new BlockBufferBuilderStorage());
|
||||||
ChunkRenderDispatcherAccessor renderDispatcherAcc = (ChunkRenderDispatcherAccessor) renderDispatcher;
|
ChunkRenderDispatcherAccessor renderDispatcherAcc = (ChunkRenderDispatcherAccessor) renderDispatcher;
|
||||||
|
|
||||||
int workerThreads = renderDispatcherAcc.getListThreadedWorkers().size();
|
int workerThreads = renderDispatcherAcc.getListThreadedWorkers().size();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//#if MC>=10800 && MC<11500
|
//#if MC>=10800 && MC<11500
|
||||||
package com.replaymod.render.mixin;
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
import net.minecraft.client.render.chunk.ChunkBuilder;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
import net.minecraft.client.render.chunk.ChunkRenderTask;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
import net.minecraft.client.render.chunk.ChunkRenderWorker;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -14,7 +14,7 @@ import java.util.concurrent.PriorityBlockingQueue;
|
|||||||
//$$ import java.util.concurrent.BlockingQueue;
|
//$$ import java.util.concurrent.BlockingQueue;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@Mixin(ChunkBatcher.class)
|
@Mixin(ChunkBuilder.class)
|
||||||
public interface ChunkRenderDispatcherAccessor {
|
public interface ChunkRenderDispatcherAccessor {
|
||||||
@Accessor("workers")
|
@Accessor("workers")
|
||||||
List<ChunkRenderWorker> getListThreadedWorkers();
|
List<ChunkRenderWorker> getListThreadedWorkers();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
package com.replaymod.render.mixin;
|
package com.replaymod.render.mixin;
|
||||||
|
|
||||||
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
|
import com.replaymod.render.hooks.ChunkLoadingRenderGlobal;
|
||||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
import net.minecraft.client.render.chunk.ChunkBuilder;
|
||||||
import net.minecraft.client.render.VisibleRegion;
|
import net.minecraft.client.render.VisibleRegion;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
@@ -37,10 +37,10 @@ public abstract class MixinRenderGlobal {
|
|||||||
private boolean replayModRender_passThroughSetupTerrain;
|
private boolean replayModRender_passThroughSetupTerrain;
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public boolean terrainUpdateNecessary;
|
public boolean needsTerrainUpdate;
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public ChunkBatcher chunkBatcher;
|
public ChunkBuilder chunkBuilder;
|
||||||
|
|
||||||
@Shadow
|
@Shadow
|
||||||
public abstract void setUpTerrain(
|
public abstract void setUpTerrain(
|
||||||
@@ -90,9 +90,9 @@ public abstract class MixinRenderGlobal {
|
|||||||
playerSpectator
|
playerSpectator
|
||||||
);
|
);
|
||||||
replayModRender_hook.updateChunks();
|
replayModRender_hook.updateChunks();
|
||||||
} while (this.terrainUpdateNecessary);
|
} while (this.needsTerrainUpdate);
|
||||||
|
|
||||||
this.terrainUpdateNecessary = true;
|
this.needsTerrainUpdate = true;
|
||||||
|
|
||||||
replayModRender_passThroughSetupTerrain = false;
|
replayModRender_passThroughSetupTerrain = false;
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
@@ -118,7 +118,7 @@ public abstract class MixinRenderGlobal {
|
|||||||
|
|
||||||
// Prior to 1.9.4, MC always uses the same ChunkRenderDispatcher instance
|
// Prior to 1.9.4, MC always uses the same ChunkRenderDispatcher instance
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
@Inject(method = "setWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/chunk/ChunkBatcher;stop()V"))
|
@Inject(method = "setWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/chunk/ChunkBuilder;stop()V"))
|
||||||
private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) {
|
private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) {
|
||||||
if (replayModRender_hook != null) {
|
if (replayModRender_hook != null) {
|
||||||
replayModRender_hook.updateRenderDispatcher(null);
|
replayModRender_hook.updateRenderDispatcher(null);
|
||||||
@@ -129,7 +129,7 @@ public abstract class MixinRenderGlobal {
|
|||||||
@Inject(method = "reload", at = @At(value = "RETURN"))
|
@Inject(method = "reload", at = @At(value = "RETURN"))
|
||||||
private void setupChunkLoadingRenderGlobal(CallbackInfo ci) {
|
private void setupChunkLoadingRenderGlobal(CallbackInfo ci) {
|
||||||
if (replayModRender_hook != null) {
|
if (replayModRender_hook != null) {
|
||||||
replayModRender_hook.updateRenderDispatcher(this.chunkBatcher);
|
replayModRender_hook.updateRenderDispatcher(this.chunkBuilder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.gen.Accessor;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraft.client.render.chunk.ChunkBatcher;
|
import net.minecraft.client.render.chunk.ChunkBuilder;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
@@ -18,13 +18,13 @@ public interface WorldRendererAccessor {
|
|||||||
void setRenderEntitiesStartupCounter(int value);
|
void setRenderEntitiesStartupCounter(int value);
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
@Accessor("chunkBatcher")
|
@Accessor("chunkBuilder")
|
||||||
ChunkBatcher getRenderDispatcher();
|
ChunkBuilder getRenderDispatcher();
|
||||||
|
|
||||||
@Accessor("terrainUpdateNecessary")
|
@Accessor("needsTerrainUpdate")
|
||||||
void setDisplayListEntitiesDirty(boolean value);
|
void setDisplayListEntitiesDirty(boolean value);
|
||||||
|
|
||||||
@Accessor("chunkRenderers")
|
@Accessor("chunksToRebuild")
|
||||||
Set<ChunkRenderer> getChunksToUpdate();
|
Set<ChunkRenderer> getChunksToUpdate();
|
||||||
//#endif
|
//#endif
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
|
|||||||
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import com.mojang.blaze3d.platform.GLX;
|
import com.mojang.blaze3d.platform.GLX;
|
||||||
import net.minecraft.client.gl.GlFramebuffer;
|
import net.minecraft.client.gl.Framebuffer;
|
||||||
import net.minecraft.util.crash.CrashException;
|
import net.minecraft.util.crash.CrashException;
|
||||||
import net.minecraft.sound.SoundCategory;
|
import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.client.render.RenderTickCounter;
|
import net.minecraft.client.render.RenderTickCounter;
|
||||||
@@ -103,7 +103,7 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
private volatile Throwable failureCause;
|
private volatile Throwable failureCause;
|
||||||
|
|
||||||
private GlFramebuffer guiFramebuffer;
|
private Framebuffer guiFramebuffer;
|
||||||
private int displayWidth, displayHeight;
|
private int displayWidth, displayHeight;
|
||||||
|
|
||||||
public VideoRenderer(RenderSettings settings, ReplayHandler replayHandler, Timeline timeline) throws IOException {
|
public VideoRenderer(RenderSettings settings, ReplayHandler replayHandler, Timeline timeline) throws IOException {
|
||||||
@@ -319,7 +319,7 @@ public class VideoRenderer implements RenderInfo {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
// Set up our own framebuffer to render the GUI to
|
// Set up our own framebuffer to render the GUI to
|
||||||
guiFramebuffer = new GlFramebuffer(displayWidth, displayHeight, true
|
guiFramebuffer = new Framebuffer(displayWidth, displayHeight, true
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
, false
|
, false
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -27,31 +27,31 @@ import net.minecraft.entity.player.PlayerEntity;
|
|||||||
import net.minecraft.network.NetworkState;
|
import net.minecraft.network.NetworkState;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.util.PacketByteBuf;
|
import net.minecraft.util.PacketByteBuf;
|
||||||
import net.minecraft.client.network.packet.ChatMessageS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket;
|
||||||
import net.minecraft.client.network.packet.CustomPayloadS2CPacket;
|
import net.minecraft.network.packet.s2c.play.CustomPayloadS2CPacket;
|
||||||
import net.minecraft.client.network.packet.DisconnectS2CPacket;
|
import net.minecraft.network.packet.s2c.play.DisconnectS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntitiesDestroyS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntitySpawnGlobalS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntitySpawnGlobalS2CPacket;
|
||||||
import net.minecraft.client.network.packet.EntitySpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.ExperienceBarUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ExperienceBarUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.ExperienceOrbSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ExperienceOrbSpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GameJoinS2CPacket;
|
import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GameStateChangeS2CPacket;
|
import net.minecraft.network.packet.s2c.play.GameStateChangeS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GuiCloseS2CPacket;
|
import net.minecraft.network.packet.s2c.play.CloseContainerS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GuiOpenS2CPacket;
|
import net.minecraft.network.packet.s2c.play.OpenHorseContainerS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GuiSlotUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ContainerSlotUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.GuiUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ContainerPropertyUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.HealthUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.HealthUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.LoginSuccessS2CPacket;
|
import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket;
|
||||||
import net.minecraft.client.network.packet.MobSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PaintingSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PaintingSpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.ParticleS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ParticleS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerAbilitiesS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerAbilitiesS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerPositionLookS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerRespawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerSpawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerSpawnS2CPacket;
|
||||||
import net.minecraft.client.network.packet.SignEditorOpenS2CPacket;
|
import net.minecraft.network.packet.s2c.play.SignEditorOpenS2CPacket;
|
||||||
import net.minecraft.client.network.packet.StatisticsS2CPacket;
|
import net.minecraft.network.packet.s2c.play.StatisticsS2CPacket;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.chunk.ChunkProvider;
|
import net.minecraft.world.chunk.ChunkProvider;
|
||||||
@@ -66,9 +66,9 @@ import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.class_4463;
|
import net.minecraft.network.packet.s2c.play.PlayerActionResponseS2CPacket;
|
||||||
import net.minecraft.client.network.packet.OpenContainerPacket;
|
import net.minecraft.network.packet.s2c.play.OpenContainerS2CPacket;
|
||||||
import net.minecraft.client.network.packet.OpenWrittenBookS2CPacket;
|
import net.minecraft.network.packet.s2c.play.OpenWrittenBookS2CPacket;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.text.TranslatableText;
|
import net.minecraft.text.TranslatableText;
|
||||||
//#else
|
//#else
|
||||||
@@ -92,9 +92,9 @@ import net.minecraft.util.Identifier;
|
|||||||
|
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
import com.replaymod.core.utils.WrappedTimer;
|
import com.replaymod.core.utils.WrappedTimer;
|
||||||
import net.minecraft.client.network.packet.AdvancementUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.AdvancementUpdateS2CPacket;
|
||||||
import net.minecraft.client.network.packet.SelectAdvancementTabS2CPacket;
|
import net.minecraft.network.packet.s2c.play.SelectAdvancementTabS2CPacket;
|
||||||
import net.minecraft.client.network.packet.SynchronizeRecipesS2CPacket;
|
import net.minecraft.network.packet.s2c.play.SynchronizeRecipesS2CPacket;
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11002
|
//#if MC>=11002
|
||||||
import net.minecraft.world.GameMode;
|
import net.minecraft.world.GameMode;
|
||||||
@@ -103,15 +103,15 @@ import net.minecraft.world.GameMode;
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
import net.minecraft.client.network.packet.UnloadChunkS2CPacket;
|
import net.minecraft.network.packet.s2c.play.UnloadChunkS2CPacket;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.network.play.server.S21PacketChunkData;
|
//$$ import net.minecraft.network.play.server.S21PacketChunkData;
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
import net.minecraft.client.network.packet.ResourcePackSendS2CPacket;
|
import net.minecraft.network.packet.s2c.play.ResourcePackSendS2CPacket;
|
||||||
import net.minecraft.client.network.packet.SetCameraEntityS2CPacket;
|
import net.minecraft.network.packet.s2c.play.SetCameraEntityS2CPacket;
|
||||||
import net.minecraft.client.network.packet.TitleS2CPacket;
|
import net.minecraft.network.packet.s2c.play.TitleS2CPacket;
|
||||||
import net.minecraft.network.NetworkSide;
|
import net.minecraft.network.NetworkSide;
|
||||||
//#else
|
//#else
|
||||||
//$$ import org.apache.commons.io.Charsets;
|
//$$ import org.apache.commons.io.Charsets;
|
||||||
@@ -137,11 +137,11 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
*/
|
*/
|
||||||
private static final List<Class> BAD_PACKETS = Arrays.<Class>asList(
|
private static final List<Class> BAD_PACKETS = Arrays.<Class>asList(
|
||||||
//#if MC>=11404
|
//#if MC>=11404
|
||||||
class_4463.class, // PlayerActionAckPacket
|
PlayerActionResponseS2CPacket.class,
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
OpenWrittenBookS2CPacket.class,
|
OpenWrittenBookS2CPacket.class,
|
||||||
OpenContainerPacket.class,
|
OpenContainerS2CPacket.class,
|
||||||
//#endif
|
//#endif
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
SynchronizeRecipesS2CPacket.class,
|
SynchronizeRecipesS2CPacket.class,
|
||||||
@@ -153,10 +153,10 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
|||||||
TitleS2CPacket.class,
|
TitleS2CPacket.class,
|
||||||
//#endif
|
//#endif
|
||||||
HealthUpdateS2CPacket.class,
|
HealthUpdateS2CPacket.class,
|
||||||
GuiOpenS2CPacket.class,
|
OpenHorseContainerS2CPacket.class,
|
||||||
GuiCloseS2CPacket.class,
|
CloseContainerS2CPacket.class,
|
||||||
GuiSlotUpdateS2CPacket.class,
|
ContainerSlotUpdateS2CPacket.class,
|
||||||
GuiUpdateS2CPacket.class,
|
ContainerPropertyUpdateS2CPacket.class,
|
||||||
SignEditorOpenS2CPacket.class,
|
SignEditorOpenS2CPacket.class,
|
||||||
StatisticsS2CPacket.class,
|
StatisticsS2CPacket.class,
|
||||||
ExperienceBarUpdateS2CPacket.class,
|
ExperienceBarUpdateS2CPacket.class,
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class InputReplayTimer extends WrappedTimer {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
ReplayMod.instance.executor.executeTaskQueue();
|
ReplayMod.instance.executor.runTasks();
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
// If we are in a replay, we have to manually process key and mouse events as the
|
// If we are in a replay, we have to manually process key and mouse events as the
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import io.netty.channel.ChannelHandler;
|
|||||||
import io.netty.channel.ChannelHandlerAdapter;
|
import io.netty.channel.ChannelHandlerAdapter;
|
||||||
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelHandlerContext;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.packet.PlayerPositionLookS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket;
|
||||||
import net.minecraft.client.network.packet.PlayerRespawnS2CPacket;
|
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
|
||||||
import net.minecraft.network.NetworkState;
|
import net.minecraft.network.NetworkState;
|
||||||
import net.minecraft.network.NetworkSide;
|
import net.minecraft.network.NetworkSide;
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
|
|||||||
14
src/main/java/com/replaymod/replay/ReplayHandler.java
Executable file → Normal file
14
src/main/java/com/replaymod/replay/ReplayHandler.java
Executable file → Normal file
@@ -538,9 +538,9 @@ public class ReplayHandler {
|
|||||||
// Update all entity positions (especially prev/lastTick values)
|
// Update all entity positions (especially prev/lastTick values)
|
||||||
for (Entity entity : loadedEntityList(mc.world)) {
|
for (Entity entity : loadedEntityList(mc.world)) {
|
||||||
skipTeleportInterpolation(entity);
|
skipTeleportInterpolation(entity);
|
||||||
entity.prevRenderX = entity.prevX = Entity_getX(entity);
|
entity.lastRenderX = entity.prevX = Entity_getX(entity);
|
||||||
entity.prevRenderY = entity.prevY = Entity_getY(entity);
|
entity.lastRenderY = entity.prevY = Entity_getY(entity);
|
||||||
entity.prevRenderZ = entity.prevZ = Entity_getZ(entity);
|
entity.lastRenderZ = entity.prevZ = Entity_getZ(entity);
|
||||||
entity.prevYaw = entity.yaw;
|
entity.prevYaw = entity.yaw;
|
||||||
entity.prevPitch = entity.pitch;
|
entity.prevPitch = entity.pitch;
|
||||||
}
|
}
|
||||||
@@ -694,9 +694,9 @@ public class ReplayHandler {
|
|||||||
//#endif
|
//#endif
|
||||||
for (Entity entity : loadedEntityList(mc.world)) {
|
for (Entity entity : loadedEntityList(mc.world)) {
|
||||||
skipTeleportInterpolation(entity);
|
skipTeleportInterpolation(entity);
|
||||||
entity.prevRenderX = entity.prevX = Entity_getX(entity);
|
entity.lastRenderX = entity.prevX = Entity_getX(entity);
|
||||||
entity.prevRenderY = entity.prevY = Entity_getY(entity);
|
entity.lastRenderY = entity.prevY = Entity_getY(entity);
|
||||||
entity.prevRenderZ = entity.prevZ = Entity_getZ(entity);
|
entity.lastRenderZ = entity.prevZ = Entity_getZ(entity);
|
||||||
entity.prevYaw = entity.yaw;
|
entity.prevYaw = entity.yaw;
|
||||||
entity.prevPitch = entity.pitch;
|
entity.prevPitch = entity.pitch;
|
||||||
}
|
}
|
||||||
@@ -724,7 +724,7 @@ public class ReplayHandler {
|
|||||||
if (entity instanceof LivingEntity && !(entity instanceof CameraEntity)) {
|
if (entity instanceof LivingEntity && !(entity instanceof CameraEntity)) {
|
||||||
LivingEntity e = (LivingEntity) entity;
|
LivingEntity e = (LivingEntity) entity;
|
||||||
EntityLivingBaseAccessor ea = (EntityLivingBaseAccessor) e;
|
EntityLivingBaseAccessor ea = (EntityLivingBaseAccessor) e;
|
||||||
e.setPosition(ea.getInterpTargetX(), ea.getInterpTargetY(), ea.getInterpTargetZ());
|
e.updatePosition(ea.getInterpTargetX(), ea.getInterpTargetY(), ea.getInterpTargetZ());
|
||||||
e.yaw = (float) ea.getInterpTargetYaw();
|
e.yaw = (float) ea.getInterpTargetYaw();
|
||||||
e.pitch = (float) ea.getInterpTargetPitch();
|
e.pitch = (float) ea.getInterpTargetPitch();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,9 +179,9 @@ public class CameraEntity
|
|||||||
* @param z Z coordinate
|
* @param z Z coordinate
|
||||||
*/
|
*/
|
||||||
public void setCameraPosition(double x, double y, double z) {
|
public void setCameraPosition(double x, double y, double z) {
|
||||||
this.prevRenderX = this.prevX = x;
|
this.lastRenderX = this.prevX = x;
|
||||||
this.prevRenderY = this.prevY = y;
|
this.lastRenderY = this.prevY = y;
|
||||||
this.prevRenderZ = this.prevZ = z;
|
this.lastRenderZ = this.prevZ = z;
|
||||||
Entity_setPos(this, x, y, z);
|
Entity_setPos(this, x, y, z);
|
||||||
updateBoundingBox();
|
updateBoundingBox();
|
||||||
}
|
}
|
||||||
@@ -226,9 +226,9 @@ public class CameraEntity
|
|||||||
Entity_setPos(this, Entity_getX(to), Entity_getY(to), Entity_getZ(to));
|
Entity_setPos(this, Entity_getX(to), Entity_getY(to), Entity_getZ(to));
|
||||||
this.yaw = to.yaw;
|
this.yaw = to.yaw;
|
||||||
this.pitch = to.pitch;
|
this.pitch = to.pitch;
|
||||||
this.prevRenderX = to.prevRenderX;
|
this.lastRenderX = to.lastRenderX;
|
||||||
this.prevRenderY = to.prevRenderY + yOffset;
|
this.lastRenderY = to.lastRenderY + yOffset;
|
||||||
this.prevRenderZ = to.prevRenderZ;
|
this.lastRenderZ = to.lastRenderZ;
|
||||||
updateBoundingBox();
|
updateBoundingBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,7 +375,7 @@ public class CameraEntity
|
|||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldRenderFrom(double double_1, double double_2, double double_3) {
|
public boolean shouldRender(double double_1, double double_2, double double_3) {
|
||||||
return false; // never render the camera otherwise it'd be visible e.g. in 3rd-person or with shaders
|
return false; // never render the camera otherwise it'd be visible e.g. in 3rd-person or with shaders
|
||||||
}
|
}
|
||||||
//#else
|
//#else
|
||||||
|
|||||||
@@ -57,9 +57,9 @@ public class SpectatorCameraController implements CameraController {
|
|||||||
if (view instanceof PlayerEntity) {
|
if (view instanceof PlayerEntity) {
|
||||||
PlayerEntity viewPlayer = (PlayerEntity) view;
|
PlayerEntity viewPlayer = (PlayerEntity) view;
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
camera.setEquippedStack(EquipmentSlot.HEAD, viewPlayer.getEquippedStack(EquipmentSlot.HEAD));
|
camera.equipStack(EquipmentSlot.HEAD, viewPlayer.getEquippedStack(EquipmentSlot.HEAD));
|
||||||
camera.setEquippedStack(EquipmentSlot.MAINHAND, viewPlayer.getEquippedStack(EquipmentSlot.MAINHAND));
|
camera.equipStack(EquipmentSlot.MAINHAND, viewPlayer.getEquippedStack(EquipmentSlot.MAINHAND));
|
||||||
camera.setEquippedStack(EquipmentSlot.OFFHAND, viewPlayer.getEquippedStack(EquipmentSlot.OFFHAND));
|
camera.equipStack(EquipmentSlot.OFFHAND, viewPlayer.getEquippedStack(EquipmentSlot.OFFHAND));
|
||||||
//#else
|
//#else
|
||||||
//$$ camera.inventory = viewPlayer.inventory;
|
//$$ camera.inventory = viewPlayer.inventory;
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.replaymod.replay.mixin;
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.render.FirstPersonRenderer;
|
import net.minecraft.client.render.item.HeldItemRenderer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
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;
|
||||||
|
|
||||||
@Mixin(FirstPersonRenderer.class)
|
@Mixin(HeldItemRenderer.class)
|
||||||
public interface FirstPersonRendererAccessor {
|
public interface FirstPersonRendererAccessor {
|
||||||
//#if MC>=10904
|
//#if MC>=10904
|
||||||
@Accessor("mainHand")
|
@Accessor("mainHand")
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public abstract class MixinKeyboardListener {
|
|||||||
at = @At(
|
at = @At(
|
||||||
value = "INVOKE",
|
value = "INVOKE",
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
target = "Lnet/minecraft/client/util/ScreenshotUtils;method_1659(Ljava/io/File;IILnet/minecraft/client/gl/GlFramebuffer;Ljava/util/function/Consumer;)V"
|
target = "Lnet/minecraft/client/util/ScreenshotUtils;method_1659(Ljava/io/File;IILnet/minecraft/client/gl/Framebuffer;Ljava/util/function/Consumer;)V"
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
//$$ target = "Lnet/minecraft/util/ScreenShotHelper;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;Ljava/util/function/Consumer;)V"
|
//$$ target = "Lnet/minecraft/util/ScreenShotHelper;saveScreenshot(Ljava/io/File;IILnet/minecraft/client/shader/Framebuffer;Ljava/util/function/Consumer;)V"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.Minecraft;
|
//$$ import net.minecraft.client.Minecraft;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -17,7 +17,7 @@ import net.minecraft.util.SystemUtil;
|
|||||||
public class MixinRenderItem {
|
public class MixinRenderItem {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@Redirect(method = "renderGlint", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/SystemUtil;getMeasuringTimeMs()J"))
|
@Redirect(method = "renderGlint", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
|
||||||
//#else
|
//#else
|
||||||
//$$ @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J"))
|
//$$ @Redirect(method = "renderEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;milliTime()J"))
|
||||||
//#endif
|
//#endif
|
||||||
@@ -31,7 +31,7 @@ public class MixinRenderItem {
|
|||||||
return replayHandler.getReplaySender().currentTimeStamp();
|
return replayHandler.getReplaySender().currentTimeStamp();
|
||||||
}
|
}
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
return SystemUtil.getMeasuringTimeMs();
|
return Util.getMeasuringTimeMs();
|
||||||
//#else
|
//#else
|
||||||
//$$ return Minecraft.getSystemTime();
|
//$$ return Minecraft.getSystemTime();
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import static com.replaymod.core.versions.MCVer.*;
|
|||||||
//#endif
|
//#endif
|
||||||
public abstract class MixinRenderLivingBase {
|
public abstract class MixinRenderLivingBase {
|
||||||
//#if FABRIC>=1
|
//#if FABRIC>=1
|
||||||
@Inject(method = "method_4055", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "hasLabel", at = @At("HEAD"), cancellable = true)
|
||||||
//#else
|
//#else
|
||||||
//$$ @Inject(method = "canRenderName(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
|
//$$ @Inject(method = "canRenderName(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("HEAD"), cancellable = true)
|
||||||
//#endif
|
//#endif
|
||||||
@@ -36,17 +36,17 @@ public abstract class MixinRenderLivingBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(
|
@Redirect(
|
||||||
method = "render",
|
method = "render(Lnet/minecraft/entity/LivingEntity;FFFFFF)V",
|
||||||
at = @At(
|
at = @At(
|
||||||
value = "INVOKE",
|
value = "INVOKE",
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
target = "Lnet/minecraft/entity/LivingEntity;canSeePlayer(Lnet/minecraft/entity/player/PlayerEntity;)Z"
|
target = "Lnet/minecraft/entity/LivingEntity;isInvisibleTo(Lnet/minecraft/entity/player/PlayerEntity;)Z"
|
||||||
//#else
|
//#else
|
||||||
//$$ target = "Lnet/minecraft/entity/EntityLivingBase;isInvisibleToPlayer(Lnet/minecraft/entity/player/EntityPlayer;)Z"
|
//$$ target = "Lnet/minecraft/entity/EntityLivingBase;isInvisibleToPlayer(Lnet/minecraft/entity/player/EntityPlayer;)Z"
|
||||||
//#endif
|
//#endif
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
private boolean replayModReplay_shouldInvisibleNotBeRendered(LivingEntity entity, PlayerEntity thePlayer) {
|
private boolean replayModReplay_shouldInvisibleNotBeRendered(LivingEntity entity, PlayerEntity thePlayer) {
|
||||||
return thePlayer instanceof CameraEntity || entity.canSeePlayer(thePlayer);
|
return thePlayer instanceof CameraEntity || entity.isInvisibleTo(thePlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
import net.minecraft.util.SystemUtil;
|
import net.minecraft.util.Util;
|
||||||
//#else
|
//#else
|
||||||
//$$ import net.minecraft.client.Minecraft;
|
//$$ import net.minecraft.client.Minecraft;
|
||||||
//#endif
|
//#endif
|
||||||
@@ -16,7 +16,7 @@ import net.minecraft.util.SystemUtil;
|
|||||||
@Mixin(EndPortalBlockEntityRenderer.class)
|
@Mixin(EndPortalBlockEntityRenderer.class)
|
||||||
public class MixinTileEntityEndPortalRenderer {
|
public class MixinTileEntityEndPortalRenderer {
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
@Redirect(method = "method_3591", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/SystemUtil;getMeasuringTimeMs()J"))
|
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;getMeasuringTimeMs()J"))
|
||||||
//#else
|
//#else
|
||||||
//#if MC>=11200
|
//#if MC>=11200
|
||||||
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
//$$ @Redirect(method = "renderTileEntityAt(Lnet/minecraft/tileentity/TileEntityEndPortal;DDDFIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getSystemTime()J"))
|
||||||
@@ -38,7 +38,7 @@ public class MixinTileEntityEndPortalRenderer {
|
|||||||
return replayHandler.getReplaySender().currentTimeStamp();
|
return replayHandler.getReplaySender().currentTimeStamp();
|
||||||
}
|
}
|
||||||
//#if MC>=11400
|
//#if MC>=11400
|
||||||
return SystemUtil.getMeasuringTimeMs();
|
return Util.getMeasuringTimeMs();
|
||||||
//#else
|
//#else
|
||||||
//$$ return Minecraft.getSystemTime();
|
//$$ return Minecraft.getSystemTime();
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
//#if MC>=10800
|
//#if MC>=10800
|
||||||
package com.replaymod.replay.mixin;
|
package com.replaymod.replay.mixin;
|
||||||
|
|
||||||
import net.minecraft.client.render.ChunkRenderDispatcher;
|
import net.minecraft.client.render.BuiltChunkStorage;
|
||||||
import net.minecraft.client.render.chunk.ChunkRenderer;
|
import net.minecraft.client.render.chunk.ChunkRenderer;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
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.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
|
||||||
@Mixin(ChunkRenderDispatcher.class)
|
@Mixin(BuiltChunkStorage.class)
|
||||||
public abstract class MixinViewFrustum {
|
public abstract class MixinViewFrustum {
|
||||||
@Redirect(
|
@Redirect(
|
||||||
method = "updateCameraPosition",
|
method = "updateCameraPosition",
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ dependencies {
|
|||||||
11502: '1.15.2',
|
11502: '1.15.2',
|
||||||
][mcVersion]
|
][mcVersion]
|
||||||
mappings 'net.fabricmc:yarn:' + [
|
mappings 'net.fabricmc:yarn:' + [
|
||||||
11404: '1.14.4+build.1',
|
11404: '1.14.4+build.16',
|
||||||
11502: '1.15.2+build.14',
|
11502: '1.15.2+build.14',
|
||||||
][mcVersion]
|
][mcVersion]
|
||||||
modCompile 'net.fabricmc:fabric-loader:' + [
|
modCompile 'net.fabricmc:fabric-loader:' + [
|
||||||
|
|||||||
Reference in New Issue
Block a user