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 | * |