2012-03-30 10:11:13 -04:00
/*
2012-04-01 02:14:14 -04:00
* The FML Forge Mod Loader suite. Copyright (C) 2012 cpw
2012-03-30 10:11:13 -04:00
*
* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
2012-03-30 01:12:59 -04:00
package net.minecraft.src ;
2012-03-28 12:53:08 -04:00
import java.util.List ;
import java.util.logging.Logger ;
2012-04-02 18:09:06 -04:00
import cpw.mods.fml.common.Loader ;
2012-04-02 23:06:30 -04:00
import cpw.mods.fml.common.ReflectionHelper ;
2012-04-02 18:09:06 -04:00
import cpw.mods.fml.server.FMLHandler ;
import cpw.mods.fml.server.ModLoaderModContainer ;
2012-03-30 01:12:59 -04:00
2012-03-31 02:28:14 -04:00
import net.minecraft.server.MinecraftServer ;
2012-03-28 12:53:08 -04:00
import net.minecraft.src.Achievement ;
import net.minecraft.src.BiomeGenBase ;
import net.minecraft.src.Block ;
import net.minecraft.src.Entity ;
import net.minecraft.src.EntityLiving ;
import net.minecraft.src.EntityPlayer ;
import net.minecraft.src.EnumCreatureType ;
import net.minecraft.src.IChunkProvider ;
import net.minecraft.src.IInventory ;
import net.minecraft.src.ItemBlock ;
import net.minecraft.src.ItemStack ;
import net.minecraft.src.Packet250CustomPayload ;
import net.minecraft.src.TileEntity ;
import net.minecraft.src.World ;
public class ModLoader {
2012-04-02 23:06:30 -04:00
/**
*
* @param achievement
* @param name
* @param description
*/
2012-04-01 02:14:14 -04:00
public static void addAchievementDesc ( Achievement achievement , String name , String description ) {
2012-04-02 23:06:30 -04:00
// NOOP on the server??
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method is a call in hook from modified external code. Implemented elsewhere.
* @param id
* @param metadata
* @return
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static int addAllFuel ( int id , int metadata ) {
2012-03-28 13:29:23 -04:00
return 0 ;
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method has been unimplemented in server implementations for some time.
*
* @param armor
* @return
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static int addArmor ( String armor ) {
2012-03-28 13:29:23 -04:00
return 0 ;
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method does not work. Creation of a BiomeGenBase is sufficient to populate this array
*
* @param biome
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addBiome ( BiomeGenBase biome ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not generate names
* @param key
* @param value
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addLocalization ( String key , String value ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not generate names
* @param key
* @param lang
* @param value
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addLocalization ( String key , String lang , String value ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not generate names
* @param instance
* @param name
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addName ( Object instance , String name ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not generate names
* @param instance
* @param lang
* @param name
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addName ( Object instance , String lang , String name ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not render textures
* @param fileToOverride
* @param fileToAdd
* @return
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static int addOverride ( String fileToOverride , String fileToAdd ) {
2012-03-28 13:29:23 -04:00
return 0 ;
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server as it does not render textures
* @param path
* @param overlayPath
* @param index
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void addOverride ( String path , String overlayPath , int index ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a Shaped Recipe
* @param output
* @param params
*/
2012-04-01 02:14:14 -04:00
public static void addRecipe ( ItemStack output , Object ... params ) {
2012-04-02 18:09:06 -04:00
CommonRegistry . addRecipe ( output , params );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a shapeless recipe
* @param output
* @param params
*/
2012-04-01 02:14:14 -04:00
public static void addShapelessRecipe ( ItemStack output , Object ... params ) {
2012-04-02 18:09:06 -04:00
CommonRegistry . addShapelessRecipe ( output , params );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a new product to be smelted
* @param input
* @param output
*/
2012-04-01 02:14:14 -04:00
public static void addSmelting ( int input , ItemStack output ) {
2012-04-02 18:09:06 -04:00
CommonRegistry . addSmelting ( input , output );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a mob to the spawn list
* @param entityClass
* @param weightedProb
* @param min
* @param max
* @param spawnList
*/
2012-04-01 02:14:14 -04:00
public static void addSpawn ( Class <? extends EntityLiving > entityClass , int weightedProb , int min , int max , EnumCreatureType spawnList ) {
2012-04-02 23:06:30 -04:00
CommonRegistry . addSpawn ( entityClass , weightedProb , min , max , spawnList , FMLHandler . instance (). getDefaultOverworldBiomes ());
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a mob to the spawn list
* @param entityClass
* @param weightedProb
* @param min
* @param max
* @param spawnList
* @param biomes
*/
2012-04-01 02:14:14 -04:00
public static void addSpawn ( Class <? extends EntityLiving > entityClass , int weightedProb , int min , int max , EnumCreatureType spawnList , BiomeGenBase ... biomes ) {
2012-03-30 22:26:16 -04:00
CommonRegistry . addSpawn ( entityClass , weightedProb , min , max , spawnList , biomes );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a mob to the spawn list
* @param entityName
* @param weightedProb
* @param min
* @param max
* @param spawnList
*/
2012-04-01 02:14:14 -04:00
public static void addSpawn ( String entityName , int weightedProb , int min , int max , EnumCreatureType spawnList ) {
2012-04-02 23:06:30 -04:00
CommonRegistry . addSpawn ( entityName , weightedProb , min , max , spawnList , FMLHandler . instance (). getDefaultOverworldBiomes ());
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Add a mob to the spawn list
* @param entityName
* @param weightedProb
* @param min
* @param max
* @param spawnList
* @param biomes
*/
2012-04-01 02:14:14 -04:00
public static void addSpawn ( String entityName , int weightedProb , int min , int max , EnumCreatureType spawnList , BiomeGenBase ... biomes ) {
2012-03-30 22:26:16 -04:00
CommonRegistry . addSpawn ( entityName , weightedProb , min , max , spawnList , biomes );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method is a call in hook from modified external code. Implemented elsewhere.
* @param world
* @param x
* @param y
* @param z
* @param xVel
* @param zVel
* @param item
* @return
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static boolean dispenseEntity ( World world , double x , double y , double z , int xVel , int zVel , ItemStack item ) {
2012-03-28 13:29:23 -04:00
return false ;
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Currently unimplemented
* @param world
* @param x
* @param y
* @param z
*/
2012-04-01 02:14:14 -04:00
public static void genericContainerRemoval ( World world , int x , int y , int z ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get a list of all BaseMod loaded into the system
* @return
*/
2012-04-01 02:14:14 -04:00
public static List < BaseMod > getLoadedMods () {
2012-03-30 22:26:16 -04:00
return ModLoaderModContainer . findAll ();
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get a logger instance
* @return
*/
2012-03-31 02:28:14 -04:00
public static Logger getLogger () {
2012-04-02 18:09:06 -04:00
return FMLHandler . getFMLLogger ();
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get a value from a field using reflection
* @param instanceclass
* @param instance
* @param fieldindex
* @return
*/
2012-04-01 02:14:14 -04:00
public static < T , E > T getPrivateValue ( Class <? super E > instanceclass , E instance , int fieldindex ) {
2012-04-02 18:09:06 -04:00
return ReflectionHelper . getPrivateValue ( instanceclass , instance , fieldindex );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get a value from a field using reflection
* @param instanceclass
* @param instance
* @param field
* @return
*/
2012-04-01 02:14:14 -04:00
public static < T , E > T getPrivateValue ( Class <? super E > instanceclass , E instance , String field ) {
2012-04-02 18:09:06 -04:00
return ReflectionHelper . getPrivateValue ( instanceclass , instance , field );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get a new unique entity id
* @return
*/
2012-04-01 02:14:14 -04:00
public static int getUniqueEntityId () {
2012-04-02 23:06:30 -04:00
return Entity . getNextId ();
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Is the named mod loaded?
* @param modname
* @return
*/
2012-04-01 02:14:14 -04:00
public static boolean isModLoaded ( String modname ) {
2012-03-30 22:26:16 -04:00
return Loader . isModLoaded ( modname );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented on the server. New code that didn't exist prior to this implementation
* @param packet
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void receivePacket ( Packet250CustomPayload packet ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Register a new block
* @param block
*/
2012-04-01 02:14:14 -04:00
public static void registerBlock ( Block block ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . registerBlock ( block );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Register a new block
* @param block
* @param itemclass
*/
2012-04-01 02:14:14 -04:00
public static void registerBlock ( Block block , Class <? extends ItemBlock > itemclass ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . registerBlock ( block , itemclass );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Register a new entity ID
* @param entityClass
* @param entityName
* @param id
*/
2012-04-01 02:14:14 -04:00
public static void registerEntityID ( Class <? extends Entity > entityClass , String entityName , int id ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . registerEntityID ( entityClass , entityName , id );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Register a new entity ID
* @param entityClass
* @param entityName
* @param id
* @param background
* @param foreground
*/
2012-04-01 02:14:14 -04:00
public static void registerEntityID ( Class <? extends Entity > entityClass , String entityName , int id , int background , int foreground ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . registerEntityID ( entityClass , entityName , id , background , foreground );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Unimplemented at present
* @param mod
* @param channel
*/
2012-04-01 02:14:14 -04:00
public static void registerPacketChannel ( BaseMod mod , String channel ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Register a new tile entity class
* @param tileEntityClass
* @param id
*/
2012-04-01 02:14:14 -04:00
public static void registerTileEntity ( Class <? extends TileEntity > tileEntityClass , String id ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . registerTileEntity ( tileEntityClass , id );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Remove a biome. This code will probably not work correctly.
* @param biome
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void removeBiome ( BiomeGenBase biome ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . removeBiome ( biome );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Remove a spawn
* @param entityClass
* @param spawnList
*/
2012-04-01 02:14:14 -04:00
public static void removeSpawn ( Class <? extends EntityLiving > entityClass , EnumCreatureType spawnList ) {
2012-04-02 23:06:30 -04:00
CommonRegistry . removeSpawn ( entityClass , spawnList , FMLHandler . instance (). getDefaultOverworldBiomes ());
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Remove a spawn
* @param entityClass
* @param spawnList
* @param biomes
*/
2012-04-01 02:14:14 -04:00
public static void removeSpawn ( Class <? extends EntityLiving > entityClass , EnumCreatureType spawnList , BiomeGenBase ... biomes ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . removeSpawn ( entityClass , spawnList , biomes );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Remove a spawn
* @param entityName
* @param spawnList
*/
2012-04-01 02:14:14 -04:00
public static void removeSpawn ( String entityName , EnumCreatureType spawnList ) {
2012-04-02 23:06:30 -04:00
CommonRegistry . removeSpawn ( entityName , spawnList , FMLHandler . instance (). getDefaultOverworldBiomes ());
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Remove a spawn
* @param entityName
* @param spawnList
* @param biomes
*/
2012-04-01 02:14:14 -04:00
public static void removeSpawn ( String entityName , EnumCreatureType spawnList , BiomeGenBase ... biomes ) {
2012-03-30 01:12:59 -04:00
CommonRegistry . removeSpawn ( entityName , spawnList , biomes );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This implementation of the modloader API does not have "configuration" to save.
*/
2012-04-01 02:14:14 -04:00
public static void saveConfig () {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method is unimplemented on the server: it is meant for clients to send chat to the server
* @param text
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void serverChat ( String text ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-03-31 02:28:14 -04:00
/**
* Indicate that you want to receive ticks
*
2012-04-01 02:14:14 -04:00
* @param mod
* receiving the events
* @param enable
* indicates whether you want to recieve them or not
* @param useClock
* Not used in server side: all ticks are sent on the server side (no render subticks)
2012-03-31 02:28:14 -04:00
*/
2012-04-01 02:14:14 -04:00
public static void setInGameHook ( BaseMod mod , boolean enable , boolean useClock ) {
ModLoaderModContainer mlmc = ( ModLoaderModContainer ) ModLoaderModContainer . findContainerFor ( mod );
2012-03-30 01:12:59 -04:00
mlmc . setTicking ( enable );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Set a private field to a value using reflection
* @param instanceclass
* @param instance
* @param fieldindex
* @param value
*/
2012-04-01 02:14:14 -04:00
public static < T , E > void setPrivateValue ( Class <? super T > instanceclass , T instance , int fieldindex , E value ) {
2012-04-02 18:09:06 -04:00
ReflectionHelper . setPrivateValue ( instanceclass , instance , fieldindex , value );
2012-03-28 13:29:23 -04:00
}
2012-04-02 23:06:30 -04:00
/**
* Set a private field to a value using reflection
* @param instanceclass
* @param instance
* @param field
* @param value
*/
2012-04-01 02:14:14 -04:00
public static < T , E > void setPrivateValue ( Class <? super T > instanceclass , T instance , String field , E value ) {
2012-04-02 18:09:06 -04:00
ReflectionHelper . setPrivateValue ( instanceclass , instance , field , value );
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method is a call in hook from modified external code. Implemented elsewhere.
* @param player
* @param item
* @param matrix
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void takenFromCrafting ( EntityPlayer player , ItemStack item , IInventory matrix ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* This method is a call in hook from modified external code. Implemented elsewhere.
* @param player
* @param item
*/
@Deprecated
2012-04-01 02:14:14 -04:00
public static void takenFromFurnace ( EntityPlayer player , ItemStack item ) {
2012-03-28 13:29:23 -04:00
}
2012-03-28 12:53:08 -04:00
2012-04-02 23:06:30 -04:00
/**
* Throw the offered exception. Likely will stop the game.
* @param message
* @param e
*/
2012-04-01 02:14:14 -04:00
public static void throwException ( String message , Throwable e ) {
2012-04-02 23:06:30 -04:00
FMLHandler . instance (). raiseException ( e , message , true );
2012-03-28 13:29:23 -04:00
}
2012-03-31 02:28:14 -04:00
2012-04-02 23:06:30 -04:00
/**
* Get the minecraft server instance
* @return
*/
2012-03-31 02:28:14 -04:00
public static MinecraftServer getMinecraftServerInstance () {
2012-04-02 23:06:30 -04:00
return FMLHandler . instance (). getServer ();
2012-03-31 02:28:14 -04:00
}
2012-03-30 01:12:59 -04:00
}