Port to 1.17-pre1
This commit is contained in:
@@ -366,6 +366,8 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
// Entity#addedToChunk is not set and it is therefore not updated every tick.
|
||||
// To counteract this, we need to manually update it's position if it hasn't been added
|
||||
// to any chunk yet.
|
||||
// The `updateNeeded` flag appears to have been removed in 1.17, so this should no longer be an issue.
|
||||
//#if MC<11700
|
||||
if (mc.world != null) {
|
||||
for (PlayerEntity playerEntity : mc.world.getPlayers()) {
|
||||
if (!playerEntity.updateNeeded && playerEntity instanceof OtherClientPlayerEntity) {
|
||||
@@ -373,6 +375,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
}
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -413,7 +416,9 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
|| p instanceof ExperienceOrbSpawnS2CPacket
|
||||
|| p instanceof EntitiesDestroyS2CPacket) {
|
||||
ClientWorld world = mc.world;
|
||||
//#if MC>=11400
|
||||
//#if MC>=11700
|
||||
//$$ // From the looks of it, this has now been resolved (thanks to EntityChangeListener)
|
||||
//#elseif MC>=11400
|
||||
// Note: Not sure if it's still required but there's this really handy method anyway
|
||||
world.finishRemovingEntities();
|
||||
//#else
|
||||
@@ -478,12 +483,16 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
int i = pb.readVarInt();
|
||||
|
||||
NetworkState state = loginPhase ? NetworkState.LOGIN : NetworkState.PLAY;
|
||||
//#if MC>=11700
|
||||
//$$ Packet p = state.getPacketHandler(NetworkSide.CLIENTBOUND, i, pb);
|
||||
//#else
|
||||
//#if MC>=10800
|
||||
Packet p = state.getPacketHandler(NetworkSide.CLIENTBOUND, i);
|
||||
//#else
|
||||
//$$ Packet p = Packet.generatePacket(state.func_150755_b(), i);
|
||||
//#endif
|
||||
p.read(pb);
|
||||
//#endif
|
||||
|
||||
return p;
|
||||
}
|
||||
@@ -1154,6 +1163,9 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
// 1.14+: The update issue remains but only for non-players and the unloading list bug appears to have been
|
||||
// fixed (chunk unloading no longer removes the entities).
|
||||
// Get the chunk that will be unloaded
|
||||
//#if MC>=11700
|
||||
//$$ // From the looks of it, this may be fixed now (thanks to EntityChangeListener), guess we'll see
|
||||
//#else
|
||||
//#if MC>=11400
|
||||
ClientWorld world = mc.world;
|
||||
ChunkManager chunkProvider = world.getChunkManager();
|
||||
@@ -1250,6 +1262,7 @@ public class FullReplaySender extends ChannelDuplexHandler implements ReplaySend
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
//#endif
|
||||
}
|
||||
return p; // During synchronous playback everything is sent normally
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@ import net.minecraft.client.MinecraftClient;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import net.minecraft.client.util.ScreenshotUtils;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.popMatrix;
|
||||
import static com.replaymod.core.versions.MCVer.pushMatrix;
|
||||
|
||||
//#if MC>=11500
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
//#endif
|
||||
@@ -58,7 +61,7 @@ public class NoGuiScreenshot {
|
||||
mc.options.hudHidden = true;
|
||||
|
||||
// Render frame without GUI
|
||||
GlStateManager.pushMatrix();
|
||||
pushMatrix();
|
||||
GlStateManager.clear(
|
||||
16640
|
||||
//#if MC>=11400
|
||||
@@ -84,10 +87,10 @@ public class NoGuiScreenshot {
|
||||
//#endif
|
||||
|
||||
mc.getFramebuffer().endWrite();
|
||||
GlStateManager.popMatrix();
|
||||
GlStateManager.pushMatrix();
|
||||
popMatrix();
|
||||
pushMatrix();
|
||||
mc.getFramebuffer().draw(frameWidth, frameHeight);
|
||||
GlStateManager.popMatrix();
|
||||
popMatrix();
|
||||
} catch (Throwable t) {
|
||||
future.setException(t);
|
||||
return;
|
||||
|
||||
@@ -99,6 +99,18 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
|
||||
@Override
|
||||
protected Packet<?> decode(com.github.steveice10.netty.buffer.ByteBuf byteBuf) throws IOException {
|
||||
int packetId = new ByteBufNetInput(byteBuf).readVarInt();
|
||||
int size = byteBuf.readableBytes();
|
||||
if (buf.length < size) {
|
||||
buf = new byte[size];
|
||||
}
|
||||
byteBuf.readBytes(buf, 0, size);
|
||||
ByteBuf wrappedBuf = Unpooled.wrappedBuffer(buf);
|
||||
wrappedBuf.writerIndex(size);
|
||||
PacketByteBuf packetByteBuf = new PacketByteBuf(wrappedBuf);
|
||||
|
||||
//#if MC>=11700
|
||||
//$$ return NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId, packetByteBuf);
|
||||
//#else
|
||||
//#if MC>=11500
|
||||
Packet<?> mcPacket = NetworkState.PLAY.getPacketHandler(NetworkSide.CLIENTBOUND, packetId);
|
||||
//#else
|
||||
@@ -110,16 +122,10 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
|
||||
//$$ }
|
||||
//#endif
|
||||
if (mcPacket != null) {
|
||||
int size = byteBuf.readableBytes();
|
||||
if (buf.length < size) {
|
||||
buf = new byte[size];
|
||||
}
|
||||
byteBuf.readBytes(buf, 0, size);
|
||||
ByteBuf wrappedBuf = Unpooled.wrappedBuffer(buf);
|
||||
wrappedBuf.writerIndex(size);
|
||||
mcPacket.read(new PacketByteBuf(wrappedBuf));
|
||||
mcPacket.read(packetByteBuf);
|
||||
}
|
||||
return mcPacket;
|
||||
//#endif
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -220,7 +226,12 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe
|
||||
//$$ 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
|
||||
//#if MC>=11700
|
||||
//$$ , true
|
||||
//#endif
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.common.base.Preconditions;
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
import com.google.common.util.concurrent.Futures;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.replaymod.core.ReplayMod;
|
||||
import com.replaymod.core.mixin.MinecraftAccessor;
|
||||
import com.replaymod.core.mixin.TimerAccessor;
|
||||
@@ -40,6 +41,11 @@ import net.minecraft.network.ClientConnection;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
//#if MC>=11700
|
||||
//$$ import net.minecraft.client.render.DiffuseLighting;
|
||||
//$$ import net.minecraft.util.math.Matrix4f;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11600
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
//#endif
|
||||
@@ -97,7 +103,6 @@ import javax.annotation.Nullable;
|
||||
|
||||
import static com.replaymod.core.versions.MCVer.*;
|
||||
import static com.replaymod.replay.ReplayModReplay.LOGGER;
|
||||
import static com.mojang.blaze3d.platform.GlStateManager.*;
|
||||
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
||||
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
@@ -213,11 +218,13 @@ public class ReplayHandler {
|
||||
channel.close().awaitUninterruptibly();
|
||||
|
||||
if (mc.player instanceof CameraEntity) {
|
||||
//#if MC<11700
|
||||
//#if MC>=11400
|
||||
mc.player.remove();
|
||||
//#else
|
||||
//$$ mc.player.setDead();
|
||||
//#endif
|
||||
//#endif
|
||||
}
|
||||
|
||||
if (mc.world != null) {
|
||||
@@ -604,22 +611,38 @@ public class ReplayHandler {
|
||||
|
||||
// Perform the rendering using OpenGL
|
||||
pushMatrix();
|
||||
clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
|
||||
GlStateManager.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT
|
||||
//#if MC>=11400
|
||||
, true
|
||||
//#endif
|
||||
);
|
||||
enableTexture();
|
||||
GlStateManager.enableTexture();
|
||||
mc.getFramebuffer().beginWrite(true);
|
||||
Window window = mc.getWindow();
|
||||
//#if MC>=11500
|
||||
RenderSystem.clear(256, MinecraftClient.IS_SYSTEM_MAC);
|
||||
//#if MC>=11700
|
||||
//$$ RenderSystem.setProjectionMatrix(Matrix4f.projectionMatrix(
|
||||
//$$ 0,
|
||||
//$$ (float) (window.getFramebufferWidth() / window.getScaleFactor()),
|
||||
//$$ 0,
|
||||
//$$ (float) (window.getFramebufferHeight() / window.getScaleFactor()),
|
||||
//$$ 1000,
|
||||
//$$ 3000
|
||||
//$$ ));
|
||||
//$$ MatrixStack matrixStack = RenderSystem.getModelViewStack();
|
||||
//$$ matrixStack.loadIdentity();
|
||||
//$$ matrixStack.translate(0, 0, -2000);
|
||||
//$$ RenderSystem.applyModelViewMatrix();
|
||||
//$$ DiffuseLighting.enableGuiDepthLighting();
|
||||
//#else
|
||||
RenderSystem.matrixMode(GL11.GL_PROJECTION);
|
||||
RenderSystem.loadIdentity();
|
||||
RenderSystem.ortho(0, window.getFramebufferWidth() / window.getScaleFactor(), window.getFramebufferHeight() / window.getScaleFactor(), 0, 1000, 3000);
|
||||
RenderSystem.matrixMode(GL11.GL_MODELVIEW);
|
||||
RenderSystem.loadIdentity();
|
||||
RenderSystem.translatef(0, 0, -2000);
|
||||
//#endif
|
||||
//#else
|
||||
//#if MC>=11400
|
||||
//$$ window.method_4493(true);
|
||||
|
||||
@@ -208,8 +208,10 @@ public class CameraEntity
|
||||
* @param roll Roll in degrees
|
||||
*/
|
||||
public void setCameraRotation(float yaw, float pitch, float roll) {
|
||||
this.prevYaw = this.yaw = yaw;
|
||||
this.prevPitch = this.pitch = pitch;
|
||||
this.prevYaw = yaw;
|
||||
this.prevPitch = pitch;
|
||||
this.yaw = yaw;
|
||||
this.pitch = pitch;
|
||||
this.roll = roll;
|
||||
}
|
||||
|
||||
@@ -575,8 +577,13 @@ public class CameraEntity
|
||||
//#endif
|
||||
|
||||
@Override
|
||||
//#if MC>=11700
|
||||
//$$ public void remove(RemovalReason reason) {
|
||||
//$$ super.remove(reason);
|
||||
//#else
|
||||
public void remove() {
|
||||
super.remove();
|
||||
//#endif
|
||||
if (eventHandler != null) {
|
||||
eventHandler.unregister();
|
||||
eventHandler = null;
|
||||
|
||||
@@ -34,8 +34,8 @@ import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Stream;
|
||||
@@ -54,7 +54,7 @@ public class GuiHandler extends EventRegistrations {
|
||||
}
|
||||
|
||||
{ on(InitScreenCallback.EVENT, this::injectIntoIngameMenu); }
|
||||
private void injectIntoIngameMenu(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
|
||||
private void injectIntoIngameMenu(Screen guiScreen, Collection<AbstractButtonWidget> buttonList) {
|
||||
if (!(guiScreen instanceof GameMenuScreen)) {
|
||||
return;
|
||||
}
|
||||
@@ -182,9 +182,9 @@ public class GuiHandler extends EventRegistrations {
|
||||
*/
|
||||
private void moveAllButtonsInRect(
|
||||
//#if MC>=11400
|
||||
List<AbstractButtonWidget> buttons,
|
||||
Collection<AbstractButtonWidget> buttons,
|
||||
//#else
|
||||
//$$ List<GuiButton> buttons,
|
||||
//$$ Collection<GuiButton> buttons,
|
||||
//#endif
|
||||
int xStart,
|
||||
int xEnd,
|
||||
@@ -198,8 +198,8 @@ public class GuiHandler extends EventRegistrations {
|
||||
.forEach(button -> button.y += moveBy);
|
||||
}
|
||||
|
||||
{ on(InitScreenCallback.EVENT, this::ensureReplayStopped); }
|
||||
private void ensureReplayStopped(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
|
||||
{ on(InitScreenCallback.EVENT, (screen, buttons) -> ensureReplayStopped(screen)); }
|
||||
private void ensureReplayStopped(Screen guiScreen) {
|
||||
if (!(guiScreen instanceof TitleScreen || guiScreen instanceof MultiplayerScreen)) {
|
||||
return;
|
||||
}
|
||||
@@ -220,7 +220,7 @@ public class GuiHandler extends EventRegistrations {
|
||||
}
|
||||
|
||||
{ on(InitScreenCallback.EVENT, this::injectIntoMainMenu); }
|
||||
private void injectIntoMainMenu(Screen guiScreen, List<AbstractButtonWidget> buttonList) {
|
||||
private void injectIntoMainMenu(Screen guiScreen, Collection<AbstractButtonWidget> buttonList) {
|
||||
if (!(guiScreen instanceof TitleScreen)) {
|
||||
return;
|
||||
}
|
||||
@@ -291,7 +291,7 @@ public class GuiHandler extends EventRegistrations {
|
||||
addButton(guiScreen, button);
|
||||
}
|
||||
|
||||
private Point determineButtonPos(MainMenuButtonPosition buttonPosition, Screen guiScreen, List<AbstractButtonWidget> buttonList) {
|
||||
private Point determineButtonPos(MainMenuButtonPosition buttonPosition, Screen guiScreen, Collection<AbstractButtonWidget> buttonList) {
|
||||
Point topRight = new Point(guiScreen.width - 20 - 5, 5);
|
||||
|
||||
if (buttonPosition == MainMenuButtonPosition.TOP_LEFT) {
|
||||
|
||||
@@ -4,10 +4,15 @@ package com.replaymod.replay.mixin;
|
||||
import com.replaymod.replay.ReplayModReplay;
|
||||
import net.minecraft.client.render.entity.EntityRenderer;
|
||||
import net.minecraft.client.render.entity.ArrowEntityRenderer;
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
//#if MC>=11700
|
||||
//$$ import net.minecraft.client.render.entity.EntityRendererFactory.Context;
|
||||
//#else
|
||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||
//#endif
|
||||
|
||||
//#if MC>=11500
|
||||
import net.minecraft.client.render.Frustum;
|
||||
//#else
|
||||
@@ -16,9 +21,15 @@ import net.minecraft.client.render.Frustum;
|
||||
|
||||
@Mixin(ArrowEntityRenderer.class)
|
||||
public abstract class MixinRenderArrow extends EntityRenderer {
|
||||
//#if MC>=11700
|
||||
//$$ protected MixinRenderArrow(Context context) {
|
||||
//$$ super(context);
|
||||
//$$ }
|
||||
//#else
|
||||
protected MixinRenderArrow(EntityRenderDispatcher renderManager) {
|
||||
super(renderManager);
|
||||
}
|
||||
//#endif
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
|
||||
@@ -40,7 +40,7 @@ public class MixinTileEntityEndPortalRenderer {
|
||||
//#endif
|
||||
//#endif
|
||||
//#endif
|
||||
private long replayModReplay_getEnchantmentTime() {
|
||||
private long replayModReplay_getPortalTime() {
|
||||
ReplayHandler replayHandler = ReplayModReplay.instance.getReplayHandler();
|
||||
if (replayHandler != null) {
|
||||
return replayHandler.getReplaySender().currentTimeStamp();
|
||||
|
||||
Reference in New Issue
Block a user