Update to 1.20.6

This commit is contained in:
Jonas Herzig
2024-06-18 14:48:26 +02:00
parent 3f12413c6b
commit 5218feb6b6
33 changed files with 424 additions and 25 deletions

View File

@@ -1,5 +1,6 @@
package com.replaymod.render.mixin;
import com.llamalad7.mixinextras.sugar.Local;
import com.replaymod.render.hooks.ForceChunkLoadingHook;
import com.replaymod.render.hooks.IForceChunkLoading;
import com.replaymod.render.utils.FlawlessFrames;
@@ -50,7 +51,7 @@ public abstract class Mixin_ForceChunkLoading implements IForceChunkLoading {
@Shadow protected abstract void applyFrustum(Frustum par1);
@Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;setupTerrain(Lnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/Frustum;ZZ)V"))
private void forceAllChunks(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f matrix4f, CallbackInfo ci) {
private void forceAllChunks(CallbackInfo ci, @Local(argsOnly = true) Camera camera) {
if (replayModRender_hook == null) {
return;
}

0
versions/1.20.6/.gitkeep Normal file
View File

View File

@@ -0,0 +1,16 @@
package com.replaymod.recording.mixin;
import net.minecraft.network.NetworkState;
import net.minecraft.network.handler.DecoderHandler;
import net.minecraft.network.listener.PacketListener;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import javax.annotation.Nonnull;
@Mixin(DecoderHandler.class)
public interface DecoderHandlerAccessor<T extends PacketListener> {
@Accessor
@Nonnull
NetworkState<T> getState();
}

View File

@@ -0,0 +1,62 @@
package com.replaymod.recording.mixin;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.serialization.Codec;
import com.replaymod.core.versions.MCVer;
import com.replaymod.recording.ReplayModRecording;
import com.replaymod.recording.packet.PacketListener;
import com.replaymod.replaystudio.lib.viaversion.api.protocol.packet.State;
import com.replaymod.replaystudio.protocol.Packet;
import com.replaymod.replaystudio.protocol.PacketType;
import com.replaymod.replaystudio.protocol.PacketTypeRegistry;
import com.replaymod.replaystudio.protocol.packets.PacketEnabledPacksData;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.minecraft.client.network.ClientConfigurationNetworkHandler;
import net.minecraft.nbt.NbtOps;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.world.dimension.DimensionType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
@Mixin(ClientConfigurationNetworkHandler.class)
public abstract class MixinNetHandlerConfigClient {
@Inject(method = "onReady", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;transitionInbound(Lnet/minecraft/network/NetworkState;Lnet/minecraft/network/listener/PacketListener;)V"))
public void recordEnabledPackData(CallbackInfo ci, @Local DynamicRegistryManager.Immutable registryManager) {
PacketListener packetListener = ReplayModRecording.instance.getConnectionEventHandler().getPacketListener();
if (packetListener == null) return;
ByteBuf byteBuf = Unpooled.buffer();
PacketByteBuf buf = new PacketByteBuf(byteBuf);
buf.writeString(PacketEnabledPacksData.ID);
buf.writeVarInt(1);
write(buf, registryManager.get(RegistryKeys.DIMENSION_TYPE), DimensionType.CODEC);
byte[] bytes = new byte[byteBuf.readableBytes()];
byteBuf.readBytes(bytes);
byteBuf.release();
PacketTypeRegistry registry = MCVer.getPacketTypeRegistry(State.CONFIGURATION);
packetListener.save(new Packet(registry, PacketType.ConfigCustomPayload, com.github.steveice10.netty.buffer.Unpooled.wrappedBuffer(bytes)));
packetListener.save(new Packet(registry, PacketType.ConfigFinish));
}
@Unique
private <T> void write(PacketByteBuf buf, Registry<T> registry, Codec<T> codec) {
buf.writeString(registry.getKey().getValue().toString());
buf.writeVarInt(registry.size());
for (Map.Entry<RegistryKey<T>, T> entry : registry.getEntrySet()) {
buf.writeString(entry.getKey().getValue().toString());
buf.writeNbt(codec.encodeStart(NbtOps.INSTANCE, entry.getValue()).getOrThrow());
}
}
}