Update to 20w22a (minimal mode only)

This commit is contained in:
Jonas Herzig
2020-06-04 11:54:33 +02:00
parent 6210cb09aa
commit 88be6b3935
26 changed files with 293 additions and 83 deletions

View File

@@ -2,7 +2,7 @@ import groovy.json.JsonOutput
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
plugins { plugins {
id("fabric-loom") version "0.2.5-SNAPSHOT" apply false id("fabric-loom") version "0.2.7-SNAPSHOT" apply false
id("com.replaymod.preprocess") version "3c46acb" id("com.replaymod.preprocess") version "3c46acb"
id("com.github.hierynomus.license") version "0.15.0" id("com.github.hierynomus.license") version "0.15.0"
} }
@@ -178,19 +178,21 @@ val doRelease by tasks.registering {
defaultTasks("shadowJar") defaultTasks("shadowJar")
preprocess { preprocess {
"1.15.2"(11502, "yarn") { "1.16"(11600, "yarn") {
"1.14.4"(11404, "yarn", file("versions/mapping-fabric-1.15.2-1.14.4.txt")) { "1.15.2"(11502, "yarn") {
"1.14.4-forge"(11404, "srg", file("versions/mapping-1.14.4-fabric-forge.txt")) { "1.14.4"(11404, "yarn", file("versions/mapping-fabric-1.15.2-1.14.4.txt")) {
"1.12.2"(11202, "srg", file("versions/1.14.4-forge/mapping.txt")) { "1.14.4-forge"(11404, "srg", file("versions/mapping-1.14.4-fabric-forge.txt")) {
"1.12.1"(11201, "srg") { "1.12.2"(11202, "srg", file("versions/1.14.4-forge/mapping.txt")) {
"1.12"(11200, "srg") { "1.12.1"(11201, "srg") {
"1.11.2"(11102, "srg", file("versions/1.12/mapping.txt")) { "1.12"(11200, "srg") {
"1.11"(11100, "srg", file("versions/1.11.2/mapping.txt")) { "1.11.2"(11102, "srg", file("versions/1.12/mapping.txt")) {
"1.10.2"(11002, "srg", file("versions/1.11/mapping.txt")) { "1.11"(11100, "srg", file("versions/1.11.2/mapping.txt")) {
"1.9.4"(10904, "srg") { "1.10.2"(11002, "srg", file("versions/1.11/mapping.txt")) {
"1.8.9"(10809, "srg", file("versions/1.9.4/mapping.txt")) { "1.9.4"(10904, "srg") {
"1.8"(10800, "srg", file("versions/1.8.9/mapping.txt")) { "1.8.9"(10809, "srg", file("versions/1.9.4/mapping.txt")) {
"1.7.10"(10710, "srg", file("versions/1.8/mapping.txt")) "1.8"(10800, "srg", file("versions/1.8.9/mapping.txt")) {
"1.7.10"(10710, "srg", file("versions/1.8/mapping.txt"))
}
} }
} }
} }

2
jGui

Submodule jGui updated: 3063ae1f8c...e44c2ee579

View File

@@ -27,7 +27,8 @@ val jGuiVersions = listOf(
"1.12", "1.12",
"1.14.4-forge", "1.14.4-forge",
"1.14.4", "1.14.4",
"1.15.2" "1.15.2",
"1.16"
) )
val replayModVersions = listOf( val replayModVersions = listOf(
"1.7.10", "1.7.10",
@@ -42,7 +43,8 @@ val replayModVersions = listOf(
"1.12.2", "1.12.2",
"1.14.4-forge", "1.14.4-forge",
"1.14.4", "1.14.4",
"1.15.2" "1.15.2",
"1.16"
) )
include(":jGui") include(":jGui")

View File

@@ -261,6 +261,9 @@ public class ReplayMod implements
} }
} }
}; };
//#if MC>=11600
//$$ // TODO
//#else
//#if MC>=11400 //#if MC>=11400
mc.getResourcePackManager().registerProvider(new ResourcePackProvider() { mc.getResourcePackManager().registerProvider(new ResourcePackProvider() {
@Override @Override
@@ -273,6 +276,7 @@ public class ReplayMod implements
//$$ List<IResourcePack> defaultResourcePacks = ((MinecraftAccessor) mc).getDefaultResourcePacks(); //$$ List<IResourcePack> defaultResourcePacks = ((MinecraftAccessor) mc).getDefaultResourcePacks();
//$$ defaultResourcePacks.add(jGuiResourcePack); //$$ defaultResourcePacks.add(jGuiResourcePack);
//#endif //#endif
//#endif
//#if MC<=10710 //#if MC<=10710
//$$ FolderResourcePack mainResourcePack = new FolderResourcePack(new File("../src/main/resources")) { //$$ FolderResourcePack mainResourcePack = new FolderResourcePack(new File("../src/main/resources")) {
//$$ @Override //$$ @Override
@@ -649,13 +653,19 @@ public class ReplayMod implements
if (getSettingsRegistry().get(Setting.NOTIFICATIONS)) { if (getSettingsRegistry().get(Setting.NOTIFICATIONS)) {
// Some nostalgia: "§8[§6Replay Mod§8]§r Your message goes here" // Some nostalgia: "§8[§6Replay Mod§8]§r Your message goes here"
//#if MC>=10904 //#if MC>=10904
//#if MC>=11600
//$$ Style coloredDarkGray = Style.EMPTY.withColor(Formatting.DARK_GRAY);
//$$ Style coloredGold = Style.EMPTY.withColor(Formatting.GOLD);
//$$ Style alert = Style.EMPTY.withColor(warning ? Formatting.RED : Formatting.DARK_GREEN);
//#else
Style coloredDarkGray = new Style().setColor(Formatting.DARK_GRAY); Style coloredDarkGray = new Style().setColor(Formatting.DARK_GRAY);
Style coloredGold = new Style().setColor(Formatting.GOLD); Style coloredGold = new Style().setColor(Formatting.GOLD);
Style alert = new Style().setColor(warning ? Formatting.RED : Formatting.DARK_GREEN);
//#endif
Text text = new LiteralText("[").setStyle(coloredDarkGray) Text text = new LiteralText("[").setStyle(coloredDarkGray)
.append(new TranslatableText("replaymod.title").setStyle(coloredGold)) .append(new TranslatableText("replaymod.title").setStyle(coloredGold))
.append(new LiteralText("] ")) .append(new LiteralText("] "))
.append(new TranslatableText(message, args).setStyle(new Style() .append(new TranslatableText(message, args).setStyle(alert));
.setColor(warning ? Formatting.RED : Formatting.DARK_GREEN)));
//#else //#else
//$$ ChatStyle coloredDarkGray = new ChatStyle().setColor(EnumChatFormatting.DARK_GRAY); //$$ ChatStyle coloredDarkGray = new ChatStyle().setColor(EnumChatFormatting.DARK_GRAY);
//$$ ChatStyle coloredGold = new ChatStyle().setColor(EnumChatFormatting.GOLD); //$$ ChatStyle coloredGold = new ChatStyle().setColor(EnumChatFormatting.GOLD);

View File

@@ -5,13 +5,16 @@ import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.TitleScreen; import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.realms.RealmsScreenProxy;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import java.util.List; import java.util.List;
import static com.replaymod.core.versions.MCVer.*; import static com.replaymod.core.versions.MCVer.*;
//#if MC>=11400 && MC<11600
import net.minecraft.realms.RealmsScreenProxy;
//#endif
//#if FABRIC>=1 //#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback; import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
//#else //#else
@@ -68,7 +71,7 @@ public class MainMenuHandler extends EventRegistrations {
} }
//#endif //#endif
} }
//#if MC>=11400 //#if MC>=11400 && MC<11600
GuiMainMenuAccessor guiA = (GuiMainMenuAccessor) gui; GuiMainMenuAccessor guiA = (GuiMainMenuAccessor) gui;
if (realmsOffset != 0 && guiA.getRealmsNotification() instanceof RealmsScreenProxy) { if (realmsOffset != 0 && guiA.getRealmsNotification() instanceof RealmsScreenProxy) {
guiA.setRealmsNotification(new RealmsNotificationProxy((RealmsScreenProxy) guiA.getRealmsNotification(), realmsOffset)); guiA.setRealmsNotification(new RealmsNotificationProxy((RealmsScreenProxy) guiA.getRealmsNotification(), realmsOffset));
@@ -77,7 +80,7 @@ public class MainMenuHandler extends EventRegistrations {
} }
} }
//#if MC>=11400 //#if MC>=11400 && MC<11600
private static class RealmsNotificationProxy extends Screen { private static class RealmsNotificationProxy extends Screen {
private final RealmsScreenProxy proxy; private final RealmsScreenProxy proxy;
private final int offset; private final int offset;

View File

@@ -19,25 +19,39 @@ public class WrappedTimer extends RenderTickCounter {
} }
@Override @Override
public void beginRenderTick( public
//#if MC>=11600
//$$ int
//#else
void
//#endif
beginRenderTick(
//#if MC>=11400 //#if MC>=11400
long sysClock long sysClock
//#endif //#endif
) { ) {
copy(this, wrapped); copy(this, wrapped);
wrapped.beginRenderTick( try {
//#if MC>=11400 //#if MC>=11600
sysClock //$$ return
//#endif //#endif
); wrapped.beginRenderTick(
copy(wrapped, this); //#if MC>=11400
sysClock
//#endif
);
} finally {
copy(wrapped, this);
}
} }
protected void copy(RenderTickCounter from, RenderTickCounter to) { protected void copy(RenderTickCounter from, RenderTickCounter to) {
TimerAccessor fromA = (TimerAccessor) from; TimerAccessor fromA = (TimerAccessor) from;
TimerAccessor toA = (TimerAccessor) to; TimerAccessor toA = (TimerAccessor) to;
//#if MC<11600
to.ticksThisFrame = from.ticksThisFrame; to.ticksThisFrame = from.ticksThisFrame;
//#endif
to.tickDelta = from.tickDelta; to.tickDelta = from.tickDelta;
toA.setLastSyncSysClock(fromA.getLastSyncSysClock()); toA.setLastSyncSysClock(fromA.getLastSyncSysClock());
to.lastFrameDuration = from.lastFrameDuration; to.lastFrameDuration = from.lastFrameDuration;

View File

@@ -82,11 +82,15 @@ public class HotkeyButtons extends EventRegistrations implements Extra {
// There doesn't seem to be an KeyBindingUpdate event, so we'll just update it every time // There doesn't seem to be an KeyBindingUpdate event, so we'll just update it every time
String keyName = "???"; String keyName = "???";
try { try {
//#if MC>=11600
//$$ keyName = keyBinding.getBoundKeyLocalizedText().asString();
//#else
//#if MC>=11400 //#if MC>=11400
keyName = keyBinding.getLocalizedName(); keyName = keyBinding.getLocalizedName();
//#else //#else
//$$ keyName = Keyboard.getKeyName(keyBinding.getKeyCode()); //$$ keyName = Keyboard.getKeyName(keyBinding.getKeyCode());
//#endif //#endif
//#endif
} catch (ArrayIndexOutOfBoundsException e) { } catch (ArrayIndexOutOfBoundsException e) {
// Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55 // Apparently windows likes to press strange keys, see https://www.replaymod.com/forum/thread/55
} }

View File

@@ -116,7 +116,7 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
}.setSize(16, 16), }.setSize(16, 16),
new GuiLabel().setText( new GuiLabel().setText(
//#if MC>=11400 //#if MC>=11400
p.getName().asFormattedString() p.getName().asString()
//#else //#else
//#if MC>=10800 //#if MC>=10800
//$$ p.getName() //$$ p.getName()
@@ -181,7 +181,7 @@ public class PlayerOverviewGui extends GuiScreen implements Closeable {
if (isSpectator(o1) && !isSpectator(o2)) return 1; if (isSpectator(o1) && !isSpectator(o2)) return 1;
if (isSpectator(o2) && !isSpectator(o1)) return -1; if (isSpectator(o2) && !isSpectator(o1)) return -1;
//#if MC>=11400 //#if MC>=11400
return o1.getName().asFormattedString().compareToIgnoreCase(o2.getName().asFormattedString()); return o1.getName().asString().compareToIgnoreCase(o2.getName().asString());
//#else //#else
//#if MC>=10800 //#if MC>=10800
//$$ return o1.getName().compareToIgnoreCase(o2.getName()); //$$ return o1.getName().compareToIgnoreCase(o2.getName());

View File

@@ -124,10 +124,13 @@ public abstract class AbstractTimelinePlayer extends EventRegistrations {
float timeInTicks = replayTime / 50f; float timeInTicks = replayTime / 50f;
float previousTimeInTicks = lastTime / 50f; float previousTimeInTicks = lastTime / 50f;
float passedTicks = timeInTicks - previousTimeInTicks; float passedTicks = timeInTicks - previousTimeInTicks;
RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer(); RenderTickCounter renderTickCounter = ((MinecraftAccessor) mc).getTimer();
timer.tickDelta += passedTicks; if (renderTickCounter instanceof ReplayTimer) {
timer.ticksThisFrame = (int) timer.tickDelta; ReplayTimer timer = (ReplayTimer) renderTickCounter;
timer.tickDelta -= timer.ticksThisFrame; timer.tickDelta += passedTicks;
timer.ticksThisFrame = (int) timer.tickDelta;
timer.tickDelta -= timer.ticksThisFrame;
}
lastTime = replayTime; lastTime = replayTime;

View File

@@ -14,6 +14,10 @@ public class ReplayTimer extends WrappedTimer {
//$$ private final Timer state = new Timer(0); //$$ private final Timer state = new Timer(0);
//#endif //#endif
//#if MC>=11600
//$$ public int ticksThisFrame;
//#endif
public ReplayTimer(RenderTickCounter wrapped) { public ReplayTimer(RenderTickCounter wrapped) {
super(wrapped); super(wrapped);
} }
@@ -21,7 +25,13 @@ public class ReplayTimer extends WrappedTimer {
@Override @Override
// This should be handled by Remap but it isn't (was handled before a9724e3). // This should be handled by Remap but it isn't (was handled before a9724e3).
//#if MC>=11400 //#if MC>=11400
public void beginRenderTick( public
//#if MC>=11600
//$$ int
//#else
void
//#endif
beginRenderTick(
//#else //#else
//$$ public void updateTimer( //$$ public void updateTimer(
//#endif //#endif
@@ -30,13 +40,22 @@ public class ReplayTimer extends WrappedTimer {
//#endif //#endif
) { ) {
copy(this, state); // Save our current state copy(this, state); // Save our current state
wrapped.beginRenderTick( try {
//#if MC>=11400 //#if MC>=11600
sysClock //$$ ticksThisFrame =
//#endif //#endif
); // Update current state wrapped.beginRenderTick(
copy(state, this); // Restore our old state //#if MC>=11400
UpdatedCallback.EVENT.invoker().onUpdate(); sysClock
//#endif
); // Update current state
} finally {
copy(state, this); // Restore our old state
UpdatedCallback.EVENT.invoker().onUpdate();
}
//#if MC>=11600
//$$ return ticksThisFrame;
//#endif
} }
public RenderTickCounter getWrapped() { public RenderTickCounter getWrapped() {

View File

@@ -9,6 +9,7 @@ import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.resource.language.I18n; import net.minecraft.client.resource.language.I18n;
import net.minecraft.client.util.math.MatrixStack;
//#if FABRIC>=1 //#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.RenderHudCallback; import de.johni0702.minecraft.gui.versions.callbacks.RenderHudCallback;
@@ -41,21 +42,26 @@ public class GuiRecordingOverlay extends EventRegistrations {
* Render the recording icon and text in the top left corner of the screen. * Render the recording icon and text in the top left corner of the screen.
*/ */
//#if FABRIC>=1 //#if FABRIC>=1
{ on(RenderHudCallback.EVENT, partialTicks -> renderRecordingIndicator()); } { on(RenderHudCallback.EVENT, (stack, partialTicks) -> renderRecordingIndicator(stack)); }
private void renderRecordingIndicator() { private void renderRecordingIndicator(MatrixStack stack) {
//#else //#else
//$$ @SubscribeEvent //$$ @SubscribeEvent
//$$ public void renderRecordingIndicator(RenderGameOverlayEvent.Post event) { //$$ public void renderRecordingIndicator(RenderGameOverlayEvent.Post event) {
//$$ if (getType(event) != RenderGameOverlayEvent.ElementType.ALL) return; //$$ if (getType(event) != RenderGameOverlayEvent.ElementType.ALL) return;
//$$ MatrixStack stack = new MatrixStack();
//#endif //#endif
if (guiControls.isStopped()) return; if (guiControls.isStopped()) return;
if (settingsRegistry.get(Setting.INDICATOR)) { if (settingsRegistry.get(Setting.INDICATOR)) {
TextRenderer fontRenderer = mc.textRenderer; TextRenderer fontRenderer = mc.textRenderer;
String text = guiControls.isPaused() ? I18n.translate("replaymod.gui.paused") : I18n.translate("replaymod.gui.recording"); String text = guiControls.isPaused() ? I18n.translate("replaymod.gui.paused") : I18n.translate("replaymod.gui.recording");
fontRenderer.draw(text.toUpperCase(), 30, 18 - (fontRenderer.fontHeight / 2), 0xffffffff); fontRenderer.draw(
//#if MC>=11600
//$$ stack,
//#endif
text.toUpperCase(), 30, 18 - (fontRenderer.fontHeight / 2), 0xffffffff);
bindTexture(TEXTURE); bindTexture(TEXTURE);
enableAlphaTest(); enableAlphaTest();
GuiRenderer renderer = new MinecraftGuiRenderer(MCVer.newScaledResolution(mc)); GuiRenderer renderer = new MinecraftGuiRenderer(stack, MCVer.newScaledResolution(mc));
renderer.drawTexturedRect(10, 10, 58, 20, 16, 16, 16, 16, TEXTURE_SIZE, TEXTURE_SIZE); renderer.drawTexturedRect(10, 10, 58, 20, 16, 16, 16, 16, TEXTURE_SIZE, TEXTURE_SIZE);
} }
} }

View File

@@ -18,6 +18,9 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.network.ClientConnection; import net.minecraft.network.ClientConnection;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
//#if MC>=11600
//$$ import net.minecraft.world.World;
//#else
//#if MC>=11400 //#if MC>=11400
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
//#endif //#endif
@@ -25,6 +28,7 @@ import net.minecraft.world.dimension.DimensionType;
//#if MC>=10800 //#if MC>=10800
import net.minecraft.world.level.LevelGeneratorType; import net.minecraft.world.level.LevelGeneratorType;
//#endif //#endif
//#endif
import java.io.File; import java.io.File;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -60,10 +64,14 @@ public class ConnectionEventHandler {
boolean local = networkManager.isLocal(); boolean local = networkManager.isLocal();
if (local) { if (local) {
//#if MC>=10800 //#if MC>=10800
//#if MC>=11600
//$$ if (mc.getServer().getWorld(World.field_25179).isDebugWorld()) {
//#else
//#if MC>=11400 //#if MC>=11400
if (mc.getServer().getWorld(DimensionType.OVERWORLD).getGeneratorType() == LevelGeneratorType.DEBUG_ALL_BLOCK_STATES) { if (mc.getServer().getWorld(DimensionType.OVERWORLD).getGeneratorType() == LevelGeneratorType.DEBUG_ALL_BLOCK_STATES) {
//#else //#else
//$$ if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType.DEBUG_ALL_BLOCK_STATES) { //$$ if (mc.getIntegratedServer().getEntityWorld().getWorldType() == WorldType.DEBUG_ALL_BLOCK_STATES) {
//#endif
//#endif //#endif
logger.info("Debug World recording is not supported."); logger.info("Debug World recording is not supported.");
return; return;
@@ -82,7 +90,11 @@ public class ConnectionEventHandler {
String worldName; String worldName;
if (local) { if (local) {
//#if MC>=11600
//$$ worldName = mc.getServer().method_27728().getLevelName();
//#else
worldName = mc.getServer().getLevelName(); worldName = mc.getServer().getLevelName();
//#endif
} else if (mc.getCurrentServerEntry() != null) { } else if (mc.getCurrentServerEntry() != null) {
worldName = mc.getCurrentServerEntry().address; worldName = mc.getCurrentServerEntry().address;
//#if MC>=11100 //#if MC>=11100

View File

@@ -207,9 +207,13 @@ public class RecordingEventHandler extends EventRegistrations {
//$$ (byte) Math.round(dx * 32), (byte) Math.round(dy * 32), (byte) Math.round(dz * 32), //$$ (byte) Math.round(dx * 32), (byte) Math.round(dy * 32), (byte) Math.round(dz * 32),
//#endif //#endif
newYaw, newPitch newYaw, newPitch
//#if MC>=11600
//$$ , player.isOnGround()
//#else
//#if MC>=10800 //#if MC>=10800
, player.onGround , player.onGround
//#endif //#endif
//#endif
); );
} }

View File

@@ -10,16 +10,25 @@ import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvent;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.level.LevelProperties;
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;
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>=11600
//$$ import net.minecraft.util.registry.RegistryKey;
//$$ import net.minecraft.world.MutableWorldProperties;
//$$ import java.util.function.Supplier;
//#else
import net.minecraft.world.level.LevelProperties;
//#endif
//#if MC>=11400 //#if MC>=11400
import net.minecraft.world.chunk.ChunkManager; import net.minecraft.world.chunk.ChunkManager;
//#if MC<11600
import net.minecraft.world.dimension.Dimension; import net.minecraft.world.dimension.Dimension;
//#endif
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
import java.util.function.BiFunction; import java.util.function.BiFunction;
//#else //#else
@@ -38,6 +47,11 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa
@Shadow @Shadow
private MinecraftClient client; private MinecraftClient client;
//#if MC>=11600
//$$ protected MixinWorldClient(MutableWorldProperties mutableWorldProperties, RegistryKey<World> registryKey, RegistryKey<DimensionType> registryKey2, DimensionType dimensionType, Supplier<Profiler> profiler, boolean bl, boolean bl2, long l) {
//$$ super(mutableWorldProperties, registryKey, registryKey2, dimensionType, profiler, bl, bl2, l);
//$$ }
//#else
//#if MC>=11400 //#if MC>=11400
protected MixinWorldClient(LevelProperties levelProperties_1, DimensionType dimensionType_1, BiFunction<World, Dimension, ChunkManager> biFunction_1, Profiler profiler_1, boolean boolean_1) { protected MixinWorldClient(LevelProperties levelProperties_1, DimensionType dimensionType_1, BiFunction<World, Dimension, ChunkManager> biFunction_1, Profiler profiler_1, boolean boolean_1) {
super(levelProperties_1, dimensionType_1, biFunction_1, profiler_1, boolean_1); super(levelProperties_1, dimensionType_1, biFunction_1, profiler_1, boolean_1);
@@ -61,6 +75,7 @@ public abstract class MixinWorldClient extends World implements RecordingEventHa
//$$ info, providerIn, profilerIn, client); //$$ info, providerIn, profilerIn, client);
//$$ } //$$ }
//#endif //#endif
//#endif
private RecordingEventHandler replayModRecording_getRecordingEventHandler() { private RecordingEventHandler replayModRecording_getRecordingEventHandler() {
return ((RecordingEventHandler.RecordingEventSender) this.client.worldRenderer).getRecordingEventHandler(); return ((RecordingEventHandler.RecordingEventSender) this.client.worldRenderer).getRecordingEventHandler();

View File

@@ -32,6 +32,10 @@ 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;
//#if MC>=11600
//$$ import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=11500 //#if MC>=11500
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.util.Window; import net.minecraft.client.util.Window;
@@ -160,7 +164,9 @@ public class VideoRenderer implements RenderInfo {
//$$ timer.timerSpeed = 1; //$$ timer.timerSpeed = 1;
//#endif //#endif
while (replayTime < videoStart) { while (replayTime < videoStart) {
//#if MC<11600
timer.ticksThisFrame = 1; timer.ticksThisFrame = 1;
//#endif
replayTime += 50; replayTime += 50;
replayHandler.getReplaySender().sendPacketsTill(replayTime); replayHandler.getReplaySender().sendPacketsTill(replayTime);
tick(); tick();
@@ -218,6 +224,11 @@ public class VideoRenderer implements RenderInfo {
// Updating the timer will cause the timeline player to update the game state // Updating the timer will cause the timeline player to update the game state
RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer(); RenderTickCounter timer = ((MinecraftAccessor) mc).getTimer();
//#if MC>=11600
//$$ int elapsedTicks =
//#else
int elapsedTicks = timer.ticksThisFrame;
//#endif
timer.beginRenderTick( timer.beginRenderTick(
//#if MC>=11400 //#if MC>=11400
MCVer.milliTime() MCVer.milliTime()
@@ -232,7 +243,6 @@ public class VideoRenderer implements RenderInfo {
//$$ } //$$ }
//#endif //#endif
int elapsedTicks = timer.ticksThisFrame;
while (elapsedTicks-- > 0) { while (elapsedTicks-- > 0) {
tick(); tick();
} }
@@ -501,7 +511,11 @@ public class VideoRenderer implements RenderInfo {
int mouseY = (int) mc.mouse.getY() * getWindow(mc).getScaledHeight() / displayHeight; int mouseY = (int) mc.mouse.getY() * getWindow(mc).getScaledHeight() / displayHeight;
gui.toMinecraft().tick(); gui.toMinecraft().tick();
gui.toMinecraft().render(mouseX, mouseY, 0); gui.toMinecraft().render(
//#if MC>=11600
//$$ new MatrixStack(),
//#endif
mouseX, mouseY, 0);
//#else //#else
//$$ int mouseX = Mouse.getX() * scaled.getScaledWidth() / mc.displayWidth; //$$ int mouseX = Mouse.getX() * scaled.getScaledWidth() / mc.displayWidth;
//$$ int mouseY = scaled.getScaledHeight() - Mouse.getY() * scaled.getScaledHeight() / mc.displayHeight - 1; //$$ int mouseY = scaled.getScaledHeight() - Mouse.getY() * scaled.getScaledHeight() / mc.displayHeight - 1;

View File

@@ -591,14 +591,27 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
packet.getSeed(), packet.getSeed(),
//#endif //#endif
false, false,
//#if MC>=11600
//$$ packet.method_29443(),
//$$ (net.minecraft.world.dimension.DimensionTracker.Modifiable) packet.getDimension(),
//$$ packet.method_29444(),
//$$ packet.getDimensionId(),
//#else
packet.getDimension(), packet.getDimension(),
//#endif
0, // max players (has no getter -> never actually used) 0, // max players (has no getter -> never actually used)
//#if MC<11600
packet.getGeneratorType(), packet.getGeneratorType(),
//#endif
packet.getChunkLoadDistance(), packet.getChunkLoadDistance(),
packet.hasReducedDebugInfo() packet.hasReducedDebugInfo()
//#if MC>=11500 //#if MC>=11500
, packet.showsDeathScreen() , packet.showsDeathScreen()
//#endif //#endif
//#if MC>=11600
//$$ , packet.isDebugWorld()
//$$ , packet.isFlatWorld()
//#endif
); );
//#else //#else
//#if MC>=10800 //#if MC>=10800
@@ -638,12 +651,22 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
PlayerRespawnS2CPacket respawn = (PlayerRespawnS2CPacket) p; PlayerRespawnS2CPacket respawn = (PlayerRespawnS2CPacket) p;
//#if MC>=11400 //#if MC>=11400
p = new PlayerRespawnS2CPacket( p = new PlayerRespawnS2CPacket(
//#if MC>=11600
//$$ respawn.method_29445(),
//#endif
respawn.getDimension(), respawn.getDimension(),
//#if MC>=11500 //#if MC>=11500
respawn.getSha256Seed(), respawn.getSha256Seed(),
//#endif //#endif
//#if MC>=11600
//$$ GameMode.SPECTATOR,
//$$ respawn.isDebugWorld(),
//$$ respawn.isFlatWorld(),
//$$ respawn.isWritingErrorSkippable()
//#else
respawn.getGeneratorType(), respawn.getGeneratorType(),
GameMode.SPECTATOR GameMode.SPECTATOR
//#endif
); );
//#else //#else
//#if MC>=10809 //#if MC>=10809

View File

@@ -45,11 +45,20 @@ public class InputReplayTimer extends WrappedTimer {
} }
@Override @Override
public void beginRenderTick( public
//#if MC>=11600
//$$ int
//#else
void
//#endif
beginRenderTick(
//#if MC>=11400 //#if MC>=11400
long sysClock long sysClock
//#endif //#endif
) { ) {
//#if MC>=11600
//$$ int ticksThisFrame =
//#endif
super.beginRenderTick( super.beginRenderTick(
//#if MC>=11400 //#if MC>=11400
sysClock sysClock
@@ -114,6 +123,9 @@ public class InputReplayTimer extends WrappedTimer {
//$$ } //$$ }
//#endif //#endif
} }
//#if MC>=11600
//$$ return ticksThisFrame;
//#endif
} }
public static void handleScroll(int wheel) { public static void handleScroll(int wheel) {

View File

@@ -24,7 +24,6 @@ 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;
import net.minecraft.util.PacketByteBuf; import net.minecraft.util.PacketByteBuf;
import net.minecraft.world.level.LevelGeneratorType;
//#if FABRIC>=1 //#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback; import de.johni0702.minecraft.gui.versions.callbacks.PreTickCallback;
@@ -40,6 +39,11 @@ import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.function.Consumer; import java.util.function.Consumer;
//#if MC>=11600
//$$ import net.minecraft.world.World;
//#else
import net.minecraft.world.level.LevelGeneratorType;
//#endif
//#if MC>=11400 //#if MC>=11400
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
//#else //#else
@@ -190,6 +194,15 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
public void restart() { public void restart() {
replay.reset(); replay.reset();
ctx.fireChannelRead(new PlayerRespawnS2CPacket( ctx.fireChannelRead(new PlayerRespawnS2CPacket(
//#if MC>=11600
//$$ DimensionType.OVERWORLD_REGISTRY_KEY,
//$$ World.field_25179,
//$$ 0,
//$$ GameMode.SPECTATOR,
//$$ false,
//$$ false,
//$$ false
//#else
//#if MC>=11400 //#if MC>=11400
DimensionType.OVERWORLD, DimensionType.OVERWORLD,
//#else //#else
@@ -203,6 +216,7 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
//#endif //#endif
LevelGeneratorType.DEFAULT, LevelGeneratorType.DEFAULT,
GameMode.SPECTATOR GameMode.SPECTATOR
//#endif
)); ));
ctx.fireChannelRead(new PlayerPositionLookS2CPacket(0, 0, 0, 0, 0, Collections.emptySet(), 0)); ctx.fireChannelRead(new PlayerPositionLookS2CPacket(0, 0, 0, 0, 0, Collections.emptySet(), 0));
} }

View File

@@ -19,15 +19,17 @@ import com.replaymod.replay.gui.overlay.GuiReplayOverlay;
import com.replaymod.replaystudio.data.Marker; import com.replaymod.replaystudio.data.Marker;
import com.replaymod.replaystudio.replay.ReplayFile; import com.replaymod.replaystudio.replay.ReplayFile;
import com.replaymod.replaystudio.util.Location; import com.replaymod.replaystudio.util.Location;
import de.johni0702.minecraft.gui.container.AbstractGuiScreen;
import de.johni0702.minecraft.gui.container.GuiContainer; import de.johni0702.minecraft.gui.container.GuiContainer;
import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.element.GuiLabel;
import de.johni0702.minecraft.gui.element.advanced.GuiProgressBar; import de.johni0702.minecraft.gui.element.advanced.GuiProgressBar;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.popup.AbstractGuiPopup; import de.johni0702.minecraft.gui.popup.AbstractGuiPopup;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.embedded.EmbeddedChannel; import io.netty.channel.embedded.EmbeddedChannel;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ClientLoginNetworkHandler; import net.minecraft.client.network.ClientLoginNetworkHandler;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashReport;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
@@ -36,6 +38,10 @@ import net.minecraft.network.ClientConnection;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
//#if MC>=11500
//$$ import net.minecraft.client.util.math.MatrixStack;
//#endif
//#if MC>=11500 //#if MC>=11500
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@@ -180,7 +186,7 @@ public class ReplayHandler {
//#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
//$$ // load (i.e. before player is set) will crash MC... //$$ // load (i.e. before player is set) will crash MC...
//$$ mc.displayGuiScreen(new GuiScreen() {}); //$$ mc.displayGuiScreen(new net.minecraft.client.gui.GuiScreen() {});
//$$ mc.loadWorld(null); //$$ mc.loadWorld(null);
//#endif //#endif
@@ -592,22 +598,10 @@ public class ReplayHandler {
replaySender.jumpToTime(targetTime); replaySender.jumpToTime(targetTime);
} else { // We either have to restart the replay or send a significant amount of packets } else { // We either have to restart the replay or send a significant amount of packets
// Render our please-wait-screen // Render our please-wait-screen
Screen guiScreen = new Screen( GuiScreen guiScreen = new GuiScreen();
//#if MC>=11400 guiScreen.setBackground(AbstractGuiScreen.Background.DIRT);
null guiScreen.addElements(new HorizontalLayout.Data(0.5),
//#endif new GuiLabel().setI18nText("replaymod.gui.pleasewait"));
) {
@Override
//#if MC>=11400
public void render(int mouseX, int mouseY, float partialTicks) {
//#else
//$$ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
//#endif
renderDirtBackground(0);
drawCenteredString(this.minecraft.textRenderer, I18n.translate("replaymod.gui.pleasewait"),
width / 2, height / 2, 0xffffffff);
}
};
// Make sure that the replaysender changes into sync mode // Make sure that the replaysender changes into sync mode
replaySender.setSyncModeAndWait(); replaySender.setSyncModeAndWait();
@@ -648,12 +642,17 @@ public class ReplayHandler {
//$$ ScaledResolution //$$ ScaledResolution
//#endif //#endif
resolution = newScaledResolution(mc); resolution = newScaledResolution(mc);
guiScreen.init(mc, resolution.getScaledWidth(), resolution.getScaledHeight()); guiScreen.toMinecraft().init(mc, resolution.getScaledWidth(), resolution.getScaledHeight());
//#if MC>=11400 //#if MC>=11600
guiScreen.render(0, 0, 0); //$$ guiScreen.toMinecraft().render(new MatrixStack(), 0, 0, 0);
//#else //#else
//$$ guiScreen.drawScreen(0, 0, 0); //#if MC>=11400
guiScreen.toMinecraft().render(0, 0, 0);
//#else
//$$ guiScreen.toMinecraft().drawScreen(0, 0, 0);
//#endif //#endif
//#endif
guiScreen.toMinecraft().removed();
mc.getFramebuffer().endWrite(); mc.getFramebuffer().endWrite();
popMatrix(); popMatrix();

View File

@@ -153,6 +153,10 @@ public class CameraEntity
//#if MC>=11200 //#if MC>=11200
, recipeBook , recipeBook
//#endif //#endif
//#if MC>=11600
//$$ , false
//$$ , false
//#endif
); );
eventHandler.register(); eventHandler.register();
if (ReplayModReplay.instance.getReplayHandler().getSpectatedUUID() == null) { if (ReplayModReplay.instance.getReplayHandler().getSpectatedUUID() == null) {

View File

@@ -10,6 +10,11 @@ import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.AbstractButtonWidget; import net.minecraft.client.gui.widget.AbstractButtonWidget;
import net.minecraft.client.resource.language.I18n; import net.minecraft.client.resource.language.I18n;
//#if MC>=11600
//$$ import net.minecraft.text.Text;
//$$ import net.minecraft.text.TranslatableText;
//#endif
//#if FABRIC>=1 //#if FABRIC>=1
import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback; import de.johni0702.minecraft.gui.versions.callbacks.InitScreenCallback;
//#else //#else
@@ -56,6 +61,13 @@ public class GuiHandler extends EventRegistrations {
// Pause replay when menu is opened // Pause replay when menu is opened
mod.getReplayHandler().getReplaySender().setReplaySpeed(0); mod.getReplayHandler().getReplaySender().setReplaySpeed(0);
//#if MC>=11600
//$$ final TranslatableText BUTTON_OPTIONS = new TranslatableText("menu.options");
//$$ final TranslatableText BUTTON_EXIT_SERVER = new TranslatableText("menu.disconnect");
//$$ final TranslatableText BUTTON_ADVANCEMENTS = new TranslatableText("gui.advancements");
//$$ final TranslatableText BUTTON_STATS = new TranslatableText("gui.stats");
//$$ final TranslatableText BUTTON_OPEN_TO_LAN = new TranslatableText("menu.shareToLan");
//#else
//#if MC>=11400 //#if MC>=11400
final String BUTTON_OPTIONS = I18n.translate("menu.options"); final String BUTTON_OPTIONS = I18n.translate("menu.options");
final String BUTTON_EXIT_SERVER = I18n.translate("menu.disconnect"); final String BUTTON_EXIT_SERVER = I18n.translate("menu.disconnect");
@@ -71,6 +83,7 @@ public class GuiHandler extends EventRegistrations {
//$$ final int BUTTON_STATS = 6; //$$ final int BUTTON_STATS = 6;
//$$ final int BUTTON_OPEN_TO_LAN = 7; //$$ final int BUTTON_OPEN_TO_LAN = 7;
//#endif //#endif
//#endif
//#if MC<11400 //#if MC<11400
@@ -85,7 +98,11 @@ public class GuiHandler extends EventRegistrations {
//#endif //#endif
boolean remove = false; boolean remove = false;
//#if MC>=11400 //#if MC>=11400
//#if MC>=11600
//$$ Text id = b.getMessage();
//#else
String id = b.getMessage(); String id = b.getMessage();
//#endif
if (id == null) { if (id == null) {
// likely a button of some third-part mod // likely a button of some third-part mod
// e.g. https://github.com/Pokechu22/WorldDownloader/blob/b1b279f948beec2d7dac7524eea8f584a866d8eb/share_14/src/main/java/wdl/WDLHooks.java#L491 // e.g. https://github.com/Pokechu22/WorldDownloader/blob/b1b279f948beec2d7dac7524eea8f584a866d8eb/share_14/src/main/java/wdl/WDLHooks.java#L491
@@ -104,7 +121,7 @@ public class GuiHandler extends EventRegistrations {
b.y, b.y,
width(b), width(b),
height(b), height(b),
I18n.translate("replaymod.gui.exit"), "replaymod.gui.exit",
this::onButton this::onButton
)); ));
} else if (id.equals(BUTTON_ADVANCEMENTS)) { } else if (id.equals(BUTTON_ADVANCEMENTS)) {
@@ -216,7 +233,7 @@ public class GuiHandler extends EventRegistrations {
guiScreen.height / 4 + 10 + 4 * 24, guiScreen.height / 4 + 10 + 4 * 24,
200, 200,
20, 20,
I18n.translate("replaymod.gui.replayviewer"), "replaymod.gui.replayviewer",
this::onButton this::onButton
); );
//#if FABRIC<=0 //#if FABRIC<=0
@@ -283,7 +300,11 @@ public class GuiHandler extends EventRegistrations {
y, y,
width, width,
height, height,
buttonText //#if MC>=11600
//$$ new TranslatableText(buttonText)
//#else
I18n.translate(buttonText)
//#endif
//#if MC>=11400 //#if MC>=11400
, self -> onClick.accept((InjectedButton) self) , self -> onClick.accept((InjectedButton) self)
//#endif //#endif

View File

@@ -3,13 +3,18 @@ package com.replaymod.replay.mixin;
//#if MC>=10904 //#if MC>=10904
import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.Particle;
import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.particle.ParticleManager;
import net.minecraft.world.World;
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;
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>=11600
//$$ import net.minecraft.client.world.ClientWorld;
//#else
import net.minecraft.world.World;
//#endif
import java.util.Queue; import java.util.Queue;
@Mixin(ParticleManager.class) @Mixin(ParticleManager.class)
@@ -30,7 +35,13 @@ public abstract class MixinParticleManager {
* @param ci Callback info * @param ci Callback info
*/ */
@Inject(method = "setWorld", at = @At("HEAD")) @Inject(method = "setWorld", at = @At("HEAD"))
public void replayModReplay_clearParticleQueue(World world, CallbackInfo ci) { public void replayModReplay_clearParticleQueue(
//#if MC>=11600
//$$ ClientWorld world,
//#else
World world,
//#endif
CallbackInfo ci) {
//#if MC>=11400 //#if MC>=11400
this.newParticles.clear(); this.newParticles.clear();
//#else //#else

View File

@@ -60,6 +60,10 @@ public abstract class MixinPlayerControllerMP {
//#endif //#endif
StatHandler statisticsManager, StatHandler statisticsManager,
ClientRecipeBook recipeBookClient, ClientRecipeBook recipeBookClient,
//#if MC>=11600
//$$ boolean lastIsHoldingSneakKey,
//$$ boolean lastSprinting,
//#endif
CallbackInfoReturnable<ClientPlayerEntity> ci CallbackInfoReturnable<ClientPlayerEntity> ci
) { ) {
if (ReplayModReplay.instance.getReplayHandler() != null) { if (ReplayModReplay.instance.getReplayHandler() != null) {

0
versions/1.16/.gitkeep Normal file
View File

View File

@@ -32,7 +32,7 @@ buildscript {
dependencies { dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.2' classpath 'com.github.jengelman.gradle.plugins:shadow:4.0.2'
if (fabric) { if (fabric) {
classpath 'fabric-loom:fabric-loom.gradle.plugin:0.2.6-SNAPSHOT' classpath 'fabric-loom:fabric-loom.gradle.plugin:0.2.7-SNAPSHOT'
} else if (mcVersion >= 11400) { } else if (mcVersion >= 11400) {
classpath('net.minecraftforge.gradle:ForgeGradle:3.+'){ classpath('net.minecraftforge.gradle:ForgeGradle:3.+'){
exclude group: 'trove', module: 'trove' // preprocessor/idea requires more recent one exclude group: 'trove', module: 'trove' // preprocessor/idea requires more recent one
@@ -193,7 +193,12 @@ repositories {
name = "fabric" name = "fabric"
url = "https://maven.fabricmc.net/" url = "https://maven.fabricmc.net/"
} }
maven { url 'https://jitpack.io' } maven {
url 'https://jitpack.io'
content {
includeGroupByRegex 'com\\.github\\..*'
}
}
} }
configurations { configurations {
@@ -226,18 +231,22 @@ dependencies {
minecraft 'com.mojang:minecraft:' + [ minecraft 'com.mojang:minecraft:' + [
11404: '1.14.4', 11404: '1.14.4',
11502: '1.15.2', 11502: '1.15.2',
11600: '20w22a',
][mcVersion] ][mcVersion]
mappings 'net.fabricmc:yarn:' + [ mappings 'net.fabricmc:yarn:' + [
11404: '1.14.4+build.16', 11404: '1.14.4+build.16',
11502: '1.15.2+build.14', 11502: '1.15.2+build.14',
11600: '20w22a+build.11:v2',
][mcVersion] ][mcVersion]
modCompile 'net.fabricmc:fabric-loader:' + [ modCompile 'net.fabricmc:fabric-loader:' + [
11404: '0.7.8+build.189', 11404: '0.7.8+build.189',
11502: '0.7.8+build.189', 11502: '0.7.8+build.189',
11600: '0.8.6+build.200',
][mcVersion] ][mcVersion]
modCompile 'net.fabricmc.fabric-api:fabric-api:' + [ modCompile 'net.fabricmc.fabric-api:fabric-api:' + [
11404: '0.4.3+build.247-1.14', 11404: '0.4.3+build.247-1.14',
11502: '0.5.1+build.294-1.15', 11502: '0.5.1+build.294-1.15',
11600: '0.11.2+build.351-1.16',
][mcVersion] ][mcVersion]
} }
@@ -288,7 +297,11 @@ dependencies {
} }
if (FABRIC) { if (FABRIC) {
modCompile 'io.github.prospector.modmenu:ModMenu:1.6.2-92' if (mcVersion >= 11600) {
modCompile 'io.github.prospector:modmenu:1.11.8+build.13'
} else {
modCompile 'io.github.prospector.modmenu:ModMenu:1.6.2-92'
}
} }
annotationProcessor 'org.projectlombok:lombok:1.18.12' annotationProcessor 'org.projectlombok:lombok:1.18.12'

View File

@@ -1,3 +1,4 @@
net.minecraft.client.util.math.MatrixStack de.johni0702.minecraft.gui.versions.MatrixStack
net.minecraft.client.render.entity.EntityRenderer shouldRender() isVisible() net.minecraft.client.render.entity.EntityRenderer shouldRender() isVisible()
net.minecraft.client.render.GameRenderer renderWorld() renderCenter() net.minecraft.client.render.GameRenderer renderWorld() renderCenter()
net.minecraft.entity.LivingEntity serverX field_6224 net.minecraft.entity.LivingEntity serverX field_6224