|
9 | 9 | import dev.simplix.protocolize.api.Protocol; |
10 | 10 | import dev.simplix.protocolize.api.Protocolize; |
11 | 11 | import dev.simplix.protocolize.api.mapping.ProtocolIdMapping; |
| 12 | +import dev.simplix.protocolize.api.mapping.ProtocolMapping; |
12 | 13 | import dev.simplix.protocolize.api.packet.AbstractPacket; |
13 | 14 | import dev.simplix.protocolize.api.packet.RegisteredPacket; |
14 | 15 | import dev.simplix.protocolize.api.providers.MappingProvider; |
|
25 | 26 | import java.lang.reflect.Field; |
26 | 27 | import java.lang.reflect.InvocationTargetException; |
27 | 28 | import java.lang.reflect.Method; |
28 | | -import java.util.AbstractMap; |
29 | 29 | import java.util.ArrayList; |
| 30 | +import java.util.Comparator; |
30 | 31 | import java.util.List; |
31 | 32 | import java.util.Map; |
32 | 33 | import java.util.function.Supplier; |
@@ -79,9 +80,14 @@ public void registerPacket(List<ProtocolIdMapping> mappings, Protocol protocol, |
79 | 80 | StateRegistry.PacketRegistry registry = direction == PacketDirection.SERVERBOUND ? stateRegistry.serverbound : stateRegistry.clientbound; |
80 | 81 | Class<? extends MinecraftPacket> velocityPacket = generateVelocityPacket(packetClass); |
81 | 82 | 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]; |
83 | 88 | 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)); |
85 | 91 | } |
86 | 92 | try { |
87 | 93 | doRegisterPacket(registry, velocityPacket, velocityMappings.toArray(new StateRegistry.PacketMapping[0])); |
|
0 commit comments