commit
20b206426d
6 changed files with 152 additions and 0 deletions
|
@ -54,6 +54,8 @@ import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
import rebelkeithy.mods.metallurgy.api.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mekanism - the mod in which no true definition fits.
|
* Mekanism - the mod in which no true definition fits.
|
||||||
* @author AidanBrady
|
* @author AidanBrady
|
||||||
|
@ -978,7 +980,59 @@ public class Mekanism
|
||||||
RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), MekanismUtils.getStackWithSize(OreDictionary.getOres("oreSilver").get(0), 1));
|
RecipeHandler.addCombinerRecipe(MekanismUtils.getStackWithSize(ore, 8), MekanismUtils.getStackWithSize(OreDictionary.getOres("oreSilver").get(0), 1));
|
||||||
}
|
}
|
||||||
} catch(Exception e) {}
|
} catch(Exception e) {}
|
||||||
|
/** Here we go through every Metallurgy metal set and add recipes to handle the new metals added
|
||||||
|
* There is no API way to iterate all the metal types, so we use hardcode :( */
|
||||||
|
if(hooks.MetallurgyCoreLoaded){
|
||||||
|
try{
|
||||||
|
String[] setNames = {"base", "precious", "nether", "fantasy", "ender", "utility"};
|
||||||
|
for (String setName : setNames ){
|
||||||
|
for (IOreInfo oreInfo : MetallurgyAPI.getMetalSet(setName).getOreList().values()){
|
||||||
|
switch (oreInfo.getType()) {
|
||||||
|
/** Alloy metal don't drop, they are only produced by combining other metals
|
||||||
|
* only adding crusher
|
||||||
|
*/
|
||||||
|
case ALLOY: {
|
||||||
|
if (oreInfo.getIngot() != null && oreInfo.getDust() != null){
|
||||||
|
RecipeHandler.addCrusherRecipe(MekanismUtils.getStackWithSize(oreInfo.getIngot() ,1), MekanismUtils.getStackWithSize(oreInfo.getDust(),1));
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** DROP-type ores normally drop something else then the ore itself, so here we add
|
||||||
|
* bonus items given by enrichment chamber if silk touch or other way gives the player the ore block
|
||||||
|
* Maybe add combiner recipe, but seems pointless now
|
||||||
|
*/
|
||||||
|
case DROP: {
|
||||||
|
ItemStack ore = oreInfo.getOre();
|
||||||
|
ItemStack drop = oreInfo.getDrop();
|
||||||
|
if(drop != null && ore != null){
|
||||||
|
RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.getStackWithSize(ore, 1), MekanismUtils.getStackWithSize(drop, 12));
|
||||||
|
//maybe combiner recipe too
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/** For all other types we don't really care, just try the general stencil*/
|
||||||
|
default: {
|
||||||
|
ItemStack ore = oreInfo.getOre();
|
||||||
|
ItemStack dust = oreInfo.getDust();
|
||||||
|
ItemStack ingot = oreInfo.getIngot();
|
||||||
|
if (ore != null && dust != null){
|
||||||
|
RecipeHandler.addEnrichmentChamberRecipe(MekanismUtils.getStackWithSize(ore ,1), MekanismUtils.getStackWithSize(dust,2));
|
||||||
|
}
|
||||||
|
if (ingot != null && dust != null){
|
||||||
|
RecipeHandler.addCrusherRecipe(MekanismUtils.getStackWithSize(ingot ,1), MekanismUtils.getStackWithSize(dust,1));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Exception e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds and registers all entities and tile entities.
|
* Adds and registers all entities and tile entities.
|
||||||
|
|
|
@ -41,6 +41,9 @@ public final class MekanismHooks
|
||||||
public boolean ForestryLoaded = false;
|
public boolean ForestryLoaded = false;
|
||||||
public boolean TELoaded = false;
|
public boolean TELoaded = false;
|
||||||
|
|
||||||
|
public boolean MetallurgyCoreLoaded = false;
|
||||||
|
public boolean MetallurgyBaseLoaded = false;
|
||||||
|
|
||||||
public void hook()
|
public void hook()
|
||||||
{
|
{
|
||||||
if(Loader.isModLoaded("IC2")) IC2Loaded = true;
|
if(Loader.isModLoaded("IC2")) IC2Loaded = true;
|
||||||
|
@ -49,6 +52,10 @@ public final class MekanismHooks
|
||||||
if(Loader.isModLoaded("BuildCraft|Energy")) BuildCraftLoaded = true;
|
if(Loader.isModLoaded("BuildCraft|Energy")) BuildCraftLoaded = true;
|
||||||
if(Loader.isModLoaded("Forestry")) ForestryLoaded = true;
|
if(Loader.isModLoaded("Forestry")) ForestryLoaded = true;
|
||||||
if(Loader.isModLoaded("ThermalExpansion")) TELoaded = true;
|
if(Loader.isModLoaded("ThermalExpansion")) TELoaded = true;
|
||||||
|
if(Loader.isModLoaded("Metallurgy3Core")) {
|
||||||
|
MetallurgyCoreLoaded = true;
|
||||||
|
if(Loader.isModLoaded("Metallurgy3Base")) MetallurgyBaseLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(IC2Loaded)
|
if(IC2Loaded)
|
||||||
{
|
{
|
||||||
|
|
10
src/minecraft/rebelkeithy/mods/metallurgy/api/IMetalSet.java
Normal file
10
src/minecraft/rebelkeithy/mods/metallurgy/api/IMetalSet.java
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package rebelkeithy.mods.metallurgy.api;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface IMetalSet
|
||||||
|
{
|
||||||
|
public IOreInfo getOreInfo(String name);
|
||||||
|
public IOreInfo getOreInfo(int metadata);
|
||||||
|
public Map<String, IOreInfo> getOreList();
|
||||||
|
}
|
29
src/minecraft/rebelkeithy/mods/metallurgy/api/IOreInfo.java
Normal file
29
src/minecraft/rebelkeithy/mods/metallurgy/api/IOreInfo.java
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
package rebelkeithy.mods.metallurgy.api;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IOreInfo
|
||||||
|
{
|
||||||
|
public String getName();
|
||||||
|
public OreType getType();
|
||||||
|
|
||||||
|
public ItemStack getOre();
|
||||||
|
public ItemStack getBlock();
|
||||||
|
public ItemStack getBrick();
|
||||||
|
|
||||||
|
// Returns the itemstack of dust this ore crushes into, if no dust exists, returns null
|
||||||
|
public ItemStack getDust();
|
||||||
|
|
||||||
|
// Returns the itemstack of ingot for this ore, if no ingot exists, returns null
|
||||||
|
public ItemStack getIngot();
|
||||||
|
|
||||||
|
// If this ore drops something other than itself, this returns the ItemStack
|
||||||
|
// of the drop, otherwise returns null
|
||||||
|
public ItemStack getDrop();
|
||||||
|
public int getDropAmountMin();
|
||||||
|
public int getDropAmountMax();
|
||||||
|
|
||||||
|
// Returns an array of OreDictionary keys of the dusts the make this if it's an alloy
|
||||||
|
// if it's not an alloy, this returns null
|
||||||
|
public String[] getAlloyRecipe();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
package rebelkeithy.mods.metallurgy.api;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
public class MetallurgyAPI
|
||||||
|
{
|
||||||
|
|
||||||
|
// Values for name: "base", "precious", "nether", "fantasy", "ender", "utility"
|
||||||
|
public static IMetalSet getMetalSet(String name)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Class metallurgyMetals = Class.forName("rebelkeithy.mods.metallurgy.metals.MetallurgyMetals");
|
||||||
|
Field set = metallurgyMetals.getField(name + "Set");
|
||||||
|
return (IMetalSet) set.get(null);
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
18
src/minecraft/rebelkeithy/mods/metallurgy/api/OreType.java
Normal file
18
src/minecraft/rebelkeithy/mods/metallurgy/api/OreType.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package rebelkeithy.mods.metallurgy.api;
|
||||||
|
|
||||||
|
public enum OreType {
|
||||||
|
|
||||||
|
ORE(true), CATALYST(true), ALLOY(false), RESPAWN(true), DROP(true);
|
||||||
|
|
||||||
|
private boolean generates;
|
||||||
|
|
||||||
|
OreType(boolean generates)
|
||||||
|
{
|
||||||
|
this.generates = generates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean generates()
|
||||||
|
{
|
||||||
|
return generates;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue