3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-11-19 14:30:16 +01:00

Cleanup config packet registration in newer protocols

Dieser Commit ist enthalten in:
Nassim Jahnke 2024-01-26 15:48:10 +01:00
Ursprung ce8fab7c44
Commit 1dafa7d273
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: EF6771C01F6EF02F
34 geänderte Dateien mit 332 neuen und 241 gelöschten Zeilen

Datei anzeigen

@ -133,43 +133,33 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
appendClientbound(startConfigurationPacket, setServerStateHandler(State.CONFIGURATION)); appendClientbound(startConfigurationPacket, setServerStateHandler(State.CONFIGURATION));
} }
final ServerboundPacketType finishConfigurationPacket = serverboundFinishConfigurationPacket(); final SU finishConfigurationPacket = serverboundFinishConfigurationPacket();
if (finishConfigurationPacket != null) { if (finishConfigurationPacket != null) {
appendServerbound(finishConfigurationPacket, setClientStateHandler(State.PLAY)); appendServerbound(finishConfigurationPacket, setClientStateHandler(State.PLAY));
} }
final ClientboundPacketType clientboundFinishConfigurationPacket = clientboundFinishConfigurationPacket(); final CU clientboundFinishConfigurationPacket = clientboundFinishConfigurationPacket();
if (clientboundFinishConfigurationPacket != null) { if (clientboundFinishConfigurationPacket != null) {
appendClientbound(clientboundFinishConfigurationPacket, setServerStateHandler(State.PLAY)); appendClientbound(clientboundFinishConfigurationPacket, setServerStateHandler(State.PLAY));
} }
} }
private void appendClientbound(final ClientboundPacketType type, final PacketHandler handler) { public void appendClientbound(final CU type, final PacketHandler handler) {
final PacketMapping mapping = clientboundMappings.mappedPacket(type.state(), type.getId()); // Use existing handler if present final PacketMapping mapping = clientboundMappings.mappedPacket(type.state(), type.getId());
final PacketHandler newHandler;
final int mappedPacketId;
if (mapping != null) { if (mapping != null) {
newHandler = mapping.handler().append(handler); mapping.appendHandler(handler);
mappedPacketId = mapping.mappedPacketId() != null ? mapping.mappedPacketId() : type.getId();
} else { } else {
newHandler = handler; registerClientbound(type, handler);
mappedPacketId = type.getId();
} }
registerClientbound(type.state(), type.getId(), mappedPacketId, newHandler, true);
} }
private void appendServerbound(final ServerboundPacketType type, final PacketHandler handler) { public void appendServerbound(final SU type, final PacketHandler handler) {
final PacketMapping mapping = serverboundMappings.mappedPacket(type.state(), type.getId()); // Use existing handler if present final PacketMapping mapping = serverboundMappings.mappedPacket(type.state(), type.getId());
final PacketHandler newHandler;
final int mappedPacketId;
if (mapping != null) { if (mapping != null) {
newHandler = mapping.handler().append(handler); mapping.appendHandler(handler);
mappedPacketId = mapping.mappedPacketId() != null ? mapping.mappedPacketId() : type.getId();
} else { } else {
newHandler = handler; registerServerbound(type, handler);
mappedPacketId = type.getId();
} }
registerServerbound(type.state(), type.getId(), mappedPacketId, newHandler, true);
} }
private <U extends PacketType, M extends PacketType> void registerPacketIdChanges( private <U extends PacketType, M extends PacketType> void registerPacketIdChanges(
@ -181,17 +171,16 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
for (Map.Entry<State, PacketTypeMap<M>> entry : mappedPacketTypes.entrySet()) { for (Map.Entry<State, PacketTypeMap<M>> entry : mappedPacketTypes.entrySet()) {
PacketTypeMap<M> mappedTypes = entry.getValue(); PacketTypeMap<M> mappedTypes = entry.getValue();
PacketTypeMap<U> unmappedTypes = unmappedPacketTypes.get(entry.getKey()); PacketTypeMap<U> unmappedTypes = unmappedPacketTypes.get(entry.getKey());
registerPacketIdChanges(unmappedTypes, mappedTypes, registeredPredicate, registerConsumer, true); registerPacketIdChanges(unmappedTypes, mappedTypes, registeredPredicate, registerConsumer);
} }
} }
protected <U extends PacketType, M extends PacketType> void registerPacketIdChanges(PacketTypeMap<U> unmappedTypes, PacketTypeMap<M> mappedTypes, Predicate<U> registeredPredicate, BiConsumer<U, M> registerConsumer, boolean errorOnMissing) { protected <U extends PacketType, M extends PacketType> void registerPacketIdChanges(PacketTypeMap<U> unmappedTypes, PacketTypeMap<M> mappedTypes, Predicate<U> registeredPredicate, BiConsumer<U, M> registerConsumer) {
for (U unmappedType : unmappedTypes.types()) { for (U unmappedType : unmappedTypes.types()) {
M mappedType = mappedTypes.typeByName(unmappedType.getName()); M mappedType = mappedTypes.typeByName(unmappedType.getName());
if (mappedType == null) { if (mappedType == null) {
// No mapped packet of the same name exists // No mapped packet of the same name exists
Preconditions.checkArgument(registeredPredicate.test(unmappedType) || !errorOnMissing, Preconditions.checkArgument(registeredPredicate.test(unmappedType), "Packet %s in %s has no mapping - it needs to be manually cancelled or remapped", unmappedType, getClass());
"Packet %s in %s has no mapping - it needs to be manually cancelled or remapped", unmappedType, getClass());
continue; continue;
} }
@ -202,40 +191,6 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
} }
} }
@Deprecated // TODO Should instead be done automatically/properly via the packet types provider
protected void registerClientboundPacketIdChanges(State state, Class<? extends ClientboundPacketType> unmappedPacketTypesClass, Class<? extends ClientboundPacketType> mappedPacketTypesClass) {
registerPacketIdChanges(
PacketTypeMap.of(unmappedPacketTypesClass),
PacketTypeMap.of(mappedPacketTypesClass),
type -> false,
(unmappedType, mappedType) -> {
final PacketMapping mapping = clientboundMappings.mappedPacket(state, unmappedType.getId());
this.registerClientbound(state, unmappedType.getId(), mappedType.getId(), wrapper -> {
if (mapping != null && mapping.handler() != null) {
mapping.handler().handle(wrapper);
}
}, true);
}, false
);
}
@Deprecated // TODO Should instead be done automatically/properly via the packet types provider
protected void registerServerboundPacketIdChanges(State state, Class<? extends ServerboundPacketType> unmappedPacketTypesClass, Class<? extends ServerboundPacketType> mappedPacketTypesClass) {
registerPacketIdChanges(
PacketTypeMap.of(unmappedPacketTypesClass),
PacketTypeMap.of(mappedPacketTypesClass),
type -> false,
(unmappedType, mappedType) -> {
final PacketMapping mapping = serverboundMappings.mappedPacket(state, unmappedType.getId());
this.registerServerbound(state, unmappedType.getId(), mappedType.getId(), wrapper -> {
if (mapping != null && mapping.handler() != null) {
mapping.handler().handle(wrapper);
}
}, true);
}, false
);
}
@Override @Override
public final void loadMappingData() { public final void loadMappingData() {
getMappingData().load(); getMappingData().load();
@ -278,10 +233,10 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
protected PacketTypesProvider<CU, CM, SM, SU> createPacketTypesProvider() { protected PacketTypesProvider<CU, CM, SM, SU> createPacketTypesProvider() {
return new SimplePacketTypesProvider<>( return new SimplePacketTypesProvider<>(
packetTypeMap(unmappedClientboundPacketType), packetTypeMap(unmappedClientboundPacketType, unmappedClientboundPacketType),
packetTypeMap(mappedClientboundPacketType), packetTypeMap(mappedClientboundPacketType, mappedClientboundPacketType),
packetTypeMap(mappedServerboundPacketType), packetTypeMap(mappedServerboundPacketType, mappedServerboundPacketType),
packetTypeMap(unmappedServerboundPacketType) packetTypeMap(unmappedServerboundPacketType, unmappedServerboundPacketType)
); );
} }
@ -293,35 +248,50 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
return PacketMappings.arrayMappings(); return PacketMappings.arrayMappings();
} }
protected <P extends PacketType> Map<State, PacketTypeMap<P>> packetTypeMap(@Nullable Class<P> packetTypeClass) { /**
if (packetTypeClass != null) { * Returns a map of packet types by state.
Map<State, PacketTypeMap<P>> map = new EnumMap<>(State.class); *
map.put(State.PLAY, PacketTypeMap.of(packetTypeClass)); * @param parent parent packet type class as given by the Protocol generics
return map; * @param packetTypeClasses packet type enum classes belonging to the parent type
} * @param <P> packet type class
* @return map of packet types by state
*/
@SafeVarargs
protected final <P extends PacketType> Map<State, PacketTypeMap<P>> packetTypeMap(@Nullable Class<P> parent, Class<? extends P>... packetTypeClasses) {
if (parent == null) {
return Collections.emptyMap(); return Collections.emptyMap();
} }
final Map<State, PacketTypeMap<P>> map = new EnumMap<>(State.class);
for (final Class<? extends P> packetTypeClass : packetTypeClasses) {
// Get state from first enum type
final P[] types = packetTypeClass.getEnumConstants();
Preconditions.checkArgument(types != null, "%s not an enum", packetTypeClass);
Preconditions.checkArgument(types.length > 0, "Enum %s has no types", packetTypeClass);
final State state = types[0].state();
map.put(state, PacketTypeMap.of(packetTypeClass));
}
return map;
}
protected @Nullable SU configurationAcknowledgedPacket() { protected @Nullable SU configurationAcknowledgedPacket() {
final Map<State, PacketTypeMap<SU>> packetTypes = packetTypesProvider.unmappedServerboundPacketTypes(); final PacketTypeMap<SU> packetTypeMap = packetTypesProvider.unmappedServerboundPacketTypes().get(State.PLAY);
final PacketTypeMap<SU> packetTypeMap = packetTypes.get(State.PLAY);
return packetTypeMap != null ? packetTypeMap.typeByName("CONFIGURATION_ACKNOWLEDGED") : null; return packetTypeMap != null ? packetTypeMap.typeByName("CONFIGURATION_ACKNOWLEDGED") : null;
} }
protected @Nullable CU startConfigurationPacket() { protected @Nullable CU startConfigurationPacket() {
final Map<State, PacketTypeMap<CU>> packetTypes = packetTypesProvider.unmappedClientboundPacketTypes(); final PacketTypeMap<CU> packetTypeMap = packetTypesProvider.unmappedClientboundPacketTypes().get(State.PLAY);
final PacketTypeMap<CU> packetTypeMap = packetTypes.get(State.PLAY);
return packetTypeMap != null ? packetTypeMap.typeByName("START_CONFIGURATION") : null; return packetTypeMap != null ? packetTypeMap.typeByName("START_CONFIGURATION") : null;
} }
protected @Nullable ServerboundPacketType serverboundFinishConfigurationPacket() { protected @Nullable SU serverboundFinishConfigurationPacket() {
// To be overridden final PacketTypeMap<SU> packetTypeMap = packetTypesProvider.unmappedServerboundPacketTypes().get(State.CONFIGURATION);
return null; return packetTypeMap != null ? packetTypeMap.typeByName("FINISH_CONFIGURATION") : null;
} }
protected @Nullable ClientboundPacketType clientboundFinishConfigurationPacket() { protected @Nullable CU clientboundFinishConfigurationPacket() {
// To be overridden final PacketTypeMap<CU> packetTypeMap = packetTypesProvider.unmappedClientboundPacketTypes().get(State.CONFIGURATION);
return null; return packetTypeMap != null ? packetTypeMap.typeByName("FINISH_CONFIGURATION") : null;
} }
// --------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------
@ -529,7 +499,7 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
} }
@Override @Override
public PacketTypesProvider<CU, CM, SM, SU> getPacketTypesProvider() { public final PacketTypesProvider<CU, CM, SM, SU> getPacketTypesProvider() {
return packetTypesProvider; return packetTypesProvider;
} }
@ -544,10 +514,6 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
storedObjects.put(object.getClass(), object); storedObjects.put(object.getClass(), object);
} }
public PacketTypesProvider<CU, CM, SM, SU> packetTypesProvider() {
return packetTypesProvider;
}
@Override @Override
public String toString() { public String toString() {
return "Protocol:" + getClass().getSimpleName(); return "Protocol:" + getClass().getSimpleName();

Datei anzeigen

@ -28,7 +28,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class PacketIdMapping implements PacketMapping { final class PacketIdMapping implements PacketMapping {
private final int mappedPacketId; private final int mappedPacketId;
private final PacketHandler handler; private PacketHandler handler;
PacketIdMapping(int mappedPacketId, @Nullable PacketHandler handler) { PacketIdMapping(int mappedPacketId, @Nullable PacketHandler handler) {
this.mappedPacketId = mappedPacketId; this.mappedPacketId = mappedPacketId;
@ -42,8 +42,12 @@ final class PacketIdMapping implements PacketMapping {
} }
@Override @Override
public Integer mappedPacketId() { public void appendHandler(final PacketHandler handler) {
return mappedPacketId; if (this.handler == null) {
this.handler = handler;
} else {
this.handler = this.handler.then(handler);
}
} }
@Override @Override

Datei anzeigen

@ -39,13 +39,6 @@ public interface PacketMapping {
*/ */
void applyType(PacketWrapper wrapper); void applyType(PacketWrapper wrapper);
/**
* Returns the mapped packet id if present.
*
* @return mapped packet type, or null if no action has to be taken
*/
@Nullable Integer mappedPacketId();
/** /**
* Returns a packet transformer to transform a packet from one protocol version to another. * Returns a packet transformer to transform a packet from one protocol version to another.
* *
@ -53,6 +46,13 @@ public interface PacketMapping {
*/ */
@Nullable PacketHandler handler(); @Nullable PacketHandler handler();
/**
* Appends a packet transformer to the current packet transformer.
*
* @param handler packet transformer
*/
void appendHandler(PacketHandler handler);
static PacketMapping of(final int mappedPacketId, @Nullable final PacketHandler handler) { static PacketMapping of(final int mappedPacketId, @Nullable final PacketHandler handler) {
return new PacketIdMapping(mappedPacketId, handler); return new PacketIdMapping(mappedPacketId, handler);
} }

Datei anzeigen

@ -29,7 +29,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
final class PacketTypeMapping implements PacketMapping { final class PacketTypeMapping implements PacketMapping {
private final PacketType mappedPacketType; private final PacketType mappedPacketType;
private final PacketHandler handler; private PacketHandler handler;
PacketTypeMapping(@Nullable PacketType mappedPacketType, @Nullable PacketHandler handler) { PacketTypeMapping(@Nullable PacketType mappedPacketType, @Nullable PacketHandler handler) {
this.mappedPacketType = mappedPacketType; this.mappedPacketType = mappedPacketType;
@ -44,8 +44,12 @@ final class PacketTypeMapping implements PacketMapping {
} }
@Override @Override
public @Nullable Integer mappedPacketId() { public void appendHandler(final PacketHandler handler) {
return mappedPacketType != null ? mappedPacketType.getId() : null; if (this.handler == null) {
this.handler = handler;
} else {
this.handler = this.handler.then(handler);
}
} }
@Override @Override

Datei anzeigen

@ -22,6 +22,7 @@
*/ */
package com.viaversion.viaversion.api.protocol.packet.provider; package com.viaversion.viaversion.api.protocol.packet.provider;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.protocol.packet.PacketType; import com.viaversion.viaversion.api.protocol.packet.PacketType;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import java.util.Collection; import java.util.Collection;
@ -54,14 +55,11 @@ public interface PacketTypeMap<P extends PacketType> {
*/ */
Collection<P> types(); Collection<P> types();
static <S extends PacketType, T extends S> PacketTypeMap<S> of(final Class<T> enumClass) { static <T extends PacketType, E extends T> PacketTypeMap<T> of(final Class<E> enumClass) {
if (!enumClass.isEnum()) { final T[] types = enumClass.getEnumConstants();
throw new IllegalArgumentException("Given class is not an enum"); Preconditions.checkArgument(types != null, "%s is not an enum", enumClass);
} final Map<String, T> byName = new HashMap<>(types.length);
for (final T type : types) {
final S[] types = enumClass.getEnumConstants();
final Map<String, S> byName = new HashMap<>(types.length);
for (final S type : types) {
byName.put(type.getName(), type); byName.put(type.getName(), type);
} }
return of(byName, types); return of(byName, types);

Datei anzeigen

@ -35,7 +35,13 @@ public interface PacketHandler {
*/ */
void handle(PacketWrapper wrapper) throws Exception; void handle(PacketWrapper wrapper) throws Exception;
default PacketHandler append(final PacketHandler handler) { /**
* Returns a new packet handler that runs the provided handler after this one.
*
* @param handler packet handler to run aftet this one
* @return a new packet handler that runs the provided handler after this one
*/
default PacketHandler then(final PacketHandler handler) {
return wrapper -> { return wrapper -> {
this.handle(wrapper); this.handle(wrapper);
handler.handle(wrapper); handler.handle(wrapper);

Datei anzeigen

@ -58,32 +58,32 @@ import org.checkerframework.checker.nullness.qual.Nullable;
public final class Protocol1_19_1To1_19 extends AbstractProtocol<ClientboundPackets1_19, ClientboundPackets1_19_1, ServerboundPackets1_19, ServerboundPackets1_19_1> { public final class Protocol1_19_1To1_19 extends AbstractProtocol<ClientboundPackets1_19, ClientboundPackets1_19_1, ServerboundPackets1_19, ServerboundPackets1_19_1> {
private static final String CHAT_REGISTRY_SNBT = "{\n" + private static final String CHAT_REGISTRY_SNBT = "{" +
" \"minecraft:chat_type\": {\n" + " \"minecraft:chat_type\": {" +
" \"type\": \"minecraft:chat_type\",\n" + " \"type\": \"minecraft:chat_type\"," +
" \"value\": [\n" + " \"value\": [" +
" {\n" + " {" +
" \"name\":\"minecraft:chat\",\n" + " \"name\":\"minecraft:chat\"," +
" \"id\":1,\n" + " \"id\":1," +
" \"element\":{\n" + " \"element\":{" +
" \"chat\":{\n" + " \"chat\":{" +
" \"translation_key\":\"chat.type.text\",\n" + " \"translation_key\":\"chat.type.text\"," +
" \"parameters\":[\n" + " \"parameters\":[" +
" \"sender\",\n" + " \"sender\"," +
" \"content\"\n" + " \"content\"" +
" ]\n" + " ]" +
" },\n" + " }," +
" \"narration\":{\n" + " \"narration\":{" +
" \"translation_key\":\"chat.type.text.narrate\",\n" + " \"translation_key\":\"chat.type.text.narrate\"," +
" \"parameters\":[\n" + " \"parameters\":[" +
" \"sender\",\n" + " \"sender\"," +
" \"content\"\n" + " \"content\"" +
" ]\n" + " ]" +
" }\n" + " }" +
" }\n" + " }" +
" }" +
" ]" +
" }" + " }" +
" ]\n" +
" }\n" +
"}"; "}";
private static final CompoundTag CHAT_REGISTRY; private static final CompoundTag CHAT_REGISTRY;

Datei anzeigen

@ -17,10 +17,9 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet; package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
public enum ClientboundConfigurationPackets1_20_2 implements ClientboundPacketType { public enum ClientboundConfigurationPackets1_20_2 implements ClientboundPacket1_20_2 {
CUSTOM_PAYLOAD, // 0x00 CUSTOM_PAYLOAD, // 0x00
DISCONNECT, // 0x01 DISCONNECT, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
public interface ClientboundPacket1_20_2 extends ClientboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet; package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; public enum ClientboundPackets1_20_2 implements ClientboundPacket1_20_2 {
public enum ClientboundPackets1_20_2 implements ClientboundPacketType {
BUNDLE, // 0x00 BUNDLE, // 0x00
SPAWN_ENTITY, // 0x01 SPAWN_ENTITY, // 0x01

Datei anzeigen

@ -17,10 +17,10 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet; package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3;
public enum ServerboundConfigurationPackets1_20_2 implements ServerboundPacketType { public enum ServerboundConfigurationPackets1_20_2 implements ServerboundPacket1_20_2, ServerboundPacket1_20_3 {
CLIENT_INFORMATION, // 0x00 CLIENT_INFORMATION, // 0x00
CUSTOM_PAYLOAD, // 0x01 CUSTOM_PAYLOAD, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
public interface ServerboundPacket1_20_2 extends ServerboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet; package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; public enum ServerboundPackets1_20_2 implements ServerboundPacket1_20_2 {
public enum ServerboundPackets1_20_2 implements ServerboundPacketType {
TELEPORT_CONFIRM, // 0x00 TELEPORT_CONFIRM, // 0x00
QUERY_BLOCK_NBT, // 0x01 QUERY_BLOCK_NBT, // 0x01

Datei anzeigen

@ -24,8 +24,8 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3;
import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
@ -34,15 +34,18 @@ import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.data.entity.EntityTrackerBase;
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.CommandRewriter1_19_4; import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.CommandRewriter1_19_4;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPacket1_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.ClientboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPacket1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.BlockItemPacketRewriter1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.BlockItemPacketRewriter1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.EntityPacketRewriter1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.EntityPacketRewriter1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5;
import com.viaversion.viaversion.rewriter.SoundRewriter; import com.viaversion.viaversion.rewriter.SoundRewriter;
import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter;
import com.viaversion.viaversion.rewriter.TagRewriter; import com.viaversion.viaversion.rewriter.TagRewriter;
@ -51,14 +54,14 @@ import java.nio.charset.StandardCharsets;
import java.util.BitSet; import java.util.BitSet;
import java.util.UUID; import java.util.UUID;
public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPackets1_20_2, ClientboundPackets1_20_3, ServerboundPackets1_20_2, ServerboundPackets1_20_3> { public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPacket1_20_2, ClientboundPacket1_20_3, ServerboundPacket1_20_2, ServerboundPacket1_20_3> {
public static final MappingData MAPPINGS = new MappingDataBase("1.20.2", "1.20.3"); public static final MappingData MAPPINGS = new MappingDataBase("1.20.2", "1.20.3");
private final BlockItemPacketRewriter1_20_3 itemRewriter = new BlockItemPacketRewriter1_20_3(this); private final BlockItemPacketRewriter1_20_3 itemRewriter = new BlockItemPacketRewriter1_20_3(this);
private final EntityPacketRewriter1_20_3 entityRewriter = new EntityPacketRewriter1_20_3(this); private final EntityPacketRewriter1_20_3 entityRewriter = new EntityPacketRewriter1_20_3(this);
public Protocol1_20_3To1_20_2() { public Protocol1_20_3To1_20_2() {
super(ClientboundPackets1_20_2.class, ClientboundPackets1_20_3.class, ServerboundPackets1_20_2.class, ServerboundPackets1_20_3.class); super(ClientboundPacket1_20_2.class, ClientboundPacket1_20_3.class, ServerboundPacket1_20_2.class, ServerboundPacket1_20_3.class);
} }
@Override @Override
@ -67,10 +70,10 @@ public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPa
cancelServerbound(ServerboundPackets1_20_3.CONTAINER_SLOT_STATE_CHANGED); cancelServerbound(ServerboundPackets1_20_3.CONTAINER_SLOT_STATE_CHANGED);
final TagRewriter<ClientboundPackets1_20_2> tagRewriter = new TagRewriter<>(this); final TagRewriter<ClientboundPacket1_20_2> tagRewriter = new TagRewriter<>(this);
tagRewriter.registerGeneric(ClientboundPackets1_20_2.TAGS); tagRewriter.registerGeneric(ClientboundPackets1_20_2.TAGS);
final SoundRewriter<ClientboundPackets1_20_2> soundRewriter = new SoundRewriter<>(this); final SoundRewriter<ClientboundPacket1_20_2> soundRewriter = new SoundRewriter<>(this);
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND);
soundRewriter.registerSound(ClientboundPackets1_20_2.ENTITY_SOUND); soundRewriter.registerSound(ClientboundPackets1_20_2.ENTITY_SOUND);
@ -226,7 +229,7 @@ public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPa
} }
}); });
registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.DISCONNECT.getId(), ClientboundConfigurationPackets1_20_2.DISCONNECT.getId(), this::convertComponent); registerClientbound(ClientboundConfigurationPackets1_20_2.DISCONNECT, this::convertComponent);
registerClientbound(ClientboundPackets1_20_2.DISCONNECT, this::convertComponent); registerClientbound(ClientboundPackets1_20_2.DISCONNECT, this::convertComponent);
registerClientbound(ClientboundPackets1_20_2.RESOURCE_PACK, ClientboundPackets1_20_3.RESOURCE_PACK_PUSH, resourcePackHandler(ClientboundPackets1_20_3.RESOURCE_PACK_POP)); registerClientbound(ClientboundPackets1_20_2.RESOURCE_PACK, ClientboundPackets1_20_3.RESOURCE_PACK_PUSH, resourcePackHandler(ClientboundPackets1_20_3.RESOURCE_PACK_POP));
registerClientbound(ClientboundPackets1_20_2.SERVER_DATA, this::convertComponent); registerClientbound(ClientboundPackets1_20_2.SERVER_DATA, this::convertComponent);
@ -296,10 +299,9 @@ public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPa
registerServerbound(ServerboundPackets1_20_3.RESOURCE_PACK_STATUS, resourcePackStatusHandler()); registerServerbound(ServerboundPackets1_20_3.RESOURCE_PACK_STATUS, resourcePackStatusHandler());
registerServerbound(State.CONFIGURATION, ServerboundConfigurationPackets1_20_2.RESOURCE_PACK, resourcePackStatusHandler()); registerServerbound(ServerboundConfigurationPackets1_20_2.RESOURCE_PACK, resourcePackStatusHandler());
registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.RESOURCE_PACK.getId(), ClientboundConfigurationPackets1_20_3.RESOURCE_PACK_PUSH.getId(), resourcePackHandler(ClientboundConfigurationPackets1_20_3.RESOURCE_PACK_POP)); registerClientbound(ClientboundConfigurationPackets1_20_2.RESOURCE_PACK, ClientboundConfigurationPackets1_20_3.RESOURCE_PACK_PUSH, resourcePackHandler(ClientboundConfigurationPackets1_20_3.RESOURCE_PACK_POP));
registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.UPDATE_TAGS.getId(), ClientboundConfigurationPackets1_20_3.UPDATE_TAGS.getId(), tagRewriter.getGenericHandler()); registerClientbound(ClientboundConfigurationPackets1_20_2.UPDATE_TAGS, tagRewriter.getGenericHandler());
registerClientboundPacketIdChanges(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.class, ClientboundConfigurationPackets1_20_3.class);
} }
private PacketHandler resourcePackStatusHandler() { private PacketHandler resourcePackStatusHandler() {
@ -380,12 +382,12 @@ public final class Protocol1_20_3To1_20_2 extends AbstractProtocol<ClientboundPa
} }
@Override @Override
protected ServerboundPacketType serverboundFinishConfigurationPacket() { protected PacketTypesProvider<ClientboundPacket1_20_2, ClientboundPacket1_20_3, ServerboundPacket1_20_2, ServerboundPacket1_20_3> createPacketTypesProvider() {
return ServerboundConfigurationPackets1_20_2.FINISH_CONFIGURATION; return new SimplePacketTypesProvider<>(
} packetTypeMap(unmappedClientboundPacketType, ClientboundPackets1_20_2.class, ClientboundConfigurationPackets1_20_2.class),
packetTypeMap(mappedClientboundPacketType, ClientboundPackets1_20_3.class, ClientboundConfigurationPackets1_20_3.class),
@Override packetTypeMap(mappedServerboundPacketType, ServerboundPackets1_20_2.class, ServerboundConfigurationPackets1_20_2.class),
protected ClientboundPacketType clientboundFinishConfigurationPacket() { packetTypeMap(unmappedServerboundPacketType, ServerboundPackets1_20_3.class, ServerboundConfigurationPackets1_20_2.class)
return ClientboundConfigurationPackets1_20_2.FINISH_CONFIGURATION; );
} }
} }

Datei anzeigen

@ -17,10 +17,9 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet; package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
public enum ClientboundConfigurationPackets1_20_3 implements ClientboundPacketType { public enum ClientboundConfigurationPackets1_20_3 implements ClientboundPacket1_20_3 {
CUSTOM_PAYLOAD, // 0x00 CUSTOM_PAYLOAD, // 0x00
DISCONNECT, // 0x01 DISCONNECT, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
public interface ClientboundPacket1_20_3 extends ClientboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet; package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; public enum ClientboundPackets1_20_3 implements ClientboundPacket1_20_3 {
public enum ClientboundPackets1_20_3 implements ClientboundPacketType {
BUNDLE, // 0x00 BUNDLE, // 0x00
SPAWN_ENTITY, // 0x01 SPAWN_ENTITY, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
public interface ServerboundPacket1_20_3 extends ServerboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet; package com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; public enum ServerboundPackets1_20_3 implements ServerboundPacket1_20_3 {
public enum ServerboundPackets1_20_3 implements ServerboundPacketType {
TELEPORT_CONFIRM, // 0x00 TELEPORT_CONFIRM, // 0x00
QUERY_BLOCK_NBT, // 0x01 QUERY_BLOCK_NBT, // 0x01

Datei anzeigen

@ -24,15 +24,17 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPacket1_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.ClientboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter<ClientboundPackets1_20_2, ServerboundPackets1_20_3, Protocol1_20_3To1_20_2> { public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter<ClientboundPacket1_20_2, ServerboundPacket1_20_3, Protocol1_20_3To1_20_2> {
public BlockItemPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) { public BlockItemPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) {
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
@ -40,7 +42,7 @@ public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter<Clientboun
@Override @Override
public void registerPackets() { public void registerPackets() {
final BlockRewriter<ClientboundPackets1_20_2> blockRewriter = BlockRewriter.for1_20_2(protocol); final BlockRewriter<ClientboundPacket1_20_2> blockRewriter = BlockRewriter.for1_20_2(protocol);
blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION); blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION);
blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE); blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE);
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE); blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE);
@ -82,7 +84,7 @@ public final class BlockItemPacketRewriter1_20_3 extends ItemRewriter<Clientboun
} }
}); });
new RecipeRewriter1_20_2<ClientboundPackets1_20_2>(protocol) { new RecipeRewriter1_20_2<ClientboundPacket1_20_2>(protocol) {
@Override @Override
public void handleCraftingShaped(final PacketWrapper wrapper) throws Exception { public void handleCraftingShaped(final PacketWrapper wrapper) throws Exception {
// Move width and height down // Move width and height down

Datei anzeigen

@ -23,12 +23,12 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType; import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_20_2; import com.viaversion.viaversion.api.type.types.version.Types1_20_2;
import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPacket1_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.ClientboundPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
@ -36,7 +36,7 @@ import com.viaversion.viaversion.rewriter.EntityRewriter;
import com.viaversion.viaversion.util.ComponentUtil; import com.viaversion.viaversion.util.ComponentUtil;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
public final class EntityPacketRewriter1_20_3 extends EntityRewriter<ClientboundPackets1_20_2, Protocol1_20_3To1_20_2> { public final class EntityPacketRewriter1_20_3 extends EntityRewriter<ClientboundPacket1_20_2, Protocol1_20_3To1_20_2> {
public EntityPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) { public EntityPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) {
super(protocol); super(protocol);
@ -48,7 +48,7 @@ public final class EntityPacketRewriter1_20_3 extends EntityRewriter<Clientbound
registerMetadataRewriter(ClientboundPackets1_20_2.ENTITY_METADATA, Types1_20_2.METADATA_LIST, Types1_20_3.METADATA_LIST); registerMetadataRewriter(ClientboundPackets1_20_2.ENTITY_METADATA, Types1_20_2.METADATA_LIST, Types1_20_3.METADATA_LIST);
registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES); registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES);
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.REGISTRY_DATA, new PacketHandlers() { protocol.registerClientbound(ClientboundConfigurationPackets1_20_2.REGISTRY_DATA, new PacketHandlers() {
@Override @Override
protected void register() { protected void register() {
map(Type.COMPOUND_TAG); // Registry data map(Type.COMPOUND_TAG); // Registry data

Datei anzeigen

@ -22,20 +22,24 @@ import com.viaversion.viaversion.api.data.MappingData;
import com.viaversion.viaversion.api.data.MappingDataBase; import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.data.entity.EntityTrackerBase;
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundConfigurationPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundConfigurationPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.BlockItemPacketRewriter1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.BlockItemPacketRewriter1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.EntityPacketRewriter1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.EntityPacketRewriter1_20_5;
@ -43,25 +47,25 @@ import com.viaversion.viaversion.rewriter.SoundRewriter;
import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter;
import com.viaversion.viaversion.rewriter.TagRewriter; import com.viaversion.viaversion.rewriter.TagRewriter;
public final class Protocol1_20_5To1_20_3 extends AbstractProtocol<ClientboundPackets1_20_3, ClientboundPackets1_20_5, ServerboundPackets1_20_3, ServerboundPackets1_20_5> { public final class Protocol1_20_5To1_20_3 extends AbstractProtocol<ClientboundPacket1_20_3, ClientboundPacket1_20_5, ServerboundPacket1_20_3, ServerboundPacket1_20_5> {
public static final MappingData MAPPINGS = new MappingDataBase("1.20.3", "1.20.5"); public static final MappingData MAPPINGS = new MappingDataBase("1.20.3", "1.20.5");
private final EntityPacketRewriter1_20_5 entityRewriter = new EntityPacketRewriter1_20_5(this); private final EntityPacketRewriter1_20_5 entityRewriter = new EntityPacketRewriter1_20_5(this);
private final BlockItemPacketRewriter1_20_5 itemRewriter = new BlockItemPacketRewriter1_20_5(this); private final BlockItemPacketRewriter1_20_5 itemRewriter = new BlockItemPacketRewriter1_20_5(this);
public Protocol1_20_5To1_20_3() { public Protocol1_20_5To1_20_3() {
super(ClientboundPackets1_20_3.class, ClientboundPackets1_20_5.class, ServerboundPackets1_20_3.class, ServerboundPackets1_20_5.class); super(ClientboundPacket1_20_3.class, ClientboundPacket1_20_5.class, ServerboundPacket1_20_3.class, ServerboundPacket1_20_5.class);
} }
@Override @Override
protected void registerPackets() { protected void registerPackets() {
super.registerPackets(); super.registerPackets();
final TagRewriter<ClientboundPackets1_20_3> tagRewriter = new TagRewriter<>(this); final TagRewriter<ClientboundPacket1_20_3> tagRewriter = new TagRewriter<>(this);
tagRewriter.registerGeneric(ClientboundPackets1_20_3.TAGS); tagRewriter.registerGeneric(ClientboundPackets1_20_3.TAGS);
tagRewriter.registerGeneric(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.UPDATE_TAGS); tagRewriter.registerGeneric(ClientboundConfigurationPackets1_20_3.UPDATE_TAGS);
final SoundRewriter<ClientboundPackets1_20_3> soundRewriter = new SoundRewriter<>(this); final SoundRewriter<ClientboundPacket1_20_3> soundRewriter = new SoundRewriter<>(this);
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND);
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.ENTITY_SOUND); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.ENTITY_SOUND);
@ -81,11 +85,8 @@ public final class Protocol1_20_5To1_20_3 extends AbstractProtocol<ClientboundPa
}); });
cancelServerbound(State.LOGIN, ServerboundLoginPackets.COOKIE_RESPONSE.getId()); cancelServerbound(State.LOGIN, ServerboundLoginPackets.COOKIE_RESPONSE.getId());
cancelServerbound(State.CONFIGURATION, ServerboundConfigurationPackets1_20_5.COOKIE_RESPONSE.getId()); cancelServerbound(ServerboundConfigurationPackets1_20_5.COOKIE_RESPONSE);
cancelServerbound(ServerboundPackets1_20_5.COOKIE_RESPONSE); cancelServerbound(ServerboundPackets1_20_5.COOKIE_RESPONSE);
registerClientboundPacketIdChanges(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.class, ClientboundConfigurationPackets1_20_5.class);
registerServerboundPacketIdChanges(State.CONFIGURATION, ServerboundConfigurationPackets1_20_5.class, ServerboundConfigurationPackets1_20_2.class);
} }
@Override @Override
@ -116,12 +117,12 @@ public final class Protocol1_20_5To1_20_3 extends AbstractProtocol<ClientboundPa
} }
@Override @Override
protected ClientboundPacketType clientboundFinishConfigurationPacket() { protected PacketTypesProvider<ClientboundPacket1_20_3, ClientboundPacket1_20_5, ServerboundPacket1_20_3, ServerboundPacket1_20_5> createPacketTypesProvider() {
return ClientboundConfigurationPackets1_20_3.FINISH_CONFIGURATION; return new SimplePacketTypesProvider<>(
} packetTypeMap(unmappedClientboundPacketType, ClientboundPackets1_20_3.class, ClientboundConfigurationPackets1_20_3.class),
packetTypeMap(mappedClientboundPacketType, ClientboundPackets1_20_5.class, ClientboundConfigurationPackets1_20_5.class),
@Override packetTypeMap(mappedServerboundPacketType, ServerboundPackets1_20_3.class, ServerboundConfigurationPackets1_20_2.class),
protected ServerboundPacketType serverboundFinishConfigurationPacket() { packetTypeMap(unmappedServerboundPacketType, ServerboundPackets1_20_5.class, ServerboundConfigurationPackets1_20_5.class)
return ServerboundConfigurationPackets1_20_5.FINISH_CONFIGURATION; );
} }
} }

Datei anzeigen

@ -17,10 +17,9 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet; package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
public enum ClientboundConfigurationPackets1_20_5 implements ClientboundPacketType { public enum ClientboundConfigurationPackets1_20_5 implements ClientboundPacket1_20_5 {
COOKIE_REQUEST, // 0x00 COOKIE_REQUEST, // 0x00
CUSTOM_PAYLOAD, // 0x01 CUSTOM_PAYLOAD, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
public interface ClientboundPacket1_20_5 extends ClientboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet; package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; public enum ClientboundPackets1_20_5 implements ClientboundPacket1_20_5 {
public enum ClientboundPackets1_20_5 implements ClientboundPacketType {
BUNDLE, // 0x00 BUNDLE, // 0x00
SPAWN_ENTITY, // 0x01 SPAWN_ENTITY, // 0x01

Datei anzeigen

@ -17,10 +17,9 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet; package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.State;
public enum ServerboundConfigurationPackets1_20_5 implements ServerboundPacketType { public enum ServerboundConfigurationPackets1_20_5 implements ServerboundPacket1_20_5 {
CLIENT_INFORMATION, // 0x00 CLIENT_INFORMATION, // 0x00
COOKIE_RESPONSE, // 0x01 COOKIE_RESPONSE, // 0x01

Datei anzeigen

@ -0,0 +1,23 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
public interface ServerboundPacket1_20_5 extends ServerboundPacketType {
}

Datei anzeigen

@ -17,9 +17,7 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet; package com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; public enum ServerboundPackets1_20_5 implements ServerboundPacket1_20_5 {
public enum ServerboundPackets1_20_5 implements ServerboundPacketType {
TELEPORT_CONFIRM, // 0x00 TELEPORT_CONFIRM, // 0x00
QUERY_BLOCK_NBT, // 0x01 QUERY_BLOCK_NBT, // 0x01

Datei anzeigen

@ -24,15 +24,17 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5;
import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<ClientboundPackets1_20_3, ServerboundPackets1_20_5, Protocol1_20_5To1_20_3> { public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<ClientboundPacket1_20_3, ServerboundPacket1_20_5, Protocol1_20_5To1_20_3> {
public BlockItemPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) { public BlockItemPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) {
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
@ -40,7 +42,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
@Override @Override
public void registerPackets() { public void registerPackets() {
final BlockRewriter<ClientboundPackets1_20_3> blockRewriter = BlockRewriter.for1_20_2(protocol); final BlockRewriter<ClientboundPacket1_20_3> blockRewriter = BlockRewriter.for1_20_2(protocol);
blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION); blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION);
blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE); blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE);
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE); blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE);
@ -134,7 +136,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
} }
}); });
final RecipeRewriter1_20_3<ClientboundPackets1_20_3> recipeRewriter = new RecipeRewriter1_20_3<>(protocol); final RecipeRewriter1_20_3<ClientboundPacket1_20_3> recipeRewriter = new RecipeRewriter1_20_3<>(protocol);
protocol.registerClientbound(ClientboundPackets1_20_3.DECLARE_RECIPES, wrapper -> { protocol.registerClientbound(ClientboundPackets1_20_3.DECLARE_RECIPES, wrapper -> {
final int size = wrapper.passthrough(Type.VAR_INT); final int size = wrapper.passthrough(Type.VAR_INT);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {

Datei anzeigen

@ -22,17 +22,18 @@ import com.github.steveice10.opennbt.tag.builtin.ListTag;
import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.NumberTag;
import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag; import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.data.entity.DimensionData; import com.viaversion.viaversion.api.data.entity.DimensionData;
import com.viaversion.viaversion.api.minecraft.RegistryEntry; import com.viaversion.viaversion.api.minecraft.RegistryEntry;
import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5; import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.AttributeMappings; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.AttributeMappings;
@ -41,7 +42,7 @@ import com.viaversion.viaversion.rewriter.EntityRewriter;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
import java.util.Map; import java.util.Map;
public final class EntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPackets1_20_3, Protocol1_20_5To1_20_3> { public final class EntityPacketRewriter1_20_5 extends EntityRewriter<ClientboundPacket1_20_3, Protocol1_20_5To1_20_3> {
public EntityPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) { public EntityPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) {
super(protocol); super(protocol);
@ -53,7 +54,7 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, Types1_20_3.METADATA_LIST, Types1_20_5.METADATA_LIST); registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, Types1_20_3.METADATA_LIST, Types1_20_5.METADATA_LIST);
registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES); registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES);
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() { protocol.registerClientbound(ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() {
@Override @Override
protected void register() { protected void register() {
handler(wrapper -> { handler(wrapper -> {

Datei anzeigen

@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.Key;
@ -150,10 +149,6 @@ public class TagRewriter<C extends ClientboundPacketType> {
protocol.registerClientbound(packetType, getGenericHandler()); protocol.registerClientbound(packetType, getGenericHandler());
} }
public void registerGeneric(State state, ClientboundPacketType packetType) {
protocol.registerClientbound(state, packetType, getGenericHandler());
}
public PacketHandler getHandler(@Nullable RegistryType readUntilType) { public PacketHandler getHandler(@Nullable RegistryType readUntilType) {
return wrapper -> { return wrapper -> {
for (RegistryType type : RegistryType.getValues()) { for (RegistryType type : RegistryType.getValues()) {

Datei anzeigen

@ -22,15 +22,11 @@ import com.viaversion.viaversion.api.data.MappingData;
import com.viaversion.viaversion.api.data.MappingDataBase; import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.data.entity.EntityTrackerBase;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundConfigurationPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5;
import com.viaversion.viaversion.rewriter.SoundRewriter; import com.viaversion.viaversion.rewriter.SoundRewriter;
import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter;
import com.viaversion.viaversion.rewriter.TagRewriter; import com.viaversion.viaversion.rewriter.TagRewriter;
@ -39,13 +35,13 @@ import com.viaversion.viaversion.template.protocols.rewriter.EntityPacketRewrite
// Placeholders to replace (in the entire package): // Placeholders to replace (in the entire package):
// Protocol1_99To_98, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99 // Protocol1_99To_98, EntityPacketRewriter1_99, BlockItemPacketRewriter1_99
// ClientboundPackets1_20_5 // ClientboundPacket1_20_5
// ServerboundPackets1_20_5 // ServerboundPacket1_20_5
// ClientboundConfigurationPackets1_20_3 // ClientboundConfigurationPackets1_20_3
// ServerboundConfigurationPackets1_20_2 // ServerboundConfigurationPackets1_20_2
// Entity1_19_4Types (MAPPED type) // Entity1_19_4Types (MAPPED type)
// 1.99, 1.98 // 1.99, 1.98
public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets1_20_5, ClientboundPackets1_20_5, ServerboundPackets1_20_5, ServerboundPackets1_20_5> { public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPacket1_20_5, ClientboundPacket1_20_5, ServerboundPacket1_20_5, ServerboundPacket1_20_5> {
public static final MappingData MAPPINGS = new MappingDataBase("1.98", "1.99"); public static final MappingData MAPPINGS = new MappingDataBase("1.98", "1.99");
private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this); private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this);
@ -53,7 +49,7 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
public Protocol1_99To_98() { public Protocol1_99To_98() {
// Passing the class types into the super constructor is needed for automatic packet type id remapping, but can otherwise be omitted // Passing the class types into the super constructor is needed for automatic packet type id remapping, but can otherwise be omitted
super(ClientboundPackets1_20_5.class, ClientboundPackets1_20_5.class, ServerboundPackets1_20_5.class, ServerboundPackets1_20_5.class); super(ClientboundPacket1_20_5.class, ClientboundPacket1_20_5.class, ServerboundPacket1_20_5.class, ServerboundPacket1_20_5.class);
} }
@Override @Override
@ -61,12 +57,12 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
super.registerPackets(); super.registerPackets();
// Registers renames etc. as well as registry type id changes // Registers renames etc. as well as registry type id changes
final TagRewriter<ClientboundPackets1_20_5> tagRewriter = new TagRewriter<>(this); final TagRewriter<ClientboundPacket1_20_5> tagRewriter = new TagRewriter<>(this);
tagRewriter.registerGeneric(ClientboundPackets1_20_5.TAGS); tagRewriter.registerGeneric(ClientboundPackets1_20_5.TAGS);
tagRewriter.registerGeneric(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.UPDATE_TAGS); tagRewriter.registerGeneric(ClientboundConfigurationPackets1_20_5.UPDATE_TAGS);
// Registers sound id changes // Registers sound id changes
final SoundRewriter<ClientboundPackets1_20_5> soundRewriter = new SoundRewriter<>(this); final SoundRewriter<ClientboundPacket1_20_5> soundRewriter = new SoundRewriter<>(this);
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.SOUND); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.SOUND);
soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.ENTITY_SOUND); soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.ENTITY_SOUND);
@ -130,14 +126,4 @@ public final class Protocol1_99To_98 extends AbstractProtocol<ClientboundPackets
public BlockItemPacketRewriter1_99 getItemRewriter() { public BlockItemPacketRewriter1_99 getItemRewriter() {
return itemRewriter; return itemRewriter;
} }
@Override
protected ClientboundPacketType clientboundFinishConfigurationPacket() {
return ClientboundConfigurationPackets1_20_5.FINISH_CONFIGURATION;
}
@Override
protected ServerboundPacketType serverboundFinishConfigurationPacket() {
return ServerboundConfigurationPackets1_20_5.FINISH_CONFIGURATION;
}
} }

Datei anzeigen

@ -21,7 +21,9 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5;
import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter;
@ -30,7 +32,7 @@ import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
// To replace if needed: // To replace if needed:
// ChunkType1_20_2 // ChunkType1_20_2
// RecipeRewriter1_20_3 // RecipeRewriter1_20_3
public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundPackets1_20_5, ServerboundPackets1_20_5, Protocol1_99To_98> { public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundPacket1_20_5, ServerboundPacket1_20_5, Protocol1_99To_98> {
public BlockItemPacketRewriter1_99(final Protocol1_99To_98 protocol) { public BlockItemPacketRewriter1_99(final Protocol1_99To_98 protocol) {
super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY);
@ -41,7 +43,7 @@ public final class BlockItemPacketRewriter1_99 extends ItemRewriter<ClientboundP
// Register block and block state id changes // Register block and block state id changes
// Other places using block state id mappings: Spawn particle, entity metadata, entity spawn (falling blocks) // Other places using block state id mappings: Spawn particle, entity metadata, entity spawn (falling blocks)
// Tags and statistics use block (!) ids // Tags and statistics use block (!) ids
final BlockRewriter<ClientboundPackets1_20_5> blockRewriter = BlockRewriter.for1_20_2(protocol); final BlockRewriter<ClientboundPacket1_20_5> blockRewriter = BlockRewriter.for1_20_2(protocol);
blockRewriter.registerBlockAction(ClientboundPackets1_20_5.BLOCK_ACTION); blockRewriter.registerBlockAction(ClientboundPackets1_20_5.BLOCK_ACTION);
blockRewriter.registerBlockChange(ClientboundPackets1_20_5.BLOCK_CHANGE); blockRewriter.registerBlockChange(ClientboundPackets1_20_5.BLOCK_CHANGE);
blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_5.MULTI_BLOCK_CHANGE); blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_5.MULTI_BLOCK_CHANGE);

Datei anzeigen

@ -19,11 +19,11 @@ package com.viaversion.viaversion.template.protocols.rewriter;
import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5; import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5;
import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5;
import com.viaversion.viaversion.rewriter.EntityRewriter; import com.viaversion.viaversion.rewriter.EntityRewriter;
import com.viaversion.viaversion.template.protocols.Protocol1_99To_98; import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
@ -31,7 +31,7 @@ import com.viaversion.viaversion.template.protocols.Protocol1_99To_98;
// Replace if needed // Replace if needed
// Types1_OLD // Types1_OLD
// Types1_20_5 // Types1_20_5
public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPackets1_20_5, Protocol1_99To_98> { public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPacket1_20_5, Protocol1_99To_98> {
public EntityPacketRewriter1_99(final Protocol1_99To_98 protocol) { public EntityPacketRewriter1_99(final Protocol1_99To_98 protocol) {
super(protocol); super(protocol);
@ -44,7 +44,7 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter<ClientboundPa
registerMetadataRewriter(ClientboundPackets1_20_5.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_5.METADATA_LIST); // Specify old and new metadata list if changed registerMetadataRewriter(ClientboundPackets1_20_5.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_5.METADATA_LIST); // Specify old and new metadata list if changed
registerRemoveEntities(ClientboundPackets1_20_5.REMOVE_ENTITIES); registerRemoveEntities(ClientboundPackets1_20_5.REMOVE_ENTITIES);
protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() { protocol.registerClientbound(ClientboundConfigurationPackets1_20_5.REGISTRY_DATA, new PacketHandlers() {
@Override @Override
protected void register() { protected void register() {
map(Type.STRING); // Registry map(Type.STRING); // Registry