Skip to content

Commit 2440803

Browse files
committedMay 23, 2024··
Update 1.2.45
1 parent 06b2d65 commit 2440803

File tree

15 files changed

+169
-53
lines changed

15 files changed

+169
-53
lines changed
 

‎client/src/main/java/com/fox2code/foxloader/client/mixins/MixinEntityClientPlayerMP.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.fox2code.foxloader.client.mixins;
22

3-
import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
43
import com.fox2code.foxloader.loader.ModContainer;
4+
import com.fox2code.foxloader.network.NetworkConnection;
55
import com.fox2code.foxloader.network.NetworkPlayer;
66
import net.minecraft.client.Minecraft;
77
import net.minecraft.src.client.Session;
@@ -31,6 +31,11 @@ public void onNewMixinEntityClientPlayerMP(
3131

3232
}
3333

34+
@Override
35+
public NetworkConnection getNetworkConnection() {
36+
return (NetworkConnection) this.sendQueue;
37+
}
38+
3439
@Override
3540
public ConnectionType getConnectionType() {
3641
return ConnectionType.CLIENT_ONLY;
@@ -56,7 +61,7 @@ public void displayChatMessage(String chatMessage) {
5661

5762
@Override
5863
public boolean hasFoxLoader() {
59-
return sendQueue != null && ((NetClientHandlerExtensions) sendQueue).isFoxLoader();
64+
return sendQueue != null && ((NetworkConnection) sendQueue).hasFoxLoader();
6065
}
6166

6267
@Override
@@ -72,7 +77,7 @@ public boolean isOperator() {
7277
@Override
7378
public boolean isConnected() {
7479
return sendQueue != null && Minecraft.getInstance().isMultiplayerWorld() &&
75-
!((NetClientHandlerExtensions) sendQueue).isDisconnected();
80+
((NetworkConnection) sendQueue).isConnected();
7681
}
7782

7883
@Override

‎client/src/main/java/com/fox2code/foxloader/client/mixins/MixinEntityPlayerSP.java

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fox2code.foxloader.loader.ClientMod;
44
import com.fox2code.foxloader.loader.ModContainer;
5+
import com.fox2code.foxloader.network.NetworkConnection;
56
import com.fox2code.foxloader.network.NetworkPlayer;
67
import com.fox2code.foxloader.registry.RegisteredItemStack;
78
import net.minecraft.client.Minecraft;
@@ -22,6 +23,11 @@ public MixinEntityPlayerSP(World var1) {
2223
super(var1);
2324
}
2425

26+
@Override
27+
public NetworkConnection getNetworkConnection() {
28+
return null;
29+
}
30+
2531
@Override
2632
public ConnectionType getConnectionType() {
2733
return ConnectionType.SINGLE_PLAYER;

‎client/src/main/java/com/fox2code/foxloader/client/mixins/MixinGuiDebug.java

-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package com.fox2code.foxloader.client.mixins;
22

3-
import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
43
import com.fox2code.foxloader.launcher.BuildConfig;
54
import com.fox2code.foxloader.loader.ClientModLoader;
6-
import com.fox2code.foxloader.network.SidedMetadataAPI;
75
import net.minecraft.client.Minecraft;
8-
import net.minecraft.fox2code.ChatColors;
96
import net.minecraft.src.client.gui.FontRenderer;
107
import net.minecraft.src.client.gui.GuiDebug;
118
import org.lwjgl.input.Keyboard;
@@ -14,8 +11,6 @@
1411
import org.spongepowered.asm.mixin.injection.At;
1512
import org.spongepowered.asm.mixin.injection.Redirect;
1613

17-
import java.util.Map;
18-
1914
@Mixin(GuiDebug.class)
2015
public class MixinGuiDebug {
2116
@Shadow private Minecraft mc;

‎client/src/main/java/com/fox2code/foxloader/client/mixins/MixinNetClientHandler.java

+24-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.fox2code.foxloader.client.mixins;
22

3-
import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
43
import com.fox2code.foxloader.loader.ClientModLoader;
54
import com.fox2code.foxloader.loader.ModContainer;
65
import com.fox2code.foxloader.loader.ModLoader;
6+
import com.fox2code.foxloader.network.NetworkConnection;
77
import com.fox2code.foxloader.network.NetworkPlayer;
88
import com.fox2code.foxloader.registry.GameRegistryClient;
99
import net.minecraft.client.Minecraft;
@@ -18,12 +18,14 @@
1818
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1919

2020
@Mixin(NetClientHandler.class)
21-
public class MixinNetClientHandler implements NetClientHandlerExtensions {
21+
public abstract class MixinNetClientHandler implements NetworkConnection {
2222
@Shadow private boolean disconnected;
2323
@Shadow private NetworkManager netManager;
2424
@Unique boolean isFoxLoader = false;
2525
@Unique boolean preemptive = true;
2626

27+
@Shadow public abstract void addToSendQueue(Packet packet);
28+
2729
@Unique
2830
private void preemptivelySendClientHello() {
2931
if (this.preemptive) {
@@ -85,27 +87,40 @@ public void onHandlePickupSpawn(Packet5PlayerInventory var1, CallbackInfo ci) {
8587

8688
@Inject(method = "handlePluginMessage", at = @At("HEAD"))
8789
public void onHandlePluginMessage(Packet250PluginMessage packet250, CallbackInfo ci) {
88-
NetworkPlayer networkPlayer = (NetworkPlayer)
89-
Minecraft.getInstance().thePlayer;
9090
if (ModLoader.FOX_LOADER_MOD_ID.equals(packet250.channel) && !this.isFoxLoader) {
9191
ModLoader.getModLoaderLogger().info("Got FoxLoader packet");
9292
this.isFoxLoader = true;
9393
this.preemptivelySendClientHello();
9494
}
9595
ModContainer modContainer = ModLoader.getModContainer(packet250.channel);
96-
if (networkPlayer != null && modContainer != null && packet250.data != null) {
96+
if (modContainer != null && packet250.data != null) {
9797
ModLoader.getModLoaderLogger().info("Processing FoxLoader packet");
98-
modContainer.notifyReceiveServerPacket(networkPlayer, packet250.data);
98+
modContainer.notifyReceiveServerPacket(this, packet250.data);
9999
}
100100
}
101101

102102
@Override
103-
public boolean isFoxLoader() {
103+
public boolean hasFoxLoader() {
104104
return this.isFoxLoader;
105105
}
106106

107107
@Override
108-
public boolean isDisconnected() {
109-
return this.disconnected;
108+
public boolean isConnected() {
109+
return !this.disconnected;
110+
}
111+
112+
@Override
113+
public void sendNetworkData(ModContainer modContainer, byte[] data) {
114+
this.addToSendQueue(new Packet250PluginMessage(modContainer.id, data));
115+
}
116+
117+
@Override
118+
public NetworkPlayer getNetworkPlayer() {
119+
return (NetworkPlayer) Minecraft.getInstance().thePlayer;
120+
}
121+
122+
@Override
123+
public void kick(String message) {
124+
throw new IllegalStateException("kick cannot be used client-side");
110125
}
111126
}

‎client/src/main/java/com/fox2code/foxloader/client/network/NetClientHandlerExtensions.java

-7
This file was deleted.

‎client/src/main/java/com/fox2code/foxloader/loader/ClientModLoader.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.fox2code.foxloader.loader;
22

3-
import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
43
import com.fox2code.foxloader.launcher.BuildConfig;
54
import com.fox2code.foxloader.launcher.FoxLauncher;
65
import com.fox2code.foxloader.launcher.LauncherType;
@@ -10,18 +9,17 @@
109
import com.fox2code.foxloader.launcher.utils.SourceUtil;
1110
import com.fox2code.foxloader.loader.packet.ClientHello;
1211
import com.fox2code.foxloader.loader.packet.ServerHello;
12+
import com.fox2code.foxloader.network.NetworkConnection;
1313
import com.fox2code.foxloader.network.NetworkPlayer;
1414
import com.fox2code.foxloader.network.SidedMetadataAPI;
1515
import com.fox2code.foxloader.registry.GameRegistryClient;
16-
import com.fox2code.foxloader.registry.RegisteredItem;
1716
import com.fox2code.foxloader.updater.UpdateManager;
1817
import net.minecraft.client.Minecraft;
1918
import net.minecraft.fox2code.ChatColors;
2019
import net.minecraft.mitask.PlayerCommandHandler;
2120
import net.minecraft.src.client.gui.StringTranslate;
2221
import net.minecraft.src.client.packets.NetworkManager;
2322
import net.minecraft.src.client.packets.Packet250PluginMessage;
24-
import net.minecraft.src.game.item.Item;
2523
import net.minecraft.src.game.item.ItemStack;
2624
import org.lwjgl.opengl.GL11;
2725

@@ -87,18 +85,18 @@ public void onServerStart(NetworkPlayer.ConnectionType connectionType) {
8785
}
8886

8987
@Override
90-
public void onReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {
88+
public void onReceiveServerPacket(NetworkConnection networkPlayer, byte[] data) {
9189
ModLoader.foxLoader.logger.info("Received server packet");
9290
LoaderNetworkManager.executeServerPacketData(networkPlayer, data);
9391
}
9492

9593
@Override
96-
void loaderHandleServerHello(NetworkPlayer networkPlayer, ServerHello serverHello) {
94+
void loaderHandleServerHello(NetworkConnection networkConnection, ServerHello serverHello) {
9795
ModLoader.foxLoader.logger.info("Initializing id translator");
9896
GameRegistryClient.initializeMappings(serverHello);
9997
ModLoader.foxLoader.logger.info("Ids translated!");
10098
if (!didPreemptiveNetworking) {
101-
networkPlayer.sendNetworkData(ModLoader.foxLoader, clientHello);
99+
networkConnection.sendNetworkData(ModLoader.foxLoader, clientHello);
102100
} else {
103101
didPreemptiveNetworking = false;
104102
}
@@ -280,7 +278,7 @@ public static String getColoredServerNameDebugExt() {
280278
if (serverName == null) {
281279
if (metadata.containsKey(SidedMetadataAPI.KEY_FOXLOADER_VERSION)) {
282280
serverName = "FoxLoader " + metadata.get(SidedMetadataAPI.KEY_FOXLOADER_VERSION);
283-
} else if (((NetClientHandlerExtensions) Minecraft.getInstance().getSendQueue()).isFoxLoader()) {
281+
} else if (((NetworkConnection) Minecraft.getInstance().getSendQueue()).hasFoxLoader()) {
284282
serverName = ChatColors.DARK_RED + "Obsolete FoxLoader" + ChatColors.GRAY;
285283
} else {
286284
serverName = "ReIndev " + BuildConfig.REINDEV_VERSION;

‎common/src/main/java/com/fox2code/foxloader/loader/LoaderNetworkManager.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fox2code.foxloader.loader.packet.ClientHello;
44
import com.fox2code.foxloader.loader.packet.FoxPacket;
55
import com.fox2code.foxloader.loader.packet.ServerHello;
6+
import com.fox2code.foxloader.network.NetworkConnection;
67
import com.fox2code.foxloader.network.NetworkPlayer;
78
import com.fox2code.foxloader.network.io.NetworkDataInputStream;
89
import com.fox2code.foxloader.network.io.NetworkDataOutputStream;
@@ -12,7 +13,7 @@
1213
import java.util.zip.*;
1314

1415
final class LoaderNetworkManager {
15-
static void executeClientPacketData(NetworkPlayer networkPlayer, byte[] data) {
16+
static void executeClientPacketData(NetworkConnection networkConnection, byte[] data) {
1617
try (DataInputStream dataInputStream =
1718
new NetworkDataInputStream(new ByteArrayInputStream(data))) {
1819
int packetId = dataInputStream.readUnsignedByte();
@@ -25,7 +26,7 @@ static void executeClientPacketData(NetworkPlayer networkPlayer, byte[] data) {
2526
clientHello.readData(dataInputStream);
2627
ModLoader.foxLoader.getMod()
2728
.loaderHandleClientHello(
28-
networkPlayer, clientHello);
29+
networkConnection, clientHello);
2930
break;
3031
}
3132
} catch (IOException ignored) {}
@@ -45,7 +46,7 @@ static void sendClientPacketData(NetworkPlayer networkPlayer, FoxPacket foxPacke
4546
networkPlayer.sendNetworkData(ModLoader.foxLoader, byteArrayOutputStream.toByteArray());
4647
}
4748

48-
static void executeServerPacketData(NetworkPlayer networkPlayer, byte[] data) {
49+
static void executeServerPacketData(NetworkConnection networkConnection, byte[] data) {
4950
InputStream inputStream = new ByteArrayInputStream(data);
5051
try {
5152
int compressed = inputStream.read();
@@ -76,7 +77,7 @@ static void executeServerPacketData(NetworkPlayer networkPlayer, byte[] data) {
7677
serverHello.readData(dataInputStream);
7778
ModLoader.foxLoader.getMod()
7879
.loaderHandleServerHello(
79-
networkPlayer, serverHello);
80+
networkConnection, serverHello);
8081
break;
8182
}
8283
} catch (IOException e) {

‎common/src/main/java/com/fox2code/foxloader/loader/Mod.java

+29-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fox2code.foxloader.loader.packet.ClientHello;
44
import com.fox2code.foxloader.loader.packet.ServerHello;
5+
import com.fox2code.foxloader.network.NetworkConnection;
56
import com.fox2code.foxloader.network.NetworkPlayer;
67
import com.fox2code.foxloader.registry.*;
78

@@ -78,11 +79,37 @@ public void onCameraAndRenderUpdated(float partialTick) {}
7879
/**
7980
* When server receive client packet.
8081
*/
82+
public void onReceiveClientPacket(NetworkConnection networkConnection, byte[] data) {
83+
NetworkPlayer networkPlayer = networkConnection.getNetworkPlayer();
84+
if (networkPlayer != null) {
85+
this.onReceiveClientPacket(networkPlayer, data);
86+
} else {
87+
this.getLogger().warning("Received preemptive client packet, but failed to translate to non preemptive");
88+
}
89+
}
90+
91+
/**
92+
* When server receive client packet.
93+
*/
94+
@Deprecated
8195
public void onReceiveClientPacket(NetworkPlayer networkPlayer, byte[] data) {}
8296

8397
/**
8498
* When client receive server packet.
8599
*/
100+
public void onReceiveServerPacket(NetworkConnection networkConnection, byte[] data) {
101+
NetworkPlayer networkPlayer = networkConnection.getNetworkPlayer();
102+
if (networkPlayer != null) {
103+
this.onReceiveServerPacket(networkPlayer, data);
104+
} else {
105+
this.getLogger().warning("Received preemptive server packet, but failed to translate to non preemptive");
106+
}
107+
}
108+
109+
/**
110+
* When client receive server packet.
111+
*/
112+
@Deprecated
86113
public void onReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {}
87114

88115
/**
@@ -243,8 +270,8 @@ public void registerShapelessRecipe(RegisteredItemStack result, GameRegistry.Ing
243270
}
244271

245272
// For internal use only
246-
void loaderHandleServerHello(NetworkPlayer networkPlayer, ServerHello serverHello) {}
247-
void loaderHandleClientHello(NetworkPlayer networkPlayer, ClientHello clientHello) {}
273+
void loaderHandleServerHello(NetworkConnection networkConnection, ServerHello serverHello) {}
274+
void loaderHandleClientHello(NetworkConnection networkPlayer, ClientHello clientHello) {}
248275
void loaderHandleDoFoxLoaderUpdate(String version, String url) throws IOException {
249276
System.err.println("Unhandled loaderHandleDoFoxLoaderUpdate()");
250277
}

‎common/src/main/java/com/fox2code/foxloader/loader/ModContainer.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.fox2code.foxloader.loader.lua.LuaVMHelper;
88
import com.fox2code.foxloader.loader.packet.ClientHello;
99
import com.fox2code.foxloader.loader.transformer.PreClassTransformer;
10+
import com.fox2code.foxloader.network.NetworkConnection;
1011
import com.fox2code.foxloader.network.NetworkPlayer;
1112
import com.fox2code.foxloader.registry.RegisteredEntity;
1213
import com.fox2code.foxloader.registry.RegisteredItemStack;
@@ -274,22 +275,22 @@ private Mod initializeMod(String clsName) throws ReflectiveOperationException {
274275
return mod;
275276
}
276277

277-
public void notifyReceiveClientPacket(NetworkPlayer networkPlayer, byte[] data) {
278+
public void notifyReceiveClientPacket(NetworkConnection networkConnection, byte[] data) {
278279
if (commonMod != null)
279-
commonMod.onReceiveClientPacket(networkPlayer, data);
280+
commonMod.onReceiveClientPacket(networkConnection, data);
280281
if (clientMod != null)
281-
clientMod.onReceiveClientPacket(networkPlayer, data);
282+
clientMod.onReceiveClientPacket(networkConnection, data);
282283
if (serverMod != null)
283-
serverMod.onReceiveClientPacket(networkPlayer, data);
284+
serverMod.onReceiveClientPacket(networkConnection, data);
284285
}
285286

286-
public void notifyReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {
287+
public void notifyReceiveServerPacket(NetworkConnection networkConnection, byte[] data) {
287288
if (commonMod != null)
288-
commonMod.onReceiveServerPacket(networkPlayer, data);
289+
commonMod.onReceiveServerPacket(networkConnection, data);
289290
if (clientMod != null)
290-
clientMod.onReceiveServerPacket(networkPlayer, data);
291+
clientMod.onReceiveServerPacket(networkConnection, data);
291292
if (serverMod != null)
292-
serverMod.onReceiveServerPacket(networkPlayer, data);
293+
serverMod.onReceiveServerPacket(networkConnection, data);
293294
}
294295

295296
void notifyNetworkPlayerJoined(NetworkPlayer networkPlayer) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.fox2code.foxloader.network;
2+
3+
import com.fox2code.foxloader.loader.ModContainer;
4+
5+
public interface NetworkConnection {
6+
/**
7+
* Send network data to remote player
8+
*/
9+
default void sendNetworkData(ModContainer modContainer, byte[] data) { throw new RuntimeException(); }
10+
11+
/**
12+
* Get the network player is available
13+
*/
14+
default NetworkPlayer getNetworkPlayer() { throw new RuntimeException(); }
15+
16+
/**
17+
* @return if the remote party has fox loader.
18+
*/
19+
default boolean hasFoxLoader() { throw new RuntimeException(); }
20+
21+
/**
22+
* @return if the player is currently connected
23+
*/
24+
default boolean isConnected() { throw new RuntimeException(); }
25+
26+
/**
27+
* Will kick the player.
28+
*/
29+
default void kick(String message) { throw new RuntimeException(); }
30+
}

‎common/src/main/java/com/fox2code/foxloader/network/NetworkPlayer.java

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ public interface NetworkPlayer extends RegisteredEntityLiving, RegisteredCommand
1111
*/
1212
byte[] NULL_DATA = new byte[0];
1313

14+
/**
15+
* Get player network connection if available
16+
*/
17+
default NetworkConnection getNetworkConnection() { throw new RuntimeException(); }
18+
1419
/**
1520
* Get the connection type of the object.
1621
*/

‎gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ org.gradle.parallel=true
33
org.gradle.jvmargs=-Xmx1024m -XX:-UseGCOverheadLimit -Dfile.encoding=UTF-8
44

55
# FoxLoader properties
6-
foxloader.version=1.2.44
6+
foxloader.version=1.2.45
77
foxloader.lastReIndevTransformerChanges=1.2.39
88
# https://www.jitpack.io/#com.fox2code/FoxLoader
99

‎server/src/main/java/com/fox2code/foxloader/loader/ServerModLoader.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.fox2code.foxloader.loader;
22

33
import com.fox2code.foxloader.loader.packet.ClientHello;
4+
import com.fox2code.foxloader.network.NetworkConnection;
45
import com.fox2code.foxloader.network.NetworkPlayer;
56
import com.fox2code.foxloader.registry.CommandCompat;
67
import com.fox2code.foxloader.registry.GameRegistryServer;
@@ -81,13 +82,18 @@ public static void notifyRun() {
8182
}
8283

8384
@Override
84-
public void onReceiveClientPacket(NetworkPlayer networkPlayer, byte[] data) {
85+
public void onReceiveClientPacket(NetworkConnection networkConnection, byte[] data) {
8586
if (data.length == 0) return;
86-
LoaderNetworkManager.executeClientPacketData(networkPlayer, data);
87+
LoaderNetworkManager.executeClientPacketData(networkConnection, data);
8788
}
8889

8990
@Override
90-
void loaderHandleClientHello(NetworkPlayer networkPlayer, ClientHello clientHello) {
91+
void loaderHandleClientHello(NetworkConnection networkConnection, ClientHello clientHello) {
92+
NetworkPlayer networkPlayer = networkConnection.getNetworkPlayer();
93+
if (networkPlayer == null) {
94+
networkConnection.kick("Preemptive networking edge case");
95+
return;
96+
}
9197
((NetworkPlayerImpl) networkPlayer).notifyClientHello();
9298
for (ModContainer modContainer : ModLoader.modContainers.values()) {
9399
modContainer.notifyNetworkPlayerHello(networkPlayer, clientHello);

‎server/src/main/java/com/fox2code/foxloader/server/mixins/MixinEntityPlayerMP.java

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fox2code.foxloader.loader.ModContainer;
44
import com.fox2code.foxloader.loader.ServerMod;
5+
import com.fox2code.foxloader.network.NetworkConnection;
56
import com.fox2code.foxloader.network.NetworkPlayer;
67
import com.fox2code.foxloader.registry.RegisteredItemStack;
78
import com.fox2code.foxloader.server.network.NetServerHandlerAccessor;
@@ -33,6 +34,11 @@ public void teleportRegistered(double x, double y, double z) {
3334
this.playerNetServerHandler.teleportTo(x, y, z, this.rotationYaw, this.rotationPitch);
3435
}
3536

37+
@Override
38+
public NetworkConnection getNetworkConnection() {
39+
return (NetworkConnection) this.playerNetServerHandler;
40+
}
41+
3642
@Override
3743
public ConnectionType getConnectionType() {
3844
return ConnectionType.SERVER_ONLY;

‎server/src/main/java/com/fox2code/foxloader/server/mixins/MixinNetServerHandler.java

+32-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fox2code.foxloader.loader.ModContainer;
44
import com.fox2code.foxloader.loader.ModLoader;
5+
import com.fox2code.foxloader.network.NetworkConnection;
56
import com.fox2code.foxloader.network.NetworkPlayer;
67
import com.fox2code.foxloader.server.network.NetServerHandlerAccessor;
78
import net.minecraft.src.game.entity.player.EntityPlayerMP;
@@ -18,8 +19,14 @@
1819
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1920

2021
@Mixin(NetServerHandler.class)
21-
public abstract class MixinNetServerHandler implements NetServerHandlerAccessor {
22+
public abstract class MixinNetServerHandler implements NetServerHandlerAccessor, NetworkConnection {
2223
@Shadow private EntityPlayerMP playerEntity;
24+
@Shadow public boolean connectionClosed;
25+
26+
@Shadow public abstract void sendPacket(Packet var1);
27+
28+
@Shadow public abstract void kickPlayer(String var1);
29+
2330
@Unique private boolean hasFoxLoader;
2431
@Unique private boolean hasClientHello;
2532
@Unique private String kickMessage;
@@ -49,18 +56,39 @@ public void notifyClientHello() {
4956
this.hasClientHello = true;
5057
}
5158

59+
@Override
60+
public boolean isConnected() {
61+
return !this.connectionClosed;
62+
}
63+
64+
@Override
65+
public void sendNetworkData(ModContainer modContainer, byte[] data) {
66+
this.sendPacket(new Packet250PluginMessage(modContainer.id, data));
67+
}
68+
69+
@Override
70+
public NetworkPlayer getNetworkPlayer() {
71+
return (NetworkPlayer) this.playerEntity;
72+
}
73+
74+
@Override
75+
public void kick(String message) {
76+
if (!this.connectionClosed) {
77+
this.kickPlayer(message);
78+
}
79+
}
80+
5281
@Inject(method = "handlePluginMessage", at = @At("HEAD"))
5382
public void onHandlePluginMessage(Packet250PluginMessage packet250, CallbackInfo ci) {
54-
NetworkPlayer networkPlayer = (NetworkPlayer) this.playerEntity;
5583
// Stop client that are not modded from sending modded packets
5684
// Also do not allow modded packet when client didn't finish connecting yet.
57-
if (networkPlayer == null || !(this.hasClientHello || // Make exception for FoxLoader packets
85+
if (this.playerEntity == null || !(this.hasClientHello || // Make exception for FoxLoader packets
5886
(this.hasFoxLoader && ModLoader.FOX_LOADER_MOD_ID.equals(packet250.channel)))) {
5987
return;
6088
}
6189
ModContainer modContainer = ModLoader.getModContainer(packet250.channel);
6290
if (modContainer != null && packet250.data != null) {
63-
modContainer.notifyReceiveClientPacket(networkPlayer, packet250.data);
91+
modContainer.notifyReceiveClientPacket(this, packet250.data);
6492
}
6593
}
6694

0 commit comments

Comments
 (0)
Please sign in to comment.