Added generic packet sending function to MinecraftForge class.

This commit is contained in:
LexManos 2012-04-18 19:17:04 -07:00
parent ddd4b6eb48
commit 23ffbb774f
5 changed files with 57 additions and 8 deletions

View file

@ -14,10 +14,8 @@ import net.minecraft.client.Minecraft;
import net.minecraft.src.*; import net.minecraft.src.*;
import net.minecraft.src.forge.packets.*; import net.minecraft.src.forge.packets.*;
public class PacketHandlerClient implements IPacketHandler public class PacketHandlerClient extends PacketHandlerBase
{ {
private static boolean DEBUG = false;
@Override @Override
public void onPacketData(NetworkManager network, String channel, byte[] bytes) public void onPacketData(NetworkManager network, String channel, byte[] bytes)
{ {
@ -237,4 +235,11 @@ public class PacketHandlerClient implements IPacketHandler
player.craftingInventory.windowId = pkt.WindowID; player.craftingInventory.windowId = pkt.WindowID;
} }
} }
@Override
public void sendPacket(NetworkManager network, Packet packet)
{
NetClientHandler net = (NetClientHandler)network.getNetHandler();
net.addToSendQueue(packet);
}
} }

View file

@ -25,6 +25,7 @@ import net.minecraft.src.Packet1Login;
import net.minecraft.src.Packet250CustomPayload; import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.World; import net.minecraft.src.World;
import net.minecraft.src.forge.packets.PacketEntitySpawn; import net.minecraft.src.forge.packets.PacketEntitySpawn;
import net.minecraft.src.forge.packets.PacketHandlerBase;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
@ -645,8 +646,8 @@ public class ForgeHooks
static HashMap toolHarvestLevels = new HashMap(); static HashMap toolHarvestLevels = new HashMap();
static HashSet toolEffectiveness = new HashSet(); static HashSet toolEffectiveness = new HashSet();
private static IPacketHandler forgePacketHandler = null; private static PacketHandlerBase forgePacketHandler = null;
public static void setPacketHandler(IPacketHandler handler) public static void setPacketHandler(PacketHandlerBase handler)
{ {
if (forgePacketHandler != null) if (forgePacketHandler != null)
{ {
@ -654,7 +655,7 @@ public class ForgeHooks
} }
forgePacketHandler = handler; forgePacketHandler = handler;
} }
public static IPacketHandler getPacketHandler() public static PacketHandlerBase getPacketHandler()
{ {
return forgePacketHandler; return forgePacketHandler;
} }

View file

@ -13,6 +13,8 @@ import net.minecraft.src.EntityMinecart;
import net.minecraft.src.Item; import net.minecraft.src.Item;
import net.minecraft.src.ItemStack; import net.minecraft.src.ItemStack;
import net.minecraft.src.ModLoader; import net.minecraft.src.ModLoader;
import net.minecraft.src.NetworkManager;
import net.minecraft.src.Packet;
import net.minecraft.src.World; import net.minecraft.src.World;
import java.util.*; import java.util.*;
@ -1121,6 +1123,17 @@ public class MinecraftForge
ForgeHooks.arrowLooseHandlers.add(handler); ForgeHooks.arrowLooseHandlers.add(handler);
} }
/**
* Sends a packet on the specified NetworkManager
*
* @param net The manager to send the packet on
* @param packet The packet to be sent
*/
public static void sendPacket(NetworkManager net, Packet packet)
{
ForgeHooks.getPacketHandler().sendPacket(net, packet);
}
private static int isClient = -1; private static int isClient = -1;
public static boolean isClient() public static boolean isClient()
{ {

View file

@ -0,0 +1,24 @@
package net.minecraft.src.forge.packets;
import net.minecraft.src.NetworkManager;
import net.minecraft.src.Packet;
import net.minecraft.src.forge.IPacketHandler;
/**
* A helper class used to make a shared interface for sending packets,
* Should not be used outside the API itself.
*/
public abstract class PacketHandlerBase implements IPacketHandler
{
public static boolean DEBUG = false;
/**
* Sends out a packet to the specified network manager.
* This is necessary because NetClientHandler, and
* NetServerHandler are not on both sides.
*
* @param network The manager to send the packet to
* @param packet The packet to send
*/
public abstract void sendPacket(NetworkManager network, Packet packet);
}

View file

@ -16,9 +16,8 @@ import net.minecraft.server.MinecraftServer;
import net.minecraft.src.*; import net.minecraft.src.*;
import net.minecraft.src.forge.packets.*; import net.minecraft.src.forge.packets.*;
public class PacketHandlerServer implements IPacketHandler public class PacketHandlerServer extends PacketHandlerBase
{ {
public static boolean DEBUG = false;
@Override @Override
public void onPacketData(NetworkManager network, String channel, byte[] bytes) public void onPacketData(NetworkManager network, String channel, byte[] bytes)
{ {
@ -162,4 +161,11 @@ public class PacketHandlerServer implements IPacketHandler
player.func_20057_k(); player.func_20057_k();
FMLServerHandler.instance().announceLogin(player); FMLServerHandler.instance().announceLogin(player);
} }
@Override
public void sendPacket(NetworkManager network, Packet packet)
{
NetServerHandler net = (NetServerHandler)network.getNetHandler();
net.sendPacket(packet);
}
} }