Skip to content

Commit 318342a

Browse files
committed
Fix a bug which allowed packets with higher protocol version than proxy to continue registering, and allowed packets to be provided with a higher protocol version than they support.
1 parent ef24d42 commit 318342a

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

protocolize-velocity/src/main/java/dev/simplix/protocolize/velocity/providers/VelocityProtocolRegistrationProvider.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import dev.simplix.protocolize.api.Protocol;
1010
import dev.simplix.protocolize.api.Protocolize;
1111
import dev.simplix.protocolize.api.mapping.ProtocolIdMapping;
12+
import dev.simplix.protocolize.api.mapping.ProtocolMapping;
1213
import dev.simplix.protocolize.api.packet.AbstractPacket;
1314
import dev.simplix.protocolize.api.packet.RegisteredPacket;
1415
import dev.simplix.protocolize.api.providers.MappingProvider;
@@ -25,8 +26,8 @@
2526
import java.lang.reflect.Field;
2627
import java.lang.reflect.InvocationTargetException;
2728
import java.lang.reflect.Method;
28-
import java.util.AbstractMap;
2929
import java.util.ArrayList;
30+
import java.util.Comparator;
3031
import java.util.List;
3132
import java.util.Map;
3233
import java.util.function.Supplier;
@@ -79,9 +80,14 @@ public void registerPacket(List<ProtocolIdMapping> mappings, Protocol protocol,
7980
StateRegistry.PacketRegistry registry = direction == PacketDirection.SERVERBOUND ? stateRegistry.serverbound : stateRegistry.clientbound;
8081
Class<? extends MinecraftPacket> velocityPacket = generateVelocityPacket(packetClass);
8182
List<StateRegistry.PacketMapping> velocityMappings = new ArrayList<>();
82-
for (ProtocolIdMapping mapping : mappings) {
83+
84+
var sortedMappings = mappings.stream().sorted(Comparator.comparingInt(ProtocolMapping::protocolRangeEnd)).toArray(ProtocolIdMapping[]::new);
85+
86+
for (int i = 0; i < sortedMappings.length; i++) {
87+
var mapping = sortedMappings[i];
8388
mappingProvider.registerMapping(new RegisteredPacket(direction, packetClass), mapping);
84-
velocityMappings.add(createVelocityMapping(mapping.protocolRangeStart(), 0, mapping.id(), false));
89+
if (ProtocolVersion.MAXIMUM_VERSION.getProtocol() < mapping.protocolRangeStart() || ProtocolVersion.MAXIMUM_VERSION.getProtocol() < mapping.protocolRangeEnd()) continue;
90+
velocityMappings.add(createVelocityMapping(mapping.protocolRangeStart(), mapping.protocolRangeEnd(), mapping.id(), i == sortedMappings.length - 1));
8591
}
8692
try {
8793
doRegisterPacket(registry, velocityPacket, velocityMappings.toArray(new StateRegistry.PacketMapping[0]));

0 commit comments

Comments
 (0)