Merge pull request #515 from OneEyeMaker/OreProcessing

Added configuration file, that enables processing of ores
This commit is contained in:
Blood-Asp 2016-05-27 20:07:37 +02:00
commit 35a7a99808
4 changed files with 101 additions and 41 deletions

4
.gitignore vendored
View file

@ -75,3 +75,7 @@ local.properties
gradle/wrapper/gradle-wrapper.properties gradle/wrapper/gradle-wrapper.properties
gradlew gradlew
gradlew.bat gradlew.bat
# Linux
*~

View file

@ -1,15 +1,17 @@
package gregtech; package gregtech;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.*;
import java.util.Map.Entry;
import cpw.mods.fml.common.*; import cpw.mods.fml.common.*;
import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.EntityRegistry;
import forestry.api.core.ForestryAPI;
import forestry.api.recipes.ICentrifugeRecipe; import forestry.api.recipes.ICentrifugeRecipe;
import forestry.api.recipes.ISqueezerRecipe; import forestry.api.recipes.ISqueezerRecipe;
import forestry.api.recipes.RecipeManagers; import forestry.api.recipes.RecipeManagers;
//import forestry.factory.recipes.ISqueezerRecipe;
//import forestry.factory.tiles.TileCentrifuge;
//import forestry.factory.tiles.TileSqueezer;
import gregtech.api.GregTech_API; import gregtech.api.GregTech_API;
import gregtech.api.enchants.Enchantment_EnderDamage; import gregtech.api.enchants.Enchantment_EnderDamage;
import gregtech.api.enchants.Enchantment_Radioactivity; import gregtech.api.enchants.Enchantment_Radioactivity;
@ -32,6 +34,7 @@ import gregtech.loaders.load.GT_SonictronLoader;
import gregtech.loaders.misc.GT_Achievements; import gregtech.loaders.misc.GT_Achievements;
import gregtech.loaders.misc.GT_Bees; import gregtech.loaders.misc.GT_Bees;
import gregtech.loaders.misc.GT_CoverLoader; import gregtech.loaders.misc.GT_CoverLoader;
import gregtech.loaders.misc.OreProcessingConfiguration;
import gregtech.loaders.postload.*; import gregtech.loaders.postload.*;
import gregtech.loaders.preload.*; import gregtech.loaders.preload.*;
import ic2.api.recipe.IRecipeInput; import ic2.api.recipe.IRecipeInput;
@ -53,11 +56,9 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import java.io.File; //import forestry.factory.recipes.ISqueezerRecipe;
import java.io.FileNotFoundException; //import forestry.factory.tiles.TileCentrifuge;
import java.io.PrintStream; //import forestry.factory.tiles.TileSqueezer;
import java.util.*;
import java.util.Map.Entry;
@Mod(modid = "gregtech", name = "GregTech", version = "MC1710", useMetadata = false, dependencies = "required-after:IC2; after:Forestry; after:PFAAGeologica; after:Thaumcraft; after:Railcraft; after:appliedenergistics2; after:ThermalExpansion; after:TwilightForest; after:harvestcraft; after:magicalcrops; after:BuildCraft|Transport; after:BuildCraft|Silicon; after:BuildCraft|Factory; after:BuildCraft|Energy; after:BuildCraft|Core; after:BuildCraft|Builders; after:GalacticraftCore; after:GalacticraftMars; after:GalacticraftPlanets; after:ThermalExpansion|Transport; after:ThermalExpansion|Energy; after:ThermalExpansion|Factory; after:RedPowerCore; after:RedPowerBase; after:RedPowerMachine; after:RedPowerCompat; after:RedPowerWiring; after:RedPowerLogic; after:RedPowerLighting; after:RedPowerWorld; after:RedPowerControl;") @Mod(modid = "gregtech", name = "GregTech", version = "MC1710", useMetadata = false, dependencies = "required-after:IC2; after:Forestry; after:PFAAGeologica; after:Thaumcraft; after:Railcraft; after:appliedenergistics2; after:ThermalExpansion; after:TwilightForest; after:harvestcraft; after:magicalcrops; after:BuildCraft|Transport; after:BuildCraft|Silicon; after:BuildCraft|Factory; after:BuildCraft|Energy; after:BuildCraft|Core; after:BuildCraft|Builders; after:GalacticraftCore; after:GalacticraftMars; after:GalacticraftPlanets; after:ThermalExpansion|Transport; after:ThermalExpansion|Energy; after:ThermalExpansion|Factory; after:RedPowerCore; after:RedPowerBase; after:RedPowerMachine; after:RedPowerCompat; after:RedPowerWiring; after:RedPowerLogic; after:RedPowerLighting; after:RedPowerWorld; after:RedPowerControl;")
@ -250,7 +251,7 @@ public class GT_Mod
gregtechproxy.mHarvestLevel[tMaterial.mMetaItemSubID] = GregTech_API.sMaterialProperties.get("materialHavestLevel", tMaterial.mDefaultLocalName,tMaterial.mToolQuality); gregtechproxy.mHarvestLevel[tMaterial.mMetaItemSubID] = GregTech_API.sMaterialProperties.get("materialHavestLevel", tMaterial.mDefaultLocalName,tMaterial.mToolQuality);
} }
}} }}
if (tMainConfig.get("general", "hardermobspawners", true).getBoolean(true)) { if (tMainConfig.get("general", "hardermobspawners", true).getBoolean(true)) {
Blocks.mob_spawner.setHardness(500.0F).setResistance(6000000.0F); Blocks.mob_spawner.setHardness(500.0F).setResistance(6000000.0F);
} }
@ -297,6 +298,8 @@ public class GT_Mod
new Enchantment_EnderDamage(); new Enchantment_EnderDamage();
new Enchantment_Radioactivity(); new Enchantment_Radioactivity();
new OreProcessingConfiguration(aEvent.getModConfigurationDirectory()).run();
new GT_Loader_OreProcessing().run(); new GT_Loader_OreProcessing().run();
new GT_Loader_OreDictionary().run(); new GT_Loader_OreDictionary().run();
new GT_Loader_ItemData().run(); new GT_Loader_ItemData().run();
@ -671,7 +674,7 @@ public class GT_Mod
} }
} }
} }
if(GregTech_API.mOutputRF||GregTech_API.mInputRF){ if(GregTech_API.mOutputRF||GregTech_API.mInputRF){
GT_Utility.checkAvailabilities(); GT_Utility.checkAvailabilities();
if(!GT_Utility.RF_CHECK){ if(!GT_Utility.RF_CHECK){
@ -679,7 +682,7 @@ public class GT_Mod
GregTech_API.mInputRF = false; GregTech_API.mInputRF = false;
} }
} }
achievements = new GT_Achievements(); achievements = new GT_Achievements();
Map.Entry<IRecipeInput, RecipeOutput> tRecipe; Map.Entry<IRecipeInput, RecipeOutput> tRecipe;
GT_Log.out.println("GT_Mod: Loading finished, deallocating temporary Init Variables."); GT_Log.out.println("GT_Mod: Loading finished, deallocating temporary Init Variables.");

View file

@ -1,5 +1,9 @@
package gregtech.common; package gregtech.common;
import java.io.File;
import java.text.DateFormat;
import java.util.*;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.IFuelHandler; import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Loader;
@ -28,12 +32,7 @@ import gregtech.api.objects.MaterialStack;
import gregtech.api.util.*; import gregtech.api.util.*;
import gregtech.common.entities.GT_Entity_Arrow; import gregtech.common.entities.GT_Entity_Arrow;
import gregtech.common.items.GT_MetaGenerated_Tool_01; import gregtech.common.items.GT_MetaGenerated_Tool_01;
import gregtech.common.items.armor.ContainerBasicArmor; import gregtech.common.items.armor.*;
import gregtech.common.items.armor.ContainerElectricArmor1;
import gregtech.common.items.armor.GuiElectricArmor1;
import gregtech.common.items.armor.GuiModularArmor;
import gregtech.common.items.armor.InventoryArmor;
import gregtech.common.items.armor.ModularArmor_Item;
import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -76,21 +75,17 @@ import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe;
import java.io.File;
import java.text.DateFormat;
import java.util.*;
public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
private static final EnumSet<OreGenEvent.GenerateMinable.EventType> PREVENTED_ORES = EnumSet.of(OreGenEvent.GenerateMinable.EventType.COAL, private static final EnumSet<OreGenEvent.GenerateMinable.EventType> PREVENTED_ORES = EnumSet.of(OreGenEvent.GenerateMinable.EventType.COAL,
new OreGenEvent.GenerateMinable.EventType[]{OreGenEvent.GenerateMinable.EventType.IRON, OreGenEvent.GenerateMinable.EventType.GOLD, new OreGenEvent.GenerateMinable.EventType[]{OreGenEvent.GenerateMinable.EventType.IRON, OreGenEvent.GenerateMinable.EventType.GOLD,
OreGenEvent.GenerateMinable.EventType.DIAMOND, OreGenEvent.GenerateMinable.EventType.REDSTONE, OreGenEvent.GenerateMinable.EventType.LAPIS, OreGenEvent.GenerateMinable.EventType.DIAMOND, OreGenEvent.GenerateMinable.EventType.REDSTONE, OreGenEvent.GenerateMinable.EventType.LAPIS,
OreGenEvent.GenerateMinable.EventType.QUARTZ}); OreGenEvent.GenerateMinable.EventType.QUARTZ});
public final HashSet<ItemStack> mRegisteredOres = new HashSet(10000); public final HashSet<ItemStack> mRegisteredOres = new HashSet<ItemStack>(10000);
public final ArrayList<String> mSoundNames = new ArrayList(); public final ArrayList<String> mSoundNames = new ArrayList<String>();
public final ArrayList<ItemStack> mSoundItems = new ArrayList(); public final ArrayList<ItemStack> mSoundItems = new ArrayList<ItemStack>();
public final ArrayList<Integer> mSoundCounts = new ArrayList(); public final ArrayList<Integer> mSoundCounts = new ArrayList<Integer>();
private final Collection<OreDictEventContainer> mEvents = new HashSet(); private final Collection<OreDictEventContainer> mEvents = new HashSet<OreDictEventContainer>();
private final Collection<String> mIgnoredItems = new HashSet(Arrays.asList(new String[]{"itemGhastTear", "itemFlint", "itemClay", "itemBucketSaltWater", private final Collection<String> mIgnoredItems = new HashSet<String>(Arrays.asList(new String[]{"itemGhastTear", "itemFlint", "itemClay", "itemBucketSaltWater",
"itemBucketFreshWater", "itemBucketWater", "itemRock", "itemReed", "itemArrow", "itemSaw", "itemKnife", "itemHammer", "itemChisel", "itemRubber", "itemBucketFreshWater", "itemBucketWater", "itemRock", "itemReed", "itemArrow", "itemSaw", "itemKnife", "itemHammer", "itemChisel", "itemRubber",
"itemEssence", "itemIlluminatedPanel", "itemSkull", "itemRawRubber", "itemBacon", "itemJetpackAccelerator", "itemLazurite", "itemIridium", "itemEssence", "itemIlluminatedPanel", "itemSkull", "itemRawRubber", "itemBacon", "itemJetpackAccelerator", "itemLazurite", "itemIridium",
"itemTear", "itemClaw", "itemFertilizer", "itemTar", "itemSlimeball", "itemCoke", "itemBeeswax", "itemBeeQueen", "itemForcicium", "itemForcillium", "itemTear", "itemClaw", "itemFertilizer", "itemTar", "itemSlimeball", "itemCoke", "itemBeeswax", "itemBeeQueen", "itemForcicium", "itemForcillium",
@ -101,7 +96,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
"itemWhippingCream", "itemGlisteningWhippingCream", "itemCleaver", "itemHerbalMedicineWhippingCream", "itemStrangeWhippingCream", "itemWhippingCream", "itemGlisteningWhippingCream", "itemCleaver", "itemHerbalMedicineWhippingCream", "itemStrangeWhippingCream",
"itemBlazeCleaver", "itemBakedCakeSponge", "itemMagmaCake", "itemGlisteningCake", "itemOgreCleaver", "itemFishandPumpkinCake", "itemBlazeCleaver", "itemBakedCakeSponge", "itemMagmaCake", "itemGlisteningCake", "itemOgreCleaver", "itemFishandPumpkinCake",
"itemMagmaWhippingCream", "itemMultimeter", "itemSuperconductor"})); "itemMagmaWhippingCream", "itemMultimeter", "itemSuperconductor"}));
private final Collection<String> mIgnoredNames = new HashSet(Arrays.asList(new String[]{"grubBee", "chainLink", "candyCane", "bRedString", "bVial", private final Collection<String> mIgnoredNames = new HashSet<String>(Arrays.asList(new String[]{"grubBee", "chainLink", "candyCane", "bRedString", "bVial",
"bFlask", "anorthositeSmooth", "migmatiteSmooth", "slateSmooth", "travertineSmooth", "limestoneSmooth", "orthogneissSmooth", "marbleSmooth", "bFlask", "anorthositeSmooth", "migmatiteSmooth", "slateSmooth", "travertineSmooth", "limestoneSmooth", "orthogneissSmooth", "marbleSmooth",
"honeyDrop", "lumpClay", "honeyEqualssugar", "flourEqualswheat", "bluestoneInsulated", "blockWaterstone", "blockSand", "blockTorch", "honeyDrop", "lumpClay", "honeyEqualssugar", "flourEqualswheat", "bluestoneInsulated", "blockWaterstone", "blockSand", "blockTorch",
"blockPumpkin", "blockClothRock", "blockStainedHardenedClay", "blockQuartzPillar", "blockQuartzChiselled", "blockSpawner", "blockCloth", "mobHead", "blockPumpkin", "blockClothRock", "blockStainedHardenedClay", "blockQuartzPillar", "blockQuartzChiselled", "blockSpawner", "blockCloth", "mobHead",
@ -119,7 +114,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
"antiBlock", "burntQuartz", "salmonRaw", "blockHopper", "blockEnderObsidian", "blockIcestone", "blockMagicWood", "blockEnderCore", "blockHeeEndium", "antiBlock", "burntQuartz", "salmonRaw", "blockHopper", "blockEnderObsidian", "blockIcestone", "blockMagicWood", "blockEnderCore", "blockHeeEndium",
"oreHeeEndPowder", "oreHeeStardust", "oreHeeIgneousRock", "oreHeeInstabilityOrb", "crystalPureFluix", "shardNether", "gemFluorite", "oreHeeEndPowder", "oreHeeStardust", "oreHeeIgneousRock", "oreHeeInstabilityOrb", "crystalPureFluix", "shardNether", "gemFluorite",
"stickObsidian", "caveCrystal", "shardCrystal", "dyeCrystal","shardFire","shardWater","shardAir","shardEarth","ingotRefinedIron","blockMarble"})); "stickObsidian", "caveCrystal", "shardCrystal", "dyeCrystal","shardFire","shardWater","shardAir","shardEarth","ingotRefinedIron","blockMarble"}));
private final Collection<String> mInvalidNames = new HashSet(Arrays.asList(new String[]{"diamondShard", "redstoneRoot", "obsidianStick", "bloodstoneOre", private final Collection<String> mInvalidNames = new HashSet<String>(Arrays.asList(new String[]{"diamondShard", "redstoneRoot", "obsidianStick", "bloodstoneOre",
"universalCable", "bronzeTube", "ironTube", "netherTube", "obbyTube", "infiniteBattery", "eliteBattery", "advancedBattery", "10kEUStore", "universalCable", "bronzeTube", "ironTube", "netherTube", "obbyTube", "infiniteBattery", "eliteBattery", "advancedBattery", "10kEUStore",
"blueDye", "MonazitOre", "quartzCrystal", "whiteLuminiteCrystal", "darkStoneIngot", "invisiumIngot", "demoniteOrb", "enderGem", "starconiumGem", "blueDye", "MonazitOre", "quartzCrystal", "whiteLuminiteCrystal", "darkStoneIngot", "invisiumIngot", "demoniteOrb", "enderGem", "starconiumGem",
"osmoniumIngot", "tapaziteGem", "zectiumIngot", "foolsRubyGem", "rubyGem", "meteoriteGem", "adamiteShard", "sapphireGem", "copperIngot", "osmoniumIngot", "tapaziteGem", "zectiumIngot", "foolsRubyGem", "rubyGem", "meteoriteGem", "adamiteShard", "sapphireGem", "copperIngot",
@ -1128,14 +1123,14 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
tReRegisteredMaterial = (Materials) i$.next(); tReRegisteredMaterial = (Materials) i$.next();
} }
aMaterial.add(GT_Utility.copyAmount(1L, new Object[]{aEvent.Ore})); aMaterial.add(GT_Utility.copyAmount(1L, new Object[]{aEvent.Ore}));
if (GregTech_API.sThaumcraftCompat != null && aPrefix.doGenerateItem(aMaterial) && !aPrefix.isIgnored(aMaterial)) { if (GregTech_API.sThaumcraftCompat != null && aPrefix.doGenerateItem(aMaterial) && !aPrefix.isIgnored(aMaterial)) {
List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>(); List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
for (TC_AspectStack tAspect : aPrefix.mAspects) tAspect.addToAspectList(tAspects); for (TC_AspectStack tAspect : aPrefix.mAspects) tAspect.addToAspectList(tAspects);
if (aPrefix.mMaterialAmount >= 3628800 || aPrefix.mMaterialAmount < 0) for (TC_AspectStack tAspect : aMaterial.mAspects) tAspect.addToAspectList(tAspects); if (aPrefix.mMaterialAmount >= 3628800 || aPrefix.mMaterialAmount < 0) for (TC_AspectStack tAspect : aMaterial.mAspects) tAspect.addToAspectList(tAspects);
GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(GT_Utility.copyAmount(1, aEvent.Ore), tAspects, aEvent.Name); GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(GT_Utility.copyAmount(1, aEvent.Ore), tAspects, aEvent.Name);
} }
switch (aPrefix) { switch (aPrefix) {
case crystal: case crystal:
if ((aMaterial == Materials.CertusQuartz) || (aMaterial == Materials.NetherQuartz) || (aMaterial == Materials.Fluix)) { if ((aMaterial == Materials.CertusQuartz) || (aMaterial == Materials.NetherQuartz) || (aMaterial == Materials.Fluix)) {
@ -1540,11 +1535,11 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
} }
return null; return null;
} }
public Object getRightItem(EntityPlayer player, int ID){ public Object getRightItem(EntityPlayer player, int ID){
ItemStack mStack = player.getEquipmentInSlot(ID/100); ItemStack mStack = player.getEquipmentInSlot(ID/100);
if(mStack==null||!(mStack.getItem() instanceof ModularArmor_Item))return null; if(mStack==null||!(mStack.getItem() instanceof ModularArmor_Item))return null;
switch(ID % 100){ switch(ID % 100){
case 0: case 0:
return new ContainerBasicArmor(player, new InventoryArmor(ModularArmor_Item.class, mStack)); return new ContainerBasicArmor(player, new InventoryArmor(ModularArmor_Item.class, mStack));
@ -1559,7 +1554,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
public Object getClientGuiElement(int aID, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ) { public Object getClientGuiElement(int aID, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ) {
if(aID>=1000){ if(aID>=1000){
int ID = aID-1000; int ID = aID-1000;
switch(ID){ switch(ID){
case 0: case 0:
return new GuiModularArmor(new ContainerBasicArmor(aPlayer, new InventoryArmor(ModularArmor_Item.class, aPlayer.getCurrentEquippedItem())), aPlayer); return new GuiModularArmor(new ContainerBasicArmor(aPlayer, new InventoryArmor(ModularArmor_Item.class, aPlayer.getCurrentEquippedItem())), aPlayer);
@ -1580,11 +1575,11 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
} }
return null; return null;
} }
public Object getRightItemGui(EntityPlayer player, int ID){ public Object getRightItemGui(EntityPlayer player, int ID){
ItemStack mStack = player.getEquipmentInSlot(ID/100); ItemStack mStack = player.getEquipmentInSlot(ID/100);
if(mStack==null||!(mStack.getItem() instanceof ModularArmor_Item))return null; if(mStack==null||!(mStack.getItem() instanceof ModularArmor_Item))return null;
switch(ID % 100){ switch(ID % 100){
case 0: case 0:
return new GuiModularArmor(new ContainerBasicArmor(player, new InventoryArmor(ModularArmor_Item.class, mStack)),player); return new GuiModularArmor(new ContainerBasicArmor(player, new InventoryArmor(ModularArmor_Item.class, mStack)),player);
@ -1902,9 +1897,9 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
tEvent = (OreDictEventContainer) i$.next(); tEvent = (OreDictEventContainer) i$.next();
} }
} }
public static final HashMap<ChunkPosition, int[]> chunkData = new HashMap<ChunkPosition, int[]>(5000); public static final HashMap<ChunkPosition, int[]> chunkData = new HashMap<ChunkPosition, int[]>(5000);
@SubscribeEvent @SubscribeEvent
public void handleChunkSaveEvent(ChunkDataEvent.Save event) public void handleChunkSaveEvent(ChunkDataEvent.Save event)
{ {
@ -1913,7 +1908,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
int[] tInts = chunkData.get(tPos); int[] tInts = chunkData.get(tPos);
if(tInts.length>0){event.getData().setInteger("GTOIL", tInts[0]);}} if(tInts.length>0){event.getData().setInteger("GTOIL", tInts[0]);}}
} }
@SubscribeEvent @SubscribeEvent
public void handleChunkLoadEvent(ChunkDataEvent.Load event) public void handleChunkLoadEvent(ChunkDataEvent.Load event)
{ {
@ -1924,7 +1919,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
if(chunkData.containsKey(tPos)){ if(chunkData.containsKey(tPos)){
chunkData.remove(tPos);} chunkData.remove(tPos);}
chunkData.put(tPos, new int[]{ tOil}); chunkData.put(tPos, new int[]{ tOil});
} }
public static class OreDictEventContainer { public static class OreDictEventContainer {
public final OreDictionary.OreRegisterEvent mEvent; public final OreDictionary.OreRegisterEvent mEvent;

View file

@ -0,0 +1,58 @@
package gregtech.loaders.misc;
import java.io.File;
import java.util.HashMap;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
public class OreProcessingConfiguration
implements Runnable
{
private final Configuration mConfiguration;
private final HashMap<String, Boolean> mEnabledMaterials;
public OreProcessingConfiguration(File aModConfigurationDirectory)
{
this.mEnabledMaterials = new HashMap<String, Boolean>();
this.mConfiguration =
new Configuration(new File(new File(aModConfigurationDirectory, "GregTech"), "OreProcessing.cfg"));
this.mConfiguration.load();
this.loadConfiguration();
if (this.mConfiguration.hasChanged())
{
this.mConfiguration.save();
}
}
private void loadConfiguration()
{
for (Materials tMaterial : GregTech_API.sGeneratedMaterials)
{
if (tMaterial != null && tMaterial != Materials._NULL)
{
String tMaterialName = tMaterial.name();
boolean tDefaultValue = (tMaterial.mTypes & 8) != 0;
Property tProperty =
this.mConfiguration.get("processores", tMaterialName + "_" + tDefaultValue, tDefaultValue);
this.mEnabledMaterials.put(tMaterialName, tProperty.getBoolean(tDefaultValue));
}
}
}
@Override
public void run()
{
for (String tMaterialName : this.mEnabledMaterials.keySet())
{
if (this.mEnabledMaterials.get(tMaterialName))
{
Materials.valueOf(tMaterialName).mTypes |= 8;
}
else if ((Materials.valueOf(tMaterialName).mTypes & 8) != 0)
{
Materials.valueOf(tMaterialName).mTypes ^= 8;
}
}
}
}