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,25 +7,12 @@ import net.minecraft.client.renderer.EntityRenderer; | ||
7 | import net.minecraft.client.renderer.OpenGlHelper; | 7 | import net.minecraft.client.renderer.OpenGlHelper; |
8 | import net.minecraft.client.shader.Framebuffer; | 8 | import net.minecraft.client.shader.Framebuffer; |
9 | import net.minecraft.entity.player.EntityPlayerMP; | 9 | import net.minecraft.entity.player.EntityPlayerMP; |
10 | -import net.minecraft.network.INetHandler; | ||
11 | import net.minecraft.network.NetworkManager; | 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 | import net.minecraft.server.integrated.IntegratedServer; | 11 | import net.minecraft.server.integrated.IntegratedServer; |
22 | import net.minecraft.server.management.ServerConfigurationManager; | 12 | import net.minecraft.server.management.ServerConfigurationManager; |
23 | import net.minecraft.world.WorldSettings; | 13 | import net.minecraft.world.WorldSettings; |
24 | 14 | ||
25 | import com.mojang.authlib.GameProfile; | 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 | import com.mumfrey.liteloader.transformers.event.EventInfo; | 16 | import com.mumfrey.liteloader.transformers.event.EventInfo; |
30 | import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; | 17 | import com.mumfrey.liteloader.transformers.event.ReturnEventInfo; |
31 | 18 | ||
@@ -49,83 +36,6 @@ public class CallbackProxyClient | @@ -49,83 +36,6 @@ public class CallbackProxyClient | ||
49 | 36 | ||
50 | private static boolean renderingFBO; | 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 | public static void onStartupComplete(EventInfo<Minecraft> e) | 39 | public static void onStartupComplete(EventInfo<Minecraft> e) |
130 | { | 40 | { |
131 | CallbackProxyClient.events = ClientEvents.getInstance(); | 41 | CallbackProxyClient.events = ClientEvents.getInstance(); |
java/client/com/mumfrey/liteloader/client/ClientEvents.java
@@ -5,15 +5,9 @@ import net.minecraft.client.entity.EntityClientPlayerMP; | @@ -5,15 +5,9 @@ import net.minecraft.client.entity.EntityClientPlayerMP; | ||
5 | import net.minecraft.client.gui.GuiNewChat; | 5 | import net.minecraft.client.gui.GuiNewChat; |
6 | import net.minecraft.client.gui.ScaledResolution; | 6 | import net.minecraft.client.gui.ScaledResolution; |
7 | import net.minecraft.client.shader.Framebuffer; | 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 | import net.minecraft.network.play.client.C01PacketChatMessage; | 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 | import net.minecraft.profiler.Profiler; | 9 | import net.minecraft.profiler.Profiler; |
15 | import net.minecraft.server.integrated.IntegratedServer; | 10 | import net.minecraft.server.integrated.IntegratedServer; |
16 | -import net.minecraft.util.IChatComponent; | ||
17 | import net.minecraft.util.Timer; | 11 | import net.minecraft.util.Timer; |
18 | 12 | ||
19 | import org.lwjgl.input.Mouse; | 13 | import org.lwjgl.input.Mouse; |
@@ -23,7 +17,6 @@ import com.mumfrey.liteloader.client.gen.GenProfiler; | @@ -23,7 +17,6 @@ import com.mumfrey.liteloader.client.gen.GenProfiler; | ||
23 | import com.mumfrey.liteloader.client.overlays.IMinecraft; | 17 | import com.mumfrey.liteloader.client.overlays.IMinecraft; |
24 | import com.mumfrey.liteloader.client.util.PrivateFields; | 18 | import com.mumfrey.liteloader.client.util.PrivateFields; |
25 | import com.mumfrey.liteloader.common.LoadingProgress; | 19 | import com.mumfrey.liteloader.common.LoadingProgress; |
26 | -import com.mumfrey.liteloader.core.ClientPluginChannels; | ||
27 | import com.mumfrey.liteloader.core.Events; | 20 | import com.mumfrey.liteloader.core.Events; |
28 | import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | 21 | import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; |
29 | import com.mumfrey.liteloader.core.LiteLoader; | 22 | import com.mumfrey.liteloader.core.LiteLoader; |
@@ -90,15 +83,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -90,15 +83,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | ||
90 | private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class); | 83 | private FastIterableDeque<PostRenderListener> postRenderListeners = new HandlerList<PostRenderListener>(PostRenderListener.class); |
91 | private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class); | 84 | private FastIterableDeque<HUDRenderListener> hudRenderListeners = new HandlerList<HUDRenderListener>(HUDRenderListener.class); |
92 | private FastIterableDeque<ChatRenderListener> chatRenderListeners = new HandlerList<ChatRenderListener>(ChatRenderListener.class); | 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 | private FastIterableDeque<OutboundChatListener> outboundChatListeners = new HandlerList<OutboundChatListener>(OutboundChatListener.class); | 86 | private FastIterableDeque<OutboundChatListener> outboundChatListeners = new HandlerList<OutboundChatListener>(OutboundChatListener.class); |
97 | private FastIterableDeque<ViewportListener> viewportListeners = new HandlerList<ViewportListener>(ViewportListener.class); | 87 | private FastIterableDeque<ViewportListener> viewportListeners = new HandlerList<ViewportListener>(ViewportListener.class); |
98 | private FastIterableDeque<FrameBufferListener> frameBufferListeners = new HandlerList<FrameBufferListener>(FrameBufferListener.class); | 88 | private FastIterableDeque<FrameBufferListener> frameBufferListeners = new HandlerList<FrameBufferListener>(FrameBufferListener.class); |
99 | private FastIterableDeque<InitCompleteListener> initListeners = new HandlerList<InitCompleteListener>(InitCompleteListener.class); | 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 | private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND); | 90 | private FastIterableDeque<OutboundChatFilter> outboundChatFilters = new HandlerList<OutboundChatFilter>(OutboundChatFilter.class, ReturnLogicOp.AND); |
103 | 91 | ||
104 | @SuppressWarnings("cast") | 92 | @SuppressWarnings("cast") |
@@ -141,15 +129,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -141,15 +129,10 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | ||
141 | delegate.registerInterface(PostRenderListener.class); | 129 | delegate.registerInterface(PostRenderListener.class); |
142 | delegate.registerInterface(HUDRenderListener.class); | 130 | delegate.registerInterface(HUDRenderListener.class); |
143 | delegate.registerInterface(ChatRenderListener.class); | 131 | delegate.registerInterface(ChatRenderListener.class); |
144 | - delegate.registerInterface(ChatListener.class); | ||
145 | - delegate.registerInterface(PostLoginListener.class); | ||
146 | - delegate.registerInterface(JoinGameListener.class); | ||
147 | delegate.registerInterface(OutboundChatListener.class); | 132 | delegate.registerInterface(OutboundChatListener.class); |
148 | delegate.registerInterface(ViewportListener.class); | 133 | delegate.registerInterface(ViewportListener.class); |
149 | delegate.registerInterface(FrameBufferListener.class); | 134 | delegate.registerInterface(FrameBufferListener.class); |
150 | delegate.registerInterface(InitCompleteListener.class); | 135 | delegate.registerInterface(InitCompleteListener.class); |
151 | - delegate.registerInterface(ChatFilter.class); | ||
152 | - delegate.registerInterface(PreJoinGameListener.class); | ||
153 | delegate.registerInterface(OutboundChatFilter.class); | 136 | delegate.registerInterface(OutboundChatFilter.class); |
154 | } | 137 | } |
155 | 138 | ||
@@ -235,43 +218,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -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 | * @param chatRenderListener | 221 | * @param chatRenderListener |
276 | */ | 222 | */ |
277 | public void addChatRenderListener(ChatRenderListener chatRenderListener) | 223 | public void addChatRenderListener(ChatRenderListener chatRenderListener) |
@@ -286,30 +232,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -286,30 +232,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | ||
286 | { | 232 | { |
287 | this.hudRenderListeners.add(hudRenderListener); | 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 | * @param outboundChatListener | 237 | * @param outboundChatListener |
@@ -548,41 +470,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -548,41 +470,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | ||
548 | 470 | ||
549 | this.profiler.endSection(); | 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 | * @param packet | 475 | * @param packet |
@@ -605,53 +492,6 @@ public class ClientEvents extends Events<Minecraft, IntegratedServer> | @@ -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 | * @param framebuffer | 495 | * @param framebuffer |
656 | */ | 496 | */ |
657 | void preRenderFBO(Framebuffer framebuffer) | 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,18 +32,12 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI | ||
32 | }; | 32 | }; |
33 | 33 | ||
34 | private static final String[] requiredDownstreamTransformers = { | 34 | private static final String[] requiredDownstreamTransformers = { |
35 | + LiteLoaderCoreAPI.PKG_LITELOADER_COMMON + ".transformers.LiteLoaderPacketTransformer", | ||
35 | LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", | 36 | LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.LiteLoaderEventInjectionTransformer", |
36 | LiteLoaderCoreAPIClient.PKG_LITELOADER_CLIENT + ".transformers.MinecraftOverlayTransformer" | 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 | private ObjectFactory<Minecraft, IntegratedServer> objectFactory; | 42 | private ObjectFactory<Minecraft, IntegratedServer> objectFactory; |
49 | 43 | ||
@@ -112,6 +106,7 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI | @@ -112,6 +106,7 @@ public class LiteLoaderCoreAPIClient extends LiteLoaderCoreAPI | ||
112 | return ImmutableList.<InterfaceProvider>of | 106 | return ImmutableList.<InterfaceProvider>of |
113 | ( | 107 | ( |
114 | objectFactory.getEventBroker(), | 108 | objectFactory.getEventBroker(), |
109 | + objectFactory.getPacketEventBroker(), | ||
115 | objectFactory.getClientPluginChannels(), | 110 | objectFactory.getClientPluginChannels(), |
116 | objectFactory.getServerPluginChannels(), | 111 | objectFactory.getServerPluginChannels(), |
117 | MessageBus.getInstance() | 112 | MessageBus.getInstance() |
java/client/com/mumfrey/liteloader/client/api/ObjectFactoryClient.java
@@ -8,11 +8,13 @@ import com.mumfrey.liteloader.client.ClientEvents; | @@ -8,11 +8,13 @@ import com.mumfrey.liteloader.client.ClientEvents; | ||
8 | import com.mumfrey.liteloader.client.ClientPluginChannelsClient; | 8 | import com.mumfrey.liteloader.client.ClientPluginChannelsClient; |
9 | import com.mumfrey.liteloader.client.GameEngineClient; | 9 | import com.mumfrey.liteloader.client.GameEngineClient; |
10 | import com.mumfrey.liteloader.client.LiteLoaderPanelManager; | 10 | import com.mumfrey.liteloader.client.LiteLoaderPanelManager; |
11 | +import com.mumfrey.liteloader.client.PacketEventsClient; | ||
11 | import com.mumfrey.liteloader.client.gui.startup.LoadingBar; | 12 | import com.mumfrey.liteloader.client.gui.startup.LoadingBar; |
12 | import com.mumfrey.liteloader.common.GameEngine; | 13 | import com.mumfrey.liteloader.common.GameEngine; |
13 | import com.mumfrey.liteloader.core.ClientPluginChannels; | 14 | import com.mumfrey.liteloader.core.ClientPluginChannels; |
14 | import com.mumfrey.liteloader.core.Events; | 15 | import com.mumfrey.liteloader.core.Events; |
15 | import com.mumfrey.liteloader.core.LiteLoader; | 16 | import com.mumfrey.liteloader.core.LiteLoader; |
17 | +import com.mumfrey.liteloader.core.PacketEvents; | ||
16 | import com.mumfrey.liteloader.core.ServerPluginChannels; | 18 | import com.mumfrey.liteloader.core.ServerPluginChannels; |
17 | import com.mumfrey.liteloader.interfaces.PanelManager; | 19 | import com.mumfrey.liteloader.interfaces.PanelManager; |
18 | import com.mumfrey.liteloader.interfaces.ObjectFactory; | 20 | import com.mumfrey.liteloader.interfaces.ObjectFactory; |
@@ -33,6 +35,8 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> | @@ -33,6 +35,8 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> | ||
33 | private LoaderProperties properties; | 35 | private LoaderProperties properties; |
34 | 36 | ||
35 | private ClientEvents clientEvents; | 37 | private ClientEvents clientEvents; |
38 | + | ||
39 | + private PacketEventsClient clientPacketEvents; | ||
36 | 40 | ||
37 | private GameEngineClient engine; | 41 | private GameEngineClient engine; |
38 | 42 | ||
@@ -60,6 +64,17 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> | @@ -60,6 +64,17 @@ class ObjectFactoryClient implements ObjectFactory<Minecraft, IntegratedServer> | ||
60 | } | 64 | } |
61 | 65 | ||
62 | @Override | 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 | public GameEngine<Minecraft, IntegratedServer> getGameEngine() | 78 | public GameEngine<Minecraft, IntegratedServer> getGameEngine() |
64 | { | 79 | { |
65 | if (this.engine == null) | 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 | \ No newline at end of file | 0 | \ No newline at end of file |
java/client/com/mumfrey/liteloader/client/transformers/LiteLoaderEventInjectionTransformer.java
1 | package com.mumfrey.liteloader.client.transformers; | 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 | import com.mumfrey.liteloader.core.runtime.Obf; | 6 | import com.mumfrey.liteloader.core.runtime.Obf; |
4 | import com.mumfrey.liteloader.transformers.event.Event; | 7 | import com.mumfrey.liteloader.transformers.event.Event; |
5 | import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | 8 | import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; |
@@ -10,9 +13,6 @@ import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; | @@ -10,9 +13,6 @@ import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; | ||
10 | import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke; | 13 | import com.mumfrey.liteloader.transformers.event.inject.BeforeStringInvoke; |
11 | import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | 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 | public class LiteLoaderEventInjectionTransformer extends EventInjectionTransformer | 16 | public class LiteLoaderEventInjectionTransformer extends EventInjectionTransformer |
17 | { | 17 | { |
18 | @Override | 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 | \ No newline at end of file | 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,7 +59,10 @@ public interface LiteAPI | ||
59 | 59 | ||
60 | /** | 60 | /** |
61 | * Should return an array of required packet transformer names, these transformers will be injected UPSTREAM. Can return null. | 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 | public abstract String[] getPacketTransformers(); | 66 | public abstract String[] getPacketTransformers(); |
64 | 67 | ||
65 | /** | 68 | /** |
java/common/com/mumfrey/liteloader/api/manager/APIAdapter.java
@@ -27,6 +27,7 @@ public interface APIAdapter | @@ -27,6 +27,7 @@ public interface APIAdapter | ||
27 | /** | 27 | /** |
28 | * Aggregate and return required packet transformers from all registered APIs | 28 | * Aggregate and return required packet transformers from all registered APIs |
29 | */ | 29 | */ |
30 | + @Deprecated | ||
30 | public abstract List<String> getPacketTransformers(); | 31 | public abstract List<String> getPacketTransformers(); |
31 | 32 | ||
32 | /** | 33 | /** |
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,12 +5,7 @@ import net.minecraft.client.resources.IResourceManagerReloadListener; | ||
5 | import net.minecraft.command.ICommandManager; | 5 | import net.minecraft.command.ICommandManager; |
6 | import net.minecraft.command.ServerCommandManager; | 6 | import net.minecraft.command.ServerCommandManager; |
7 | import net.minecraft.entity.player.EntityPlayerMP; | 7 | import net.minecraft.entity.player.EntityPlayerMP; |
8 | -import net.minecraft.network.INetHandler; | ||
9 | -import net.minecraft.network.NetHandlerPlayServer; | ||
10 | import net.minecraft.network.NetworkManager; | 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 | import net.minecraft.profiler.Profiler; | 9 | import net.minecraft.profiler.Profiler; |
15 | import net.minecraft.server.MinecraftServer; | 10 | import net.minecraft.server.MinecraftServer; |
16 | import net.minecraft.server.management.ServerConfigurationManager; | 11 | import net.minecraft.server.management.ServerConfigurationManager; |
@@ -29,7 +24,6 @@ import com.mumfrey.liteloader.api.Listener; | @@ -29,7 +24,6 @@ import com.mumfrey.liteloader.api.Listener; | ||
29 | import com.mumfrey.liteloader.common.GameEngine; | 24 | import com.mumfrey.liteloader.common.GameEngine; |
30 | import com.mumfrey.liteloader.common.LoadingProgress; | 25 | import com.mumfrey.liteloader.common.LoadingProgress; |
31 | import com.mumfrey.liteloader.core.event.HandlerList; | 26 | import com.mumfrey.liteloader.core.event.HandlerList; |
32 | -import com.mumfrey.liteloader.core.event.HandlerList.ReturnLogicOp; | ||
33 | import com.mumfrey.liteloader.interfaces.FastIterable; | 27 | import com.mumfrey.liteloader.interfaces.FastIterable; |
34 | import com.mumfrey.liteloader.launch.LoaderProperties; | 28 | import com.mumfrey.liteloader.launch.LoaderProperties; |
35 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | 29 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
@@ -60,11 +54,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | @@ -60,11 +54,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | ||
60 | protected LiteLoaderMods mods; | 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 | * List of mods which provide server commands | 57 | * List of mods which provide server commands |
69 | */ | 58 | */ |
70 | private FastIterable<ServerCommandProvider> serverCommandProviders = new HandlerList<ServerCommandProvider>(ServerCommandProvider.class); | 59 | private FastIterable<ServerCommandProvider> serverCommandProviders = new HandlerList<ServerCommandProvider>(ServerCommandProvider.class); |
@@ -134,10 +123,8 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | @@ -134,10 +123,8 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | ||
134 | @Override | 123 | @Override |
135 | public void registerInterfaces(InterfaceRegistrationDelegate delegate) | 124 | public void registerInterfaces(InterfaceRegistrationDelegate delegate) |
136 | { | 125 | { |
137 | - delegate.registerInterface(ServerChatFilter.class); | ||
138 | delegate.registerInterface(ServerCommandProvider.class); | 126 | delegate.registerInterface(ServerCommandProvider.class); |
139 | delegate.registerInterface(ServerPlayerListener.class); | 127 | delegate.registerInterface(ServerPlayerListener.class); |
140 | - | ||
141 | delegate.registerInterface(CommonPluginChannelListener.class); | 128 | delegate.registerInterface(CommonPluginChannelListener.class); |
142 | } | 129 | } |
143 | 130 | ||
@@ -155,14 +142,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | @@ -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 | * @param serverCommandProvider | 145 | * @param serverCommandProvider |
167 | */ | 146 | */ |
168 | public void addServerCommandProvider(ServerCommandProvider serverCommandProvider) | 147 | public void addServerCommandProvider(ServerCommandProvider serverCommandProvider) |
@@ -183,20 +162,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | @@ -183,20 +162,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | ||
183 | { | 162 | { |
184 | LoadingProgress.setMessage("Reloading Resources..."); | 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 | * @param instance | 167 | * @param instance |
@@ -292,11 +257,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | @@ -292,11 +257,6 @@ public abstract class Events<TClient, TServer extends MinecraftServer> implement | ||
292 | this.loader.onWorldChanged(world); | 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 | * @deprecated use LiteLoader.getInterfaceManager().registerListener(listener); instead | 261 | * @deprecated use LiteLoader.getInterfaceManager().registerListener(listener); instead |
302 | * @param chatFilter | 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 | package com.mumfrey.liteloader.core; | 1 | package com.mumfrey.liteloader.core; |
2 | 2 | ||
3 | import net.minecraft.entity.player.EntityPlayerMP; | 3 | import net.minecraft.entity.player.EntityPlayerMP; |
4 | +import net.minecraft.network.INetHandler; | ||
4 | import net.minecraft.network.NetHandlerPlayServer; | 5 | import net.minecraft.network.NetHandlerPlayServer; |
5 | import net.minecraft.network.play.INetHandlerPlayServer; | 6 | import net.minecraft.network.play.INetHandlerPlayServer; |
6 | import net.minecraft.network.play.client.C17PacketCustomPayload; | 7 | import net.minecraft.network.play.client.C17PacketCustomPayload; |
@@ -97,11 +98,11 @@ public class ServerPluginChannels extends PluginChannels<ServerPluginChannelList | @@ -97,11 +98,11 @@ public class ServerPluginChannels extends PluginChannels<ServerPluginChannelList | ||
97 | 98 | ||
98 | /** | 99 | /** |
99 | * Callback for the plugin channel hook | 100 | * Callback for the plugin channel hook |
100 | - * @param netHandler | ||
101 | * | 101 | * |
102 | + * @param netHandler | ||
102 | * @param customPayload | 103 | * @param customPayload |
103 | */ | 104 | */ |
104 | - public void onPluginChannelMessage(INetHandlerPlayServer netHandler, C17PacketCustomPayload customPayload) | 105 | + public void onPluginChannelMessage(INetHandler netHandler, C17PacketCustomPayload customPayload) |
105 | { | 106 | { |
106 | if (customPayload != null && customPayload.func_149559_c() != null) | 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,6 +21,7 @@ import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | ||
21 | public abstract class LiteLoaderCoreAPI implements LiteAPI | 21 | public abstract class LiteLoaderCoreAPI implements LiteAPI |
22 | { | 22 | { |
23 | protected static final String PKG_LITELOADER = "com.mumfrey.liteloader"; | 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 | protected LoaderEnvironment environment; | 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,7 +733,7 @@ public class HandlerList<T> extends LinkedList<T> implements FastIterableDeque<T | ||
733 | { | 733 | { |
734 | method.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); | 734 | method.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0)); |
735 | method.instructions.add(new VarInsnNode(Opcodes.ALOAD, 1)); | 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 | method.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", true)); | 737 | method.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", true)); |
738 | method.instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, this.typeRef)); | 738 | method.instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, this.typeRef)); |
739 | method.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, classNode.name, HandlerListClassLoader.HANDLER_VAR_PREFIX + handlerIndex, "L" + this.typeRef + ";")); | 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,6 +19,7 @@ public class Obf | ||
19 | public static final Obf EventProxy = new Obf("com.mumfrey.liteloader.core.event.EventProxy" ); | 19 | public static final Obf EventProxy = new Obf("com.mumfrey.liteloader.core.event.EventProxy" ); |
20 | public static final Obf HandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList" ); | 20 | public static final Obf HandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList" ); |
21 | public static final Obf BakedHandlerList = new Obf("com.mumfrey.liteloader.core.event.HandlerList$BakedHandlerList" ); | 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 | public static final Obf LoadingBar = new Obf("com.mumfrey.liteloader.client.gui.startup.LoadingBar" ); | 23 | public static final Obf LoadingBar = new Obf("com.mumfrey.liteloader.client.gui.startup.LoadingBar" ); |
23 | public static final Obf GameProfile = new Obf("com.mojang.authlib.GameProfile" ); | 24 | public static final Obf GameProfile = new Obf("com.mojang.authlib.GameProfile" ); |
24 | public static final Obf MinecraftMain = new Obf("net.minecraft.client.main.Main" ); | 25 | public static final Obf MinecraftMain = new Obf("net.minecraft.client.main.Main" ); |
@@ -33,13 +34,7 @@ public class Obf | @@ -33,13 +34,7 @@ public class Obf | ||
33 | public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "bbv" ); | 34 | public static final Obf GuiIngame = new Obf("net.minecraft.client.gui.GuiIngame", "bbv" ); |
34 | public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "qi" ); | 35 | public static final Obf Profiler = new Obf("net.minecraft.profiler.Profiler", "qi" ); |
35 | public static final Obf CrashReport$6 = new Obf("net.minecraft.crash.CrashReport$6", "h" ); | 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 | public static final Obf INetHandler = new Obf("net.minecraft.network.INetHandler", "fb" ); | 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 | public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "bsx" ); | 38 | public static final Obf IntegratedServer = new Obf("net.minecraft.server.integrated.IntegratedServer", "bsx" ); |
44 | public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "ahj" ); | 39 | public static final Obf WorldSettings = new Obf("net.minecraft.world.WorldSettings", "ahj" ); |
45 | public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "oi" ); | 40 | public static final Obf ServerConfigurationManager = new Obf("net.minecraft.server.management.ServerConfigurationManager", "oi" ); |
@@ -52,6 +47,15 @@ public class Obf | @@ -52,6 +47,15 @@ public class Obf | ||
52 | public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "bmg" ); | 47 | public static final Obf FrameBuffer = new Obf("net.minecraft.client.shader.Framebuffer", "bmg" ); |
53 | public static final Obf GuiNewChat = new Obf("net.minecraft.client.gui.GuiNewChat", "bcc" ); | 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 | // Fields | 59 | // Fields |
56 | // ----------------------------------------------------------------------------------------- | 60 | // ----------------------------------------------------------------------------------------- |
57 | public static final Obf minecraftProfiler = new Obf("field_71424_I", "z" ); // Minecraft/mcProfiler | 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,6 +5,7 @@ import net.minecraft.server.MinecraftServer; | ||
5 | import com.mumfrey.liteloader.common.GameEngine; | 5 | import com.mumfrey.liteloader.common.GameEngine; |
6 | import com.mumfrey.liteloader.core.ClientPluginChannels; | 6 | import com.mumfrey.liteloader.core.ClientPluginChannels; |
7 | import com.mumfrey.liteloader.core.Events; | 7 | import com.mumfrey.liteloader.core.Events; |
8 | +import com.mumfrey.liteloader.core.PacketEvents; | ||
8 | import com.mumfrey.liteloader.core.ServerPluginChannels; | 9 | import com.mumfrey.liteloader.core.ServerPluginChannels; |
9 | import com.mumfrey.liteloader.permissions.PermissionsManagerClient; | 10 | import com.mumfrey.liteloader.permissions.PermissionsManagerClient; |
10 | import com.mumfrey.liteloader.permissions.PermissionsManagerServer; | 11 | import com.mumfrey.liteloader.permissions.PermissionsManagerServer; |
@@ -21,6 +22,8 @@ public interface ObjectFactory<TClient, TServer extends MinecraftServer> | @@ -21,6 +22,8 @@ public interface ObjectFactory<TClient, TServer extends MinecraftServer> | ||
21 | { | 22 | { |
22 | public abstract Events<TClient, TServer> getEventBroker(); | 23 | public abstract Events<TClient, TServer> getEventBroker(); |
23 | 24 | ||
25 | + public abstract PacketEvents getPacketEventBroker(); | ||
26 | + | ||
24 | public abstract GameEngine<TClient, TServer> getGameEngine(); | 27 | public abstract GameEngine<TClient, TServer> getGameEngine(); |
25 | 28 | ||
26 | public abstract PanelManager<?> getPanelManager(); | 29 | public abstract PanelManager<?> getPanelManager(); |
java/common/com/mumfrey/liteloader/launch/ClassTransformerManager.java
@@ -203,7 +203,7 @@ public class ClassTransformerManager | @@ -203,7 +203,7 @@ public class ClassTransformerManager | ||
203 | * @param classLoader | 203 | * @param classLoader |
204 | * @param transformers | 204 | * @param transformers |
205 | */ | 205 | */ |
206 | - @SuppressWarnings("unchecked") | 206 | + @SuppressWarnings({ "unchecked", "deprecation" }) |
207 | private void sieveAndSortPacketTransformers(LaunchClassLoader classLoader, Set<String> transformers) | 207 | private void sieveAndSortPacketTransformers(LaunchClassLoader classLoader, Set<String> transformers) |
208 | { | 208 | { |
209 | LiteLoaderLogger.info("Sorting registered packet transformers by priority"); | 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,6 +323,7 @@ public class LiteLoaderTweaker implements ITweaker | ||
323 | public void injectIntoClassLoader(LaunchClassLoader classLoader) | 323 | public void injectIntoClassLoader(LaunchClassLoader classLoader) |
324 | { | 324 | { |
325 | classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Obf"); | 325 | classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Obf"); |
326 | + classLoader.addClassLoaderExclusion("com.mumfrey.liteloader.core.runtime.Packets"); | ||
326 | 327 | ||
327 | LiteLoaderTweaker.instance.transformerManager.injectUpstreamTransformers(classLoader); | 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,7 +95,7 @@ public class Event implements Comparable<Event> | ||
95 | 95 | ||
96 | protected Set<MethodInfo> pendingInjections; | 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 | this.name = name.toLowerCase(); | 100 | this.name = name.toLowerCase(); |
101 | this.priority = priority; | 101 | this.priority = priority; |
@@ -216,7 +216,7 @@ public class Event implements Comparable<Event> | @@ -216,7 +216,7 @@ public class Event implements Comparable<Event> | ||
216 | this.methodReturnType = Type.getReturnType(method.desc); | 216 | this.methodReturnType = Type.getReturnType(method.desc); |
217 | this.methodMAXS = method.maxStack; | 217 | this.methodMAXS = method.maxStack; |
218 | this.methodIsStatic = (method.access & Opcodes.ACC_STATIC) == Opcodes.ACC_STATIC; | 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 | this.eventDescriptor = String.format("(L%s;%s)V", this.eventInfoClass, method.desc.substring(1, method.desc.indexOf(')'))); | 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,10 +306,7 @@ public class Event implements Comparable<Event> | ||
306 | // Instance the EventInfo for this event | 306 | // Instance the EventInfo for this event |
307 | insns.add(new TypeInsnNode(Opcodes.NEW, this.eventInfoClass)); ctorMAXS++; | 307 | insns.add(new TypeInsnNode(Opcodes.NEW, this.eventInfoClass)); ctorMAXS++; |
308 | insns.add(new InsnNode(Opcodes.DUP)); ctorMAXS++; invokeMAXS++; | 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 | insns.add(new VarInsnNode(Opcodes.ASTORE, eventInfoVar)); | 310 | insns.add(new VarInsnNode(Opcodes.ASTORE, eventInfoVar)); |
314 | 311 | ||
315 | // Call the event handler method in the proxy | 312 | // Call the event handler method in the proxy |
@@ -330,6 +327,23 @@ public class Event implements Comparable<Event> | @@ -330,6 +327,23 @@ public class Event implements Comparable<Event> | ||
330 | return handler; | 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 | * if (e.isCancelled()) return e.getReturnValue(); | 348 | * if (e.isCancelled()) return e.getReturnValue(); |
335 | * | 349 | * |