Commit 3810e8964c0494422aff7310a8c8ba558ee0c196
1 parent
2a83f2dc
handle login success packet asynchronously, closes #72
Showing
3 changed files
with
32 additions
and
6 deletions
java/client/com/mumfrey/liteloader/PostLoginListener.java
... | ... | @@ -9,5 +9,12 @@ import net.minecraft.network.login.server.S02PacketLoginSuccess; |
9 | 9 | */ |
10 | 10 | public interface PostLoginListener extends LiteMod |
11 | 11 | { |
12 | + /** | |
13 | + * Called immediately after login, before the player has properly joined the game. Note that this event is raised | |
14 | + * <b>in the network thread</b> and is not marshalled to the main thread as other packet-generated events are. | |
15 | + * | |
16 | + * @param netHandler | |
17 | + * @param packet | |
18 | + */ | |
12 | 19 | public abstract void onPostLogin(INetHandlerLoginClient netHandler, S02PacketLoginSuccess packet); |
13 | 20 | } | ... | ... |
java/common/com/mumfrey/liteloader/core/LiteLoader.java
... | ... | @@ -44,6 +44,7 @@ import com.mumfrey.liteloader.interfaces.LoaderEnumerator; |
44 | 44 | import com.mumfrey.liteloader.interfaces.ObjectFactory; |
45 | 45 | import com.mumfrey.liteloader.interfaces.PanelManager; |
46 | 46 | import com.mumfrey.liteloader.launch.LoaderEnvironment; |
47 | +import com.mumfrey.liteloader.launch.LoaderEnvironment.EnvironmentType; | |
47 | 48 | import com.mumfrey.liteloader.launch.LoaderProperties; |
48 | 49 | import com.mumfrey.liteloader.messaging.MessageBus; |
49 | 50 | import com.mumfrey.liteloader.modconfig.ConfigManager; |
... | ... | @@ -486,6 +487,14 @@ public final class LiteLoader |
486 | 487 | } |
487 | 488 | |
488 | 489 | /** |
490 | + * Get the type of environment (client or dedicated server) | |
491 | + */ | |
492 | + public static EnvironmentType getEnvironmentType() | |
493 | + { | |
494 | + return LiteLoader.instance.environment.getType(); | |
495 | + } | |
496 | + | |
497 | + /** | |
489 | 498 | * Used to get the name of the modpack being used |
490 | 499 | * |
491 | 500 | * @return name of the modpack in use or null if no pack | ... | ... |
java/common/com/mumfrey/liteloader/core/PacketEvents.java
... | ... | @@ -126,6 +126,7 @@ public abstract class PacketEvents implements InterfaceProvider |
126 | 126 | IThreadListener threadListener = this.getPacketContextListener(packetInfo.getContext()); |
127 | 127 | if (threadListener != null && !threadListener.isCallingFromMinecraftThread()) |
128 | 128 | { |
129 | + this.handleAsyncPacketEvent(e, netHandler, packetId); | |
129 | 130 | return; |
130 | 131 | } |
131 | 132 | |
... | ... | @@ -146,24 +147,33 @@ public abstract class PacketEvents implements InterfaceProvider |
146 | 147 | * @param context |
147 | 148 | */ |
148 | 149 | protected abstract IThreadListener getPacketContextListener(Packets.Context context); |
149 | - | |
150 | + | |
150 | 151 | /** |
151 | 152 | * @param e |
152 | 153 | * @param netHandler |
153 | 154 | * @param packetId |
154 | - * | |
155 | - * @return true if the packet was handled by a local handler and shouldn't be forwarded to later handlers | |
156 | 155 | */ |
157 | - protected boolean handlePacketEvent(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) | |
156 | + protected void handleAsyncPacketEvent(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) | |
158 | 157 | { |
159 | 158 | Packet packet = e.getSource(); |
160 | 159 | |
161 | 160 | if (packetId == this.loginSuccessPacketId) |
162 | 161 | { |
163 | 162 | this.handlePacket(e, netHandler, (S02PacketLoginSuccess)packet); |
164 | - return true; | |
165 | 163 | } |
166 | - | |
164 | + } | |
165 | + | |
166 | + /** | |
167 | + * @param e | |
168 | + * @param netHandler | |
169 | + * @param packetId | |
170 | + * | |
171 | + * @return true if the packet was handled by a local handler and shouldn't be forwarded to later handlers | |
172 | + */ | |
173 | + protected boolean handlePacketEvent(PacketEventInfo<Packet> e, INetHandler netHandler, int packetId) | |
174 | + { | |
175 | + Packet packet = e.getSource(); | |
176 | + | |
167 | 177 | if (packetId == this.serverChatPacketId) |
168 | 178 | { |
169 | 179 | this.handlePacket(e, netHandler, (S02PacketChat)packet); | ... | ... |