Commit 96db8836297371a3bd131567d78da1f1b4ee0129
1 parent
c24f0490
PacketTransformers are deprecated, adding PacketHandler framework
Showing
29 changed files
with
879 additions
and
527 deletions
java/client/com/mumfrey/liteloader/client/CallbackProxyClient.java
... | ... | @@ -7,25 +7,12 @@ import net.minecraft.client.renderer.EntityRenderer; |
7 | 7 | import net.minecraft.client.renderer.OpenGlHelper; |
8 | 8 | import net.minecraft.client.shader.Framebuffer; |
9 | 9 | import net.minecraft.entity.player.EntityPlayerMP; |
10 | -import net.minecraft.network.INetHandler; | |
11 | 10 | import net.minecraft.network.NetworkManager; |
12 | -import net.minecraft.network.login.INetHandlerLoginClient; | |
13 | -import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
14 | -import net.minecraft.network.play.INetHandlerPlayClient; | |
15 | -import net.minecraft.network.play.INetHandlerPlayServer; | |
16 | -import net.minecraft.network.play.client.C01PacketChatMessage; | |
17 | -import net.minecraft.network.play.client.C17PacketCustomPayload; | |
18 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
19 | -import net.minecraft.network.play.server.S02PacketChat; | |
20 | -import net.minecraft.network.play.server.S3FPacketCustomPayload; | |
21 | 11 | import net.minecraft.server.integrated.IntegratedServer; |
22 | 12 | import net.minecraft.server.management.ServerConfigurationManager; |
23 | 13 | import net.minecraft.world.WorldSettings; |
24 | 14 | |
25 | 15 | import com.mojang.authlib.GameProfile; |
26 | -import com.mumfrey.liteloader.core.ClientPluginChannels; | |
27 | -import com.mumfrey.liteloader.core.LiteLoader; | |
28 | -import com.mumfrey.liteloader.core.ServerPluginChannels; | |
29 | 16 | import com.mumfrey.liteloader.transformers.event.EventInfo; |
30 | 17 | import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; |
31 | 18 | |
... | ... | @@ -49,83 +36,6 @@ public class CallbackProxyClient |
49 | 36 | |
50 | 37 | private static boolean renderingFBO; |
51 | 38 | |
52 | - public static void handleLoginSuccessPacket(INetHandler netHandler, S02PacketLoginSuccess packet) | |
53 | - { | |
54 | - ((INetHandlerLoginClient)netHandler).handleLoginSuccess(packet); | |
55 | - CallbackProxyClient.events.onPostLogin((INetHandlerLoginClient)netHandler, packet); | |
56 | - } | |
57 | - | |
58 | - /** | |
59 | - * S02PacketChat::processPacket() | |
60 | - * | |
61 | - * @param netHandler | |
62 | - * @param packet | |
63 | - */ | |
64 | - public static void handleChatPacket(INetHandler netHandler, S02PacketChat packet) | |
65 | - { | |
66 | - if (CallbackProxyClient.events.onChat(packet)) | |
67 | - { | |
68 | - ((INetHandlerPlayClient)netHandler).handleChat(packet); | |
69 | - } | |
70 | - } | |
71 | - | |
72 | - /** | |
73 | - * S02PacketChat::processPacket() | |
74 | - * | |
75 | - * @param netHandler | |
76 | - * @param packet | |
77 | - */ | |
78 | - public static void handleServerChatPacket(INetHandler netHandler, C01PacketChatMessage packet) | |
79 | - { | |
80 | - if (CallbackProxyClient.events.onServerChat((INetHandlerPlayServer)netHandler, packet)) | |
81 | - { | |
82 | - ((INetHandlerPlayServer)netHandler).processChatMessage(packet); | |
83 | - } | |
84 | - } | |
85 | - | |
86 | - /** | |
87 | - * S01PacketJoinGame::processPacket() | |
88 | - * | |
89 | - * @param netHandler | |
90 | - * @param packet | |
91 | - */ | |
92 | - public static void handleJoinGamePacket(INetHandler netHandler, S01PacketJoinGame packet) | |
93 | - { | |
94 | - if (CallbackProxyClient.events.onPreJoinGame(netHandler, packet)) | |
95 | - { | |
96 | - ((INetHandlerPlayClient)netHandler).handleJoinGame(packet); | |
97 | - CallbackProxyClient.events.onJoinGame(netHandler, packet); | |
98 | - } | |
99 | - } | |
100 | - | |
101 | - /** | |
102 | - * S3FPacketCustomPayload::processPacket() | |
103 | - * | |
104 | - * @param netHandler | |
105 | - * @param packet | |
106 | - */ | |
107 | - public static void handleCustomPayloadPacket(INetHandler netHandler, S3FPacketCustomPayload packet) | |
108 | - { | |
109 | - ((INetHandlerPlayClient)netHandler).handleCustomPayload(packet);; | |
110 | - | |
111 | - ClientPluginChannels pluginChannels = LiteLoader.getClientPluginChannels(); | |
112 | - pluginChannels.onPluginChannelMessage(packet); | |
113 | - } | |
114 | - | |
115 | - /** | |
116 | - * C17PacketCustomPayload::processPacket() | |
117 | - * | |
118 | - * @param netHandler | |
119 | - * @param packet | |
120 | - */ | |
121 | - public static void handleCustomPayloadPacket(INetHandler netHandler, C17PacketCustomPayload packet) | |
122 | - { | |
123 | - ((INetHandlerPlayServer)netHandler).processVanilla250Packet(packet);; | |
124 | - | |
125 | - ServerPluginChannels pluginChannels = LiteLoader.getServerPluginChannels(); | |
126 | - pluginChannels.onPluginChannelMessage((INetHandlerPlayServer)netHandler, packet); | |
127 | - } | |
128 | - | |
129 | 39 | public static void onStartupComplete(EventInfo<Minecraft> e) |
130 | 40 | { |
131 | 41 | CallbackProxyClient.events = ClientEvents.getInstance(); | ... | ... |
java/client/com/mumfrey/liteloader/client/ClientEvents.java
... | ... | @@ -5,15 +5,9 @@ import net.minecraft.client.entity.EntityClientPlayerMP; |
5 | 5 | import net.minecraft.client.gui.GuiNewChat; |
6 | 6 | import net.minecraft.client.gui.ScaledResolution; |
7 | 7 | import net.minecraft.client.shader.Framebuffer; |
8 | -import net.minecraft.network.INetHandler; | |
9 | -import net.minecraft.network.login.INetHandlerLoginClient; | |
10 | -import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
11 | 8 | import net.minecraft.network.play.client.C01PacketChatMessage; |
12 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
13 | -import net.minecraft.network.play.server.S02PacketChat; | |
14 | 9 | import net.minecraft.profiler.Profiler; |
15 | 10 | import net.minecraft.server.integrated.IntegratedServer; |
16 | -import net.minecraft.util.IChatComponent; | |
17 | 11 | import net.minecraft.util.Timer; |
18 | 12 | |
19 | 13 | import org.lwjgl.input.Mouse; |
... | ... | @@ -23,7 +17,6 @@ import com.mumfrey.liteloader.client.gen.GenProfiler; |
23 | 17 | import com.mumfrey.liteloader.client.overlays.IMinecraft; |
24 | 18 | import com.mumfrey.liteloader.client.util.PrivateFields; |
25 | 19 | import com.mumfrey.liteloader.common.LoadingProgress; |
26 | -import com.mumfrey.liteloader.core.ClientPluginChannels; | |
27 | 20 | import com.mumfrey.liteloader.core.Events; |
28 | 21 | import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; |
29 | 22 | import com.mumfrey.liteloader.core.LiteLoader; |
... | ... | @@ -90,15 +83,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
90 | 83 | private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class); |
91 | 84 | private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class); |
92 | 85 | private FastIterableDeque<ChatRenderListener> chatRenderListeners = new HandlerList<ChatRenderListener>(ChatRenderListener.class); |
93 | - private FastIterableDeque<ChatListener> chatListeners = new HandlerList<ChatListener>(ChatListener.class); | |
94 | - private FastIterableDeque<PostLoginListener> postLoginListeners = new HandlerList<PostLoginListener>(PostLoginListener.class); | |
95 | - private FastIterableDeque<JoinGameListener> joinGameListeners = new HandlerList<JoinGameListener>(JoinGameListener.class); | |
96 | 86 | private FastIterableDeque<OutboundChatListener> outboundChatListeners = new HandlerList<OutboundChatListener>(OutboundChatListener.class); |
97 | 87 | private FastIterableDeque<ViewportListener> viewportListeners = new HandlerList<ViewportListener>(ViewportListener.class); |
98 | 88 | private FastIterableDeque<FrameBufferListener> frameBufferListeners = new HandlerList<FrameBufferListener>(FrameBufferListener.class); |
99 | 89 | private FastIterableDeque<InitCompleteListener> initListeners = new HandlerList<InitCompleteListener>(InitCompleteListener.class); |
100 | - private FastIterableDeque<ChatFilter> chatFilters = new HandlerList<ChatFilter>(ChatFilter.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | |
101 | - private FastIterableDeque<PreJoinGameListener> preJoinGameListeners = new HandlerList<PreJoinGameListener>(PreJoinGameListener.class, ReturnLogicOp.OR); | |
102 | 90 | private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND); |
103 | 91 | |
104 | 92 | @SuppressWarnings("cast") |
... | ... | @@ -141,15 +129,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
141 | 129 | delegate.registerInterface(PostRenderListener.class); |
142 | 130 | delegate.registerInterface(HUDRenderListener.class); |
143 | 131 | delegate.registerInterface(ChatRenderListener.class); |
144 | - delegate.registerInterface(ChatListener.class); | |
145 | - delegate.registerInterface(PostLoginListener.class); | |
146 | - delegate.registerInterface(JoinGameListener.class); | |
147 | 132 | delegate.registerInterface(OutboundChatListener.class); |
148 | 133 | delegate.registerInterface(ViewportListener.class); |
149 | 134 | delegate.registerInterface(FrameBufferListener.class); |
150 | 135 | delegate.registerInterface(InitCompleteListener.class); |
151 | - delegate.registerInterface(ChatFilter.class); | |
152 | - delegate.registerInterface(PreJoinGameListener.class); | |
153 | 136 | delegate.registerInterface(OutboundChatFilter.class); |
154 | 137 | } |
155 | 138 | |
... | ... | @@ -235,43 +218,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
235 | 218 | } |
236 | 219 | |
237 | 220 | /** |
238 | - * @deprecated use LiteLoader.getInterfaceManager().registerListener(listener); instead | |
239 | - * @param chatFilter | |
240 | - */ | |
241 | - @Deprecated | |
242 | - @Override | |
243 | - public void addChatFilter(Object chatFilter) | |
244 | - { | |
245 | - if (chatFilter instanceof ChatFilter) | |
246 | - { | |
247 | - this.addChatFilter((ChatFilter)chatFilter); | |
248 | - } | |
249 | - } | |
250 | - | |
251 | - /** | |
252 | - * @param chatFilter | |
253 | - */ | |
254 | - public void addChatFilter(ChatFilter chatFilter) | |
255 | - { | |
256 | - this.chatFilters.add(chatFilter); | |
257 | - } | |
258 | - | |
259 | - /** | |
260 | - * @param chatListener | |
261 | - */ | |
262 | - public void addChatListener(ChatListener chatListener) | |
263 | - { | |
264 | - if (chatListener instanceof ChatFilter) | |
265 | - { | |
266 | - LiteLoaderLogger.warning("Interface error initialising mod '%1s'. A mod implementing ChatFilter and ChatListener is not supported! Remove one of these interfaces", chatListener.getName()); | |
267 | - } | |
268 | - else | |
269 | - { | |
270 | - this.chatListeners.add(chatListener); | |
271 | - } | |
272 | - } | |
273 | - | |
274 | - /** | |
275 | 221 | * @param chatRenderListener |
276 | 222 | */ |
277 | 223 | public void addChatRenderListener(ChatRenderListener chatRenderListener) |
... | ... | @@ -286,30 +232,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
286 | 232 | { |
287 | 233 | this.hudRenderListeners.add(hudRenderListener); |
288 | 234 | } |
289 | - | |
290 | - /** | |
291 | - * @param postLoginListener | |
292 | - */ | |
293 | - public void addPreJoinGameListener(PostLoginListener postLoginListener) | |
294 | - { | |
295 | - this.postLoginListeners.add(postLoginListener); | |
296 | - } | |
297 | - | |
298 | - /** | |
299 | - * @param joinGameListener | |
300 | - */ | |
301 | - public void addPreJoinGameListener(PreJoinGameListener joinGameListener) | |
302 | - { | |
303 | - this.preJoinGameListeners.add(joinGameListener); | |
304 | - } | |
305 | - | |
306 | - /** | |
307 | - * @param joinGameListener | |
308 | - */ | |
309 | - public void addJoinGameListener(JoinGameListener joinGameListener) | |
310 | - { | |
311 | - this.joinGameListeners.add(joinGameListener); | |
312 | - } | |
313 | 235 | |
314 | 236 | /** |
315 | 237 | * @param outboundChatListener |
... | ... | @@ -548,41 +470,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
548 | 470 | |
549 | 471 | this.profiler.endSection(); |
550 | 472 | } |
551 | - | |
552 | - /** | |
553 | - * Callback from the chat hook | |
554 | - * | |
555 | - * @param chatPacket | |
556 | - * @return | |
557 | - */ | |
558 | - boolean onChat(S02PacketChat chatPacket) | |
559 | - { | |
560 | - if (chatPacket.func_148915_c() == null) | |
561 | - return true; | |
562 | - | |
563 | - IChatComponent chat = chatPacket.func_148915_c(); | |
564 | - String message = chat.getFormattedText(); | |
565 | - | |
566 | - // Chat filters get a stab at the chat first, if any filter returns | |
567 | - // false the chat is discarded | |
568 | - for (ChatFilter chatFilter : this.chatFilters) | |
569 | - { | |
570 | - if (chatFilter.onChat(chatPacket, chat, message)) | |
571 | - { | |
572 | - chat = chatPacket.func_148915_c(); | |
573 | - message = chat.getFormattedText(); | |
574 | - } | |
575 | - else | |
576 | - { | |
577 | - return false; | |
578 | - } | |
579 | - } | |
580 | - | |
581 | - // Chat listeners get the chat if no filter removed it | |
582 | - this.chatListeners.all().onChat(chat, message); | |
583 | - | |
584 | - return true; | |
585 | - } | |
586 | 473 | |
587 | 474 | /** |
588 | 475 | * @param packet |
... | ... | @@ -605,53 +492,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> |
605 | 492 | } |
606 | 493 | |
607 | 494 | /** |
608 | - * @param netHandler | |
609 | - * @param loginPacket | |
610 | - */ | |
611 | - void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess loginPacket) | |
612 | - { | |
613 | - ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | |
614 | - if (clientPluginChannels instanceof ClientPluginChannelsClient) | |
615 | - { | |
616 | - ((ClientPluginChannelsClient)clientPluginChannels).onPostLogin(netHandler, loginPacket); | |
617 | - } | |
618 | - | |
619 | - this.postLoginListeners.all().onPostLogin(netHandler, loginPacket); | |
620 | - } | |
621 | - | |
622 | - /** | |
623 | - * Pre join game callback from the login hook | |
624 | - * | |
625 | - * @param netHandler | |
626 | - * @param hookLogin | |
627 | - * @return | |
628 | - */ | |
629 | - boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | |
630 | - { | |
631 | - return !this.preJoinGameListeners.all().onPreJoinGame(netHandler, loginPacket); | |
632 | - } | |
633 | - | |
634 | - /** | |
635 | - * Callback from the join game hook | |
636 | - * | |
637 | - * @param netHandler | |
638 | - * @param loginPacket | |
639 | - */ | |
640 | - @Override | |
641 | - protected void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | |
642 | - { | |
643 | - super.onJoinGame(netHandler, loginPacket); | |
644 | - | |
645 | - ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | |
646 | - if (clientPluginChannels instanceof ClientPluginChannelsClient) | |
647 | - { | |
648 | - ((ClientPluginChannelsClient)clientPluginChannels).onJoinGame(netHandler, loginPacket); | |
649 | - } | |
650 | - | |
651 | - this.joinGameListeners.all().onJoinGame(netHandler, loginPacket); | |
652 | - } | |
653 | - | |
654 | - /** | |
655 | 495 | * @param framebuffer |
656 | 496 | */ |
657 | 497 | void preRenderFBO(Framebuffer framebuffer) | ... | ... |
java/client/com/mumfrey/liteloader/client/PacketEventsClient.java
0 โ 100644
1 | +package com.mumfrey.liteloader.client; | |
2 | + | |
3 | +import net.minecraft.network.INetHandler; | |
4 | +import net.minecraft.network.Packet; | |
5 | +import net.minecraft.network.login.INetHandlerLoginClient; | |
6 | +import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
7 | +import net.minecraft.network.play.INetHandlerPlayClient; | |
8 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
9 | +import net.minecraft.network.play.server.S02PacketChat; | |
10 | +import net.minecraft.util.IChatComponent; | |
11 | + | |
12 | +import com.mumfrey.liteloader.ChatFilter; | |
13 | +import com.mumfrey.liteloader.ChatListener; | |
14 | +import com.mumfrey.liteloader.PostLoginListener; | |
15 | +import com.mumfrey.liteloader.PreJoinGameListener; | |
16 | +import com.mumfrey.liteloader.common.transformers.PacketEventInfo; | |
17 | +import com.mumfrey.liteloader.core.ClientPluginChannels; | |
18 | +import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
19 | +import com.mumfrey.liteloader.core.LiteLoader; | |
20 | +import com.mumfrey.liteloader.core.PacketEvents; | |
21 | +import com.mumfrey.liteloader.core.event.HandlerList; | |
22 | +import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
23 | +import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
24 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
25 | + | |
26 | +/** | |
27 | + * Client-side packet event handlers | |
28 | + * | |
29 | + * @author Adam Mummery-Smith | |
30 | + */ | |
31 | +public class PacketEventsClient extends PacketEvents | |
32 | +{ | |
33 | + private FastIterableDeque<ChatListener> chatListeners = new HandlerList<ChatListener>(ChatListener.class); | |
34 | + private FastIterableDeque<ChatFilter> chatFilters = new HandlerList<ChatFilter>(ChatFilter.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | |
35 | + private FastIterableDeque<PreJoinGameListener> preJoinGameListeners = new HandlerList<PreJoinGameListener>(PreJoinGameListener.class, ReturnLogicOp.OR); | |
36 | + private FastIterableDeque<PostLoginListener> postLoginListeners = new HandlerList<PostLoginListener>(PostLoginListener.class); | |
37 | + | |
38 | + @Override | |
39 | + public void registerInterfaces(InterfaceRegistrationDelegate delegate) | |
40 | + { | |
41 | + super.registerInterfaces(delegate); | |
42 | + | |
43 | + delegate.registerInterface(ChatListener.class); | |
44 | + delegate.registerInterface(ChatFilter.class); | |
45 | + delegate.registerInterface(PreJoinGameListener.class); | |
46 | + delegate.registerInterface(PostLoginListener.class); | |
47 | + } | |
48 | + | |
49 | + /** | |
50 | + * @param chatFilter | |
51 | + */ | |
52 | + public void registerChatFilter(ChatFilter chatFilter) | |
53 | + { | |
54 | + this.chatFilters.add(chatFilter); | |
55 | + } | |
56 | + | |
57 | + /** | |
58 | + * @param chatListener | |
59 | + */ | |
60 | + public void registerChatListener(ChatListener chatListener) | |
61 | + { | |
62 | + if (chatListener instanceof ChatFilter) | |
63 | + { | |
64 | + LiteLoaderLogger.warning("Interface error initialising mod '%1s'. A mod implementing ChatFilter and ChatListener is not supported! Remove one of these interfaces", chatListener.getName()); | |
65 | + } | |
66 | + else | |
67 | + { | |
68 | + this.chatListeners.add(chatListener); | |
69 | + } | |
70 | + } | |
71 | + | |
72 | + /** | |
73 | + * @param joinGameListener | |
74 | + */ | |
75 | + public void registerPreJoinGameListener(PreJoinGameListener joinGameListener) | |
76 | + { | |
77 | + this.preJoinGameListeners.add(joinGameListener); | |
78 | + } | |
79 | + | |
80 | + /** | |
81 | + * @param postLoginListener | |
82 | + */ | |
83 | + public void registerPostLoginListener(PostLoginListener postLoginListener) | |
84 | + { | |
85 | + this.postLoginListeners.add(postLoginListener); | |
86 | + } | |
87 | + | |
88 | + /* (non-Javadoc) | |
89 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.play.server.S01PacketJoinGame) | |
90 | + */ | |
91 | + @Override | |
92 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | |
93 | + { | |
94 | + if (!(netHandler instanceof INetHandlerPlayClient)) | |
95 | + { | |
96 | + return; | |
97 | + } | |
98 | + | |
99 | + e.cancel(); | |
100 | + | |
101 | + if (this.preJoinGameListeners.all().onPreJoinGame(netHandler, packet)) | |
102 | + { | |
103 | + return; | |
104 | + } | |
105 | + | |
106 | + ((INetHandlerPlayClient)netHandler).handleJoinGame(packet); | |
107 | + | |
108 | + super.handlePacket(e, netHandler, packet); | |
109 | + | |
110 | + ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | |
111 | + if (clientPluginChannels instanceof ClientPluginChannelsClient) | |
112 | + { | |
113 | + ((ClientPluginChannelsClient)clientPluginChannels).onJoinGame(netHandler, packet); | |
114 | + } | |
115 | + } | |
116 | + | |
117 | + /* (non-Javadoc) | |
118 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.login.server.S02PacketLoginSuccess) | |
119 | + */ | |
120 | + @Override | |
121 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketLoginSuccess packet) | |
122 | + { | |
123 | + if (netHandler instanceof INetHandlerLoginClient) | |
124 | + { | |
125 | + INetHandlerLoginClient netHandlerLoginClient = (INetHandlerLoginClient)netHandler; | |
126 | + | |
127 | + ClientPluginChannels clientPluginChannels = LiteLoader.getClientPluginChannels(); | |
128 | + if (clientPluginChannels instanceof ClientPluginChannelsClient) | |
129 | + { | |
130 | + ((ClientPluginChannelsClient)clientPluginChannels).onPostLogin(netHandlerLoginClient, packet); | |
131 | + } | |
132 | + | |
133 | + this.postLoginListeners.all().onPostLogin(netHandlerLoginClient, packet); | |
134 | + } | |
135 | + } | |
136 | + | |
137 | + /* (non-Javadoc) | |
138 | + * @see com.mumfrey.liteloader.core.PacketEvents#handlePacket(com.mumfrey.liteloader.common.transformers.PacketEventInfo, net.minecraft.network.INetHandler, net.minecraft.network.play.server.S02PacketChat) | |
139 | + */ | |
140 | + @Override | |
141 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet) | |
142 | + { | |
143 | + if (packet.func_148915_c() == null) | |
144 | + return; | |
145 | + | |
146 | + IChatComponent chat = packet.func_148915_c(); | |
147 | + String message = chat.getFormattedText(); | |
148 | + | |
149 | + // Chat filters get a stab at the chat first, if any filter returns | |
150 | + // false the chat is discarded | |
151 | + for (ChatFilter chatFilter : this.chatFilters) | |
152 | + { | |
153 | + if (chatFilter.onChat(packet, chat, message)) | |
154 | + { | |
155 | + chat = packet.func_148915_c(); | |
156 | + message = chat.getFormattedText(); | |
157 | + } | |
158 | + else | |
159 | + { | |
160 | + e.cancel(); | |
161 | + return; | |
162 | + } | |
163 | + } | |
164 | + | |
165 | + // Chat listeners get the chat if no filter removed it | |
166 | + this.chatListeners.all().onChat(chat, message); | |
167 | + } | |
168 | +} | ... | ... |
java/client/com/mumfrey/liteloader/client/api/LiteLoaderCoreAPIClient.java
... | ... | @@ -32,18 +32,12 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI |
32 | 32 | }; |
33 | 33 | |
34 | 34 | private static final String[] requiredDownstreamTransformers = { |
35 | + LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", | |
35 | 36 | LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", |
36 | 37 | LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftOverlayTransformer" |
37 | 38 | }; |
38 | 39 | |
39 | - private static final String[] defaultPacketTransformers = { | |
40 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LoginSuccessPacketTransformer", | |
41 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.ChatPacketTransformer", | |
42 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.JoinGamePacketTransformer", | |
43 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.CustomPayloadPacketTransformer", | |
44 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.ServerChatPacketTransformer", | |
45 | - LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.ServerCustomPayloadPacketTransformer" | |
46 | - }; | |
40 | + private static final String[] defaultPacketTransformers = {}; | |
47 | 41 | |
48 | 42 | private ObjectFactory<Minecraft, IntegratedServer> objectFactory; |
49 | 43 | |
... | ... | @@ -112,6 +106,7 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI |
112 | 106 | return ImmutableList.<InterfaceProvider>of |
113 | 107 | ( |
114 | 108 | objectFactory.getEventBroker(), |
109 | + objectFactory.getPacketEventBroker(), | |
115 | 110 | objectFactory.getClientPluginChannels(), |
116 | 111 | objectFactory.getServerPluginChannels(), |
117 | 112 | MessageBus.getInstance() | ... | ... |
java/client/com/mumfrey/liteloader/client/api/ObjectFactoryClient.java
... | ... | @@ -8,11 +8,13 @@ import com.mumfrey.liteloader.client.ClientEvents; |
8 | 8 | import com.mumfrey.liteloader.client.ClientPluginChannelsClient; |
9 | 9 | import com.mumfrey.liteloader.client.GameEngineClient; |
10 | 10 | import com.mumfrey.liteloader.client.LiteLoaderPanelManager; |
11 | +import com.mumfrey.liteloader.client.PacketEventsClient; | |
11 | 12 | import com.mumfrey.liteloader.client.gui.startup.LoadingBar; |
12 | 13 | import com.mumfrey.liteloader.common.GameEngine; |
13 | 14 | import com.mumfrey.liteloader.core.ClientPluginChannels; |
14 | 15 | import com.mumfrey.liteloader.core.Events; |
15 | 16 | import com.mumfrey.liteloader.core.LiteLoader; |
17 | +import com.mumfrey.liteloader.core.PacketEvents; | |
16 | 18 | import com.mumfrey.liteloader.core.ServerPluginChannels; |
17 | 19 | import com.mumfrey.liteloader.interfaces.PanelManager; |
18 | 20 | import com.mumfrey.liteloader.interfaces.ObjectFactory; |
... | ... | @@ -33,6 +35,8 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> |
33 | 35 | private LoaderProperties properties; |
34 | 36 | |
35 | 37 | private ClientEvents clientEvents; |
38 | + | |
39 | + private PacketEventsClient clientPacketEvents; | |
36 | 40 | |
37 | 41 | private GameEngineClient engine; |
38 | 42 | |
... | ... | @@ -60,6 +64,17 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> |
60 | 64 | } |
61 | 65 | |
62 | 66 | @Override |
67 | + public PacketEvents getPacketEventBroker() | |
68 | + { | |
69 | + if (this.clientPacketEvents == null) | |
70 | + { | |
71 | + this.clientPacketEvents = new PacketEventsClient(); | |
72 | + } | |
73 | + | |
74 | + return this.clientPacketEvents; | |
75 | + } | |
76 | + | |
77 | + @Override | |
63 | 78 | public GameEngine<Minecraft, IntegratedServer> getGameEngine() |
64 | 79 | { |
65 | 80 | if (this.engine == null) | ... | ... |
java/client/com/mumfrey/liteloader/client/transformers/ChatPacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for S02PacketChat | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class ChatPacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public ChatPacketTransformer() | |
16 | - { | |
17 | - super(Obf.S02PacketChat, Obf.CallbackProxyClient.name, "handleChatPacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - ChatPacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return ChatPacketTransformer.injected; | |
34 | - } | |
35 | -} |
java/client/com/mumfrey/liteloader/client/transformers/CustomPayloadPacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for S3FPacketCustomPayload | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class CustomPayloadPacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public CustomPayloadPacketTransformer() | |
16 | - { | |
17 | - super(Obf.S3FPacketCustomPayload, Obf.CallbackProxyClient.name, "handleCustomPayloadPacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - CustomPayloadPacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return CustomPayloadPacketTransformer.injected; | |
34 | - } | |
35 | -} |
java/client/com/mumfrey/liteloader/client/transformers/JoinGamePacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for S01PacketJoinGame | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class JoinGamePacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public JoinGamePacketTransformer() | |
16 | - { | |
17 | - super(Obf.S01PacketJoinGame, Obf.CallbackProxyClient.name, "handleJoinGamePacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - JoinGamePacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return JoinGamePacketTransformer.injected; | |
34 | - } | |
35 | -} | |
36 | 0 | \ No newline at end of file |
java/client/com/mumfrey/liteloader/client/transformers/LiteLoaderEventInjectionTransformer.java
1 | 1 | package com.mumfrey.liteloader.client.transformers; |
2 | 2 | |
3 | +import static com.mumfrey.liteloader.core.runtime.Methods.*; | |
4 | +import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*; | |
5 | + | |
3 | 6 | import com.mumfrey.liteloader.core.runtime.Obf; |
4 | 7 | import com.mumfrey.liteloader.transformers.event.Event; |
5 | 8 | import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; |
... | ... | @@ -10,9 +13,6 @@ import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; |
10 | 13 | import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke; |
11 | 14 | import com.mumfrey.liteloader.transformers.event.inject.MethodHead; |
12 | 15 | |
13 | -import static com.mumfrey.liteloader.core.runtime.Methods.*; | |
14 | -import static com.mumfrey.liteloader.transformers.event.InjectionPoint.after; | |
15 | - | |
16 | 16 | public class LiteLoaderEventInjectionTransformer extends EventInjectionTransformer |
17 | 17 | { |
18 | 18 | @Override | ... | ... |
java/client/com/mumfrey/liteloader/client/transformers/LoginSuccessPacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for S02PacketLoginSuccess | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class LoginSuccessPacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public LoginSuccessPacketTransformer() | |
16 | - { | |
17 | - super(Obf.S02PacketLoginSuccess, Obf.CallbackProxyClient.name, "handleLoginSuccessPacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - LoginSuccessPacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return LoginSuccessPacketTransformer.injected; | |
34 | - } | |
35 | -} | |
36 | 0 | \ No newline at end of file |
java/client/com/mumfrey/liteloader/client/transformers/ServerChatPacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for S02PacketChat | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class ServerChatPacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public ServerChatPacketTransformer() | |
16 | - { | |
17 | - super(Obf.C01PacketChatMessage, Obf.CallbackProxyClient.name, "handleServerChatPacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - ServerChatPacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return ServerChatPacketTransformer.injected; | |
34 | - } | |
35 | -} |
java/client/com/mumfrey/liteloader/client/transformers/ServerCustomPayloadPacketTransformer.java deleted
100644 โ 0
1 | -package com.mumfrey.liteloader.client.transformers; | |
2 | - | |
3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | -import com.mumfrey.liteloader.transformers.PacketTransformer; | |
5 | - | |
6 | -/** | |
7 | - * Transformer for C17PacketCustomPayload | |
8 | - * | |
9 | - * @author Adam Mummery-Smith | |
10 | - */ | |
11 | -public class ServerCustomPayloadPacketTransformer extends PacketTransformer | |
12 | -{ | |
13 | - private static boolean injected = false; | |
14 | - | |
15 | - public ServerCustomPayloadPacketTransformer() | |
16 | - { | |
17 | - super(Obf.C17PacketCustomPayload, Obf.CallbackProxyClient.name, "handleCustomPayloadPacket", 1000); | |
18 | - } | |
19 | - | |
20 | - @Override | |
21 | - protected void notifyInjectionFailed() | |
22 | - { | |
23 | - } | |
24 | - | |
25 | - @Override | |
26 | - protected void notifyInjected() | |
27 | - { | |
28 | - ServerCustomPayloadPacketTransformer.injected = true; | |
29 | - } | |
30 | - | |
31 | - public static boolean isInjected() | |
32 | - { | |
33 | - return ServerCustomPayloadPacketTransformer.injected; | |
34 | - } | |
35 | -} |
java/common/com/mumfrey/liteloader/PacketHandler.java
0 โ 100644
1 | +package com.mumfrey.liteloader; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import net.minecraft.network.INetHandler; | |
6 | +import net.minecraft.network.Packet; | |
7 | + | |
8 | +/** | |
9 | + * Interface for mods which want to handle raw packets | |
10 | + * | |
11 | + * @author Adam Mummery-Smith | |
12 | + */ | |
13 | +public interface PacketHandler extends LiteMod | |
14 | +{ | |
15 | + /** | |
16 | + * Get list of packets to handle | |
17 | + */ | |
18 | + public List<Class<? extends Packet>> getHandledPackets(); | |
19 | + | |
20 | + /** | |
21 | + * @param netHandler | |
22 | + * @param packet | |
23 | + * @return | |
24 | + */ | |
25 | + public abstract boolean handlePacket(INetHandler netHandler, Packet packet); | |
26 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/LiteAPI.java
... | ... | @@ -59,7 +59,10 @@ public interface LiteAPI |
59 | 59 | |
60 | 60 | /** |
61 | 61 | * Should return an array of required packet transformer names, these transformers will be injected UPSTREAM. Can return null. |
62 | + * | |
63 | + * Deprecated - will be removed in 1.8 | |
62 | 64 | */ |
65 | + @Deprecated | |
63 | 66 | public abstract String[] getPacketTransformers(); |
64 | 67 | |
65 | 68 | /** | ... | ... |
java/common/com/mumfrey/liteloader/api/manager/APIAdapter.java
java/common/com/mumfrey/liteloader/common/transformers/LiteLoaderPacketTransformer.java
0 โ 100644
1 | +package com.mumfrey.liteloader.common.transformers; | |
2 | + | |
3 | +import com.mumfrey.liteloader.core.runtime.Obf; | |
4 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
5 | +import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | |
6 | +import com.mumfrey.liteloader.transformers.event.InjectionPoint; | |
7 | +import com.mumfrey.liteloader.transformers.event.MethodInfo; | |
8 | +import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | |
9 | + | |
10 | +public class LiteLoaderPacketTransformer extends EventInjectionTransformer | |
11 | +{ | |
12 | + @Override | |
13 | + protected void addEvents() | |
14 | + { | |
15 | + InjectionPoint methodHead = new MethodHead(); | |
16 | + MethodInfo handlePacket = new MethodInfo(Obf.PacketEvents, "handlePacket"); | |
17 | + | |
18 | + for (Packets packet : Packets.packets) | |
19 | + { | |
20 | + MethodInfo processPacket = new MethodInfo(packet, Obf.processPacket, Void.TYPE, Obf.INetHandler); | |
21 | + this.addEvent(new PacketEvent(packet), processPacket, methodHead).addListener(handlePacket); | |
22 | + } | |
23 | + } | |
24 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/PacketEvent.java
0 โ 100644
1 | +package com.mumfrey.liteloader.common.transformers; | |
2 | + | |
3 | +import org.objectweb.asm.Opcodes; | |
4 | +import org.objectweb.asm.tree.InsnList; | |
5 | +import org.objectweb.asm.tree.InsnNode; | |
6 | +import org.objectweb.asm.tree.IntInsnNode; | |
7 | +import org.objectweb.asm.tree.LdcInsnNode; | |
8 | +import org.objectweb.asm.tree.MethodInsnNode; | |
9 | +import org.objectweb.asm.tree.VarInsnNode; | |
10 | + | |
11 | +import com.mumfrey.liteloader.core.runtime.Obf; | |
12 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
13 | +import com.mumfrey.liteloader.transformers.event.Event; | |
14 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
15 | + | |
16 | +/** | |
17 | + * Special event used to hook all packets | |
18 | + * | |
19 | + * @author Adam Mummery-Smith | |
20 | + */ | |
21 | +public class PacketEvent extends Event | |
22 | +{ | |
23 | + /** | |
24 | + * Soft index for this packet, used as a lookup for speed when determining handlers | |
25 | + */ | |
26 | + private int packetIndex; | |
27 | + | |
28 | + PacketEvent(Packets packet) | |
29 | + { | |
30 | + super("on" + packet.getShortName(), true, 1000); | |
31 | + this.packetIndex = packet.getIndex(); | |
32 | + } | |
33 | + | |
34 | + /* (non-Javadoc) | |
35 | + * @see com.mumfrey.liteloader.transformers.event.Event#getEventInfoClassName() | |
36 | + */ | |
37 | + @Override | |
38 | + public String getEventInfoClassName() | |
39 | + { | |
40 | + return "com/mumfrey/liteloader/common/transformers/PacketEventInfo"; | |
41 | + } | |
42 | + | |
43 | + /* (non-Javadoc) | |
44 | + * @see com.mumfrey.liteloader.transformers.event.Event#invokeEventInfoConstructor(org.objectweb.asm.tree.InsnList, boolean) | |
45 | + */ | |
46 | + @Override | |
47 | + protected int invokeEventInfoConstructor(InsnList insns, boolean cancellable) | |
48 | + { | |
49 | + int ctorMAXS = 0; | |
50 | + | |
51 | + insns.add(new LdcInsnNode(this.name)); ctorMAXS++; | |
52 | + insns.add(this.methodIsStatic ? new InsnNode(Opcodes.ACONST_NULL) : new VarInsnNode(Opcodes.ALOAD, 0)); ctorMAXS++; | |
53 | + insns.add(new InsnNode(cancellable ? Opcodes.ICONST_1 : Opcodes.ICONST_0)); ctorMAXS++; | |
54 | + insns.add(new IntInsnNode(Opcodes.BIPUSH, this.packetIndex)); | |
55 | + insns.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, this.eventInfoClass, Obf.constructor.name, EventInfo.getConstructorDescriptor().replace(")", "I)"), false)); | |
56 | + | |
57 | + return ctorMAXS; | |
58 | + } | |
59 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/PacketEventInfo.java
0 โ 100644
1 | +package com.mumfrey.liteloader.common.transformers; | |
2 | + | |
3 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
4 | + | |
5 | +import net.minecraft.network.Packet; | |
6 | + | |
7 | +public class PacketEventInfo<S extends Packet> extends EventInfo<S> | |
8 | +{ | |
9 | + private final int packetId; | |
10 | + | |
11 | + @SuppressWarnings("unchecked") | |
12 | + public PacketEventInfo(String name, Object source, boolean cancellable, int packetId) | |
13 | + { | |
14 | + super(name, (S)source, cancellable); | |
15 | + | |
16 | + this.packetId = packetId; | |
17 | + } | |
18 | + | |
19 | + public int getPacketId() | |
20 | + { | |
21 | + return this.packetId; | |
22 | + } | |
23 | +} | ... | ... |
java/common/com/mumfrey/liteloader/core/Events.java
... | ... | @@ -5,12 +5,7 @@ import net.minecraft.client.resources.IResourceManagerReloadListener; |
5 | 5 | import net.minecraft.command.ICommandManager; |
6 | 6 | import net.minecraft.command.ServerCommandManager; |
7 | 7 | import net.minecraft.entity.player.EntityPlayerMP; |
8 | -import net.minecraft.network.INetHandler; | |
9 | -import net.minecraft.network.NetHandlerPlayServer; | |
10 | 8 | import net.minecraft.network.NetworkManager; |
11 | -import net.minecraft.network.play.INetHandlerPlayServer; | |
12 | -import net.minecraft.network.play.client.C01PacketChatMessage; | |
13 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
14 | 9 | import net.minecraft.profiler.Profiler; |
15 | 10 | import net.minecraft.server.MinecraftServer; |
16 | 11 | import net.minecraft.server.management.ServerConfigurationManager; |
... | ... | @@ -29,7 +24,6 @@ import com.mumfrey.liteloader.api.Listener; |
29 | 24 | import com.mumfrey.liteloader.common.GameEngine; |
30 | 25 | import com.mumfrey.liteloader.common.LoadingProgress; |
31 | 26 | import com.mumfrey.liteloader.core.event.HandlerList; |
32 | -import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
33 | 27 | import com.mumfrey.liteloader.interfaces.FastIterable; |
34 | 28 | import com.mumfrey.liteloader.launch.LoaderProperties; |
35 | 29 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
... | ... | @@ -60,11 +54,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement |
60 | 54 | protected LiteLoaderMods mods; |
61 | 55 | |
62 | 56 | /** |
63 | - * List of mods which can filter server chat | |
64 | - */ | |
65 | - private FastIterable<ServerChatFilter> serverChatFilters = new HandlerList<ServerChatFilter>(ServerChatFilter.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | |
66 | - | |
67 | - /** | |
68 | 57 | * List of mods which provide server commands |
69 | 58 | */ |
70 | 59 | private FastIterable<ServerCommandProvider> serverCommandProviders = new HandlerList<ServerCommandProvider>(ServerCommandProvider.class); |
... | ... | @@ -134,10 +123,8 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement |
134 | 123 | @Override |
135 | 124 | public void registerInterfaces(InterfaceRegistrationDelegate delegate) |
136 | 125 | { |
137 | - delegate.registerInterface(ServerChatFilter.class); | |
138 | 126 | delegate.registerInterface(ServerCommandProvider.class); |
139 | 127 | delegate.registerInterface(ServerPlayerListener.class); |
140 | - | |
141 | 128 | delegate.registerInterface(CommonPluginChannelListener.class); |
142 | 129 | } |
143 | 130 | |
... | ... | @@ -155,14 +142,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement |
155 | 142 | } |
156 | 143 | |
157 | 144 | /** |
158 | - * @param serverChatFilter | |
159 | - */ | |
160 | - public void addServerChatFilter(ServerChatFilter serverChatFilter) | |
161 | - { | |
162 | - this.serverChatFilters.add(serverChatFilter); | |
163 | - } | |
164 | - | |
165 | - /** | |
166 | 145 | * @param serverCommandProvider |
167 | 146 | */ |
168 | 147 | public void addServerCommandProvider(ServerCommandProvider serverCommandProvider) |
... | ... | @@ -183,20 +162,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement |
183 | 162 | { |
184 | 163 | LoadingProgress.setMessage("Reloading Resources..."); |
185 | 164 | } |
186 | - | |
187 | - /** | |
188 | - * Callback from the chat hook | |
189 | - * @param netHandler | |
190 | - * | |
191 | - * @param chatPacket | |
192 | - * @return | |
193 | - */ | |
194 | - public boolean onServerChat(INetHandlerPlayServer netHandler, C01PacketChatMessage chatPacket) | |
195 | - { | |
196 | - EntityPlayerMP player = netHandler instanceof NetHandlerPlayServer ? ((NetHandlerPlayServer)netHandler).playerEntity : null; | |
197 | - | |
198 | - return this.serverChatFilters.all().onChat(player, chatPacket, chatPacket.func_149439_c()); | |
199 | - } | |
200 | 165 | |
201 | 166 | /** |
202 | 167 | * @param instance |
... | ... | @@ -292,11 +257,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement |
292 | 257 | this.loader.onWorldChanged(world); |
293 | 258 | } |
294 | 259 | |
295 | - protected void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket) | |
296 | - { | |
297 | - this.loader.onJoinGame(netHandler, loginPacket); | |
298 | - } | |
299 | - | |
300 | 260 | /** |
301 | 261 | * @deprecated use LiteLoader.getInterfaceManager().registerListener(listener); instead |
302 | 262 | * @param chatFilter | ... | ... |
java/common/com/mumfrey/liteloader/core/PacketEvents.java
0 โ 100644
1 | +package com.mumfrey.liteloader.core; | |
2 | + | |
3 | +import java.util.List; | |
4 | + | |
5 | +import net.minecraft.entity.player.EntityPlayerMP; | |
6 | +import net.minecraft.network.INetHandler; | |
7 | +import net.minecraft.network.NetHandlerPlayServer; | |
8 | +import net.minecraft.network.Packet; | |
9 | +import net.minecraft.network.login.server.S02PacketLoginSuccess; | |
10 | +import net.minecraft.network.play.client.C01PacketChatMessage; | |
11 | +import net.minecraft.network.play.client.C17PacketCustomPayload; | |
12 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
13 | +import net.minecraft.network.play.server.S02PacketChat; | |
14 | +import net.minecraft.network.play.server.S3FPacketCustomPayload; | |
15 | + | |
16 | +import com.mumfrey.liteloader.JoinGameListener; | |
17 | +import com.mumfrey.liteloader.PacketHandler; | |
18 | +import com.mumfrey.liteloader.ServerChatFilter; | |
19 | +import com.mumfrey.liteloader.api.InterfaceProvider; | |
20 | +import com.mumfrey.liteloader.api.Listener; | |
21 | +import com.mumfrey.liteloader.common.transformers.PacketEventInfo; | |
22 | +import com.mumfrey.liteloader.core.event.HandlerList; | |
23 | +import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | |
24 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
25 | +import com.mumfrey.liteloader.interfaces.FastIterable; | |
26 | +import com.mumfrey.liteloader.interfaces.FastIterableDeque; | |
27 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
28 | + | |
29 | +/** | |
30 | + * Packet event handling | |
31 | + * | |
32 | + * @author Adam Mummery-Smith | |
33 | + */ | |
34 | +public abstract class PacketEvents implements InterfaceProvider | |
35 | +{ | |
36 | + protected static PacketEvents instance; | |
37 | + | |
38 | + class PacketHandlerList extends HandlerList<PacketHandler> | |
39 | + { | |
40 | + private static final long serialVersionUID = 1L; | |
41 | + PacketHandlerList() { super(PacketHandler.class, ReturnLogicOp.AND_BREAK_ON_FALSE); } | |
42 | + } | |
43 | + | |
44 | + /** | |
45 | + * Reference to the loader instance | |
46 | + */ | |
47 | + protected final LiteLoader loader; | |
48 | + | |
49 | + private PacketHandlerList packetHandlers[] = new PacketHandlerList[Packets.count()]; | |
50 | + | |
51 | + private FastIterable<ServerChatFilter> serverChatFilters = new HandlerList<ServerChatFilter>(ServerChatFilter.class, ReturnLogicOp.AND_BREAK_ON_FALSE); | |
52 | + private FastIterableDeque<JoinGameListener> joinGameListeners = new HandlerList<JoinGameListener>(JoinGameListener.class); | |
53 | + | |
54 | + private final int loginSuccessPacketId = Packets.S02PacketLoginSuccess.getIndex(); | |
55 | + private final int serverChatPacketId = Packets.S02PacketChat.getIndex(); | |
56 | + private final int clientChatPacketId = Packets.C01PacketChatMessage.getIndex(); | |
57 | + private final int joinGamePacketId = Packets.S01PacketJoinGame.getIndex(); | |
58 | + private final int serverPayloadPacketId = Packets.S3FPacketCustomPayload.getIndex(); | |
59 | + private final int clientPayloadPacketId = Packets.C17PacketCustomPayload.getIndex(); | |
60 | + | |
61 | + public PacketEvents() | |
62 | + { | |
63 | + PacketEvents.instance = this; | |
64 | + this.loader = LiteLoader.getInstance(); | |
65 | + } | |
66 | + | |
67 | + @Override | |
68 | + public Class<? extends Listener> getListenerBaseType() | |
69 | + { | |
70 | + return Listener.class; | |
71 | + } | |
72 | + | |
73 | + @Override | |
74 | + public void registerInterfaces(InterfaceRegistrationDelegate delegate) | |
75 | + { | |
76 | + delegate.registerInterface(PacketHandler.class); | |
77 | + delegate.registerInterface(JoinGameListener.class); | |
78 | + delegate.registerInterface(ServerChatFilter.class); | |
79 | + } | |
80 | + | |
81 | + @Override | |
82 | + public void initProvider() | |
83 | + { | |
84 | + } | |
85 | + | |
86 | + /** | |
87 | + * @param joinGameListener | |
88 | + */ | |
89 | + public void registerJoinGameListener(JoinGameListener joinGameListener) | |
90 | + { | |
91 | + this.joinGameListeners.add(joinGameListener); | |
92 | + } | |
93 | + | |
94 | + /** | |
95 | + * @param serverChatFilter | |
96 | + */ | |
97 | + public void registerServerChatFilter(ServerChatFilter serverChatFilter) | |
98 | + { | |
99 | + this.serverChatFilters.add(serverChatFilter); | |
100 | + } | |
101 | + | |
102 | + public void registerPacketHandler(PacketHandler handler) | |
103 | + { | |
104 | + List<Class<? extends Packet>> handledPackets = handler.getHandledPackets(); | |
105 | + if (handledPackets != null) | |
106 | + { | |
107 | + for (Class<? extends Packet> packetClass : handledPackets) | |
108 | + { | |
109 | + String packetClassName = packetClass.getName(); | |
110 | + int packetId = Packets.indexOf(packetClassName); | |
111 | + if (packetId == -1 || packetId >= this.packetHandlers.length) | |
112 | + { | |
113 | + LiteLoaderLogger.warning("PacketHandler %s attempted to register a handler for unupported packet class %s", handler.getName(), packetClassName); | |
114 | + continue; | |
115 | + } | |
116 | + | |
117 | + if (this.packetHandlers[packetId] == null) | |
118 | + { | |
119 | + this.packetHandlers[packetId] = new PacketHandlerList(); | |
120 | + } | |
121 | + | |
122 | + this.packetHandlers[packetId].add(handler); | |
123 | + } | |
124 | + } | |
125 | + } | |
126 | + | |
127 | + public static void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler) | |
128 | + { | |
129 | + PacketEvents.instance.handlePacket(e, netHandler, e.getPacketId()); | |
130 | + } | |
131 | + | |
132 | + private void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) | |
133 | + { | |
134 | + this.handlePacketEvent(e, netHandler, packetId); | |
135 | + | |
136 | + if (this.packetHandlers[packetId] == null || e.isCancelled()) | |
137 | + { | |
138 | + return; | |
139 | + } | |
140 | + | |
141 | + if (!this.packetHandlers[packetId].all().handlePacket(netHandler, e.getSource())) | |
142 | + { | |
143 | + e.cancel(); | |
144 | + } | |
145 | + } | |
146 | + | |
147 | + /** | |
148 | + * @param e | |
149 | + * @param netHandler | |
150 | + * @param packetId | |
151 | + * @param packet | |
152 | + */ | |
153 | + protected void handlePacketEvent(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) | |
154 | + { | |
155 | + Packet packet = e.getSource(); | |
156 | + | |
157 | + if (packetId == this.loginSuccessPacketId) | |
158 | + { | |
159 | + this.handlePacket(e, netHandler, (S02PacketLoginSuccess)packet); | |
160 | + return; | |
161 | + } | |
162 | + | |
163 | + if (packetId == this.serverChatPacketId) | |
164 | + { | |
165 | + this.handlePacket(e, netHandler, (S02PacketChat)packet); | |
166 | + return; | |
167 | + } | |
168 | + | |
169 | + if (packetId == this.clientChatPacketId) | |
170 | + { | |
171 | + this.handlePacket(e, netHandler, (C01PacketChatMessage)packet); | |
172 | + return; | |
173 | + } | |
174 | + | |
175 | + if (packetId == this.joinGamePacketId) | |
176 | + { | |
177 | + this.handlePacket(e, netHandler, (S01PacketJoinGame)packet); | |
178 | + return; | |
179 | + } | |
180 | + | |
181 | + if (packetId == this.serverPayloadPacketId) | |
182 | + { | |
183 | + this.handlePacket(e, netHandler, (S3FPacketCustomPayload)packet); | |
184 | + return; | |
185 | + } | |
186 | + | |
187 | + if (packetId == this.clientPayloadPacketId) | |
188 | + { | |
189 | + this.handlePacket(e, netHandler, (C17PacketCustomPayload)packet); | |
190 | + return; | |
191 | + } | |
192 | + } | |
193 | + | |
194 | + /** | |
195 | + * @param e | |
196 | + * @param netHandler | |
197 | + * @param packet | |
198 | + */ | |
199 | + protected abstract void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketLoginSuccess packet); | |
200 | + | |
201 | + /** | |
202 | + * S02PacketChat::processPacket() | |
203 | + * | |
204 | + * @param netHandler | |
205 | + * @param packet | |
206 | + */ | |
207 | + protected abstract void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet); | |
208 | + | |
209 | + /** | |
210 | + * S02PacketChat::processPacket() | |
211 | + * | |
212 | + * @param netHandler | |
213 | + * @param packet | |
214 | + */ | |
215 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, C01PacketChatMessage packet) | |
216 | + { | |
217 | + EntityPlayerMP player = netHandler instanceof NetHandlerPlayServer ? ((NetHandlerPlayServer)netHandler).playerEntity : null; | |
218 | + | |
219 | + if (!this.serverChatFilters.all().onChat(player, packet, packet.func_149439_c())) | |
220 | + { | |
221 | + e.cancel(); | |
222 | + } | |
223 | + } | |
224 | + | |
225 | + /** | |
226 | + * S01PacketJoinGame::processPacket() | |
227 | + * | |
228 | + * @param netHandler | |
229 | + * @param packet | |
230 | + */ | |
231 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S01PacketJoinGame packet) | |
232 | + { | |
233 | + this.loader.onJoinGame(netHandler, packet); | |
234 | + this.joinGameListeners.all().onJoinGame(netHandler, packet); | |
235 | + } | |
236 | + | |
237 | + /** | |
238 | + * S3FPacketCustomPayload::processPacket() | |
239 | + * | |
240 | + * @param netHandler | |
241 | + * @param packet | |
242 | + */ | |
243 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S3FPacketCustomPayload packet) | |
244 | + { | |
245 | + LiteLoader.getClientPluginChannels().onPluginChannelMessage(packet); | |
246 | + } | |
247 | + | |
248 | + /** | |
249 | + * C17PacketCustomPayload::processPacket() | |
250 | + * | |
251 | + * @param netHandler | |
252 | + * @param packet | |
253 | + */ | |
254 | + protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, C17PacketCustomPayload packet) | |
255 | + { | |
256 | + LiteLoader.getServerPluginChannels().onPluginChannelMessage(netHandler, packet); | |
257 | + } | |
258 | +} | ... | ... |
java/common/com/mumfrey/liteloader/core/ServerPluginChannels.java
1 | 1 | package com.mumfrey.liteloader.core; |
2 | 2 | |
3 | 3 | import net.minecraft.entity.player.EntityPlayerMP; |
4 | +import net.minecraft.network.INetHandler; | |
4 | 5 | import net.minecraft.network.NetHandlerPlayServer; |
5 | 6 | import net.minecraft.network.play.INetHandlerPlayServer; |
6 | 7 | import net.minecraft.network.play.client.C17PacketCustomPayload; |
... | ... | @@ -97,11 +98,11 @@ public class ServerPluginChannels extends PluginChannels<ServerPluginChannelList |
97 | 98 | |
98 | 99 | /** |
99 | 100 | * Callback for the plugin channel hook |
100 | - * @param netHandler | |
101 | 101 | * |
102 | + * @param netHandler | |
102 | 103 | * @param customPayload |
103 | 104 | */ |
104 | - public void onPluginChannelMessage(INetHandlerPlayServer netHandler, C17PacketCustomPayload customPayload) | |
105 | + public void onPluginChannelMessage(INetHandler netHandler, C17PacketCustomPayload customPayload) | |
105 | 106 | { |
106 | 107 | if (customPayload != null && customPayload.func_149559_c() != null) |
107 | 108 | { | ... | ... |
java/common/com/mumfrey/liteloader/core/api/LiteLoaderCoreAPI.java
... | ... | @@ -21,6 +21,7 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
21 | 21 | public abstract class LiteLoaderCoreAPI implements LiteAPI |
22 | 22 | { |
23 | 23 | protected static final String PKG_LITELOADER = "com.mumfrey.liteloader"; |
24 | + protected static final String PKG_LITELOADER_COMMON = LiteLoaderCoreAPI.PKG_LITELOADER + ".common"; | |
24 | 25 | |
25 | 26 | protected LoaderEnvironment environment; |
26 | 27 | ... | ... |
java/common/com/mumfrey/liteloader/core/event/HandlerList.java
... | ... | @@ -733,7 +733,7 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T |
733 | 733 | { |
734 | 734 | method.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); |
735 | 735 | method.instructions.add(new VarInsnNode(Opcodes.ALOAD, 1)); |
736 | - method.instructions.add(new IntInsnNode(Opcodes.BIPUSH, handlerIndex)); | |
736 | + method.instructions.add(handlerIndex > Short.MAX_VALUE ? new LdcInsnNode(new Integer(handlerIndex)) : new IntInsnNode(Opcodes.SIPUSH, handlerIndex)); | |
737 | 737 | method.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", true)); |
738 | 738 | method.instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, this.typeRef)); |
739 | 739 | method.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, classNode.name, HandlerListClassLoader.HANDLER_VAR_PREFIX + handlerIndex, "L" + this.typeRef + ";")); | ... | ... |
java/common/com/mumfrey/liteloader/core/runtime/Obf.java
... | ... | @@ -19,6 +19,7 @@ public class Obf |
19 | 19 | public static final Obf EventProxy = new Obf("com.mumfrey.liteloader.core.event.EventProxy" ); |
20 | 20 | public static final Obf HandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList" ); |
21 | 21 | public static final Obf BakedHandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList$BakedHandlerList" ); |
22 | + public static final Obf PacketEvents = new Obf("com.mumfrey.liteloader.core.PacketEvents" ); | |
22 | 23 | public static final Obf LoadingBar = new Obf("com.mumfrey.liteloader.client.gui.startup.LoadingBar" ); |
23 | 24 | public static final Obf GameProfile = new Obf("com.mojang.authlib.GameProfile" ); |
24 | 25 | public static final Obf MinecraftMain = new Obf("net.minecraft.client.main.Main" ); |
... | ... | @@ -33,13 +34,7 @@ public class Obf |
33 | 34 | public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "bbv" ); |
34 | 35 | public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "qi" ); |
35 | 36 | public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" ); |
36 | - public static final Obf S01PacketJoinGame = new Obf("net.minecraft.network.play.server.S01PacketJoinGame", "hd" ); | |
37 | - public static final Obf S02PacketLoginSuccess = new Obf("net.minecraft.network.login.server.S02PacketLoginSuccess", "js" ); | |
38 | - public static final Obf S02PacketChat = new Obf("net.minecraft.network.play.server.S02PacketChat", "gj" ); | |
39 | - public static final Obf S3FPacketCustomPayload = new Obf("net.minecraft.network.play.server.S3FPacketCustomPayload", "gr" ); | |
40 | 37 | public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "fb" ); |
41 | - public static final Obf C01PacketChatMessage = new Obf("net.minecraft.network.play.client.C01PacketChatMessage", "ir" ); | |
42 | - public static final Obf C17PacketCustomPayload = new Obf("net.minecraft.network.play.client.C17PacketCustomPayload", "iz" ); | |
43 | 38 | public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "bsx" ); |
44 | 39 | public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "ahj" ); |
45 | 40 | public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "oi" ); |
... | ... | @@ -52,6 +47,15 @@ public class Obf |
52 | 47 | public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "bmg" ); |
53 | 48 | public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "bcc" ); |
54 | 49 | |
50 | + // Packets | |
51 | + // ----------------------------------------------------------------------------------------- | |
52 | + @Deprecated public static final Obf S01PacketJoinGame = Packets.S01PacketJoinGame; | |
53 | + @Deprecated public static final Obf S02PacketLoginSuccess = Packets.S02PacketLoginSuccess; | |
54 | + @Deprecated public static final Obf S02PacketChat = Packets.S02PacketChat; | |
55 | + @Deprecated public static final Obf S3FPacketCustomPayload = Packets.S3FPacketCustomPayload; | |
56 | + @Deprecated public static final Obf C01PacketChatMessage = Packets.C01PacketChatMessage; | |
57 | + @Deprecated public static final Obf C17PacketCustomPayload = Packets.C17PacketCustomPayload; | |
58 | + | |
55 | 59 | // Fields |
56 | 60 | // ----------------------------------------------------------------------------------------- |
57 | 61 | public static final Obf minecraftProfiler = new Obf("field_71424_I", "z" ); // Minecraft/mcProfiler | ... | ... |
java/common/com/mumfrey/liteloader/core/runtime/Packets.java
0 โ 100644
1 | +package com.mumfrey.liteloader.core.runtime; | |
2 | + | |
3 | +/** | |
4 | + * Packet obfuscation table | |
5 | + * | |
6 | + * @author Adam Mummery-Smith | |
7 | + * TODO Obfuscation 1.7.10 | |
8 | + */ | |
9 | +@SuppressWarnings("hiding") | |
10 | +public class Packets extends Obf | |
11 | +{ | |
12 | + public static final Packets S08PacketPlayerPosLook = new Packets("net.minecraft.network.play.server.S08PacketPlayerPosLook", "fu"); | |
13 | + public static final Packets S0EPacketSpawnObject = new Packets("net.minecraft.network.play.server.S0EPacketSpawnObject", "fw"); | |
14 | + public static final Packets S11PacketSpawnExperienceOrb = new Packets("net.minecraft.network.play.server.S11PacketSpawnExperienceOrb", "fx"); | |
15 | + public static final Packets S2CPacketSpawnGlobalEntity = new Packets("net.minecraft.network.play.server.S2CPacketSpawnGlobalEntity", "fy"); | |
16 | + public static final Packets S0FPacketSpawnMob = new Packets("net.minecraft.network.play.server.S0FPacketSpawnMob", "fz"); | |
17 | + public static final Packets S10PacketSpawnPainting = new Packets("net.minecraft.network.play.server.S10PacketSpawnPainting", "ga"); | |
18 | + public static final Packets S0CPacketSpawnPlayer = new Packets("net.minecraft.network.play.server.S0CPacketSpawnPlayer", "gb"); | |
19 | + public static final Packets S0BPacketAnimation = new Packets("net.minecraft.network.play.server.S0BPacketAnimation", "gc"); | |
20 | + public static final Packets S37PacketStatistics = new Packets("net.minecraft.network.play.server.S37PacketStatistics", "gd"); | |
21 | + public static final Packets S25PacketBlockBreakAnim = new Packets("net.minecraft.network.play.server.S25PacketBlockBreakAnim", "ge"); | |
22 | + public static final Packets S35PacketUpdateTileEntity = new Packets("net.minecraft.network.play.server.S35PacketUpdateTileEntity", "gf"); | |
23 | + public static final Packets S24PacketBlockAction = new Packets("net.minecraft.network.play.server.S24PacketBlockAction", "gg"); | |
24 | + public static final Packets S23PacketBlockChange = new Packets("net.minecraft.network.play.server.S23PacketBlockChange", "gh"); | |
25 | + public static final Packets S3APacketTabComplete = new Packets("net.minecraft.network.play.server.S3APacketTabComplete", "gi"); | |
26 | + public static final Packets S02PacketChat = new Packets("net.minecraft.network.play.server.S02PacketChat", "gj"); | |
27 | + public static final Packets S22PacketMultiBlockChange = new Packets("net.minecraft.network.play.server.S22PacketMultiBlockChange", "gk"); | |
28 | + public static final Packets S32PacketConfirmTransaction = new Packets("net.minecraft.network.play.server.S32PacketConfirmTransaction", "gl"); | |
29 | + public static final Packets S2EPacketCloseWindow = new Packets("net.minecraft.network.play.server.S2EPacketCloseWindow", "gm"); | |
30 | + public static final Packets S2DPacketOpenWindow = new Packets("net.minecraft.network.play.server.S2DPacketOpenWindow", "gn"); | |
31 | + public static final Packets S30PacketWindowItems = new Packets("net.minecraft.network.play.server.S30PacketWindowItems", "go"); | |
32 | + public static final Packets S31PacketWindowProperty = new Packets("net.minecraft.network.play.server.S31PacketWindowProperty", "gp"); | |
33 | + public static final Packets S2FPacketSetSlot = new Packets("net.minecraft.network.play.server.S2FPacketSetSlot", "gq"); | |
34 | + public static final Packets S3FPacketCustomPayload = new Packets("net.minecraft.network.play.server.S3FPacketCustomPayload", "gr"); | |
35 | + public static final Packets S40PacketDisconnect = new Packets("net.minecraft.network.play.server.S40PacketDisconnect", "gs"); | |
36 | + public static final Packets S19PacketEntityStatus = new Packets("net.minecraft.network.play.server.S19PacketEntityStatus", "gt"); | |
37 | + public static final Packets S27PacketExplosion = new Packets("net.minecraft.network.play.server.S27PacketExplosion", "gu"); | |
38 | + public static final Packets S2BPacketChangeGameState = new Packets("net.minecraft.network.play.server.S2BPacketChangeGameState", "gv"); | |
39 | + public static final Packets S00PacketKeepAlive = new Packets("net.minecraft.network.play.server.S00PacketKeepAlive", "gw"); | |
40 | + public static final Packets S21PacketChunkData = new Packets("net.minecraft.network.play.server.S21PacketChunkData", "gx"); | |
41 | + public static final Packets S21PacketChunkData$Extracted = new Packets("net.minecraft.network.play.server.S21PacketChunkData$Extracted", "gy"); | |
42 | + public static final Packets S26PacketMapChunkBulk = new Packets("net.minecraft.network.play.server.S26PacketMapChunkBulk", "gz"); | |
43 | + public static final Packets S28PacketEffect = new Packets("net.minecraft.network.play.server.S28PacketEffect", "ha"); | |
44 | + public static final Packets S2APacketParticles = new Packets("net.minecraft.network.play.server.S2APacketParticles", "hb"); | |
45 | + public static final Packets S29PacketSoundEffect = new Packets("net.minecraft.network.play.server.S29PacketSoundEffect", "hc"); | |
46 | + public static final Packets S01PacketJoinGame = new Packets("net.minecraft.network.play.server.S01PacketJoinGame", "hd"); | |
47 | + public static final Packets S34PacketMaps = new Packets("net.minecraft.network.play.server.S34PacketMaps", "he"); | |
48 | + public static final Packets S14PacketEntity = new Packets("net.minecraft.network.play.server.S14PacketEntity", "hf"); | |
49 | + public static final Packets S15PacketEntityRelMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S15PacketEntityRelMove", "hg"); | |
50 | + public static final Packets S17PacketEntityLookMove = new Packets("net.minecraft.network.play.server.S14PacketEntity$S17PacketEntityLookMove", "hh"); | |
51 | + public static final Packets S16PacketEntityLook = new Packets("net.minecraft.network.play.server.S14PacketEntity$S16PacketEntityLook", "hi"); | |
52 | + public static final Packets S36PacketSignEditorOpen = new Packets("net.minecraft.network.play.server.S36PacketSignEditorOpen", "hj"); | |
53 | + public static final Packets S39PacketPlayerAbilities = new Packets("net.minecraft.network.play.server.S39PacketPlayerAbilities", "hk"); | |
54 | + public static final Packets S38PacketPlayerListItem = new Packets("net.minecraft.network.play.server.S38PacketPlayerListItem", "ho"); | |
55 | + public static final Packets S0APacketUseBed = new Packets("net.minecraft.network.play.server.S0APacketUseBed", "hp"); | |
56 | + public static final Packets S13PacketDestroyEntities = new Packets("net.minecraft.network.play.server.S13PacketDestroyEntities", "hq"); | |
57 | + public static final Packets S1EPacketRemoveEntityEffect = new Packets("net.minecraft.network.play.server.S1EPacketRemoveEntityEffect", "hr"); | |
58 | + public static final Packets S07PacketRespawn = new Packets("net.minecraft.network.play.server.S07PacketRespawn", "hs"); | |
59 | + public static final Packets S19PacketEntityHeadLook = new Packets("net.minecraft.network.play.server.S19PacketEntityHeadLook", "ht"); | |
60 | + public static final Packets S09PacketHeldItemChange = new Packets("net.minecraft.network.play.server.S09PacketHeldItemChange", "hu"); | |
61 | + public static final Packets S3DPacketDisplayScoreboard = new Packets("net.minecraft.network.play.server.S3DPacketDisplayScoreboard", "hv"); | |
62 | + public static final Packets S1CPacketEntityMetadata = new Packets("net.minecraft.network.play.server.S1CPacketEntityMetadata", "hw"); | |
63 | + public static final Packets S1BPacketEntityAttach = new Packets("net.minecraft.network.play.server.S1BPacketEntityAttach", "hx"); | |
64 | + public static final Packets S12PacketEntityVelocity = new Packets("net.minecraft.network.play.server.S12PacketEntityVelocity", "hy"); | |
65 | + public static final Packets S04PacketEntityEquipment = new Packets("net.minecraft.network.play.server.S04PacketEntityEquipment", "hz"); | |
66 | + public static final Packets S1FPacketSetExperience = new Packets("net.minecraft.network.play.server.S1FPacketSetExperience", "ia"); | |
67 | + public static final Packets S06PacketUpdateHealth = new Packets("net.minecraft.network.play.server.S06PacketUpdateHealth", "ib"); | |
68 | + public static final Packets S3BPacketScoreboardObjective = new Packets("net.minecraft.network.play.server.S3BPacketScoreboardObjective", "ic"); | |
69 | + public static final Packets S3EPacketTeams = new Packets("net.minecraft.network.play.server.S3EPacketTeams", "id"); | |
70 | + public static final Packets S3CPacketUpdateScore = new Packets("net.minecraft.network.play.server.S3CPacketUpdateScore", "ie"); | |
71 | + public static final Packets S05PacketSpawnPosition = new Packets("net.minecraft.network.play.server.S05PacketSpawnPosition", "ig"); | |
72 | + public static final Packets S03PacketTimeUpdate = new Packets("net.minecraft.network.play.server.S03PacketTimeUpdate", "ih"); | |
73 | + public static final Packets S33PacketUpdateSign = new Packets("net.minecraft.network.play.server.S33PacketUpdateSign", "ii"); | |
74 | + public static final Packets S0DPacketCollectItem = new Packets("net.minecraft.network.play.server.S0DPacketCollectItem", "ij"); | |
75 | + public static final Packets S18PacketEntityTeleport = new Packets("net.minecraft.network.play.server.S18PacketEntityTeleport", "ik"); | |
76 | + public static final Packets S20PacketEntityProperties = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties", "il"); | |
77 | + public static final Packets S20PacketEntityProperties$Snapshot = new Packets("net.minecraft.network.play.server.S20PacketEntityProperties$Snapshot", "im"); | |
78 | + public static final Packets S1DPacketEntityEffect = new Packets("net.minecraft.network.play.server.S1DPacketEntityEffect", "in"); | |
79 | + public static final Packets C0APacketAnimation = new Packets("net.minecraft.network.play.client.C0APacketAnimation", "ip"); | |
80 | + public static final Packets C14PacketTabComplete = new Packets("net.minecraft.network.play.client.C14PacketTabComplete", "iq"); | |
81 | + public static final Packets C01PacketChatMessage = new Packets("net.minecraft.network.play.client.C01PacketChatMessage", "ir"); | |
82 | + public static final Packets C16PacketClientStatus = new Packets("net.minecraft.network.play.client.C16PacketClientStatus", "is"); | |
83 | + public static final Packets C16PacketClientStatus$EnumState = new Packets("net.minecraft.network.play.client.C16PacketClientStatus$EnumState", "it"); | |
84 | + public static final Packets C15PacketClientSettings = new Packets("net.minecraft.network.play.client.C15PacketClientSettings", "iu"); | |
85 | + public static final Packets C0FPacketConfirmTransaction = new Packets("net.minecraft.network.play.client.C0FPacketConfirmTransaction", "iv"); | |
86 | + public static final Packets C11PacketEnchantItem = new Packets("net.minecraft.network.play.client.C11PacketEnchantItem", "iw"); | |
87 | + public static final Packets C0EPacketClickWindow = new Packets("net.minecraft.network.play.client.C0EPacketClickWindow", "ix"); | |
88 | + public static final Packets C0DPacketCloseWindow = new Packets("net.minecraft.network.play.client.C0DPacketCloseWindow", "iy"); | |
89 | + public static final Packets C17PacketCustomPayload = new Packets("net.minecraft.network.play.client.C17PacketCustomPayload", "iz"); | |
90 | + public static final Packets C02PacketUseEntity = new Packets("net.minecraft.network.play.client.C02PacketUseEntity", "ja"); | |
91 | + public static final Packets C02PacketUseEntity$Action = new Packets("net.minecraft.network.play.client.C02PacketUseEntity$Action", "jb"); | |
92 | + public static final Packets C00PacketKeepAlive = new Packets("net.minecraft.network.play.client.C00PacketKeepAlive", "jc"); | |
93 | + public static final Packets C03PacketPlayer = new Packets("net.minecraft.network.play.client.C03PacketPlayer", "jd"); | |
94 | + public static final Packets C04PacketPlayerPosition = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition", "je"); | |
95 | + public static final Packets C06PacketPlayerPosLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C06PacketPlayerPosLook", "jf"); | |
96 | + public static final Packets C05PacketPlayerLook = new Packets("net.minecraft.network.play.client.C03PacketPlayer$C05PacketPlayerLook", "jg"); | |
97 | + public static final Packets C13PacketPlayerAbilities = new Packets("net.minecraft.network.play.client.C13PacketPlayerAbilities", "jh"); | |
98 | + public static final Packets C07PacketPlayerDigging = new Packets("net.minecraft.network.play.client.C07PacketPlayerDigging", "ji"); | |
99 | + public static final Packets C0BPacketEntityAction = new Packets("net.minecraft.network.play.client.C0BPacketEntityAction", "jj"); | |
100 | + public static final Packets C0CPacketInput = new Packets("net.minecraft.network.play.client.C0CPacketInput", "jk"); | |
101 | + public static final Packets C09PacketHeldItemChange = new Packets("net.minecraft.network.play.client.C09PacketHeldItemChange", "jl"); | |
102 | + public static final Packets C10PacketCreativeInventoryAction = new Packets("net.minecraft.network.play.client.C10PacketCreativeInventoryAction", "jm"); | |
103 | + public static final Packets C12PacketUpdateSign = new Packets("net.minecraft.network.play.client.C12PacketUpdateSign", "jn"); | |
104 | + public static final Packets C08PacketPlayerBlockPlacement = new Packets("net.minecraft.network.play.client.C08PacketPlayerBlockPlacement", "jo"); | |
105 | + public static final Packets C00Handshake = new Packets("net.minecraft.network.handshake.client.C00Handshake", "jp"); | |
106 | + public static final Packets S02PacketLoginSuccess = new Packets("net.minecraft.network.login.server.S02PacketLoginSuccess", "js"); | |
107 | + public static final Packets S01PacketEncryptionRequest = new Packets("net.minecraft.network.login.server.S01PacketEncryptionRequest", "jt"); | |
108 | + public static final Packets S00PacketDisconnect = new Packets("net.minecraft.network.login.server.S00PacketDisconnect", "ju"); | |
109 | + public static final Packets C00PacketLoginStart = new Packets("net.minecraft.network.login.client.C00PacketLoginStart", "jw"); | |
110 | + public static final Packets C01PacketEncryptionResponse = new Packets("net.minecraft.network.login.client.C01PacketEncryptionResponse", "jx"); | |
111 | + public static final Packets S01PacketPong = new Packets("net.minecraft.network.status.server.S01PacketPong", "jz"); | |
112 | + public static final Packets S00PacketServerInfo = new Packets("net.minecraft.network.status.server.S00PacketServerInfo", "ka"); | |
113 | + | |
114 | + public static final Packets[] packets = new Packets[] { | |
115 | + S08PacketPlayerPosLook, | |
116 | + S0EPacketSpawnObject, | |
117 | + S11PacketSpawnExperienceOrb, | |
118 | + S2CPacketSpawnGlobalEntity, | |
119 | + S0FPacketSpawnMob, | |
120 | + S10PacketSpawnPainting, | |
121 | + S0CPacketSpawnPlayer, | |
122 | + S0BPacketAnimation, | |
123 | + S37PacketStatistics, | |
124 | + S25PacketBlockBreakAnim, | |
125 | + S35PacketUpdateTileEntity, | |
126 | + S24PacketBlockAction, | |
127 | + S23PacketBlockChange, | |
128 | + S3APacketTabComplete, | |
129 | + S02PacketChat, | |
130 | + S22PacketMultiBlockChange, | |
131 | + S32PacketConfirmTransaction, | |
132 | + S2EPacketCloseWindow, | |
133 | + S2DPacketOpenWindow, | |
134 | + S30PacketWindowItems, | |
135 | + S31PacketWindowProperty, | |
136 | + S2FPacketSetSlot, | |
137 | + S3FPacketCustomPayload, | |
138 | + S40PacketDisconnect, | |
139 | + S19PacketEntityStatus, | |
140 | + S27PacketExplosion, | |
141 | + S2BPacketChangeGameState, | |
142 | + S00PacketKeepAlive, | |
143 | + S21PacketChunkData, | |
144 | + S21PacketChunkData$Extracted, | |
145 | + S26PacketMapChunkBulk, | |
146 | + S28PacketEffect, | |
147 | + S2APacketParticles, | |
148 | + S29PacketSoundEffect, | |
149 | + S01PacketJoinGame, | |
150 | + S34PacketMaps, | |
151 | + S14PacketEntity, | |
152 | + S15PacketEntityRelMove, | |
153 | + S17PacketEntityLookMove, | |
154 | + S16PacketEntityLook, | |
155 | + S36PacketSignEditorOpen, | |
156 | + S39PacketPlayerAbilities, | |
157 | + S38PacketPlayerListItem, | |
158 | + S0APacketUseBed, | |
159 | + S13PacketDestroyEntities, | |
160 | + S1EPacketRemoveEntityEffect, | |
161 | + S07PacketRespawn, | |
162 | + S19PacketEntityHeadLook, | |
163 | + S09PacketHeldItemChange, | |
164 | + S3DPacketDisplayScoreboard, | |
165 | + S1CPacketEntityMetadata, | |
166 | + S1BPacketEntityAttach, | |
167 | + S12PacketEntityVelocity, | |
168 | + S04PacketEntityEquipment, | |
169 | + S1FPacketSetExperience, | |
170 | + S06PacketUpdateHealth, | |
171 | + S3BPacketScoreboardObjective, | |
172 | + S3EPacketTeams, | |
173 | + S3CPacketUpdateScore, | |
174 | + S05PacketSpawnPosition, | |
175 | + S03PacketTimeUpdate, | |
176 | + S33PacketUpdateSign, | |
177 | + S0DPacketCollectItem, | |
178 | + S18PacketEntityTeleport, | |
179 | + S20PacketEntityProperties, | |
180 | + S20PacketEntityProperties$Snapshot, | |
181 | + S1DPacketEntityEffect, | |
182 | + C0APacketAnimation, | |
183 | + C14PacketTabComplete, | |
184 | + C01PacketChatMessage, | |
185 | + C16PacketClientStatus, | |
186 | + C16PacketClientStatus$EnumState, | |
187 | + C15PacketClientSettings, | |
188 | + C0FPacketConfirmTransaction, | |
189 | + C11PacketEnchantItem, | |
190 | + C0EPacketClickWindow, | |
191 | + C0DPacketCloseWindow, | |
192 | + C17PacketCustomPayload, | |
193 | + C02PacketUseEntity, | |
194 | + C02PacketUseEntity$Action, | |
195 | + C00PacketKeepAlive, | |
196 | + C03PacketPlayer, | |
197 | + C04PacketPlayerPosition, | |
198 | + C06PacketPlayerPosLook, | |
199 | + C05PacketPlayerLook, | |
200 | + C13PacketPlayerAbilities, | |
201 | + C07PacketPlayerDigging, | |
202 | + C0BPacketEntityAction, | |
203 | + C0CPacketInput, | |
204 | + C09PacketHeldItemChange, | |
205 | + C10PacketCreativeInventoryAction, | |
206 | + C12PacketUpdateSign, | |
207 | + C08PacketPlayerBlockPlacement, | |
208 | + C00Handshake, | |
209 | + S02PacketLoginSuccess, | |
210 | + S01PacketEncryptionRequest, | |
211 | + S00PacketDisconnect, | |
212 | + C00PacketLoginStart, | |
213 | + C01PacketEncryptionResponse, | |
214 | + S01PacketPong, | |
215 | + S00PacketServerInfo | |
216 | + }; | |
217 | + | |
218 | + private static int nextPacketIndex; | |
219 | + | |
220 | + private final String shortName; | |
221 | + | |
222 | + private final int index; | |
223 | + | |
224 | + private Packets(String seargeName, String obfName) | |
225 | + { | |
226 | + super(seargeName, obfName); | |
227 | + | |
228 | + this.shortName = seargeName.substring(Math.max(seargeName.lastIndexOf('.'), seargeName.lastIndexOf('$')) + 1); | |
229 | + this.index = Packets.nextPacketIndex++; | |
230 | + } | |
231 | + | |
232 | + public int getIndex() | |
233 | + { | |
234 | + return this.index; | |
235 | + } | |
236 | + | |
237 | + public String getShortName() | |
238 | + { | |
239 | + return this.shortName; | |
240 | + } | |
241 | + | |
242 | + public static int indexOf(String packetClassName) | |
243 | + { | |
244 | + for (Packets packet : Packets.packets) | |
245 | + { | |
246 | + if (packet.name.equals(packetClassName) || packet.shortName.equals(packetClassName) || packet.obf.equals(packetClassName)) return packet.index; | |
247 | + } | |
248 | + | |
249 | + return -1; | |
250 | + } | |
251 | + | |
252 | + public static int count() | |
253 | + { | |
254 | + return Packets.nextPacketIndex; | |
255 | + } | |
256 | +} | ... | ... |
java/common/com/mumfrey/liteloader/interfaces/ObjectFactory.java
... | ... | @@ -5,6 +5,7 @@ import net.minecraft.server.MinecraftServer; |
5 | 5 | import com.mumfrey.liteloader.common.GameEngine; |
6 | 6 | import com.mumfrey.liteloader.core.ClientPluginChannels; |
7 | 7 | import com.mumfrey.liteloader.core.Events; |
8 | +import com.mumfrey.liteloader.core.PacketEvents; | |
8 | 9 | import com.mumfrey.liteloader.core.ServerPluginChannels; |
9 | 10 | import com.mumfrey.liteloader.permissions.PermissionsManagerClient; |
10 | 11 | import com.mumfrey.liteloader.permissions.PermissionsManagerServer; |
... | ... | @@ -21,6 +22,8 @@ public interface ObjectFactory<TClient, TServer extends MinecraftServer> |
21 | 22 | { |
22 | 23 | public abstract Events<TClient, TServer> getEventBroker(); |
23 | 24 | |
25 | + public abstract PacketEvents getPacketEventBroker(); | |
26 | + | |
24 | 27 | public abstract GameEngine<TClient, TServer> getGameEngine(); |
25 | 28 | |
26 | 29 | public abstract PanelManager<?> getPanelManager(); | ... | ... |
java/common/com/mumfrey/liteloader/launch/ClassTransformerManager.java
... | ... | @@ -203,7 +203,7 @@ public class ClassTransformerManager |
203 | 203 | * @param classLoader |
204 | 204 | * @param transformers |
205 | 205 | */ |
206 | - @SuppressWarnings("unchecked") | |
206 | + @SuppressWarnings({ "unchecked", "deprecation" }) | |
207 | 207 | private void sieveAndSortPacketTransformers(LaunchClassLoader classLoader, Set<String> transformers) |
208 | 208 | { |
209 | 209 | LiteLoaderLogger.info("Sorting registered packet transformers by priority"); | ... | ... |
java/common/com/mumfrey/liteloader/launch/LiteLoaderTweaker.java
... | ... | @@ -323,6 +323,7 @@ public class LiteLoaderTweaker implements ITweaker |
323 | 323 | public void injectIntoClassLoader(LaunchClassLoader classLoader) |
324 | 324 | { |
325 | 325 | classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Obf"); |
326 | + classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Packets"); | |
326 | 327 | |
327 | 328 | LiteLoaderTweaker.instance.transformerManager.injectUpstreamTransformers(classLoader); |
328 | 329 | ... | ... |
java/common/com/mumfrey/liteloader/transformers/event/Event.java
... | ... | @@ -95,7 +95,7 @@ public class Event implements Comparable<Event> |
95 | 95 | |
96 | 96 | protected Set<MethodInfo> pendingInjections; |
97 | 97 | |
98 | - Event(String name, boolean cancellable, int priority) | |
98 | + protected Event(String name, boolean cancellable, int priority) | |
99 | 99 | { |
100 | 100 | this.name = name.toLowerCase(); |
101 | 101 | this.priority = priority; |
... | ... | @@ -216,7 +216,7 @@ public class Event implements Comparable<Event> |
216 | 216 | this.methodReturnType = Type.getReturnType(method.desc); |
217 | 217 | this.methodMAXS = method.maxStack; |
218 | 218 | this.methodIsStatic = (method.access & Opcodes.ACC_STATIC) == Opcodes.ACC_STATIC; |
219 | - this.eventInfoClass = EventInfo.getEventInfoClassName(this.methodReturnType).replace('.', '/'); | |
219 | + this.eventInfoClass = this.getEventInfoClassName(); | |
220 | 220 | this.eventDescriptor = String.format("(L%s;%s)V", this.eventInfoClass, method.desc.substring(1, method.desc.indexOf(')'))); |
221 | 221 | } |
222 | 222 | |
... | ... | @@ -306,10 +306,7 @@ public class Event implements Comparable<Event> |
306 | 306 | // Instance the EventInfo for this event |
307 | 307 | insns.add(new TypeInsnNode(Opcodes.NEW, this.eventInfoClass)); ctorMAXS++; |
308 | 308 | insns.add(new InsnNode(Opcodes.DUP)); ctorMAXS++; invokeMAXS++; |
309 | - insns.add(new LdcInsnNode(this.name)); ctorMAXS++; | |
310 | - insns.add(this.methodIsStatic ? new InsnNode(Opcodes.ACONST_NULL) : new VarInsnNode(Opcodes.ALOAD, 0)); ctorMAXS++; | |
311 | - insns.add(new InsnNode(cancellable ? Opcodes.ICONST_1 : Opcodes.ICONST_0)); ctorMAXS++; | |
312 | - insns.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, this.eventInfoClass, Obf.constructor.name, EventInfo.getConstructorDescriptor(), false)); | |
309 | + ctorMAXS += invokeEventInfoConstructor(insns, cancellable); | |
313 | 310 | insns.add(new VarInsnNode(Opcodes.ASTORE, eventInfoVar)); |
314 | 311 | |
315 | 312 | // Call the event handler method in the proxy |
... | ... | @@ -330,6 +327,23 @@ public class Event implements Comparable<Event> |
330 | 327 | return handler; |
331 | 328 | } |
332 | 329 | |
330 | + protected int invokeEventInfoConstructor(InsnList insns, boolean cancellable) | |
331 | + { | |
332 | + int ctorMAXS = 0; | |
333 | + | |
334 | + insns.add(new LdcInsnNode(this.name)); ctorMAXS++; | |
335 | + insns.add(this.methodIsStatic ? new InsnNode(Opcodes.ACONST_NULL) : new VarInsnNode(Opcodes.ALOAD, 0)); ctorMAXS++; | |
336 | + insns.add(new InsnNode(cancellable ? Opcodes.ICONST_1 : Opcodes.ICONST_0)); ctorMAXS++; | |
337 | + insns.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, this.eventInfoClass, Obf.constructor.name, EventInfo.getConstructorDescriptor(), false)); | |
338 | + | |
339 | + return ctorMAXS; | |
340 | + } | |
341 | + | |
342 | + protected String getEventInfoClassName() | |
343 | + { | |
344 | + return EventInfo.getEventInfoClassName(this.methodReturnType).replace('.', '/'); | |
345 | + } | |
346 | + | |
333 | 347 | /** |
334 | 348 | * if (e.isCancelled()) return e.getReturnValue(); |
335 | 349 | * | ... | ... |