Skip to content

Commit 2440803

Browse files
committed
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

Lines changed: 8 additions & 3 deletions
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

Lines changed: 6 additions & 0 deletions
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

Lines changed: 0 additions & 5 deletions
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

Lines changed: 24 additions & 9 deletions
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

Lines changed: 0 additions & 7 deletions
This file was deleted.

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

Lines changed: 5 additions & 7 deletions
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

Lines changed: 5 additions & 4 deletions
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

Lines changed: 29 additions & 2 deletions
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

Lines changed: 9 additions & 8 deletions
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) {
Lines changed: 30 additions & 0 deletions
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+
}

0 commit comments

Comments
 (0)