Merge pull request #14 from Emys/master
Include select MFR API classes for the MFR plugin
This commit is contained in:
commit
3bbd6a6947
470
powercrystals/minefactoryreloaded/api/FarmingRegistry.java
Normal file
470
powercrystals/minefactoryreloaded/api/FarmingRegistry.java
Normal file
@ -0,0 +1,470 @@
|
||||
package powercrystals.minefactoryreloaded.api;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import powercrystals.minefactoryreloaded.api.rednet.IRedNetLogicCircuit;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
* @author PowerCrystals
|
||||
*
|
||||
* Class used to register plants and other farming-related things with MFR. Will do nothing if MFR does not exist, but your mod should be set to load
|
||||
* after MFR or things may not work properly.
|
||||
*
|
||||
*/
|
||||
public class FarmingRegistry
|
||||
{
|
||||
/**
|
||||
* Registers a plantable object with the Planter.
|
||||
*
|
||||
* @param plantable The thing to plant.
|
||||
*/
|
||||
public static void registerPlantable(IFactoryPlantable plantable)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerPlantable", IFactoryPlantable.class);
|
||||
reg.invoke(registry, plantable);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a harvestable block with the Harvester.
|
||||
*
|
||||
* @param harvestable The thing to harvest.
|
||||
*/
|
||||
public static void registerHarvestable(IFactoryHarvestable harvestable)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerHarvestable", IFactoryHarvestable.class);
|
||||
reg.invoke(registry, harvestable);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a fertilizable block with the Fertilizer.
|
||||
*
|
||||
* @param fertilizable The thing to fertilize.
|
||||
*/
|
||||
public static void registerFertilizable(IFactoryFertilizable fertilizable)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerFertilizable", IFactoryFertilizable.class);
|
||||
reg.invoke(registry, fertilizable);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a fertilizer item Fertilizer.
|
||||
*
|
||||
* @param fertilizable The thing to fertilize with.
|
||||
*/
|
||||
public static void registerFertilizer(IFactoryFertilizer fertilizer)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerFertilizer", IFactoryFertilizer.class);
|
||||
reg.invoke(registry, fertilizer);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a ranchable entity with the Rancher.
|
||||
*
|
||||
* @param ranchable The entity to ranch.
|
||||
*/
|
||||
public static void registerRanchable(IFactoryRanchable ranchable)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerRanchable", IFactoryRanchable.class);
|
||||
reg.invoke(registry, ranchable);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a grindable entity with the Grinder.
|
||||
*
|
||||
* @param grindable The entity to grind.
|
||||
*/
|
||||
public static void registerGrindable(IFactoryGrindable grindable)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerGrindable", IFactoryGrindable.class);
|
||||
reg.invoke(registry, grindable);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a possible output with the sludge boiler.
|
||||
*
|
||||
* @param weight Likelihood that this item will be produced. Lower means rarer.
|
||||
* @param drop The thing being produced by the sludge boiler.
|
||||
*/
|
||||
public static void registerSludgeDrop(int weight, ItemStack drop)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerSludgeDrop", int.class, ItemStack.class);
|
||||
reg.invoke(registry, weight, drop);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers specific food to use in the Breeder (instead of wheat) for a given mob.
|
||||
*
|
||||
* @param entityToBreed Entity this food will be used with.
|
||||
* @param food The item to use when breeding this entity.
|
||||
*/
|
||||
public static void registerBreederFood(Class<?> entityToBreed, ItemStack food)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerBreederFood", Class.class, ItemStack.class);
|
||||
reg.invoke(registry, entityToBreed, food);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a Safari Net handler to properly serialize a type of mob.
|
||||
*
|
||||
* @param handler The Safari Net handler.
|
||||
*/
|
||||
public static void registerSafariNetHandler(ISafariNetHandler handler)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerSafariNetHandler", ISafariNetHandler.class);
|
||||
reg.invoke(registry, handler);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers a mob egg handler, which allows the Safari Net to properly change colors.
|
||||
*
|
||||
* @param handler The mob egg handler
|
||||
*/
|
||||
public static void registerMobEggHandler(IMobEggHandler handler)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerMobEggHandler", IMobEggHandler.class);
|
||||
reg.invoke(registry, handler);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows Rubber Trees to spawn in the specified biome.
|
||||
*
|
||||
* @param biome The biome name.
|
||||
*/
|
||||
public static void registerRubberTreeBiome(String biome)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerRubberTreeBiome", String.class);
|
||||
reg.invoke(registry, biome);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Bans an entity class from being collected by Safari Nets
|
||||
*
|
||||
* @param blacklistedEntity Class to blacklist
|
||||
*/
|
||||
public static void registerSafariNetBlacklist(Class<?> blacklistedEntity)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerSafariNetBlacklist", Class.class);
|
||||
reg.invoke(registry, blacklistedEntity);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an entity as a possible output from villager random safari nets. Note that the "id" field must be initialized
|
||||
* (i.e. with Entity.addEntityID()) for it to work correctly.
|
||||
*
|
||||
* @param savedMob A serialized mob that will be unloaded by the safari net
|
||||
* @param weight The weight of this mob in the random selection
|
||||
*/
|
||||
public static void registerVillagerTradeMob(IRandomMobProvider mobProvider)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerVillagerTradeMob", IRandomMobProvider.class);
|
||||
reg.invoke(registry, mobProvider);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a handler for drinking liquids with the straw.
|
||||
*
|
||||
* @param liquidId The block ID the handler handles.
|
||||
* @param liquidDrinkHandler The drink handler instance.
|
||||
*/
|
||||
public static void registerLiquidDrinkHandler(int liquidId, ILiquidDrinkHandler liquidDrinkHandler)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerLiquidDrinkHandler", int.class, ILiquidDrinkHandler.class);
|
||||
reg.invoke(registry, liquidId, liquidDrinkHandler);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a possible output with the laser drill.
|
||||
*
|
||||
* @param weight Likelihood that this item will be produced. Lower means rarer.
|
||||
* @param drop The thing being produced by the laser drill.
|
||||
*/
|
||||
public static void registerLaserOre(int weight, ItemStack drop)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerLaserOre", int.class, ItemStack.class);
|
||||
reg.invoke(registry, weight, drop);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a preferred ore with the laser drill. Focuses with the specified color will make the specified ore more likely.
|
||||
* Note that this will overwrite existing ore preferences - you may want to coordinate with PC before using this one.
|
||||
* Used by MFR itself for vanilla: Black (Coal), Light Blue (Diamond), Lime (Emerald), Yellow (Gold), Brown (Iron), Blue (Lapis),
|
||||
* Red (Redstone), and White (nether quartz).
|
||||
*
|
||||
* @param color The color that the preferred ore is being set for. White is 0.
|
||||
* @param ore The ore that will be preferred by the drill when a focus with the specified color is present.
|
||||
*/
|
||||
public static void setLaserPreferredOre(int color, ItemStack ore)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("setLaserPreferredOre", int.class, ItemStack.class);
|
||||
reg.invoke(registry, color, ore);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a block ID as a fruit tree log. When the Fruit Picker sees this block on the ground, it will
|
||||
* begin a search in tree mode for any fruit nearby.
|
||||
*
|
||||
* @param fruitLogBlockId The block ID to mark as a fruit tree log.
|
||||
*/
|
||||
public static void registerFruitLogBlockId(Integer fruitLogBlockId)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerFruitLogBlockId", Integer.class);
|
||||
reg.invoke(registry, fruitLogBlockId);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a fruit for the Fruit Picker.
|
||||
*
|
||||
* @param fruit The fruit to be picked.
|
||||
*/
|
||||
public static void registerFruit(IFactoryFruit fruit)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerFruit", IFactoryFruit.class);
|
||||
reg.invoke(registry, fruit);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an entity string as an invalid entry for the autospawner.
|
||||
* See also: {@link net.minecraft.entity.EntityList}'s classToStringMapping and stringToClassMapping.
|
||||
*
|
||||
* @param entityString The entity string to blacklist.
|
||||
*/
|
||||
public static void registerAutoSpawnerBlacklist(String entityString)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerAutoSpawnerBlacklist", String.class);
|
||||
reg.invoke(registry, entityString);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers logic circuit to be usable in the Programmable RedNet Controller.
|
||||
*
|
||||
* @param circuit The circuit to be registered.
|
||||
*/
|
||||
public static void registerRedNetLogicCircuit(IRedNetLogicCircuit circuit)
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
|
||||
if(registry != null)
|
||||
{
|
||||
Method reg = registry.getMethod("registerRedNetLogicCircuit", IRedNetLogicCircuit.class);
|
||||
reg.invoke(registry, circuit);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
34
powercrystals/minefactoryreloaded/api/HarvestType.java
Normal file
34
powercrystals/minefactoryreloaded/api/HarvestType.java
Normal file
@ -0,0 +1,34 @@
|
||||
package powercrystals.minefactoryreloaded.api;
|
||||
|
||||
/**
|
||||
* @author PowerCrystals
|
||||
*
|
||||
* Determines what algorithm the Harvester uses when it encounters this IFactoryHarvestable in the world.
|
||||
*/
|
||||
public enum HarvestType
|
||||
{
|
||||
/**
|
||||
* Just break the single block - no special action needed. Carrots, flowers, etc.
|
||||
*/
|
||||
Normal,
|
||||
/**
|
||||
* Search for identical blocks above.
|
||||
*/
|
||||
Column,
|
||||
/**
|
||||
* Search for identical blocks above but leave this bottom one for the future. Cactus and sugarcane.
|
||||
*/
|
||||
LeaveBottom,
|
||||
/**
|
||||
* This block is the base of a tree and the harvester should enter tree-cutting mode.
|
||||
*/
|
||||
Tree,
|
||||
/**
|
||||
* This block is the base of the tree and the harvester should enter tree-cutting mode, but the tree grows upside-down.
|
||||
*/
|
||||
TreeFlipped,
|
||||
/**
|
||||
* This block is part of a tree as above, but leaves are cut before tree logs so that leaves do not decay more than necessary.
|
||||
*/
|
||||
TreeLeaf
|
||||
}
|
29
powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
Normal file
29
powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
Normal file
@ -0,0 +1,29 @@
|
||||
package powercrystals.minefactoryreloaded.api;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* @author PowerCrystals
|
||||
*
|
||||
* Defines a grindable entity for the Grinder.
|
||||
*/
|
||||
public interface IFactoryGrindable
|
||||
{
|
||||
/**
|
||||
* @return The class that this grindable instance is handling. This must be a subtype of EntityLiving or the entity will never
|
||||
* be noticed by the Grinder.
|
||||
*/
|
||||
public Class<?> getGrindableEntity();
|
||||
|
||||
/**
|
||||
* @param world The world this entity is in.
|
||||
* @param entity The entity instance being ground.
|
||||
* @param random A Random instance.
|
||||
* @return The drops generated when this entity is killed.
|
||||
*/
|
||||
public List<MobDrop> grind(World world, EntityLiving entity, Random random);
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package powercrystals.minefactoryreloaded.api;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* @author PowerCrystals
|
||||
*
|
||||
* Defines a harvestable block for the Harvester.
|
||||
*/
|
||||
public interface IFactoryHarvestable
|
||||
{
|
||||
/**
|
||||
* @return The block ID this harvestable instance is managing.
|
||||
*/
|
||||
public int getPlantId();
|
||||
|
||||
/**
|
||||
* @return The type of harvest the Harvester should perform on this block.
|
||||
*/
|
||||
public HarvestType getHarvestType();
|
||||
|
||||
|
||||
/**
|
||||
* @return Whether or not the Harvester should break the block when harvesting. If false, no changes will be performed by the Harvester itself.
|
||||
*/
|
||||
public boolean breakBlock();
|
||||
|
||||
/**
|
||||
* @param world The world this block is in.
|
||||
* @param harvesterSettings The harvester's current settings. Do not modify these.
|
||||
* @param x The X coordinate of the block being harvested.
|
||||
* @param y The Y coordinate of the block being harvested.
|
||||
* @param z The Z coordinate of the block being harvested.
|
||||
* @return True if this block can be harvested.
|
||||
*/
|
||||
public boolean canBeHarvested(World world, Map<String, Boolean> harvesterSettings, int x, int y, int z);
|
||||
|
||||
/**
|
||||
* @param world The world this block is in.
|
||||
* @param rand A Random instance to use when generating drops.
|
||||
* @param harvesterSettings The harvester's current settings. Do not modify these.
|
||||
* @param x The X coordinate of the block being harvested.
|
||||
* @param y The Y coordinate of the block being harvested.
|
||||
* @param z The Z coordinate of the block being harvested.
|
||||
* @return The drops generated by breaking this block. For a default implementation, calling Block.getBlockDropped() is usually sufficient.
|
||||
*/
|
||||
public List<ItemStack> getDrops(World world, Random rand, Map<String, Boolean> harvesterSettings, int x, int y, int z);
|
||||
|
||||
/**
|
||||
* Called before the block is going to be harvested. Usually empty.
|
||||
* @param world The world this block is in.
|
||||
* @param x The X coordinate of the block being harvested.
|
||||
* @param y The Y coordinate of the block being harvested.
|
||||
* @param z The Z coordinate of the block being harvested.
|
||||
*/
|
||||
public void preHarvest(World world, int x, int y, int z);
|
||||
|
||||
/**
|
||||
* Called after the block is going to be harvested. Used to re-till soil, for example.
|
||||
* @param world The world this block is in.
|
||||
* @param x The X coordinate of the block being harvested.
|
||||
* @param y The Y coordinate of the block being harvested.
|
||||
* @param z The Z coordinate of the block being harvested.
|
||||
*/
|
||||
public void postHarvest(World world, int x, int y, int z);
|
||||
}
|
21
powercrystals/minefactoryreloaded/api/MobDrop.java
Normal file
21
powercrystals/minefactoryreloaded/api/MobDrop.java
Normal file
@ -0,0 +1,21 @@
|
||||
package powercrystals.minefactoryreloaded.api;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.WeightedRandomItem;
|
||||
|
||||
public class MobDrop extends WeightedRandomItem
|
||||
{
|
||||
private ItemStack _stack;
|
||||
|
||||
public MobDrop(int weight, ItemStack stack)
|
||||
{
|
||||
super(weight);
|
||||
_stack = stack;
|
||||
}
|
||||
|
||||
public ItemStack getStack()
|
||||
{
|
||||
if(_stack == null) return null;
|
||||
return _stack.copy();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user