Allow custom PacketMappings implementation in AbstractProtocol

This commit is contained in:
Nassim Jahnke 2023-02-22 16:54:54 +01:00
parent 35263e36ff
commit 3e2ee37829
No known key found for this signature in database
GPG Key ID: 6BE3B555EBC5982B
8 changed files with 44 additions and 4 deletions

View File

@ -64,12 +64,13 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
protected final Class<CM> mappedClientboundPacketType;
protected final Class<SM> mappedServerboundPacketType;
protected final Class<SU> unmappedServerboundPacketType;
private final PacketTypesProvider<CU, CM, SM, SU> packetTypesProvider;
private final PacketMappings serverboundMappings = PacketMappings.arrayMappings();
private final PacketMappings clientboundMappings = PacketMappings.arrayMappings();
protected final PacketTypesProvider<CU, CM, SM, SU> packetTypesProvider;
protected final PacketMappings clientboundMappings;
protected final PacketMappings serverboundMappings;
private final Map<Class<?>, Object> storedObjects = new HashMap<>();
private boolean initialized;
@Deprecated
protected AbstractProtocol() {
this(null, null, null, null);
}
@ -84,6 +85,8 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
this.mappedServerboundPacketType = mappedServerboundPacketType;
this.unmappedServerboundPacketType = unmappedServerboundPacketType;
this.packetTypesProvider = createPacketTypesProvider();
this.clientboundMappings = createClientboundPacketMappings();
this.serverboundMappings = createServerboundPacketMappings();
}
@Override
@ -188,6 +191,14 @@ public abstract class AbstractProtocol<CU extends ClientboundPacketType, CM exte
);
}
protected PacketMappings createClientboundPacketMappings() {
return PacketMappings.arrayMappings();
}
protected PacketMappings createServerboundPacketMappings() {
return PacketMappings.arrayMappings();
}
private <P extends PacketType> Map<State, PacketTypeMap<P>> packetTypeMap(Class<P> packetTypeClass) {
if (packetTypeClass != null) {
Map<State, PacketTypeMap<P>> map = new EnumMap<>(State.class);

View File

@ -22,6 +22,15 @@
*/
package com.viaversion.viaversion.api.protocol;
/**
* A simple protocol which does not have any packet types.
* <p>
* {@link AbstractProtocol} should be preferred over this class in most cases.
*/
public abstract class AbstractSimpleProtocol extends AbstractProtocol<SimpleProtocol.DummyPacketTypes, SimpleProtocol.DummyPacketTypes,
SimpleProtocol.DummyPacketTypes, SimpleProtocol.DummyPacketTypes> implements SimpleProtocol {
protected AbstractSimpleProtocol() {
super(null, null, null, null);
}
}

View File

@ -39,7 +39,7 @@ public interface SimpleProtocol extends Protocol<SimpleProtocol.DummyPacketTypes
@Override
public int getId() {
return ordinal();
return 0;
}
@Override

View File

@ -22,4 +22,8 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14;
public class Protocol1_14_2To1_14_1 extends AbstractProtocol<ClientboundPackets1_14, ClientboundPackets1_14, ServerboundPackets1_14, ServerboundPackets1_14> {
public Protocol1_14_2To1_14_1() {
super(ClientboundPackets1_14.class, ClientboundPackets1_14.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class);
}
}

View File

@ -22,4 +22,8 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPacke
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15;
public class Protocol1_15_1To1_15 extends AbstractProtocol<ClientboundPackets1_15, ClientboundPackets1_15, ServerboundPackets1_14, ServerboundPackets1_14> {
public Protocol1_15_1To1_15() {
super(ClientboundPackets1_15.class, ClientboundPackets1_15.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class);
}
}

View File

@ -22,4 +22,8 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPacke
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15;
public class Protocol1_15_2To1_15_1 extends AbstractProtocol<ClientboundPackets1_15, ClientboundPackets1_15, ServerboundPackets1_14, ServerboundPackets1_14> {
public Protocol1_15_2To1_15_1() {
super(ClientboundPackets1_15.class, ClientboundPackets1_15.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class);
}
}

View File

@ -22,4 +22,8 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16;
public class Protocol1_16_1To1_16 extends AbstractProtocol<ClientboundPackets1_16, ClientboundPackets1_16, ServerboundPackets1_16, ServerboundPackets1_16> {
public Protocol1_16_1To1_16() {
super(ClientboundPackets1_16.class, ClientboundPackets1_16.class, ServerboundPackets1_16.class, ServerboundPackets1_16.class);
}
}

View File

@ -22,4 +22,8 @@ import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPac
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
public class Protocol1_16_3To1_16_2 extends AbstractProtocol<ClientboundPackets1_16_2, ClientboundPackets1_16_2, ServerboundPackets1_16_2, ServerboundPackets1_16_2> {
public Protocol1_16_3To1_16_2() {
super(ClientboundPackets1_16_2.class, ClientboundPackets1_16_2.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16_2.class);
}
}