3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-07-26 17:08:05 +02:00
Dieser Commit ist enthalten in:
Nassim Jahnke 2023-08-06 13:17:31 +10:00
Ursprung e12d491b53
Commit 9df7debb7e
5 geänderte Dateien mit 30 neuen und 17 gelöschten Zeilen

Datei anzeigen

@ -86,7 +86,7 @@ public class ItemRewriter<C extends ClientboundPacketType, S extends Serverbound
} }
} }
MappedItem data = protocol.getMappingData().getMappedItem(item.identifier()); MappedItem data = protocol.getMappingData() != null ? protocol.getMappingData().getMappedItem(item.identifier()) : null;
if (data == null) { if (data == null) {
// Just rewrite the id // Just rewrite the id
return super.handleItemToClient(item); return super.handleItemToClient(item);

Datei anzeigen

@ -55,7 +55,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
@Override @Override
protected void registerPackets() { protected void registerPackets() {
super.registerPackets(); super.registerPackets();
Via.getManager().debugHandler().setEnabled(true); ;
registerClientbound(ClientboundPackets1_20_2.SCOREBOARD_OBJECTIVE, wrapper -> { registerClientbound(ClientboundPackets1_20_2.SCOREBOARD_OBJECTIVE, wrapper -> {
final int slot = wrapper.read(Type.VAR_INT); final int slot = wrapper.read(Type.VAR_INT);
@ -68,13 +68,13 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
// We can't set the internal state to configuration here as protocols down the line will expect the state to be play // We can't set the internal state to configuration here as protocols down the line will expect the state to be play
wrapper.user().put(new ConfigurationPacketStorage()); wrapper.user().put(new ConfigurationPacketStorage());
System.out.println(wrapper.user().getProtocolInfo().getState());
}); });
registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.FINISH_CONFIGURATION.getId(), ClientboundConfigurationPackets1_20_2.FINISH_CONFIGURATION.getId(), wrapper -> { registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.FINISH_CONFIGURATION.getId(), ClientboundConfigurationPackets1_20_2.FINISH_CONFIGURATION.getId(), wrapper -> {
wrapper.cancel(); wrapper.cancel();
wrapper.create(ServerboundConfigurationPackets1_20_2.FINISH_CONFIGURATION).sendToServer(Protocol1_20To1_20_2.class); wrapper.create(ServerboundConfigurationPackets1_20_2.FINISH_CONFIGURATION).sendToServer(Protocol1_20To1_20_2.class);
wrapper.user().getProtocolInfo().setState(State.PLAY); wrapper.user().getProtocolInfo().setState(State.PLAY);
wrapper.user().get(ConfigurationPacketStorage.class).setFinished(true);
}); });
registerServerbound(State.LOGIN, ServerboundLoginPackets.HELLO.getId(), ServerboundLoginPackets.HELLO.getId(), wrapper -> { registerServerbound(State.LOGIN, ServerboundLoginPackets.HELLO.getId(), ServerboundLoginPackets.HELLO.getId(), wrapper -> {
@ -85,7 +85,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
wrapper.write(Type.UUID, uuid != null ? uuid : new UUID(0, 0)); wrapper.write(Type.UUID, uuid != null ? uuid : new UUID(0, 0));
}); });
cancelClientbound(ClientboundPackets1_20_2.START_CONFIGURATION); // TODO cancelClientbound(ClientboundPackets1_20_2.START_CONFIGURATION); // TODO Implement switch back
// Some can be directly remapped to play packets, others need to be queued // Some can be directly remapped to play packets, others need to be queued
registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.DISCONNECT.getId(), ClientboundPackets1_19_4.DISCONNECT.getId()); registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.DISCONNECT.getId(), ClientboundPackets1_19_4.DISCONNECT.getId());
@ -118,7 +118,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
@Override @Override
public void transform(final Direction direction, final State state, final PacketWrapper wrapper) throws Exception { public void transform(final Direction direction, final State state, final PacketWrapper wrapper) throws Exception {
final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().get(ConfigurationPacketStorage.class); final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().get(ConfigurationPacketStorage.class);
if (configurationPacketStorage == null) { if (configurationPacketStorage == null || configurationPacketStorage.isFinished()) {
super.transform(direction, state, wrapper); super.transform(direction, state, wrapper);
return; return;
} }
@ -138,9 +138,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol<ClientboundPac
} else if (id == ServerboundPackets1_19_4.RESOURCE_PACK_STATUS.getId()) { } else if (id == ServerboundPackets1_19_4.RESOURCE_PACK_STATUS.getId()) {
wrapper.setPacketType(ServerboundConfigurationPackets1_20_2.RESOURCE_PACK); wrapper.setPacketType(ServerboundConfigurationPackets1_20_2.RESOURCE_PACK);
} else { } else {
// Can't do // Can't do (maybe should do?)
// TODO Queue
System.out.println("Cancelling: " + state + " - " + wrapper.getPacketType() + " " + wrapper.getId());
throw CancelException.generate(); throw CancelException.generate();
} }
} }

Datei anzeigen

@ -31,6 +31,8 @@ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18T
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4;
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.RecipeRewriter1_19_4; import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.RecipeRewriter1_19_4;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.type.ChunkType1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.type.ChunkType1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4; import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
import com.viaversion.viaversion.util.MathUtil; import com.viaversion.viaversion.util.MathUtil;
@ -44,7 +46,13 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
@Override @Override
public void registerPackets() { public void registerPackets() {
protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START); protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START);
protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED); protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED, null, wrapper -> {
wrapper.cancel();
final PacketWrapper receivedPacket = wrapper.create(ServerboundPackets1_20_2.CHUNK_BATCH_RECEIVED);
receivedPacket.write(Type.FLOAT, 500F); // Requested next batch size... arbitrary value here
receivedPacket.sendToServer(Protocol1_20To1_20_2.class);
});
protocol.registerClientbound(ClientboundPackets1_20_2.UNLOAD_CHUNK, wrapper -> { protocol.registerClientbound(ClientboundPackets1_20_2.UNLOAD_CHUNK, wrapper -> {
final ChunkPosition chunkPosition = wrapper.read(Type.CHUNK_POSITION); final ChunkPosition chunkPosition = wrapper.read(Type.CHUNK_POSITION);
@ -214,7 +222,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
} }
}); });
new RecipeRewriter1_19_4<ClientboundPackets1_20_2>(protocol) { new RecipeRewriter1_20_2<ClientboundPackets1_20_2>(protocol) {
@Override @Override
public void handleCraftingShapeless(final PacketWrapper wrapper) throws Exception { public void handleCraftingShapeless(final PacketWrapper wrapper) throws Exception {
wrapper.passthrough(Type.STRING); // Group wrapper.passthrough(Type.STRING); // Group

Datei anzeigen

@ -47,7 +47,7 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter<Clientbound
@Override @Override
public void register() { public void register() {
handler(wrapper -> { handler(wrapper -> {
final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().get(ConfigurationPacketStorage.class); final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().remove(ConfigurationPacketStorage.class);
wrapper.passthrough(Type.INT); // Entity id wrapper.passthrough(Type.INT); // Entity id
wrapper.passthrough(Type.BOOLEAN); // Hardcore wrapper.passthrough(Type.BOOLEAN); // Hardcore
@ -75,8 +75,8 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter<Clientbound
wrapper.write(Type.BOOLEAN, reducedDebugInfo); wrapper.write(Type.BOOLEAN, reducedDebugInfo);
wrapper.write(Type.BOOLEAN, showRespawnScreen); wrapper.write(Type.BOOLEAN, showRespawnScreen);
wrapper.cancel();
wrapper.send(Protocol1_20To1_20_2.class); wrapper.send(Protocol1_20To1_20_2.class);
wrapper.cancel();
final PacketWrapper featuresPacket = wrapper.create(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES); final PacketWrapper featuresPacket = wrapper.create(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES);
featuresPacket.write(Type.STRING_ARRAY, configurationPacketStorage.enabledFeatures()); featuresPacket.write(Type.STRING_ARRAY, configurationPacketStorage.enabledFeatures());

Datei anzeigen

@ -17,6 +17,7 @@
*/ */
package com.viaversion.viabackwards.protocol.protocol1_20_4to1_20_2.storage; package com.viaversion.viabackwards.protocol.protocol1_20_4to1_20_2.storage;
import com.google.common.base.Preconditions;
import com.viaversion.viabackwards.protocol.protocol1_20_4to1_20_2.Protocol1_20To1_20_2; import com.viaversion.viabackwards.protocol.protocol1_20_4to1_20_2.Protocol1_20To1_20_2;
import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.connection.UserConnection;
@ -33,8 +34,10 @@ public final class ConfigurationPacketStorage implements StorableObject {
private final List<QueuedPacket> rawPackets = new ArrayList<>(); private final List<QueuedPacket> rawPackets = new ArrayList<>();
private CompoundTag registry; private CompoundTag registry;
private String[] enabledFeatures; private String[] enabledFeatures;
private boolean finished;
public CompoundTag registry() { public CompoundTag registry() {
Preconditions.checkNotNull(registry);
return registry; return registry;
} }
@ -43,6 +46,7 @@ public final class ConfigurationPacketStorage implements StorableObject {
} }
public String[] enabledFeatures() { public String[] enabledFeatures() {
Preconditions.checkNotNull(enabledFeatures);
return enabledFeatures; return enabledFeatures;
} }
@ -50,14 +54,9 @@ public final class ConfigurationPacketStorage implements StorableObject {
this.enabledFeatures = enabledFeatures; this.enabledFeatures = enabledFeatures;
} }
public List<QueuedPacket> getRawPackets() {
return rawPackets;
}
public void addRawPacket(final PacketWrapper wrapper, final PacketType type) throws Exception { public void addRawPacket(final PacketWrapper wrapper, final PacketType type) throws Exception {
// It's easier to just copy it to a byte array buffer than to manually read the data // It's easier to just copy it to a byte array buffer than to manually read the data
final ByteBuf buf = Unpooled.buffer(); final ByteBuf buf = Unpooled.buffer();
final int id = wrapper.getId();
//noinspection deprecation //noinspection deprecation
wrapper.setId(-1); // Don't write the packet id to the buffer wrapper.setId(-1); // Don't write the packet id to the buffer
wrapper.writeToBuffer(buf); wrapper.writeToBuffer(buf);
@ -75,6 +74,14 @@ public final class ConfigurationPacketStorage implements StorableObject {
} }
} }
public boolean isFinished() {
return finished;
}
public void setFinished(final boolean finished) {
this.finished = finished;
}
public static final class QueuedPacket { public static final class QueuedPacket {
private final ByteBuf buf; private final ByteBuf buf;
private final PacketType packetType; private final PacketType packetType;