diff --git a/fml/.classpath b/fml/.classpath
index ddd454b0e..1cb18463c 100644
--- a/fml/.classpath
+++ b/fml/.classpath
@@ -1,7 +1,9 @@
+
+
diff --git a/fml/src/fml/stubs/mcp/BaseMod.java b/fml/clientdrop/mcp/BaseMod.java
similarity index 100%
rename from fml/src/fml/stubs/mcp/BaseMod.java
rename to fml/clientdrop/mcp/BaseMod.java
diff --git a/fml/src/fml/stubs/mcp/ModLoader.java b/fml/clientdrop/mcp/ModLoader.java
similarity index 100%
rename from fml/src/fml/stubs/mcp/ModLoader.java
rename to fml/clientdrop/mcp/ModLoader.java
diff --git a/fml/src/fml/stubs/obf/BaseMod.java b/fml/clientdrop/obf/BaseMod.java
similarity index 100%
rename from fml/src/fml/stubs/obf/BaseMod.java
rename to fml/clientdrop/obf/BaseMod.java
diff --git a/fml/src/fml/stubs/obf/ModLoader.java b/fml/clientdrop/obf/ModLoader.java
similarity index 100%
rename from fml/src/fml/stubs/obf/ModLoader.java
rename to fml/clientdrop/obf/ModLoader.java
diff --git a/fml/src/fml/CommonRegistry.java b/fml/src/fml/CommonRegistry.java
new file mode 100644
index 000000000..dcf456c7d
--- /dev/null
+++ b/fml/src/fml/CommonRegistry.java
@@ -0,0 +1,76 @@
+package fml;
+
+import net.minecraft.src.BiomeGenBase;
+import net.minecraft.src.Block;
+import net.minecraft.src.Entity;
+import net.minecraft.src.EntityLiving;
+import net.minecraft.src.EnumCreatureType;
+import net.minecraft.src.Item;
+import net.minecraft.src.ItemBlock;
+import net.minecraft.src.ItemStack;
+import net.minecraft.src.TileEntity;
+
+public class CommonRegistry {
+ static void addRecipe(ItemStack output, Object... params) {
+ }
+
+ static void addShapelessRecipe(ItemStack output, Object... params) {
+ }
+
+ static void addSmelting(int input, ItemStack output) {
+ }
+
+ public static void registerBlock(Block block) {
+ Block.blocksList[block.blockID]=block;
+ }
+
+ public static void registerBlock(Block block, Class extends ItemBlock> itemclass) {
+ registerBlock(block);
+ try {
+ ItemBlock bl=itemclass.getConstructor(int.class).newInstance(block.blockID);
+ Item.itemsList[bl.shiftedIndex-256]=bl;
+ } catch (Exception e) {
+ //HMMM
+ }
+ }
+
+ public static void registerEntityID(Class extends Entity> entityClass, String entityName, int id) {
+ }
+
+ public static void registerEntityID(Class extends Entity> entityClass, String entityName, int id, int background, int foreground) {
+ }
+
+ public static void registerTileEntity(Class extends TileEntity> tileEntityClass, String id) {
+ }
+
+ public static void addBiome(BiomeGenBase biome) {
+ }
+
+ public static void addSpawn(Class extends EntityLiving> entityClass, int weightedProb, int min, int max, EnumCreatureType spawnList) {
+ }
+
+ public static void addSpawn(Class extends EntityLiving> entityClass, int weightedProb, int min, int max, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ }
+
+ public static void addSpawn(String entityName, int weightedProb, int min, int max, EnumCreatureType spawnList) {
+ }
+
+ public static void addSpawn(String entityName, int weightedProb, int min, int max, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ }
+
+ public static void removeBiome(BiomeGenBase biome) {
+ }
+
+ public static void removeSpawn(Class extends EntityLiving> entityClass, EnumCreatureType spawnList) {
+ }
+
+ public static void removeSpawn(Class extends EntityLiving> entityClass, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ }
+
+ public static void removeSpawn(String entityName, EnumCreatureType spawnList) {
+ }
+
+ public static void removeSpawn(String entityName, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ }
+
+}
diff --git a/fml/src/fml/server/FMLHooks.java b/fml/src/fml/server/FMLHooks.java
new file mode 100644
index 000000000..889774d3d
--- /dev/null
+++ b/fml/src/fml/server/FMLHooks.java
@@ -0,0 +1,16 @@
+package fml.server;
+
+public enum FMLHooks {
+ INSTANCE;
+ public void worldTickStart(float tickTime) {
+ for (ModContainer mod : Loader.getModList()) {
+ mod.tickStart(tickTime);
+ }
+ }
+
+ public void worldTickEnd(float tickTime) {
+ for (ModContainer mod : Loader.getModList()) {
+ mod.tickEnd(tickTime);
+ }
+ }
+}
diff --git a/fml/src/fml/server/FMLModContainer.java b/fml/src/fml/server/FMLModContainer.java
index dbd483ade..1a4d606d6 100644
--- a/fml/src/fml/server/FMLModContainer.java
+++ b/fml/src/fml/server/FMLModContainer.java
@@ -4,6 +4,7 @@ import fml.Mod;
public class FMLModContainer implements ModContainer {
private Mod modDescriptor;
+ private
private Object modInstance;
public FMLModContainer(Class> clazz) {
modDescriptor=clazz.getAnnotation(Mod.class);
diff --git a/fml/src/fml/server/Loader.java b/fml/src/fml/server/Loader.java
index 5b289f01c..c254b0275 100644
--- a/fml/src/fml/server/Loader.java
+++ b/fml/src/fml/server/Loader.java
@@ -4,65 +4,98 @@ import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.MalformedURLException;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.logging.FileHandler;
+import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
+import net.minecraft.src.BaseMod;
import fml.Mod;
-import fml.stubs.mcpserver.BaseMod;
public class Loader {
- private enum State { NOINIT, LOADING, PREINIT, INIT, POSTINIT, UP, ERRORED };
+ private enum State {
+ NOINIT, LOADING, PREINIT, INIT, POSTINIT, UP, ERRORED
+ };
+
private static State state;
private static Logger LOG = Logger.getLogger("ForgeModLoader.Loader");
private static List mods;
+
+ private static Map namedMods;
private static ModClassLoader modClassLoader;
- private static Pattern zipJar = Pattern.compile("([\\w]+).(zip|jar)$");
- private static Pattern modClass = Pattern.compile("(.*)(mod_[^\\s]+)\\.class$");
+ private static Pattern zipJar = Pattern.compile("([^\\s]+).(zip|jar)$");
+ private static Pattern modClass = Pattern.compile("(.*/)(mod\\_[^\\s]+).class$");
public static Loader instance;
-
+
public static void run() {
- instance=new Loader();
+ LOG.setLevel(Level.ALL);
+ FileHandler fileHandler;
+ try {
+ fileHandler = new FileHandler("ForgeModLoader-%g.log", 0, 3);
+ System.setProperty("java.util.logging.SimpleFormatter.format", "%1$tc %2$s%n%4$s: %5$s%6$s%n");
+ fileHandler.setFormatter(new SimpleFormatter());
+ fileHandler.setLevel(Level.ALL);
+ LOG.addHandler(fileHandler);
+ } catch (Exception e) {
+ // Whatever - give up
+ }
+ instance = new Loader();
}
-
+
private Loader() {
- state=State.NOINIT;
+ mods = new ArrayList();
+ state = State.NOINIT;
load();
+ sortModList();
preModInit();
modInit();
postModInit();
- state=State.UP;
+ state = State.UP;
+ // Make mod list immutable
+ mods=Collections.unmodifiableList(mods);
+ }
+
+ private void sortModList() {
+ // NOOP for a minute
}
private void preModInit() {
- state=State.PREINIT;
+ state = State.PREINIT;
for (ModContainer mod : mods) {
if (mod.wantsPreInit()) {
+ LOG.finer(String.format("Pre-initializing %s", mod.getName()));
mod.preInit();
+ namedMods.put(mod.getName(), mod);
}
}
}
private void modInit() {
- state=State.INIT;
+ state = State.INIT;
for (ModContainer mod : mods) {
- mod.init();
+ LOG.finer(String.format("Initializing %s", mod.getName()));
+ mod.init();
}
}
private void postModInit() {
- state=State.POSTINIT;
+ state = State.POSTINIT;
for (ModContainer mod : mods) {
if (mod.wantsPostInit()) {
+ LOG.finer(String.format("Post-initializing %s", mod.getName()));
mod.postInit();
}
}
@@ -74,7 +107,7 @@ public class Loader {
try {
canonicalModsPath = modsDir.getCanonicalPath();
} catch (IOException ioe) {
- LOG.severe(String.format("Failed to resolve mods directory mods %s",modsDir.getAbsolutePath()));
+ LOG.severe(String.format("Failed to resolve mods directory mods %s", modsDir.getAbsolutePath()));
LOG.throwing("fml.server.Loader", "initialize", ioe);
throw new LoaderException(ioe);
}
@@ -97,20 +130,22 @@ public class Loader {
// Sort the files into alphabetical order first
Arrays.sort(modList);
- state=State.LOADING;
+ state = State.LOADING;
for (File modFile : modList) {
if (modFile.isDirectory()) {
LOG.info(String.format("Found directory %s. Attempting load", modFile.getName()));
attemptDirLoad(modFile);
+ LOG.info(String.format("Directory %s loaded successfully", modFile.getName()));
} else {
Matcher matcher = zipJar.matcher(modFile.getName());
- if (matcher.find()) {
+ if (matcher.matches()) {
LOG.info(String.format("Found zip or jar file %s. Attempting load.", matcher.group(0)));
attemptFileLoad(modFile);
+ LOG.info(String.format("File %s loaded successfully.", matcher.group(0)));
}
}
}
- if (state==State.ERRORED) {
+ if (state == State.ERRORED) {
LOG.severe("A problem has occured during mod loading. Giving up now");
throw new RuntimeException("Giving up please");
}
@@ -118,42 +153,49 @@ public class Loader {
private void attemptDirLoad(File modDir) {
extendClassLoader(modDir);
-
- File[] content=modDir.listFiles(new FilenameFilter() {
+
+ File[] content = modDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return modClass.matcher(name).find();
}
});
for (File modClassFile : content) {
- LOG.fine(String.format("Found a mod class %s in directory %s. Attempting to load it",modClassFile.getName(),modDir.getName()));
- String clazzName=modClass.matcher(modClassFile.getName()).group(2);
+ String clazzName = modClass.matcher(modClassFile.getName()).group(2);
+ LOG.fine(String.format("Found a mod class %s in directory %s. Attempting to load it", clazzName, modDir.getName()));
loadModClass(modDir, modClassFile.getName(), clazzName);
- LOG.fine(String.format("Successfully loaded mod class %s",modClassFile.getName()));
+ LOG.fine(String.format("Successfully loaded mod class %s", modClassFile.getName()));
}
}
private void loadModClass(File classSource, String classFileName, String clazzName) {
try {
- Class> clazz=Class.forName(clazzName,true,modClassLoader);
+ System.out.printf("Loading %s\n", clazzName);
+ Class> clazz = Class.forName(clazzName, false, modClassLoader);
+ System.out.printf("Got %s\n", clazz);
if (clazz.isAnnotationPresent(Mod.class)) {
// an FML mod
mods.add(FMLModContainer.buildFor(clazz));
- } else if (clazz.isAssignableFrom(BaseMod.class)) {
- // a modloader mod
+ } else if (BaseMod.class.isAssignableFrom(clazz)) {
+ LOG.fine(String.format("ModLoader BaseMod class found: %s. Loading", clazzName));
+ @SuppressWarnings("unchecked")
+ Class extends BaseMod> bmClazz = (Class extends BaseMod>) clazz;
+ ModContainer mc=new ModLoaderModContainer(bmClazz);
+ mods.add(mc);
+ LOG.fine(String.format("ModLoader BaseMod class loaded: %s.", clazzName));
} else {
// Unrecognized
}
- } catch (ClassNotFoundException e) {
- LOG.warning(String.format("Failed to load mod class %s in %s",classFileName,classSource.getName()));
- LOG.throwing("fml.server.Loader", "attemptDirLoad", e);
- state=State.ERRORED;
+ } catch (Exception e) {
+ LOG.warning(String.format("Failed to load mod class %s in %s", classFileName, classSource.getName()));
+ LOG.throwing("fml.server.Loader", "attemptLoad", e);
+ state = State.ERRORED;
}
}
private void extendClassLoader(File file) {
- if (modClassLoader==null) {
- modClassLoader=new ModClassLoader();
+ if (modClassLoader == null) {
+ modClassLoader = new ModClassLoader();
}
try {
modClassLoader.addFile(file);
@@ -164,30 +206,27 @@ public class Loader {
private void attemptFileLoad(File modFile) {
extendClassLoader(modFile);
-
+
try {
- ZipFile jar=new ZipFile(modFile);
+ ZipFile jar = new ZipFile(modFile);
for (ZipEntry ze : Collections.list(jar.entries())) {
- Matcher match=modClass.matcher(ze.getName());
- if (match.find()) {
- String pkg=match.group(1).replace('/', '.');
- String clazzName=pkg+match.group(2);
+ Matcher match = modClass.matcher(ze.getName());
+ if (match.matches()) {
+ String pkg = match.group(1).replace('/', '.');
+ String clazzName = pkg + match.group(2);
+ LOG.fine(String.format("Found a mod class %s in file %s. Attempting to load it", clazzName, modFile.getName()));
loadModClass(modFile, ze.getName(), clazzName);
+ LOG.fine(String.format("Mod class %s loaded successfully", clazzName, modFile.getName()));
}
}
} catch (Exception e) {
LOG.warning(String.format("Zip file %s failed to read properly", modFile.getName()));
LOG.throwing("fml.server.Loader", "attemptFileLoad", e);
- state=State.ERRORED;
+ state = State.ERRORED;
}
}
- class LoaderException extends RuntimeException {
- public LoaderException(Exception wrapped) {
- super(wrapped);
- }
-
- public LoaderException() {
- }
+ public static List getModList() {
+ return mods;
}
}
diff --git a/fml/src/fml/server/LoaderException.java b/fml/src/fml/server/LoaderException.java
new file mode 100644
index 000000000..3792dac0d
--- /dev/null
+++ b/fml/src/fml/server/LoaderException.java
@@ -0,0 +1,15 @@
+package fml.server;
+
+class LoaderException extends RuntimeException {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -5675297950958861378L;
+
+ public LoaderException(Exception wrapped) {
+ super(wrapped);
+ }
+
+ public LoaderException() {
+ }
+}
\ No newline at end of file
diff --git a/fml/src/fml/server/ModContainer.java b/fml/src/fml/server/ModContainer.java
index 344806de3..c7e53487d 100644
--- a/fml/src/fml/server/ModContainer.java
+++ b/fml/src/fml/server/ModContainer.java
@@ -6,4 +6,8 @@ public interface ModContainer {
void preInit();
void init();
void postInit();
+ String getName();
+ void tickStart(float tickTime);
+ void tickEnd(float tickTime);
+ boolean matches(Object mod);
}
diff --git a/fml/src/fml/server/ModLoaderModContainer.java b/fml/src/fml/server/ModLoaderModContainer.java
index 69c31386e..3dda2caa5 100644
--- a/fml/src/fml/server/ModLoaderModContainer.java
+++ b/fml/src/fml/server/ModLoaderModContainer.java
@@ -1,30 +1,73 @@
package fml.server;
+import net.minecraft.src.BaseMod;
+
public class ModLoaderModContainer implements ModContainer {
+ private Class extends BaseMod> modClazz;
+ private BaseMod mod;
+ private boolean isTicking;
+ public ModLoaderModContainer(Class extends BaseMod> modClazz) {
+ this.modClazz=modClazz;
+ }
+
public boolean wantsPreInit() {
- return false;
+ return true;
}
public boolean wantsPostInit() {
- return false;
+ return true;
}
@Override
public void preInit() {
- // TODO Auto-generated method stub
-
+ try {
+ mod=modClazz.newInstance();
+ } catch (Exception e) {
+ throw new LoaderException(e);
+ }
}
@Override
public void init() {
- // TODO Auto-generated method stub
-
+ mod.load();
}
@Override
public void postInit() {
- // TODO Auto-generated method stub
-
+ mod.modsLoaded();
}
+ @Override
+ public void tickStart(float tickTime) {
+ if (isTicking) {
+ isTicking=mod.onTickInGame(tickTime);
+ }
+ }
+ @Override
+ public void tickEnd(float tickTime) {
+ // NOOP for modloader
+ }
+
+ @Override
+ public String getName() {
+ return mod!=null?mod.getName():null;
+ }
+
+ public static ModContainer findContainerFor(BaseMod mod) {
+ for (ModContainer mc :Loader.getModList()) {
+ if (mc.matches(mod)) {
+ return mc;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean matches(Object mod) {
+ return modClazz.isInstance(mod);
+ }
+
+ public void setTicking(boolean enable) {
+ isTicking=enable;
+ }
}
diff --git a/fml/src/fml/stubs/mcpserver/BaseMod.java b/fml/src/fml/stubs/mcpserver/BaseMod.java
deleted file mode 100644
index ebb6d07f8..000000000
--- a/fml/src/fml/stubs/mcpserver/BaseMod.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package fml.stubs.mcpserver;
-
-import java.util.Random;
-
-import fml.Mod;
-
-
-import net.minecraft.src.EntityPlayer;
-import net.minecraft.src.IInventory;
-import net.minecraft.src.ItemStack;
-import net.minecraft.src.Packet250CustomPayload;
-import net.minecraft.src.World;
-
-@Mod(name="blah",version="blah")
-public interface BaseMod {
- int addFuel(int id, int metadata);
-
- // void addRenderer(Map, Render> renderers);
- boolean dispenseEntity(World world, double x, double y, double z, int xVel, int zVel, ItemStack item);
-
- void generateNether(World world, Random random, int chunkX, int chunkZ);
-
- void generateSurface(World world, Random random, int chunkX, int chunkZ);
-
- String getName();
-
- String getPriorities();
-
- abstract String getVersion();
-
- // void keyboardEvent(KeyBinding event);
- @Mod.PreInit
- abstract void load();
-
- @Mod.Init
- void modsLoaded();
-
- void onItemPickup(EntityPlayer player, ItemStack item);
-
- // boolean onTickInGame(float tick, Minecraft game);
- // boolean onTickInGUI(float tick, Minecraft game, GuiScreen gui);
- void receiveChatPacket(String text);
-
- void receiveCustomPacket(Packet250CustomPayload packet);
-
- // void registerAnimation(Minecraft game);
- // void renderInvBlock(RenderBlocks renderer, Block block, int metadata, int
- // modelID);
- // boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world, int x,
- // int y, int z, Block block, int modelID);
- void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory matrix);
-
- void takenFromFurnace(EntityPlayer player, ItemStack item);
-
- String toString();
-}
diff --git a/fml/src/net/minecraft/src/BaseMod.java b/fml/src/net/minecraft/src/BaseMod.java
new file mode 100644
index 000000000..774fbeb2b
--- /dev/null
+++ b/fml/src/net/minecraft/src/BaseMod.java
@@ -0,0 +1,68 @@
+package net.minecraft.src;
+
+import java.util.Random;
+
+import fml.Mod;
+
+import net.minecraft.src.EntityPlayer;
+import net.minecraft.src.IInventory;
+import net.minecraft.src.ItemStack;
+import net.minecraft.src.Packet250CustomPayload;
+import net.minecraft.src.World;
+
+public abstract class BaseMod {
+ int addFuel(int id, int metadata) {
+ return 0;
+ }
+
+ public boolean dispenseEntity(World world, double x, double y, double z, int xVel, int zVel, ItemStack item) {
+ return false;
+ }
+
+ public void generateNether(World world, Random random, int chunkX, int chunkZ) {
+ }
+
+ public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
+ }
+
+ public String getName() { return ""; }
+
+ public String getPriorities() {
+ return null;
+ }
+
+ public abstract String getVersion();
+
+ public abstract void load();
+
+ public void modsLoaded() {
+ }
+
+ public void onItemPickup(EntityPlayer player, ItemStack item) {
+ }
+
+ // boolean onTickInGame(float tick, Minecraft game);
+ public boolean onTickInGame(float tick) {
+ return false;
+ }
+
+ public void receiveChatPacket(String text) {
+ }
+
+ public void receiveCustomPacket(Packet250CustomPayload packet) {
+ }
+
+ public void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory matrix) {
+ }
+
+ public void takenFromFurnace(EntityPlayer player, ItemStack item) {
+
+ }
+
+ // void addRenderer(Map, Render> renderers);
+ // void registerAnimation(Minecraft game);
+ // void renderInvBlock(RenderBlocks renderer, Block block, int metadata, int modelID);
+ // boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world, int x, int y, int z, Block block, int modelID);
+ // boolean onTickInGUI(float tick, Minecraft game, GuiScreen gui);
+ // void keyboardEvent(KeyBinding event);
+}
diff --git a/fml/src/fml/stubs/mcpserver/ModLoader.java b/fml/src/net/minecraft/src/ModLoader.java
similarity index 75%
rename from fml/src/fml/stubs/mcpserver/ModLoader.java
rename to fml/src/net/minecraft/src/ModLoader.java
index 1013560f4..41375f85c 100644
--- a/fml/src/fml/stubs/mcpserver/ModLoader.java
+++ b/fml/src/net/minecraft/src/ModLoader.java
@@ -1,8 +1,12 @@
-package fml.stubs.mcpserver;
+package net.minecraft.src;
import java.util.List;
import java.util.logging.Logger;
+import fml.CommonRegistry;
+import fml.server.Loader;
+import fml.server.ModLoaderModContainer;
+
import net.minecraft.src.Achievement;
import net.minecraft.src.BiomeGenBase;
import net.minecraft.src.Block;
@@ -26,13 +30,6 @@ public class ModLoader {
return 0;
}
- // static void addAllRenderers(Map, Render> renderers)
- // {
- // }
-
- // static void addAnimation(TextureFX anim) {
- // }
-
static int addArmor(String armor) {
return 0;
}
@@ -95,10 +92,6 @@ public class ModLoader {
return null;
}
- // static Minecraft getMinecraftInstance() {
- // return null;
- // }
-
static T getPrivateValue(Class super E> instanceclass, E instance, int fieldindex) {
return null;
}
@@ -119,10 +112,6 @@ public class ModLoader {
return 0;
}
- // static boolean isGUIOpen(Class extends GuiScreen> gui) {
- // return false;
- // }
-
static boolean isModLoaded(String modname) {
return false;
}
@@ -130,100 +119,67 @@ public class ModLoader {
static void loadConfig() {
}
- // static BufferedImage loadImage(RenderEngine texCache, String path) {
- // return null;
- // }
-
static void onItemPickup(EntityPlayer player, ItemStack item) {
}
- // static void onTick(float tick, net.minecraft.client.Minecraft game) {
- // }
-
- // static void openGUI(EntityPlayer player, GuiScreen gui) {
- // }
-
static void populateChunk(IChunkProvider generator, int chunkX, int chunkZ, World world) {
}
static void receivePacket(Packet250CustomPayload packet) {
}
- // static KeyBinding[] registerAllKeys(KeyBinding[] keys) {
- // return keys;
- // }
-
- // static void registerAllTextureOverrides(RenderEngine cache) {
- // }
-
static void registerBlock(Block block) {
+ CommonRegistry.registerBlock(block);
}
static void registerBlock(Block block, Class extends ItemBlock> itemclass) {
+ CommonRegistry.registerBlock(block, itemclass);
}
static void registerEntityID(Class extends Entity> entityClass, String entityName, int id) {
+ CommonRegistry.registerEntityID(entityClass, entityName, id);
}
static void registerEntityID(Class extends Entity> entityClass, String entityName, int id, int background, int foreground) {
+ CommonRegistry.registerEntityID(entityClass, entityName, id, background, foreground);
}
- // static void registerKey(BaseMod mod, KeyBinding keyHandler, boolean
- // allowRepeat) {
- // }
-
static void registerPacketChannel(BaseMod mod, String channel) {
}
static void registerTileEntity(Class extends TileEntity> tileEntityClass, String id) {
+ CommonRegistry.registerTileEntity(tileEntityClass, id);
}
- // static void registerTileEntity(Class extends TileEntity> tileEntityClass,
- // String id, TileEntitySpecialRenderer renderer) {
- // }
-
static void removeBiome(BiomeGenBase biome) {
+ CommonRegistry.removeBiome(biome);
}
static void removeSpawn(Class extends EntityLiving> entityClass, EnumCreatureType spawnList) {
+ CommonRegistry.removeSpawn(entityClass, spawnList);
}
static void removeSpawn(Class extends EntityLiving> entityClass, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ CommonRegistry.removeSpawn(entityClass, spawnList, biomes);
}
static void removeSpawn(String entityName, EnumCreatureType spawnList) {
+ CommonRegistry.removeSpawn(entityName, spawnList);
}
static void removeSpawn(String entityName, EnumCreatureType spawnList, BiomeGenBase... biomes) {
+ CommonRegistry.removeSpawn(entityName, spawnList, biomes);
}
- static boolean renderBlockIsItemFull3D(int modelID) {
- return false;
- }
-
- // static void renderInvBlock(RenderBlocks renderer, Block block, int
- // metadata, int modelID) {
- // }
-
- // static boolean renderWorldBlock(RenderBlocks renderer, IBlockAccess world,
- // int x, int y, int z, Block block, int modelID) {
- // return false;
- // }
-
static void saveConfig() {
}
static void serverChat(String text) {
}
- // static void serverLogin(NetClientHandler handler, Packet1Login loginPacket)
- // {
- // }
-
static void setInGameHook(BaseMod mod, boolean enable, boolean useClock) {
- }
-
- static void setInGUIHook(BaseMod mod, boolean enable, boolean useClock) {
+ ModLoaderModContainer mlmc=(ModLoaderModContainer) ModLoaderModContainer.findContainerFor(mod);
+ mlmc.setTicking(enable);
}
static void setPrivateValue(Class super T> instanceclass, T instance, int fieldindex, E value) {
@@ -240,4 +196,4 @@ public class ModLoader {
static void throwException(String message, Throwable e) {
}
-}
+}
\ No newline at end of file
diff --git a/fml/test/fml/test/LoaderTests.java b/fml/test/fml/test/LoaderTests.java
new file mode 100644
index 000000000..8c6f9644b
--- /dev/null
+++ b/fml/test/fml/test/LoaderTests.java
@@ -0,0 +1,23 @@
+package fml.test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import fml.server.Loader;
+
+public class LoaderTests {
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void testModLoading() {
+ Loader.run();
+ }
+}