Commit 3810e8964c0494422aff7310a8c8ba558ee0c196

Authored by Mumfrey
1 parent 2a83f2dc

handle login success packet asynchronously, closes #72

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);
... ...