diff --git a/apis/powercrystals/minefactoryreloaded/api/FactoryRegistry27.java b/apis/powercrystals/minefactoryreloaded/api/FactoryRegistry27.java
new file mode 100755
index 000000000..ca7876350
--- /dev/null
+++ b/apis/powercrystals/minefactoryreloaded/api/FactoryRegistry27.java
@@ -0,0 +1,74 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.item.ItemStack;
+
+import java.lang.reflect.Method;
+
+/**
+ * @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.
+ *
+ * To avoid breaking the API, additional FarmingRegistry##s will appear on major MFR versions that contain API additions. On a Minecraft version change,
+ * these will be rolled back into this class.
+ */
+public class FactoryRegistry27 {
+ /**
+ * Registers a grindable entity with the Grinder using the new grinder interface. This method will be renamed to the standard "registerGrindable"
+ * on MC 1.6.
+ *
+ * @param grindable The entity to grind.
+ */
+ public static void registerGrindable(IFactoryGrindable2 grindable) {
+ try {
+ Class> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
+ if (registry != null) {
+ Method reg = registry.getMethod("registerGrindable", IFactoryGrindable2.class);
+ reg.invoke(registry, grindable);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Registers a grindable entity with the Grinder using the new grinder interface. This method will be renamed to the standard "registerGrindable"
+ * on MC 1.6.
+ *
+ * @param grindable The entity to grind.
+ */
+ public static void registerGrinderBlacklist(Class>... ungrindables) {
+ try {
+ Class> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
+ if (registry != null) {
+ Method reg = registry.getMethod("registerGrinderBlacklist", Class[].class);
+ reg.invoke(registry, (Object[]) ungrindables);
+ }
+ } 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.
+ * 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).
+ *
+ * This will replace setLaserPreferredOre on MC 1.6.
+ *
+ * @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 addLaserPreferredOre(int color, ItemStack ore) {
+ try {
+ Class> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
+ if (registry != null) {
+ Method reg = registry.getMethod("addLaserPreferredOre", int.class, ItemStack.class);
+ reg.invoke(registry, color, ore);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/apis/powercrystals/minefactoryreloaded/api/FarmingRegistry.java b/apis/powercrystals/minefactoryreloaded/api/FarmingRegistry.java
index 594b645d3..b7eec92bc 100755
--- a/apis/powercrystals/minefactoryreloaded/api/FarmingRegistry.java
+++ b/apis/powercrystals/minefactoryreloaded/api/FarmingRegistry.java
@@ -1,277 +1,243 @@
package powercrystals.minefactoryreloaded.api;
-import java.lang.reflect.Method;
-
import net.minecraft.item.ItemStack;
import powercrystals.minefactoryreloaded.api.rednet.IRedNetLogicCircuit;
+import java.lang.reflect.Method;
+
/**
* @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.
- *
+ *
+ * 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.
+ *
+ * To avoid breaking the API, additional FactoryRegistry##s will appear on major MFR versions that contain API additions. On a Minecraft version change,
+ * these will be rolled back into this class.
+ *
+ * This class will be replaced by FactoryRegistry in 1.6.
*/
-public class FarmingRegistry
-{
- /**
- * Registers a plantable object with the Planter.
- *
- * @param plantable The thing to plant.
- */
- public static void registerPlantable(IFactoryPlantable plantable)
+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.
+ */
+ @SuppressWarnings("deprecation")
+ 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();
+ }
+ }
+
+ /**
+ * Bans an entity class from being automatically ground by the Grinder
+ *
+ * @param blacklistedEntity Class to blacklist
+ */
+ /*public static void registerGrinderBlacklist(Class> blacklistedEntity)
{
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);
+ Method reg = registry.getMethod("registerGrinderBlacklist", Class.class);
reg.invoke(registry, blacklistedEntity);
}
}
@@ -279,191 +245,154 @@ public class FarmingRegistry
{
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();
- }
- }
+ }//*/
+
+ /**
+ * 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 fluids with the straw.
+ *
+ * @param fluidId The block ID the handler handles.
+ * @param fluidDrinkHandler The drink handler instance.
+ */
+ public static void registerFluidDrinkHandler(int fluidId, IFluidDrinkHandler fluidDrinkHandler) {
+ try {
+ Class> registry = Class.forName("powercrystals.minefactoryreloaded.MFRRegistry");
+ if (registry != null) {
+ Method reg = registry.getMethod("registerFluidDrinkHandler", int.class, IFluidDrinkHandler.class);
+ reg.invoke(registry, fluidId, fluidDrinkHandler);
+ }
+ } 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).
+ *
+ * In 2.7 this will be replaced by addLaserPreferredOre, because it'll no longer overwrite existing ore preferences.
+ *
+ * @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.
+ */
+ @Deprecated
+ 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();
+ }
+ }
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/FertilizerType.java b/apis/powercrystals/minefactoryreloaded/api/FertilizerType.java
index 15e8bfb36..47f8655c9 100755
--- a/apis/powercrystals/minefactoryreloaded/api/FertilizerType.java
+++ b/apis/powercrystals/minefactoryreloaded/api/FertilizerType.java
@@ -2,22 +2,21 @@ package powercrystals.minefactoryreloaded.api;
/**
* @author PowerCrystals
- *
- * Determines what kind of action a given fertilizer can perform. Your IFactoryFertilizable instances should check this before
- * performing any action to maintain future compatibility.
+ *
+ * Determines what kind of action a given fertilizer can perform. Your IFactoryFertilizable instances should check this before
+ * performing any action to maintain future compatibility.
*/
-public enum FertilizerType
-{
- /**
- * The fertilizer will fertilize grass.
- */
- Grass,
- /**
- * The fertilizer will grow a plant.
- */
- GrowPlant,
- /**
- * The fertilizer will grow magical crops.
- */
- GrowMagicalCrop,
+public enum FertilizerType {
+ /**
+ * The fertilizer will fertilize grass.
+ */
+ Grass,
+ /**
+ * The fertilizer will grow a plant.
+ */
+ GrowPlant,
+ /**
+ * The fertilizer will grow magical crops.
+ */
+ GrowMagicalCrop,
}
\ No newline at end of file
diff --git a/apis/powercrystals/minefactoryreloaded/api/HarvestType.java b/apis/powercrystals/minefactoryreloaded/api/HarvestType.java
index 1552eb57c..4e0f024e8 100755
--- a/apis/powercrystals/minefactoryreloaded/api/HarvestType.java
+++ b/apis/powercrystals/minefactoryreloaded/api/HarvestType.java
@@ -2,33 +2,32 @@ package powercrystals.minefactoryreloaded.api;
/**
* @author PowerCrystals
- *
- * Determines what algorithm the Harvester uses when it encounters this IFactoryHarvestable in the world.
+ *
+ * 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
+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
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java b/apis/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java
index ec6c1be49..996512a1f 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java
@@ -2,25 +2,24 @@ package powercrystals.minefactoryreloaded.api;
import net.minecraft.item.ItemStack;
-public interface IDeepStorageUnit
-{
- /**
- * @return A populated ItemStack with stackSize for the full amount of materials in the DSU. May have a stackSize > getMaxStackSize().
- */
- ItemStack getStoredItemType();
-
- /**
- * Sets the total amount of the item currently being stored, or zero if it wants to remove all items.
- */
- void setStoredItemCount(int amount);
-
- /**
- * Sets the type of the stored item and initializes the number of stored items to count. Will overwrite any existing stored items.
- */
- void setStoredItemType(int itemID, int meta, int Count);
-
- /**
- * @return The maximum number of items the DSU can hold.
- */
- int getMaxStoredCount();
+public interface IDeepStorageUnit {
+ /**
+ * @return A populated ItemStack with stackSize for the full amount of materials in the DSU. May have a stackSize > getMaxStackSize().
+ */
+ ItemStack getStoredItemType();
+
+ /**
+ * Sets the total amount of the item currently being stored, or zero if it wants to remove all items.
+ */
+ void setStoredItemCount(int amount);
+
+ /**
+ * Sets the type of the stored item and initializes the number of stored items to count. Will overwrite any existing stored items.
+ */
+ void setStoredItemType(int itemID, int meta, int Count);
+
+ /**
+ * @return The maximum number of items the DSU can hold.
+ */
+ int getMaxStoredCount();
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java
index 1374d597c..504cd7b45 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizable.java
@@ -1,40 +1,39 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.Random;
-
import net.minecraft.world.World;
+import java.util.Random;
+
/**
* @author PowerCrystals
- *
- * Defines a fertilizable block, and the process to fertilize it. You can assume that you will never have to check that block ID matches the one returned by
- * getFertilizableBlockId().
+ *
+ * Defines a fertilizable block, and the process to fertilize it. You can assume that you will never have to check that block ID matches the one returned by
+ * getFertilizableBlockId().
*/
-public interface IFactoryFertilizable
-{
- /**
- * @return The block ID this instance is managing.
- */
- public int getFertilizableBlockId();
-
- /**
- * @param world The world this block belongs to.
- * @param x The X coordinate of this block.
- * @param y The Y coordinate of this block.
- * @param z The Z coordinate of this block.
- * @param fertilizerType The kind of fertilizer being used.
- * @return True if the block at (x,y,z) can be fertilized with the given type of fertilizer.
- */
- public boolean canFertilizeBlock(World world, int x, int y, int z, FertilizerType fertilizerType);
-
- /**
- * @param world The world this block belongs to.
- * @param rand A Random instance to use when fertilizing, if necessary.
- * @param x The X coordinate of this block.
- * @param y The Y coordinate of this block.
- * @param z The Z coordinate of this block.
- * @param fertilizerType The kind of fertilizer being used.
- * @return True if fertilization was successful. If false, the Fertilizer will not consume a fertilizer item and will not drain power.
- */
- public boolean fertilize(World world, Random rand, int x, int y, int z, FertilizerType fertilizerType);
+public interface IFactoryFertilizable {
+ /**
+ * @return The block ID this instance is managing.
+ */
+ public int getFertilizableBlockId();
+
+ /**
+ * @param world The world this block belongs to.
+ * @param x The X coordinate of this block.
+ * @param y The Y coordinate of this block.
+ * @param z The Z coordinate of this block.
+ * @param fertilizerType The kind of fertilizer being used.
+ * @return True if the block at (x,y,z) can be fertilized with the given type of fertilizer.
+ */
+ public boolean canFertilizeBlock(World world, int x, int y, int z, FertilizerType fertilizerType);
+
+ /**
+ * @param world The world this block belongs to.
+ * @param rand A Random instance to use when fertilizing, if necessary.
+ * @param x The X coordinate of this block.
+ * @param y The Y coordinate of this block.
+ * @param z The Z coordinate of this block.
+ * @param fertilizerType The kind of fertilizer being used.
+ * @return True if fertilization was successful. If false, the Fertilizer will not consume a fertilizer item and will not drain power.
+ */
+ public boolean fertilize(World world, Random rand, int x, int y, int z, FertilizerType fertilizerType);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java
index 08589c121..9483895c3 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryFertilizer.java
@@ -4,30 +4,29 @@ import net.minecraft.item.ItemStack;
/**
* @author PowerCrystals
- *
- * Defines a fertilizer item for use in the Fertilizer.
+ *
+ * Defines a fertilizer item for use in the Fertilizer.
*/
-public interface IFactoryFertilizer
-{
- /**
- * @return The ID of this fertilizer item.
- */
- int getFertilizerId();
-
- /**
- * @return The metadata of this fertilizer item.
- */
- int getFertilizerMeta();
-
- /**
- * @return The type of fertilizer this is.
- */
- FertilizerType getFertilizerType();
-
- /**
- * Called when a fertilization is successful. If you set the ItemStack size to 0, it will be deleted by the fertilizer.
- *
- * @param fertilizer The ItemStack used to fertilize.
- */
- void consume(ItemStack fertilizer);
+public interface IFactoryFertilizer {
+ /**
+ * @return The ID of this fertilizer item.
+ */
+ int getFertilizerId();
+
+ /**
+ * @return The metadata of this fertilizer item.
+ */
+ int getFertilizerMeta();
+
+ /**
+ * @return The type of fertilizer this is.
+ */
+ FertilizerType getFertilizerType();
+
+ /**
+ * Called when a fertilization is successful. If you set the ItemStack size to 0, it will be deleted by the fertilizer.
+ *
+ * @param fertilizer The ItemStack used to fertilize.
+ */
+ void consume(ItemStack fertilizer);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryFruit.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryFruit.java
index 65ed9f96b..727471880 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryFruit.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryFruit.java
@@ -1,69 +1,72 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.List;
-import java.util.Random;
-
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import java.util.List;
+import java.util.Random;
+
/**
* Defines a fruit entry for the Fruit Picker.
- *
- * @author powercrystals
*
+ * @author powercrystals
*/
-public interface IFactoryFruit
-{
- /**
- * @return The block ID this fruit has in the world.
- */
- public int getSourceBlockId();
-
- /**
- * Used to determine if this fruit can be picked (is it ripe yet, etc)
- * @param world The world where the fruit is being picked
- * @param x The x-coordinate of the fruit
- * @param y The y-coordinate of the fruit
- * @param z The z-coordinate of the fruit
- * @return True if the fruit can be picked
- */
- public boolean canBePicked(World world, int x, int y, int z);
-
- /**
- * Called by the Fruit Picker to determine what block to replace the picked block with. Only ID and meta/damage will be used.
- * At the time this method is called, the fruit still exists. Do not pass an item ID as the return value.
- * @param world The world where the fruit is being picked
- * @param x The x-coordinate of the fruit
- * @param y The y-coordinate of the fruit
- * @param z The z-coordinate of the fruit
- * @return The block to replace the fruit block with, or null for air.
- */
- public ItemStack getReplacementBlock(World world, int x, int y, int z);
-
- /**
- * Called by the Fruit Picker before the fruit is picked.
- * @param world The world where the fruit is being picked
- * @param x The x-coordinate of the fruit
- * @param y The y-coordinate of the fruit
- * @param z The z-coordinate of the fruit
- */
- public void prePick(World world, int x, int y, int z);
-
- /**
- * Called by the Fruit Picker to determine what drops to generate. At the time this method is called, the fruit still exists.
- * @param world The world where the fruit is being picked
- * @param x The x-coordinate of the fruit
- * @param y The y-coordinate of the fruit
- * @param z The z-coordinate of the fruit
- */
- public List getDrops(World world, Random rand, int x, int y, int z);
-
- /**
- * Called by the Fruit Picker after the fruit is picked.
- * @param world The world where the fruit is being picked
- * @param x The x-coordinate of the fruit
- * @param y The y-coordinate of the fruit
- * @param z The z-coordinate of the fruit
- */
- public void postPick(World world, int x, int y, int z);
+public interface IFactoryFruit {
+ /**
+ * @return The block ID this fruit has in the world.
+ */
+ public int getSourceBlockId();
+
+ /**
+ * Used to determine if this fruit can be picked (is it ripe yet, etc)
+ *
+ * @param world The world where the fruit is being picked
+ * @param x The x-coordinate of the fruit
+ * @param y The y-coordinate of the fruit
+ * @param z The z-coordinate of the fruit
+ * @return True if the fruit can be picked
+ */
+ public boolean canBePicked(World world, int x, int y, int z);
+
+ /**
+ * Called by the Fruit Picker to determine what block to replace the picked block with. Only ID and meta/damage will be used.
+ * At the time this method is called, the fruit still exists. Do not pass an item ID as the return value.
+ *
+ * @param world The world where the fruit is being picked
+ * @param x The x-coordinate of the fruit
+ * @param y The y-coordinate of the fruit
+ * @param z The z-coordinate of the fruit
+ * @return The block to replace the fruit block with, or null for air.
+ */
+ public ItemStack getReplacementBlock(World world, int x, int y, int z);
+
+ /**
+ * Called by the Fruit Picker before the fruit is picked.
+ *
+ * @param world The world where the fruit is being picked
+ * @param x The x-coordinate of the fruit
+ * @param y The y-coordinate of the fruit
+ * @param z The z-coordinate of the fruit
+ */
+ public void prePick(World world, int x, int y, int z);
+
+ /**
+ * Called by the Fruit Picker to determine what drops to generate. At the time this method is called, the fruit still exists.
+ *
+ * @param world The world where the fruit is being picked
+ * @param x The x-coordinate of the fruit
+ * @param y The y-coordinate of the fruit
+ * @param z The z-coordinate of the fruit
+ */
+ public List getDrops(World world, Random rand, int x, int y, int z);
+
+ /**
+ * Called by the Fruit Picker after the fruit is picked.
+ *
+ * @param world The world where the fruit is being picked
+ * @param x The x-coordinate of the fruit
+ * @param y The y-coordinate of the fruit
+ * @param z The z-coordinate of the fruit
+ */
+ public void postPick(World world, int x, int y, int z);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
index bcc351059..20ac18ac1 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable.java
@@ -1,29 +1,30 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.List;
-import java.util.Random;
-
import net.minecraft.entity.EntityLiving;
import net.minecraft.world.World;
+import java.util.List;
+import java.util.Random;
+
/**
* @author PowerCrystals
- *
- * Defines a grindable entity for the Grinder.
+ *
+ * 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 grind(World world, EntityLiving entity, Random random);
+@Deprecated
+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 grind(World world, EntityLiving entity, Random random);
+
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable2.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable2.java
new file mode 100755
index 000000000..8b38b6b44
--- /dev/null
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryGrindable2.java
@@ -0,0 +1,37 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.world.World;
+
+import java.util.List;
+import java.util.Random;
+
+/**
+ * @author PowerCrystals
+ *
+ * Defines a grindable entity for the Grinder.
+ */
+@SuppressWarnings("deprecation")
+public interface IFactoryGrindable2 extends 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.
+ */
+ @Override
+ 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.
+ */
+ @Override
+ public List grind(World world, EntityLiving entity, Random random);
+
+ /**
+ * @param entity The entity instance being ground.
+ * @return Whether this entity has been fully processed or not.
+ */
+ public boolean processEntity(EntityLiving entity);
+}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java
index 63707375a..22e5f8818 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryHarvestable.java
@@ -1,71 +1,72 @@
package powercrystals.minefactoryreloaded.api;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
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.
+ *
+ * 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 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 getDrops(World world, Random rand, Map 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);
+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 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 getDrops(World world, Random rand, Map 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);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java
index 29bc7fbc6..a07de8e2b 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryPlantable.java
@@ -5,63 +5,64 @@ import net.minecraft.world.World;
/**
* @author PowerCrystals
- *
- * Defines a plantable object for use in the Planter.
+ *
+ * Defines a plantable object for use in the Planter.
*/
-public interface IFactoryPlantable
-{
- /**
- * @return The block or item ID this plantable is managing.
- */
- public int getSeedId();
-
- /**
- * @param world The world instance this block or item will be placed into.
- * @param x The destination X coordinate.
- * @param y The destination Y coordinate.
- * @param z The destination Z coordinate.
- * @param stack The stack being planted.
- * @return The block ID that will be placed into the world.
- */
- public int getPlantedBlockId(World world, int x, int y, int z, ItemStack stack);
-
- /**
- * @param world The world instance this block or item will be placed into.
- * @param x The destination X coordinate.
- * @param y The destination Y coordinate.
- * @param z The destination Z coordinate.
- * @param stack The stack being planted.
- * @return The block metadata that will be placed into the world.
- */
- public int getPlantedBlockMetadata(World world, int x, int y, int z, ItemStack stack);
-
- /**
- * @param world The world instance this block or item will be placed into.
- * @param x The destination X coordinate.
- * @param y The destination Y coordinate.
- * @param z The destination Z coordinate.
- * @param stack The stack being planted.
- * @return True if this plantable can be placed at the provided coordinates.
- */
- public boolean canBePlantedHere(World world, int x, int y, int z, ItemStack stack);
-
- /**
- * Called before planting is performed. Used to till soil, for example.
- * @param world The world instance this block or item will be placed into.
- * @param x The destination X coordinate.
- * @param y The destination Y coordinate.
- * @param z The destination Z coordinate.
- * @param stack The stack being planted.
- */
- public void prePlant(World world, int x, int y, int z, ItemStack stack);
-
- /**
- * Called after planting is performed. Usually empty.
- * @param world The world instance this block or item will be placed into.
- * @param x The destination X coordinate.
- * @param y The destination Y coordinate.
- * @param z The destination Z coordinate.
- * @param stack The stack being planted.
- */
- public void postPlant(World world, int x, int y, int z, ItemStack stack);
+public interface IFactoryPlantable {
+ /**
+ * @return The block or item ID this plantable is managing.
+ */
+ public int getSeedId();
+
+ /**
+ * @param world The world instance this block or item will be placed into.
+ * @param x The destination X coordinate.
+ * @param y The destination Y coordinate.
+ * @param z The destination Z coordinate.
+ * @param stack The stack being planted.
+ * @return The block ID that will be placed into the world.
+ */
+ public int getPlantedBlockId(World world, int x, int y, int z, ItemStack stack);
+
+ /**
+ * @param world The world instance this block or item will be placed into.
+ * @param x The destination X coordinate.
+ * @param y The destination Y coordinate.
+ * @param z The destination Z coordinate.
+ * @param stack The stack being planted.
+ * @return The block metadata that will be placed into the world.
+ */
+ public int getPlantedBlockMetadata(World world, int x, int y, int z, ItemStack stack);
+
+ /**
+ * @param world The world instance this block or item will be placed into.
+ * @param x The destination X coordinate.
+ * @param y The destination Y coordinate.
+ * @param z The destination Z coordinate.
+ * @param stack The stack being planted.
+ * @return True if this plantable can be placed at the provided coordinates.
+ */
+ public boolean canBePlantedHere(World world, int x, int y, int z, ItemStack stack);
+
+ /**
+ * Called before planting is performed. Used to till soil, for example.
+ *
+ * @param world The world instance this block or item will be placed into.
+ * @param x The destination X coordinate.
+ * @param y The destination Y coordinate.
+ * @param z The destination Z coordinate.
+ * @param stack The stack being planted.
+ */
+ public void prePlant(World world, int x, int y, int z, ItemStack stack);
+
+ /**
+ * Called after planting is performed. Usually empty.
+ *
+ * @param world The world instance this block or item will be placed into.
+ * @param x The destination X coordinate.
+ * @param y The destination Y coordinate.
+ * @param z The destination Z coordinate.
+ * @param stack The stack being planted.
+ */
+ public void postPlant(World world, int x, int y, int z, ItemStack stack);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java b/apis/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java
index 23fec3b68..95d8974dd 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFactoryRanchable.java
@@ -1,29 +1,28 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.List;
-
import net.minecraft.entity.EntityLiving;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import java.util.List;
+
/**
* @author PowerCrystals
- *
- * Defines a ranchable entity for use in the Rancher.
+ *
+ * Defines a ranchable entity for use in the Rancher.
*/
-public interface IFactoryRanchable
-{
- /**
- * @return The entity being ranched. Must be a subtype of EntityLiving.
- */
- public Class> getRanchableEntity();
-
- /**
- * @param world The world this entity is in.
- * @param entity The entity instance being ranched.
- * @param rancher The rancher instance doing the ranching. Used to access the Rancher's inventory when milking cows, for example.
- * @return A list of drops.
- */
- public List ranch(World world, EntityLiving entity, IInventory rancher);
+public interface IFactoryRanchable {
+ /**
+ * @return The entity being ranched. Must be a subtype of EntityLiving.
+ */
+ public Class extends EntityLiving> getRanchableEntity();
+
+ /**
+ * @param world The world this entity is in.
+ * @param entity The entity instance being ranched.
+ * @param rancher The rancher instance doing the ranching. Used to access the Rancher's inventory when milking cows, for example.
+ * @return A list of drops.
+ */
+ public List ranch(World world, EntityLiving entity, IInventory rancher);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java b/apis/powercrystals/minefactoryreloaded/api/IFluidDrinkHandler.java
similarity index 54%
rename from apis/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java
rename to apis/powercrystals/minefactoryreloaded/api/IFluidDrinkHandler.java
index 2ab4a5867..241ad8ac1 100755
--- a/apis/powercrystals/minefactoryreloaded/api/ILiquidDrinkHandler.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IFluidDrinkHandler.java
@@ -2,7 +2,6 @@ package powercrystals.minefactoryreloaded.api;
import net.minecraft.entity.player.EntityPlayer;
-public interface ILiquidDrinkHandler
-{
- public void onDrink(EntityPlayer player);
+public interface IFluidDrinkHandler {
+ public void onDrink(EntityPlayer player);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IMobEggHandler.java b/apis/powercrystals/minefactoryreloaded/api/IMobEggHandler.java
index a322f923f..8e9623055 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IMobEggHandler.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IMobEggHandler.java
@@ -5,14 +5,13 @@ import net.minecraft.item.ItemStack;
/**
* @author PowerCrystals
- *
- * Defines a class that MFR will use to local egg info for a given mob. This is used to color the Safari Net based on the captured mob.
+ *
+ * Defines a class that MFR will use to local egg info for a given mob. This is used to color the Safari Net based on the captured mob.
*/
-public interface IMobEggHandler
-{
- /**
- * @param safariNet The Safari Net that is looking for egg info.
- * @return An EntityEggInfo, or null if this instance cannot handle this mob.
- */
- public EntityEggInfo getEgg(ItemStack safariNet);
+public interface IMobEggHandler {
+ /**
+ * @param safariNet The Safari Net that is looking for egg info.
+ * @return An EntityEggInfo, or null if this instance cannot handle this mob.
+ */
+ public EntityEggInfo getEgg(ItemStack safariNet);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/INeedleAmmo.java b/apis/powercrystals/minefactoryreloaded/api/INeedleAmmo.java
new file mode 100755
index 000000000..8cee24417
--- /dev/null
+++ b/apis/powercrystals/minefactoryreloaded/api/INeedleAmmo.java
@@ -0,0 +1,13 @@
+package powercrystals.minefactoryreloaded.api;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+
+public interface INeedleAmmo {
+ public boolean onHitEntity(EntityPlayer owner, Entity hit, double distance);
+
+ public void onHitBlock(EntityPlayer owner, World world, int x, int y, int z, int side, double distance);
+
+ public float getSpread();
+}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java b/apis/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java
index b03d6f08a..96ae6854e 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IRandomMobProvider.java
@@ -1,11 +1,10 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.List;
-
import net.minecraft.world.World;
+import java.util.List;
-public interface IRandomMobProvider
-{
- public List getRandomMobs(World world);
+
+public interface IRandomMobProvider {
+ public List getRandomMobs(World world);
}
\ No newline at end of file
diff --git a/apis/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java b/apis/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java
index 370017956..a2d2f8834 100755
--- a/apis/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java
+++ b/apis/powercrystals/minefactoryreloaded/api/ISafariNetHandler.java
@@ -1,28 +1,27 @@
package powercrystals.minefactoryreloaded.api;
-import java.util.List;
-
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
+import java.util.List;
+
/**
* @author PowerCrystals
- *
- * Defines an object that can display information about a captured mob in a Safari net.
+ *
+ * Defines an object that can display information about a captured mob in a Safari net.
*/
-public interface ISafariNetHandler
-{
- /**
- * @return The class of mob that this handler applies to.
- */
- public Class> validFor();
-
- /**
- * @param safariNetStack The Safari Net that is requesting information.
- * @param player The player holding the Safari Net.
- * @param infoList The current list of information strings. Add yours to this.
- * @param advancedTooltips True if the advanced tooltips option is on.
- */
- @SuppressWarnings("rawtypes")
- public void addInformation(ItemStack safariNetStack, EntityPlayer player, List infoList, boolean advancedTooltips);
+public interface ISafariNetHandler {
+ /**
+ * @return The class of mob that this handler applies to.
+ */
+ public Class> validFor();
+
+ /**
+ * @param safariNetStack The Safari Net that is requesting information.
+ * @param player The player holding the Safari Net.
+ * @param infoList The current list of information strings. Add yours to this.
+ * @param advancedTooltips True if the advanced tooltips option is on.
+ */
+ @SuppressWarnings("rawtypes")
+ public void addInformation(ItemStack safariNetStack, EntityPlayer player, List infoList, boolean advancedTooltips);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/ISyringe.java b/apis/powercrystals/minefactoryreloaded/api/ISyringe.java
index 5521d4513..2ea317a05 100755
--- a/apis/powercrystals/minefactoryreloaded/api/ISyringe.java
+++ b/apis/powercrystals/minefactoryreloaded/api/ISyringe.java
@@ -6,26 +6,31 @@ import net.minecraft.world.World;
/**
* @author PowerCrystals
- *
- * Defines a syringe for use in the Vet machine.
+ *
+ * Defines a syringe for use in the Vet machine.
*/
-public interface ISyringe
-{
- /**
- * Called when the vet is deciding if it should use this syringe.
- * @param world The world instance.
- * @param entity The entity being injected.
- * @param syringe The syringe ItemStack.
- * @return True if the entity can be injected by this syringe.
- */
- public boolean canInject(World world, EntityLiving entity, ItemStack syringe);
-
- /**
- * Called to perform an injection.
- * @param world The world instance.
- * @param entity The entity being injected.
- * @param syringe The syringe ItemStack.
- * @return True if injection was successful.
- */
- public boolean inject(World world, EntityLiving entity, ItemStack syringe);
+public interface ISyringe {
+ /**
+ * Called when the vet is deciding if it should use this syringe.
+ *
+ *
+ *
+ * @param world The world instance.
+ * @param entity The entity being injected.
+ * @param syringe The syringe ItemStack.
+ * @return True if the entity can be injected by this syringe.
+ */
+ public boolean canInject(World world, EntityLiving entity, ItemStack syringe);
+
+ /**
+ * Called to perform an injection.
+ *
+ *
+ *
+ * @param world The world instance.
+ * @param entity The entity being injected.
+ * @param syringe The syringe ItemStack.
+ * @return True if injection was successful.
+ */
+ public boolean inject(World world, EntityLiving entity, ItemStack syringe);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IToolHammer.java b/apis/powercrystals/minefactoryreloaded/api/IToolHammer.java
index 09ce77713..3890da79e 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IToolHammer.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IToolHammer.java
@@ -2,8 +2,7 @@ package powercrystals.minefactoryreloaded.api;
/**
* @author PowerCrystals
- * Defines a tool that can rotate MFR machines. Implement on an Item class. Requires no additional work on your part.
+ * Defines a tool that can rotate MFR machines. Implement on an Item class. Requires no additional work on your part.
*/
-public interface IToolHammer
-{
+public interface IToolHammer {
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/IToolHammerAdvanced.java b/apis/powercrystals/minefactoryreloaded/api/IToolHammerAdvanced.java
index 9c4523495..0134741bc 100755
--- a/apis/powercrystals/minefactoryreloaded/api/IToolHammerAdvanced.java
+++ b/apis/powercrystals/minefactoryreloaded/api/IToolHammerAdvanced.java
@@ -4,13 +4,12 @@ import net.minecraft.item.ItemStack;
/**
* @author PowerCrystals
- *
- * This interface is like IToolHammer, but is for items that change state on a per-stack basis. Implement this
- * instead of IToolHammer - not both!
- *
- * This interface will replace IToolHammer in MC 1.6.
+ *
+ * This interface is like IToolHammer, but is for items that change state on a per-stack basis. Implement this
+ * instead of IToolHammer - not both!
+ *
+ * This interface will replace IToolHammer in MC 1.6.
*/
-public interface IToolHammerAdvanced
-{
- public boolean isActive(ItemStack stack);
+public interface IToolHammerAdvanced {
+ public boolean isActive(ItemStack stack);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/MobDrop.java b/apis/powercrystals/minefactoryreloaded/api/MobDrop.java
index c6c6dcb36..8e52eb7ed 100755
--- a/apis/powercrystals/minefactoryreloaded/api/MobDrop.java
+++ b/apis/powercrystals/minefactoryreloaded/api/MobDrop.java
@@ -3,19 +3,16 @@ 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();
- }
+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();
+ }
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/RandomMob.java b/apis/powercrystals/minefactoryreloaded/api/RandomMob.java
index 063699dd6..6e04c052e 100755
--- a/apis/powercrystals/minefactoryreloaded/api/RandomMob.java
+++ b/apis/powercrystals/minefactoryreloaded/api/RandomMob.java
@@ -3,19 +3,16 @@ package powercrystals.minefactoryreloaded.api;
import net.minecraft.entity.Entity;
import net.minecraft.util.WeightedRandomItem;
-public class RandomMob extends WeightedRandomItem
-{
- private Entity _mob;
-
- public RandomMob(Entity savedMob, int weight)
- {
- super(weight);
- _mob = savedMob;
- }
-
- public Entity getMob()
- {
- if(_mob == null) return null;
- return _mob;
- }
+public class RandomMob extends WeightedRandomItem {
+ private Entity _mob;
+
+ public RandomMob(Entity savedMob, int weight) {
+ super(weight);
+ _mob = savedMob;
+ }
+
+ public Entity getMob() {
+ if (_mob == null) return null;
+ return _mob;
+ }
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/rednet/IConnectableRedNet.java b/apis/powercrystals/minefactoryreloaded/api/rednet/IConnectableRedNet.java
index 50ece4cda..4f71df814 100755
--- a/apis/powercrystals/minefactoryreloaded/api/rednet/IConnectableRedNet.java
+++ b/apis/powercrystals/minefactoryreloaded/api/rednet/IConnectableRedNet.java
@@ -4,7 +4,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
/**
- * Defines a Block that can connect to RedNet wires. This must be implemented on your Block class.
+ * Defines a Block that can connect to RedNet cables. This must be implemented on your Block class.
* Note that when you implement this, the RedNet network makes several assumptions about your code -
* primarily, it will not clamp values to 0 <= x <= 15. This means you must be able to accept any
* possible integer without crashing, even negatives. It will also assume that calling the onInput(s)Changed()
@@ -12,69 +12,79 @@ import net.minecraftforge.common.ForgeDirection;
* output methods in All mode, and will only query the methods contained in this interface in that case. In Single
* mode, it will call onInputChanged, and will check for strong power (or weak if in Plate mode) through the vanilla
* method calls.
+ *
+ * RedNet cables have their subnets indicated to the user by colored bands on the cable.
+ * The color of a given subnet is the same as the wool with metadata equal to the subnet number.
+ * For reference:
+ * 0:White, 1:Orange, 2:Magenta, 3:LightBlue, 4:Yellow, 5:Lime, 6:Pink, 7:Gray,
+ * 8:LightGray, 9:Cyan, 10:Purple, 11:Blue, 12:Brown, 13:Green, 14:Red, 15:Black
*/
-public interface IConnectableRedNet
-{
- /**
- * Returns the connection type of this Block. "All" types will cause getOutputValues() and onInputsChanged() to be used,
- * whereas "Single" types will onInputChanged() to be called for input changes and the normal redstone power output methods
- * to be called for output. If this value must be changed while the block is alive, it must perform a block update on any
- * adjacent RedNet wires.
- * @param world The world this block is in.
- * @param x This block's X coordinate.
- * @param y This block's Y coordinate.
- * @param z This block's Z coordinate.
- * @param side The side that connection information is required for.
- * @return The connection type.
- */
- public RedNetConnectionType getConnectionType(World world, int x, int y, int z, ForgeDirection side);
-
- /**
- * Returns the output values of this RedNet node. This array must be 16 elements long. Only called if your block is connected in "All" mode.
- * @param world The world this block is in.
- * @param x This block's X coordinate.
- * @param y This block's Y coordinate.
- * @param z This block's Z coordinate.
- * @param side The side the output values are required for.
- * @return The output values.
- */
- public int[] getOutputValues(World world, int x, int y, int z, ForgeDirection side);
-
- /**
- * Returns the output value of this RedNet node for a given subnet. Only called if your block is connected in "All" mode.
- * @param world The world this block is in.
- * @param x This block's X coordinate.
- * @param y This block's Y coordinate.
- * @param z This block's Z coordinate.
- * @param side The side the output value is required for.
- * @param subnet The subnet to get the output value for (0-15).
- * @return The output value.
- */
- public int getOutputValue(World world, int x, int y, int z, ForgeDirection side, int subnet);
-
- /**
- * Called when the input values to this block change. Only called if your block is connected in "All" mode.
- * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates
- * on the next tick.
- * @param world The world this block is in.
- * @param x This block's X coordinate.
- * @param y This block's Y coordinate.
- * @param z This block's Z coordinate.
- * @param side The side the input values are being changed on.
- * @param inputValues The new set of input values. This array will be 16 elements long.
- */
- public void onInputsChanged(World world, int x, int y, int z, ForgeDirection side, int[] inputValues);
-
- /**
- * Called when the input value to this block changes. Only called if your block is connected in "Single" mode.
- * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates
- * on the next tick.
- * @param world The world this block is in.
- * @param x This block's X coordinate.
- * @param y This block's Y coordinate.
- * @param z This block's Z coordinate.
- * @param side The side the input values are being changed on.
- * @param inputValue The new input value
- */
- public void onInputChanged(World world, int x, int y, int z, ForgeDirection side, int inputValue);
+public interface IConnectableRedNet {
+ /**
+ * Returns the connection type of this Block. "All" types will cause getOutputValues() and onInputsChanged() to be used,
+ * whereas "Single" types will onInputChanged() to be called for input changes and the normal redstone power output methods
+ * to be called for output. If this value must be changed while the block is alive, it must perform a block update on any
+ * adjacent RedNet wires.
+ *
+ * @param world The world this block is in.
+ * @param x This block's X coordinate.
+ * @param y This block's Y coordinate.
+ * @param z This block's Z coordinate.
+ * @param side The side that connection information is required for.
+ * @return The connection type.
+ */
+ public RedNetConnectionType getConnectionType(World world, int x, int y, int z, ForgeDirection side);
+
+ /**
+ * Returns the output values of this RedNet node. This array must be 16 elements long. Only called if your block is connected in "All" mode.
+ *
+ * @param world The world this block is in.
+ * @param x This block's X coordinate.
+ * @param y This block's Y coordinate.
+ * @param z This block's Z coordinate.
+ * @param side The side the output values are required for.
+ * @return The output values.
+ */
+ public int[] getOutputValues(World world, int x, int y, int z, ForgeDirection side);
+
+ /**
+ * Returns the output value of this RedNet node for a given subnet. Only called if your block is connected in "All" mode.
+ *
+ * @param world The world this block is in.
+ * @param x This block's X coordinate.
+ * @param y This block's Y coordinate.
+ * @param z This block's Z coordinate.
+ * @param side The side the output value is required for.
+ * @param subnet The subnet to get the output value for (0-15).
+ * @return The output value.
+ */
+ public int getOutputValue(World world, int x, int y, int z, ForgeDirection side, int subnet);
+
+ /**
+ * Called when the input values to this block change. Only called if your block is connected in "All" mode.
+ * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates
+ * on the next tick.
+ *
+ * @param world The world this block is in.
+ * @param x This block's X coordinate.
+ * @param y This block's Y coordinate.
+ * @param z This block's Z coordinate.
+ * @param side The side the input values are being changed on.
+ * @param inputValues The new set of input values. This array will be 16 elements long.
+ */
+ public void onInputsChanged(World world, int x, int y, int z, ForgeDirection side, int[] inputValues);
+
+ /**
+ * Called when the input value to this block changes. Only called if your block is connected in "Single" mode.
+ * Do not issue a network value update from inside this method call; it will be ignored. Issue your updates
+ * on the next tick.
+ *
+ * @param world The world this block is in.
+ * @param x This block's X coordinate.
+ * @param y This block's Y coordinate.
+ * @param z This block's Z coordinate.
+ * @param side The side the input values are being changed on.
+ * @param inputValue The new input value
+ */
+ public void onInputChanged(World world, int x, int y, int z, ForgeDirection side, int inputValue);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java
index 0bbbeeb9b..309eacb5a 100755
--- a/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java
+++ b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetLogicCircuit.java
@@ -2,18 +2,20 @@ package powercrystals.minefactoryreloaded.api.rednet;
import net.minecraft.nbt.NBTTagCompound;
-public interface IRedNetLogicCircuit
-{
- public int getInputCount();
-
- public int getOutputCount();
-
- public int[] recalculateOutputValues(long worldTime, int[] inputValues);
-
- public String getUnlocalizedName();
- public String getInputPinLabel(int pin);
- public String getOutputPinLabel(int pin);
-
- public void readFromNBT(NBTTagCompound tag);
- public void writeToNBT(NBTTagCompound tag);
+public interface IRedNetLogicCircuit {
+ public int getInputCount();
+
+ public int getOutputCount();
+
+ public int[] recalculateOutputValues(long worldTime, int[] inputValues);
+
+ public String getUnlocalizedName();
+
+ public String getInputPinLabel(int pin);
+
+ public String getOutputPinLabel(int pin);
+
+ public void readFromNBT(NBTTagCompound tag);
+
+ public void writeToNBT(NBTTagCompound tag);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java
index 5e27b1fe9..ff4b8bdb3 100755
--- a/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java
+++ b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNetworkContainer.java
@@ -3,29 +3,28 @@ package powercrystals.minefactoryreloaded.api.rednet;
import net.minecraft.world.World;
/**
- *
* You should not implement this yourself. Instead, use this to look for cables to notify from your IConnectableRedNet as this does not
* require a block update. This will be implemented on the cable's Block class.
- *
*/
-public interface IRedNetNetworkContainer
-{
- /**
- * Tells the network to recalculate all subnets.
- * @param world The world this cable is in.
- * @param x The x-coordinate of this cable.
- * @param x The y-coordinate of this cable.
- * @param x The z-coordinate of this cable.
- */
- public void updateNetwork(World world, int x, int y, int z);
-
- /**
- * Tells the network to recalculate a specific subnet.
- * @param world The world this cable is in.
- * @param x The x-coordinate of this cable.
- * @param x The y-coordinate of this cable.
- * @param x The z-coordinate of this cable.
- * @param subnet The subnet to recalculate.
- */
- public void updateNetwork(World world, int x, int y, int z, int subnet);
+public interface IRedNetNetworkContainer {
+ /**
+ * Tells the network to recalculate all subnets.
+ *
+ * @param world The world this cable is in.
+ * @param x The x-coordinate of this cable.
+ * @param x The y-coordinate of this cable.
+ * @param x The z-coordinate of this cable.
+ */
+ public void updateNetwork(World world, int x, int y, int z);
+
+ /**
+ * Tells the network to recalculate a specific subnet.
+ *
+ * @param world The world this cable is in.
+ * @param x The x-coordinate of this cable.
+ * @param x The y-coordinate of this cable.
+ * @param x The z-coordinate of this cable.
+ * @param subnet The subnet to recalculate.
+ */
+ public void updateNetwork(World world, int x, int y, int z, int subnet);
}
diff --git a/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNoConnection.java b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNoConnection.java
new file mode 100755
index 000000000..fad68962a
--- /dev/null
+++ b/apis/powercrystals/minefactoryreloaded/api/rednet/IRedNetNoConnection.java
@@ -0,0 +1,5 @@
+package powercrystals.minefactoryreloaded.api.rednet;
+
+public interface IRedNetNoConnection {
+
+}
diff --git a/apis/powercrystals/minefactoryreloaded/api/rednet/RedNetConnectionType.java b/apis/powercrystals/minefactoryreloaded/api/rednet/RedNetConnectionType.java
index 58b08a461..f0e72419e 100755
--- a/apis/powercrystals/minefactoryreloaded/api/rednet/RedNetConnectionType.java
+++ b/apis/powercrystals/minefactoryreloaded/api/rednet/RedNetConnectionType.java
@@ -1,10 +1,9 @@
package powercrystals.minefactoryreloaded.api.rednet;
-public enum RedNetConnectionType
-{
- None,
- CableSingle,
- PlateSingle,
- CableAll,
- PlateAll
+public enum RedNetConnectionType {
+ None,
+ CableSingle,
+ PlateSingle,
+ CableAll,
+ PlateAll
}