Lost of work to try and complete ML support - probably still bits missing, but mostly there
This commit is contained in:
parent
185f8ddbc7
commit
92b7ed1182
|
@ -396,4 +396,10 @@ public class FMLClientHandler implements IFMLSidedHandler
|
|||
{
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public MinecraftServer getServer()
|
||||
{
|
||||
return client.func_71401_C();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -300,6 +300,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
*
|
||||
* @param text
|
||||
*/
|
||||
@Override
|
||||
public void receiveChatPacket(String text)
|
||||
{
|
||||
// TODO
|
||||
|
@ -311,6 +312,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
*
|
||||
* @param packet
|
||||
*/
|
||||
@Override
|
||||
public void receiveCustomPacket(Packet250CustomPayload packet)
|
||||
{
|
||||
// TODO
|
||||
|
@ -332,10 +334,12 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
|
||||
}
|
||||
|
||||
public void serverConnect(NetClientHandler handler) {
|
||||
@Override
|
||||
public void serverConnect(NetHandler handler) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serverDisconnect() {
|
||||
|
||||
}
|
||||
|
@ -375,6 +379,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
* @param source
|
||||
* @param payload
|
||||
*/
|
||||
@Override
|
||||
public void onPacket250Received(EntityPlayer source, Packet250CustomPayload payload)
|
||||
{
|
||||
}
|
||||
|
@ -405,6 +410,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
*
|
||||
* @param player
|
||||
*/
|
||||
@Override
|
||||
public void onClientLogin(EntityPlayer player)
|
||||
{
|
||||
}
|
||||
|
@ -414,7 +420,8 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseModPr
|
|||
*
|
||||
* @param player
|
||||
*/
|
||||
public void onClientLogout(EntityPlayer player)
|
||||
@Override
|
||||
public void onClientLogout(NetworkManager mgr)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -585,9 +585,7 @@ public class ModLoader
|
|||
}
|
||||
|
||||
/**
|
||||
* Register the mod for packets on this channel. This only registers the
|
||||
* channel with Forge Mod Loader, not with clients connecting- use
|
||||
* BaseMod.onClientLogin to tell them about your custom channel
|
||||
* Register the mod for packets on this channel.
|
||||
* {@link FMLCommonHandler#registerChannel(cpw.mods.fml.common.ModContainer, String)}
|
||||
*
|
||||
* @param mod
|
||||
|
|
|
@ -322,8 +322,7 @@ public class FMLCommonHandler
|
|||
|
||||
public MinecraftServer getMinecraftServerInstance()
|
||||
{
|
||||
//TODO
|
||||
return null;
|
||||
return sidedDelegate.getServer();
|
||||
}
|
||||
|
||||
public void showGuiScreen(Object clientGuiElement)
|
||||
|
|
|
@ -37,4 +37,6 @@ public interface IFMLSidedHandler
|
|||
void beginServerLoading(MinecraftServer server);
|
||||
|
||||
void finishServerLoading();
|
||||
|
||||
MinecraftServer getServer();
|
||||
}
|
||||
|
|
|
@ -14,21 +14,15 @@
|
|||
|
||||
package cpw.mods.fml.common.modloader;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.IInventory;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.World;
|
||||
|
||||
import cpw.mods.fml.common.IConsoleHandler;
|
||||
import cpw.mods.fml.common.ICraftingHandler;
|
||||
import cpw.mods.fml.common.IDispenseHandler;
|
||||
import cpw.mods.fml.common.INetworkHandler;
|
||||
import cpw.mods.fml.common.IPickupNotifier;
|
||||
import cpw.mods.fml.common.IPlayerTracker;
|
||||
import cpw.mods.fml.common.IWorldGenerator;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
|
||||
/**
|
||||
|
@ -72,4 +66,18 @@ public interface BaseModProxy
|
|||
int addFuel(int itemId, int damage);
|
||||
void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix);
|
||||
void takenFromFurnace(EntityPlayer player, ItemStack item);
|
||||
|
||||
public abstract void onClientLogout(NetworkManager manager);
|
||||
|
||||
public abstract void onClientLogin(EntityPlayer player);
|
||||
|
||||
public abstract void onPacket250Received(EntityPlayer source, Packet250CustomPayload payload);
|
||||
|
||||
public abstract void serverDisconnect();
|
||||
|
||||
public abstract void serverConnect(NetHandler handler);
|
||||
|
||||
public abstract void receiveCustomPacket(Packet250CustomPayload packet);
|
||||
|
||||
public abstract void receiveChatPacket(String text);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cpw.mods.fml.common.modloader;
|
||||
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetLoginHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
|
@ -10,11 +11,17 @@ import cpw.mods.fml.common.network.Player;
|
|||
|
||||
public class ModLoaderConnectionHandler implements IConnectionHandler
|
||||
{
|
||||
private BaseModProxy mod;
|
||||
|
||||
public ModLoaderConnectionHandler(BaseModProxy mod)
|
||||
{
|
||||
this.mod = mod;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playerLoggedIn(Player player, NetHandler netHandler, NetworkManager manager)
|
||||
{
|
||||
|
||||
mod.onClientLogin((EntityPlayer)player);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,29 +33,26 @@ public class ModLoaderConnectionHandler implements IConnectionHandler
|
|||
@Override
|
||||
public void connectionOpened(NetHandler netClientHandler, String server, int port, NetworkManager manager)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
// noop
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connectionClosed(NetworkManager manager)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
mod.serverDisconnect();
|
||||
mod.onClientLogout(manager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clientLoggedIn(NetworkManager manager, Packet1Login login)
|
||||
public void clientLoggedIn(NetHandler nh, NetworkManager manager, Packet1Login login)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
mod.serverConnect(nh);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connectionOpened(NetHandler netClientHandler, MinecraftServer server, NetworkManager manager)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
// noop
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import cpw.mods.fml.common.IFuelHandler;
|
|||
import cpw.mods.fml.common.IWorldGenerator;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
import cpw.mods.fml.common.network.IConnectionHandler;
|
||||
import cpw.mods.fml.common.network.IPacketHandler;
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
|
||||
|
@ -97,11 +98,6 @@ public class ModLoaderHelper
|
|||
return mlmc;
|
||||
}
|
||||
|
||||
public static ModLoaderModContainer registerRenderHelper(BaseMod mod) {
|
||||
ModLoaderModContainer mlmc=findOrBuildModContainer(mod);
|
||||
return mlmc;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mod
|
||||
* @return
|
||||
|
@ -139,4 +135,9 @@ public class ModLoaderHelper
|
|||
sidedHelper.finishModLoading(mc);
|
||||
}
|
||||
}
|
||||
|
||||
public static IConnectionHandler buildConnectionHelper(BaseModProxy mod)
|
||||
{
|
||||
return new ModLoaderConnectionHandler(mod);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,6 +67,7 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
|||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.network.FMLNetworkHandler;
|
||||
import cpw.mods.fml.common.network.NetworkMod;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
import cpw.mods.fml.common.registry.TickRegistry;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.common.versioning.ArtifactVersion;
|
||||
|
@ -521,6 +522,7 @@ public class ModLoaderModContainer implements ModContainer
|
|||
GameRegistry.registerWorldGenerator(ModLoaderHelper.buildWorldGenHelper(mod));
|
||||
GameRegistry.registerFuelHandler(ModLoaderHelper.buildFuelHelper(mod));
|
||||
GameRegistry.registerCraftingHandler(ModLoaderHelper.buildCraftingHelper(mod));
|
||||
NetworkRegistry.instance().registerConnectionHandler(ModLoaderHelper.buildConnectionHelper(mod));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@ package cpw.mods.fml.common.modloader;
|
|||
|
||||
import net.minecraft.src.BaseMod;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.EntityPlayerMP;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import cpw.mods.fml.common.network.IPacketHandler;
|
||||
|
@ -19,7 +20,14 @@ public class ModLoaderPacketHandler implements IPacketHandler
|
|||
@Override
|
||||
public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player)
|
||||
{
|
||||
mod.onPacket250Received((EntityPlayer) player, packet);
|
||||
if (player instanceof EntityPlayerMP)
|
||||
{
|
||||
mod.onPacket250Received((EntityPlayer) player, packet);
|
||||
}
|
||||
else
|
||||
{
|
||||
mod.receiveCustomPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -65,9 +65,9 @@ public class FMLNetworkHandler
|
|||
}
|
||||
}
|
||||
|
||||
public static void onConnectionEstablishedToServer(NetworkManager manager, Packet1Login login)
|
||||
public static void onConnectionEstablishedToServer(NetHandler clientHandler, NetworkManager manager, Packet1Login login)
|
||||
{
|
||||
NetworkRegistry.instance().clientLoggedIn(manager, login);
|
||||
NetworkRegistry.instance().clientLoggedIn(clientHandler, manager, login);
|
||||
}
|
||||
|
||||
private void handleFMLPacket(Packet250CustomPayload packet, NetworkManager network, NetHandler netHandler)
|
||||
|
|
|
@ -67,10 +67,10 @@ public interface IConnectionHandler
|
|||
* Fired when the client established the connection to the server
|
||||
*
|
||||
* CLIENT SIDE
|
||||
*
|
||||
* @param clientHandler
|
||||
* @param manager
|
||||
* @param login
|
||||
*/
|
||||
void clientLoggedIn(NetworkManager manager, Packet1Login login);
|
||||
void clientLoggedIn(NetHandler clientHandler, NetworkManager manager, Packet1Login login);
|
||||
|
||||
}
|
||||
|
|
|
@ -154,11 +154,11 @@ public class NetworkRegistry
|
|||
}
|
||||
}
|
||||
|
||||
void clientLoggedIn(NetworkManager manager, Packet1Login login)
|
||||
void clientLoggedIn(NetHandler clientHandler, NetworkManager manager, Packet1Login login)
|
||||
{
|
||||
for (IConnectionHandler handler : connectionHandlers)
|
||||
{
|
||||
handler.clientLoggedIn(manager, login);
|
||||
handler.clientLoggedIn(clientHandler, manager, login);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package cpw.mods.fml.common.registry;
|
||||
|
||||
import java.util.BitSet;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
|
||||
class BlockTracker
|
||||
{
|
||||
private static final BlockTracker INSTANCE = new BlockTracker();
|
||||
private BitSet allocatedBlocks;
|
||||
|
||||
private BlockTracker()
|
||||
{
|
||||
allocatedBlocks = new BitSet(4096);
|
||||
allocatedBlocks.set(0, 4096);
|
||||
for (int i = 0; i < Block.field_71973_m.length; i++)
|
||||
{
|
||||
if (Block.field_71973_m[i]!=null)
|
||||
{
|
||||
allocatedBlocks.clear(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static int nextBlockId()
|
||||
{
|
||||
return instance().getNextBlockId();
|
||||
}
|
||||
|
||||
private int getNextBlockId()
|
||||
{
|
||||
int idx = allocatedBlocks.nextSetBit(0);
|
||||
allocatedBlocks.clear(idx);
|
||||
return idx;
|
||||
}
|
||||
private static BlockTracker instance()
|
||||
{
|
||||
return INSTANCE;
|
||||
}
|
||||
public static void reserveBlockId(int id)
|
||||
{
|
||||
instance().doReserveId(id);
|
||||
}
|
||||
private void doReserveId(int id)
|
||||
{
|
||||
allocatedBlocks.clear(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -88,7 +88,7 @@ public class GameRegistry
|
|||
|
||||
private static int findSpareBlockId()
|
||||
{
|
||||
return 250;
|
||||
return BlockTracker.nextBlockId();
|
||||
}
|
||||
|
||||
public static void registerBlock(net.minecraft.src.Block block)
|
||||
|
@ -110,6 +110,7 @@ public class GameRegistry
|
|||
FMLLog.log(Level.SEVERE, e, "Caught an exception during block registration");
|
||||
throw new LoaderException(e);
|
||||
}
|
||||
BlockTracker.reserveBlockId(block.field_71990_ca);
|
||||
}
|
||||
|
||||
public static void addRecipe(ItemStack output, Object... params)
|
||||
|
|
|
@ -4,6 +4,9 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.StringTranslate;
|
||||
|
||||
public class LanguageRegistry
|
||||
|
@ -32,7 +35,18 @@ public class LanguageRegistry
|
|||
|
||||
public void addNameForObject(Object objectToName, String lang, String name)
|
||||
{
|
||||
|
||||
String objectName;
|
||||
if (objectToName instanceof Item) {
|
||||
objectName=((Item)objectToName).func_77658_a();
|
||||
} else if (objectToName instanceof Block) {
|
||||
objectName=((Block)objectToName).func_71917_a();
|
||||
} else if (objectToName instanceof ItemStack) {
|
||||
objectName=((ItemStack)objectToName).func_77973_b().func_77667_c((ItemStack)objectToName);
|
||||
} else {
|
||||
throw new IllegalArgumentException(String.format("Illegal object for naming %s",objectToName));
|
||||
}
|
||||
objectName+=".name";
|
||||
addStringLocalization(lang, lang, name);
|
||||
}
|
||||
|
||||
public void loadLanguageTable(Properties languagePack, String lang)
|
||||
|
|
Loading…
Reference in New Issue