Starting to get somewhere
This commit is contained in:
parent
62cca5a4b7
commit
7b3fb203fc
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="test"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/forge-server"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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<ModContainer> mods;
|
||||
|
||||
private static Map<String,ModContainer> 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<ModContainer>();
|
||||
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<ModContainer> getModList() {
|
||||
return mods;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Class<? extends Entity>, 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();
|
||||
}
|
|
@ -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<Class<? extends Entity>, 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);
|
||||
}
|
|
@ -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<Class<? extends Entity>, 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, E> 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 <T, E> 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) {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue