|
34 | 34 | import com.rexcantor64.triton.spigot.wrappers.WrappedClientConfiguration;
|
35 | 35 | import com.rexcantor64.triton.utils.ComponentUtils;
|
36 | 36 | import com.rexcantor64.triton.wrappers.WrappedPlayerChatMessage;
|
| 37 | +import lombok.Getter; |
37 | 38 | import lombok.val;
|
38 | 39 | import net.kyori.adventure.text.Component;
|
39 | 40 | import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
@@ -85,6 +86,11 @@ public class ProtocolLibListener implements PacketListener {
|
85 | 86 | private final Map<PacketType, HandlerFunction> packetHandlers = new HashMap<>();
|
86 | 87 | private final AtomicBoolean firstRun = new AtomicBoolean(true);
|
87 | 88 |
|
| 89 | + @Getter |
| 90 | + private ListeningWhitelist sendingWhitelist; |
| 91 | + @Getter |
| 92 | + private ListeningWhitelist receivingWhitelist; |
| 93 | + |
88 | 94 | public ProtocolLibListener(SpigotTriton main, HandlerFunction.HandlerType... allowedTypes) {
|
89 | 95 | this.main = main;
|
90 | 96 | this.allowedTypes = Arrays.asList(allowedTypes);
|
@@ -185,6 +191,38 @@ private void setupPacketHandlers() {
|
185 | 191 | bossBarPacketHandler.registerPacketTypes(packetHandlers);
|
186 | 192 | entitiesPacketHandler.registerPacketTypes(packetHandlers);
|
187 | 193 | signPacketHandler.registerPacketTypes(packetHandlers);
|
| 194 | + |
| 195 | + setupListenerWhitelists(); |
| 196 | + } |
| 197 | + |
| 198 | + private void setupListenerWhitelists() { |
| 199 | + val sendingTypes = packetHandlers.entrySet().stream() |
| 200 | + .filter(entry -> this.allowedTypes.contains(entry.getValue().getHandlerType())) |
| 201 | + .map(Map.Entry::getKey) |
| 202 | + .collect(Collectors.toList()); |
| 203 | + |
| 204 | + sendingWhitelist = ListeningWhitelist.newBuilder() |
| 205 | + .gamePhase(GamePhase.PLAYING) |
| 206 | + .types(sendingTypes) |
| 207 | + .mergeOptions(ListenerOptions.ASYNC) |
| 208 | + .highest() |
| 209 | + .build(); |
| 210 | + |
| 211 | + val receivingTypes = new ArrayList<PacketType>(); |
| 212 | + if (this.allowedTypes.contains(HandlerFunction.HandlerType.SYNC)) { |
| 213 | + // only listen for these packets in the sync handler |
| 214 | + receivingTypes.add(PacketType.Play.Client.SETTINGS); |
| 215 | + if (MinecraftVersion.CONFIG_PHASE_PROTOCOL_UPDATE.atOrAbove()) { // MC 1.20.2 |
| 216 | + receivingTypes.add(PacketType.Configuration.Client.CLIENT_INFORMATION); |
| 217 | + } |
| 218 | + } |
| 219 | + |
| 220 | + receivingWhitelist = ListeningWhitelist.newBuilder() |
| 221 | + .gamePhase(GamePhase.PLAYING) |
| 222 | + .types(receivingTypes) |
| 223 | + .mergeOptions(ListenerOptions.ASYNC) |
| 224 | + .highest() |
| 225 | + .build(); |
188 | 226 | }
|
189 | 227 |
|
190 | 228 | /* PACKET HANDLERS */
|
@@ -821,40 +859,6 @@ public void onPacketReceiving(PacketEvent packet) {
|
821 | 859 | }
|
822 | 860 | }
|
823 | 861 |
|
824 |
| - @Override |
825 |
| - public ListeningWhitelist getSendingWhitelist() { |
826 |
| - val types = packetHandlers.entrySet().stream() |
827 |
| - .filter(entry -> this.allowedTypes.contains(entry.getValue().getHandlerType())) |
828 |
| - .map(Map.Entry::getKey) |
829 |
| - .collect(Collectors.toList()); |
830 |
| - |
831 |
| - return ListeningWhitelist.newBuilder() |
832 |
| - .gamePhase(GamePhase.PLAYING) |
833 |
| - .types(types) |
834 |
| - .mergeOptions(ListenerOptions.ASYNC) |
835 |
| - .highest() |
836 |
| - .build(); |
837 |
| - } |
838 |
| - |
839 |
| - @Override |
840 |
| - public ListeningWhitelist getReceivingWhitelist() { |
841 |
| - val types = new ArrayList<PacketType>(); |
842 |
| - if (this.allowedTypes.contains(HandlerFunction.HandlerType.SYNC)) { |
843 |
| - // only listen for these packets in the sync handler |
844 |
| - types.add(PacketType.Play.Client.SETTINGS); |
845 |
| - if (MinecraftVersion.CONFIG_PHASE_PROTOCOL_UPDATE.atOrAbove()) { // MC 1.20.2 |
846 |
| - types.add(PacketType.Configuration.Client.CLIENT_INFORMATION); |
847 |
| - } |
848 |
| - } |
849 |
| - |
850 |
| - return ListeningWhitelist.newBuilder() |
851 |
| - .gamePhase(GamePhase.PLAYING) |
852 |
| - .types(types) |
853 |
| - .mergeOptions(ListenerOptions.ASYNC) |
854 |
| - .highest() |
855 |
| - .build(); |
856 |
| - } |
857 |
| - |
858 | 862 | /* REFRESH */
|
859 | 863 |
|
860 | 864 | public void refreshSigns(SpigotLanguagePlayer player) {
|
|
0 commit comments