Skip to content

Commit

Permalink
Update 1.2.45
Browse files Browse the repository at this point in the history
  • Loading branch information
Fox2Code committed May 23, 2024
1 parent 06b2d65 commit 2440803
Show file tree
Hide file tree
Showing 15 changed files with 169 additions and 53 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.fox2code.foxloader.client.mixins;

import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
import com.fox2code.foxloader.loader.ModContainer;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import net.minecraft.client.Minecraft;
import net.minecraft.src.client.Session;
Expand Down Expand Up @@ -31,6 +31,11 @@ public void onNewMixinEntityClientPlayerMP(

}

@Override
public NetworkConnection getNetworkConnection() {
return (NetworkConnection) this.sendQueue;
}

@Override
public ConnectionType getConnectionType() {
return ConnectionType.CLIENT_ONLY;
Expand All @@ -56,7 +61,7 @@ public void displayChatMessage(String chatMessage) {

@Override
public boolean hasFoxLoader() {
return sendQueue != null && ((NetClientHandlerExtensions) sendQueue).isFoxLoader();
return sendQueue != null && ((NetworkConnection) sendQueue).hasFoxLoader();
}

@Override
Expand All @@ -72,7 +77,7 @@ public boolean isOperator() {
@Override
public boolean isConnected() {
return sendQueue != null && Minecraft.getInstance().isMultiplayerWorld() &&
!((NetClientHandlerExtensions) sendQueue).isDisconnected();
((NetworkConnection) sendQueue).isConnected();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fox2code.foxloader.loader.ClientMod;
import com.fox2code.foxloader.loader.ModContainer;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.registry.RegisteredItemStack;
import net.minecraft.client.Minecraft;
Expand All @@ -22,6 +23,11 @@ public MixinEntityPlayerSP(World var1) {
super(var1);
}

@Override
public NetworkConnection getNetworkConnection() {
return null;
}

@Override
public ConnectionType getConnectionType() {
return ConnectionType.SINGLE_PLAYER;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package com.fox2code.foxloader.client.mixins;

import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
import com.fox2code.foxloader.launcher.BuildConfig;
import com.fox2code.foxloader.loader.ClientModLoader;
import com.fox2code.foxloader.network.SidedMetadataAPI;
import net.minecraft.client.Minecraft;
import net.minecraft.fox2code.ChatColors;
import net.minecraft.src.client.gui.FontRenderer;
import net.minecraft.src.client.gui.GuiDebug;
import org.lwjgl.input.Keyboard;
Expand All @@ -14,8 +11,6 @@
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

import java.util.Map;

@Mixin(GuiDebug.class)
public class MixinGuiDebug {
@Shadow private Minecraft mc;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.fox2code.foxloader.client.mixins;

import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
import com.fox2code.foxloader.loader.ClientModLoader;
import com.fox2code.foxloader.loader.ModContainer;
import com.fox2code.foxloader.loader.ModLoader;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.registry.GameRegistryClient;
import net.minecraft.client.Minecraft;
Expand All @@ -18,12 +18,14 @@
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(NetClientHandler.class)
public class MixinNetClientHandler implements NetClientHandlerExtensions {
public abstract class MixinNetClientHandler implements NetworkConnection {
@Shadow private boolean disconnected;
@Shadow private NetworkManager netManager;
@Unique boolean isFoxLoader = false;
@Unique boolean preemptive = true;

@Shadow public abstract void addToSendQueue(Packet packet);

@Unique
private void preemptivelySendClientHello() {
if (this.preemptive) {
Expand Down Expand Up @@ -85,27 +87,40 @@ public void onHandlePickupSpawn(Packet5PlayerInventory var1, CallbackInfo ci) {

@Inject(method = "handlePluginMessage", at = @At("HEAD"))
public void onHandlePluginMessage(Packet250PluginMessage packet250, CallbackInfo ci) {
NetworkPlayer networkPlayer = (NetworkPlayer)
Minecraft.getInstance().thePlayer;
if (ModLoader.FOX_LOADER_MOD_ID.equals(packet250.channel) && !this.isFoxLoader) {
ModLoader.getModLoaderLogger().info("Got FoxLoader packet");
this.isFoxLoader = true;
this.preemptivelySendClientHello();
}
ModContainer modContainer = ModLoader.getModContainer(packet250.channel);
if (networkPlayer != null && modContainer != null && packet250.data != null) {
if (modContainer != null && packet250.data != null) {
ModLoader.getModLoaderLogger().info("Processing FoxLoader packet");
modContainer.notifyReceiveServerPacket(networkPlayer, packet250.data);
modContainer.notifyReceiveServerPacket(this, packet250.data);
}
}

@Override
public boolean isFoxLoader() {
public boolean hasFoxLoader() {
return this.isFoxLoader;
}

@Override
public boolean isDisconnected() {
return this.disconnected;
public boolean isConnected() {
return !this.disconnected;
}

@Override
public void sendNetworkData(ModContainer modContainer, byte[] data) {
this.addToSendQueue(new Packet250PluginMessage(modContainer.id, data));
}

@Override
public NetworkPlayer getNetworkPlayer() {
return (NetworkPlayer) Minecraft.getInstance().thePlayer;
}

@Override
public void kick(String message) {
throw new IllegalStateException("kick cannot be used client-side");
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.fox2code.foxloader.loader;

import com.fox2code.foxloader.client.network.NetClientHandlerExtensions;
import com.fox2code.foxloader.launcher.BuildConfig;
import com.fox2code.foxloader.launcher.FoxLauncher;
import com.fox2code.foxloader.launcher.LauncherType;
Expand All @@ -10,18 +9,17 @@
import com.fox2code.foxloader.launcher.utils.SourceUtil;
import com.fox2code.foxloader.loader.packet.ClientHello;
import com.fox2code.foxloader.loader.packet.ServerHello;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.network.SidedMetadataAPI;
import com.fox2code.foxloader.registry.GameRegistryClient;
import com.fox2code.foxloader.registry.RegisteredItem;
import com.fox2code.foxloader.updater.UpdateManager;
import net.minecraft.client.Minecraft;
import net.minecraft.fox2code.ChatColors;
import net.minecraft.mitask.PlayerCommandHandler;
import net.minecraft.src.client.gui.StringTranslate;
import net.minecraft.src.client.packets.NetworkManager;
import net.minecraft.src.client.packets.Packet250PluginMessage;
import net.minecraft.src.game.item.Item;
import net.minecraft.src.game.item.ItemStack;
import org.lwjgl.opengl.GL11;

Expand Down Expand Up @@ -87,18 +85,18 @@ public void onServerStart(NetworkPlayer.ConnectionType connectionType) {
}

@Override
public void onReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {
public void onReceiveServerPacket(NetworkConnection networkPlayer, byte[] data) {
ModLoader.foxLoader.logger.info("Received server packet");
LoaderNetworkManager.executeServerPacketData(networkPlayer, data);
}

@Override
void loaderHandleServerHello(NetworkPlayer networkPlayer, ServerHello serverHello) {
void loaderHandleServerHello(NetworkConnection networkConnection, ServerHello serverHello) {
ModLoader.foxLoader.logger.info("Initializing id translator");
GameRegistryClient.initializeMappings(serverHello);
ModLoader.foxLoader.logger.info("Ids translated!");
if (!didPreemptiveNetworking) {
networkPlayer.sendNetworkData(ModLoader.foxLoader, clientHello);
networkConnection.sendNetworkData(ModLoader.foxLoader, clientHello);
} else {
didPreemptiveNetworking = false;
}
Expand Down Expand Up @@ -280,7 +278,7 @@ public static String getColoredServerNameDebugExt() {
if (serverName == null) {
if (metadata.containsKey(SidedMetadataAPI.KEY_FOXLOADER_VERSION)) {
serverName = "FoxLoader " + metadata.get(SidedMetadataAPI.KEY_FOXLOADER_VERSION);
} else if (((NetClientHandlerExtensions) Minecraft.getInstance().getSendQueue()).isFoxLoader()) {
} else if (((NetworkConnection) Minecraft.getInstance().getSendQueue()).hasFoxLoader()) {
serverName = ChatColors.DARK_RED + "Obsolete FoxLoader" + ChatColors.GRAY;
} else {
serverName = "ReIndev " + BuildConfig.REINDEV_VERSION;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fox2code.foxloader.loader.packet.ClientHello;
import com.fox2code.foxloader.loader.packet.FoxPacket;
import com.fox2code.foxloader.loader.packet.ServerHello;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.network.io.NetworkDataInputStream;
import com.fox2code.foxloader.network.io.NetworkDataOutputStream;
Expand All @@ -12,7 +13,7 @@
import java.util.zip.*;

final class LoaderNetworkManager {
static void executeClientPacketData(NetworkPlayer networkPlayer, byte[] data) {
static void executeClientPacketData(NetworkConnection networkConnection, byte[] data) {
try (DataInputStream dataInputStream =
new NetworkDataInputStream(new ByteArrayInputStream(data))) {
int packetId = dataInputStream.readUnsignedByte();
Expand All @@ -25,7 +26,7 @@ static void executeClientPacketData(NetworkPlayer networkPlayer, byte[] data) {
clientHello.readData(dataInputStream);
ModLoader.foxLoader.getMod()
.loaderHandleClientHello(
networkPlayer, clientHello);
networkConnection, clientHello);
break;
}
} catch (IOException ignored) {}
Expand All @@ -45,7 +46,7 @@ static void sendClientPacketData(NetworkPlayer networkPlayer, FoxPacket foxPacke
networkPlayer.sendNetworkData(ModLoader.foxLoader, byteArrayOutputStream.toByteArray());
}

static void executeServerPacketData(NetworkPlayer networkPlayer, byte[] data) {
static void executeServerPacketData(NetworkConnection networkConnection, byte[] data) {
InputStream inputStream = new ByteArrayInputStream(data);
try {
int compressed = inputStream.read();
Expand Down Expand Up @@ -76,7 +77,7 @@ static void executeServerPacketData(NetworkPlayer networkPlayer, byte[] data) {
serverHello.readData(dataInputStream);
ModLoader.foxLoader.getMod()
.loaderHandleServerHello(
networkPlayer, serverHello);
networkConnection, serverHello);
break;
}
} catch (IOException e) {
Expand Down
31 changes: 29 additions & 2 deletions common/src/main/java/com/fox2code/foxloader/loader/Mod.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fox2code.foxloader.loader.packet.ClientHello;
import com.fox2code.foxloader.loader.packet.ServerHello;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.registry.*;

Expand Down Expand Up @@ -78,11 +79,37 @@ public void onCameraAndRenderUpdated(float partialTick) {}
/**
* When server receive client packet.
*/
public void onReceiveClientPacket(NetworkConnection networkConnection, byte[] data) {
NetworkPlayer networkPlayer = networkConnection.getNetworkPlayer();
if (networkPlayer != null) {
this.onReceiveClientPacket(networkPlayer, data);
} else {
this.getLogger().warning("Received preemptive client packet, but failed to translate to non preemptive");
}
}

/**
* When server receive client packet.
*/
@Deprecated
public void onReceiveClientPacket(NetworkPlayer networkPlayer, byte[] data) {}

/**
* When client receive server packet.
*/
public void onReceiveServerPacket(NetworkConnection networkConnection, byte[] data) {
NetworkPlayer networkPlayer = networkConnection.getNetworkPlayer();
if (networkPlayer != null) {
this.onReceiveServerPacket(networkPlayer, data);
} else {
this.getLogger().warning("Received preemptive server packet, but failed to translate to non preemptive");
}
}

/**
* When client receive server packet.
*/
@Deprecated
public void onReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {}

/**
Expand Down Expand Up @@ -243,8 +270,8 @@ public void registerShapelessRecipe(RegisteredItemStack result, GameRegistry.Ing
}

// For internal use only
void loaderHandleServerHello(NetworkPlayer networkPlayer, ServerHello serverHello) {}
void loaderHandleClientHello(NetworkPlayer networkPlayer, ClientHello clientHello) {}
void loaderHandleServerHello(NetworkConnection networkConnection, ServerHello serverHello) {}
void loaderHandleClientHello(NetworkConnection networkPlayer, ClientHello clientHello) {}
void loaderHandleDoFoxLoaderUpdate(String version, String url) throws IOException {
System.err.println("Unhandled loaderHandleDoFoxLoaderUpdate()");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.fox2code.foxloader.loader.lua.LuaVMHelper;
import com.fox2code.foxloader.loader.packet.ClientHello;
import com.fox2code.foxloader.loader.transformer.PreClassTransformer;
import com.fox2code.foxloader.network.NetworkConnection;
import com.fox2code.foxloader.network.NetworkPlayer;
import com.fox2code.foxloader.registry.RegisteredEntity;
import com.fox2code.foxloader.registry.RegisteredItemStack;
Expand Down Expand Up @@ -274,22 +275,22 @@ private Mod initializeMod(String clsName) throws ReflectiveOperationException {
return mod;
}

public void notifyReceiveClientPacket(NetworkPlayer networkPlayer, byte[] data) {
public void notifyReceiveClientPacket(NetworkConnection networkConnection, byte[] data) {
if (commonMod != null)
commonMod.onReceiveClientPacket(networkPlayer, data);
commonMod.onReceiveClientPacket(networkConnection, data);
if (clientMod != null)
clientMod.onReceiveClientPacket(networkPlayer, data);
clientMod.onReceiveClientPacket(networkConnection, data);
if (serverMod != null)
serverMod.onReceiveClientPacket(networkPlayer, data);
serverMod.onReceiveClientPacket(networkConnection, data);
}

public void notifyReceiveServerPacket(NetworkPlayer networkPlayer, byte[] data) {
public void notifyReceiveServerPacket(NetworkConnection networkConnection, byte[] data) {
if (commonMod != null)
commonMod.onReceiveServerPacket(networkPlayer, data);
commonMod.onReceiveServerPacket(networkConnection, data);
if (clientMod != null)
clientMod.onReceiveServerPacket(networkPlayer, data);
clientMod.onReceiveServerPacket(networkConnection, data);
if (serverMod != null)
serverMod.onReceiveServerPacket(networkPlayer, data);
serverMod.onReceiveServerPacket(networkConnection, data);
}

void notifyNetworkPlayerJoined(NetworkPlayer networkPlayer) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.fox2code.foxloader.network;

import com.fox2code.foxloader.loader.ModContainer;

public interface NetworkConnection {
/**
* Send network data to remote player
*/
default void sendNetworkData(ModContainer modContainer, byte[] data) { throw new RuntimeException(); }

/**
* Get the network player is available
*/
default NetworkPlayer getNetworkPlayer() { throw new RuntimeException(); }

/**
* @return if the remote party has fox loader.
*/
default boolean hasFoxLoader() { throw new RuntimeException(); }

/**
* @return if the player is currently connected
*/
default boolean isConnected() { throw new RuntimeException(); }

/**
* Will kick the player.
*/
default void kick(String message) { throw new RuntimeException(); }
}
Loading

0 comments on commit 2440803

Please sign in to comment.