From 1209f95bc278f81de4143a619696048c655313e8 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Sat, 16 May 2015 02:51:56 +0200 Subject: update 5.08.13 Turbine items and achievements --- main/java/gregtech/GT_Mod.java | 37 +- main/java/gregtech/api/enums/OrePrefixes.java | 1 + main/java/gregtech/api/enums/TextureSet.java | 2 +- main/java/gregtech/api/enums/Textures.java | 2 +- .../gregtech/api/items/GT_MetaGenerated_Tool.java | 11 +- .../api/metatileentity/BaseMetaTileEntity.java | 8 +- .../GT_MetaTileEntity_MultiBlockBase.java | 12 +- main/java/gregtech/api/util/GT_ModHandler.java | 80 ++++ main/java/gregtech/common/GT_Proxy.java | 11 +- .../gregtech/common/GT_Worldgen_GT_Ore_Layer.java | 10 +- .../common/items/GT_MetaGenerated_Item_02.java | 2 +- .../common/items/GT_MetaGenerated_Tool_01.java | 15 + .../GT_MetaTileEntity_BronzeBlastFurnace.java | 4 +- .../storage/GT_MetaTileEntity_QuantumChest.java | 5 +- .../gregtech/common/tools/GT_Tool_Chainsaw_LV.java | 11 +- .../gregtech/common/tools/GT_Tool_Drill_HV.java | 7 + .../gregtech/common/tools/GT_Tool_Drill_LV.java | 1 + .../gregtech/common/tools/GT_Tool_HardHammer.java | 10 +- .../gregtech/common/tools/GT_Tool_JackHammer.java | 7 + .../gregtech/common/tools/GT_Tool_Pickaxe.java | 1 + .../gregtech/common/tools/GT_Tool_Turbine.java | 25 ++ .../common/tools/GT_Tool_Turbine_Huge.java | 7 + .../common/tools/GT_Tool_Turbine_Large.java | 7 + .../common/tools/GT_Tool_Turbine_Normal.java | 7 + .../common/tools/GT_Tool_Turbine_Small.java | 7 + .../common/tools/GT_Tool_UniversalSpade.java | 6 +- .../gregtech/loaders/misc/GT_Achievements.java | 469 +++++++++++++++++++++ .../loaders/oreprocessing/ProcessingPlate2.java | 10 +- .../oreprocessing/ProcessingToolHeadHammer.java | 21 +- .../loaders/postload/GT_CraftingRecipeLoader.java | 88 +++- .../loaders/postload/GT_MachineRecipeLoader.java | 9 +- .../loaders/postload/GT_ScrapboxDropLoader.java | 8 +- .../preload/GT_Loader_MetaTileEntities.java | 4 +- 33 files changed, 835 insertions(+), 70 deletions(-) create mode 100644 main/java/gregtech/common/tools/GT_Tool_Turbine.java create mode 100644 main/java/gregtech/common/tools/GT_Tool_Turbine_Huge.java create mode 100644 main/java/gregtech/common/tools/GT_Tool_Turbine_Large.java create mode 100644 main/java/gregtech/common/tools/GT_Tool_Turbine_Normal.java create mode 100644 main/java/gregtech/common/tools/GT_Tool_Turbine_Small.java create mode 100644 main/java/gregtech/loaders/misc/GT_Achievements.java (limited to 'main/java/gregtech') diff --git a/main/java/gregtech/GT_Mod.java b/main/java/gregtech/GT_Mod.java index e0b255a50f..3b79b8adaf 100644 --- a/main/java/gregtech/GT_Mod.java +++ b/main/java/gregtech/GT_Mod.java @@ -53,6 +53,7 @@ import gregtech.api.enums.*; /* 59: */ import gregtech.loaders.load.GT_FuelLoader; /* 60: */ import gregtech.loaders.load.GT_ItemIterator; /* 61: */ import gregtech.loaders.load.GT_SonictronLoader; +import gregtech.loaders.misc.GT_Achievements; /* 62: */ import gregtech.loaders.misc.GT_CoverLoader; /* 63: */ import gregtech.loaders.postload.GT_BlockResistanceLoader; /* 64: */ import gregtech.loaders.postload.GT_BookAndLootLoader; @@ -101,6 +102,7 @@ import gregtech.api.enums.*; /* 106: */ import net.minecraft.item.crafting.CraftingManager; /* 107: */ import net.minecraft.item.crafting.FurnaceRecipes; /* 108: */ import net.minecraft.item.crafting.IRecipe; +import net.minecraft.stats.Achievement; /* 109: */ import net.minecraft.util.WeightedRandomChestContent; /* 110: */ import net.minecraft.world.World; /* 111: */ import net.minecraft.world.biome.BiomeGenBase; @@ -125,6 +127,7 @@ import net.minecraftforge.common.ForgeVersion; /* 129: */ public static final int VERSION = 508; /* 130: */ public static final int REQUIRED_IC2 = 624; /* 131: 72 */ public static int MAX_IC2 = 2147483647; + public static GT_Achievements achievements; /* 132: */ /* 133: */ static /* 134: */ { @@ -303,6 +306,9 @@ import net.minecraftforge.common.ForgeVersion; /* 307:207 */ gregtechproxy.mNerfedWoodPlank = tMainConfig.get("general", "WoodNeedsSawForCrafting", true).getBoolean(true); /* 308:208 */ gregtechproxy.mNerfedVanillaTools = tMainConfig.get("general", "smallerVanillaToolDurability", true).getBoolean(true); /* 309:209 */ gregtechproxy.mSortToTheEnd = tMainConfig.get("general", "EnsureToBeLoadedLast", true).getBoolean(true); + gregtechproxy.mDisableIC2Cables = tMainConfig.get("general", "DisableIC2Cables", false).getBoolean(false); + gregtechproxy.mAchievements = tMainConfig.get("general", "EnableAchievements", true).getBoolean(true); + /* 310:211 */ if (tMainConfig.get("general", "hardermobspawners", true).getBoolean(true)) { /* 311:211 */ Blocks.mob_spawner.setHardness(500.0F).setResistance(6000000.0F); /* 312: */ } @@ -320,7 +326,7 @@ import net.minecraftforge.common.ForgeVersion; /* 324:225 */ tPrefix.mDefaultStackSize = ((byte)Math.min(64, Math.max(16, tMainConfig.get("features", "MaxOtherBlockStackSize", 64).getInt()))); /* 325: */ } /* 326: */ } -/* 327:229 */ GT_Config.troll = (Calendar.getInstance().get(2) + 1 == 4) && (Calendar.getInstance().get(5) >= 1) && (Calendar.getInstance().get(5) <= 2); +/* 327:229 */ //GT_Config.troll = (Calendar.getInstance().get(2) + 1 == 4) && (Calendar.getInstance().get(5) >= 1) && (Calendar.getInstance().get(5) <= 2); /* 328: */ /* 329:231 */ Materials.init(GregTech_API.sMaterialProperties); /* 330: */ @@ -753,6 +759,8 @@ import net.minecraftforge.common.ForgeVersion; /* 757: */ } /* 758: */ } /* 759: */ } + if(gregtechproxy.mAchievements){ + achievements = new GT_Achievements();} /* 760: */ Map.Entry tRecipe; /* 761:540 */ GT_Log.out.println("GT_Mod: Loading finished, deallocating temporary Init Variables."); /* 762:541 */ GregTech_API.sBeforeGTPreload = null; @@ -777,33 +785,6 @@ import net.minecraftforge.common.ForgeVersion; /* 781: */ } /* 782: */ } /* 783:565 */ gregtechproxy.onServerStarting(); -/* 784: */ -/* 785: */ -/* 786: */ -/* 787: */ -/* 788: */ -/* 789: */ -/* 790: */ -/* 791: */ -/* 792: */ -/* 793: */ -/* 794: */ -/* 795: */ -/* 796: */ -/* 797: */ -/* 798: */ -/* 799: */ -/* 800: */ -/* 801: */ -/* 802: */ -/* 803: */ -/* 804: */ -/* 805: */ -/* 806: */ -/* 807: */ -/* 808: */ -/* 809: */ -/* 810: */ /* 811:593 */ GT_Log.out.println("GT_Mod: Unificating outputs of all known Recipe Types."); /* 812:594 */ ArrayList tStacks = new ArrayList(10000); /* 813:595 */ GT_Log.out.println("GT_Mod: IC2 Machines"); diff --git a/main/java/gregtech/api/enums/OrePrefixes.java b/main/java/gregtech/api/enums/OrePrefixes.java index ad2231a6e4..06e1ae97b7 100644 --- a/main/java/gregtech/api/enums/OrePrefixes.java +++ b/main/java/gregtech/api/enums/OrePrefixes.java @@ -121,6 +121,7 @@ public enum OrePrefixes { toolHeadDrill ("Drill Tips" , "" , " Drill Tip" ,T,T,F,F,F,F,T,T,F,F, B[6] , M * 4 , 16, 40), // consisting out of 4 Ingots. toolHeadChainsaw ("Chainsaw Tips" , "" , " Chainsaw Tip" ,T,T,F,F,F,F,T,T,F,F, B[6] , M * 2 , 16, 41), // consisting out of 2 Ingots. toolHeadWrench ("Wrench Tips" , "" , " Wrench Tip" ,T,T,F,F,F,F,T,T,F,F, B[6] , M * 4 , 16, 42), // consisting out of 4 Ingots. + turbineBlade ("Turbine Blades" , "" , " Turbine Blade" ,T,T,F,F,F,F,T,T,F,F, B[6] , M * 6 , 64, 100), // consisting out of 6 Ingots. toolSword ("Swords" , "" , "" ,F,T,F,F,F,F,T,F,T,F, B[6] , M * 2 , 1, -1), // vanilly Sword toolPickaxe ("Pickaxes" , "" , "" ,F,T,F,F,F,F,T,F,T,F, B[6] , M * 3 , 1, -1), // vanilly Pickaxe toolShovel ("Shovels" , "" , "" ,F,T,F,F,F,F,T,F,T,F, B[6] , M * 1 , 1, -1), // vanilly Shovel diff --git a/main/java/gregtech/api/enums/TextureSet.java b/main/java/gregtech/api/enums/TextureSet.java index bae20e91f5..4a4bf6165e 100644 --- a/main/java/gregtech/api/enums/TextureSet.java +++ b/main/java/gregtech/api/enums/TextureSet.java @@ -152,7 +152,7 @@ public class TextureSet { mTextures[ 97] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/crateGtIngot"); mTextures[ 98] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/crateGtGem"); mTextures[ 99] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/crateGtPlate"); - mTextures[100] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/void"); + mTextures[100] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/turbineBlade"); mTextures[101] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/void"); mTextures[102] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/void"); mTextures[103] = new Textures.ItemIcons .CustomIcon("materialicons/"+mSetName+"/void"); diff --git a/main/java/gregtech/api/enums/Textures.java b/main/java/gregtech/api/enums/Textures.java index f7278f0d8a..f749a2d2d5 100644 --- a/main/java/gregtech/api/enums/Textures.java +++ b/main/java/gregtech/api/enums/Textures.java @@ -323,7 +323,7 @@ public class Textures { , HANDLE_SWORD, HANDLE_FILE, HANDLE_SAW, HANDLE_SCREWDRIVER, HANDLE_BUZZSAW, HANDLE_ELECTRIC_SCREWDRIVER, HANDLE_SOLDERING , POWER_UNIT_LV, POWER_UNIT_MV, POWER_UNIT_HV , DURABILITY_BAR_0, DURABILITY_BAR_1, DURABILITY_BAR_2, DURABILITY_BAR_3, DURABILITY_BAR_4, DURABILITY_BAR_5, DURABILITY_BAR_6, DURABILITY_BAR_7, DURABILITY_BAR_8 - , ENERGY_BAR_0, ENERGY_BAR_1, ENERGY_BAR_2, ENERGY_BAR_3, ENERGY_BAR_4, ENERGY_BAR_5, ENERGY_BAR_6, ENERGY_BAR_7, ENERGY_BAR_8 + , ENERGY_BAR_0, ENERGY_BAR_1, ENERGY_BAR_2, ENERGY_BAR_3, ENERGY_BAR_4, ENERGY_BAR_5, ENERGY_BAR_6, ENERGY_BAR_7, ENERGY_BAR_8, TURBINE ; public static final IIconContainer[] diff --git a/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java b/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java index 4942ff2a8d..d4e13ad232 100644 --- a/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java +++ b/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java @@ -13,6 +13,7 @@ import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; +import gregtech.common.tools.GT_Tool_Turbine; import java.util.*; import java.util.Map.Entry; @@ -238,11 +239,19 @@ public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements IToolStats tStats = getToolStats(aStack); int tOffset = getElectricStats(aStack) != null ? 2 : 1; if (tStats != null) { + String name = aStack.getUnlocalizedName(); + if(name.equals("gt.metatool.01.170")||name.equals("gt.metatool.01.172")||name.equals("gt.metatool.01.174")||name.equals("gt.metatool.01.176")){ + aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY); + aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.YELLOW + " lvl " + getHarvestLevel(aStack, "") + EnumChatFormatting.GRAY); + aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Turbine Efficency: " + EnumChatFormatting.BLUE + (50.0F+(10.0F*getToolCombatDamage(aStack))) + EnumChatFormatting.GRAY); + aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Steam flow: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed*20) + EnumChatFormatting.GRAY+ "L/sec"); + + }else{ aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY); aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.YELLOW + " lvl " + getHarvestLevel(aStack, "") + EnumChatFormatting.GRAY); aList.add(tOffset + 2, EnumChatFormatting.WHITE + "Attack Damage: " + EnumChatFormatting.BLUE + getToolCombatDamage(aStack) + EnumChatFormatting.GRAY); aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Mining Speed: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed) + EnumChatFormatting.GRAY); - } + }} } public static final Materials getPrimaryMaterial(ItemStack aStack) { diff --git a/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index a7d92915f5..5a3dfd4e8b 100644 --- a/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -2,6 +2,7 @@ package gregtech.api.metatileentity; import static gregtech.api.enums.GT_Values.NW; import static gregtech.api.enums.GT_Values.V; +import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.enums.ItemList; import gregtech.api.enums.Textures; @@ -387,7 +388,9 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE || (getCoverIDAtSide((byte)4) == 0 && worldObj.getPrecipitationHeight(xCoord-1, zCoord ) - 1 < yCoord) || (getCoverIDAtSide((byte)5) == 0 && worldObj.getPrecipitationHeight(xCoord+1, zCoord ) - 1 < yCoord)) { if (GregTech_API.sMachineRainExplosions && worldObj.isRaining() && getBiome().rainfall > 0) { - if (getRandomNumber(10)==0) doEnergyExplosion(); else setOnFire(); + if (getRandomNumber(10)==0) {doEnergyExplosion(); + GT_Mod.instance.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather"); + }else setOnFire(); } if (!hasValidMetaTileEntity()) { mRunningThroughTick = false; @@ -395,6 +398,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE } if (GregTech_API.sMachineThunderExplosions && worldObj.isThundering() && getBiome().rainfall > 0 && getRandomNumber(3) == 0) { doEnergyExplosion(); + GT_Mod.instance.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather"); } } } @@ -683,7 +687,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE public boolean playerOwnsThis(EntityPlayer aPlayer, boolean aCheckPrecicely) {if (!canAccessData()) return false; if (aCheckPrecicely || privateAccess() || mOwnerName.equals("")) if (mOwnerName.equals("")&&isServerSide()) setOwnerName(aPlayer.getDisplayName()); else if (privateAccess() && !aPlayer.getDisplayName().equals("Player") && !mOwnerName.equals("Player") && !mOwnerName.equals(aPlayer.getDisplayName())) return false; return true;} public boolean privateAccess() {if (!canAccessData()) return mLockUpgrade; return mLockUpgrade || mMetaTileEntity.ownerControl();} - public void doEnergyExplosion() {if (getUniversalEnergyCapacity() > 0 && getUniversalEnergyStored() >= getUniversalEnergyCapacity()/5) doExplosion(oOutput*(getUniversalEnergyStored() >= getUniversalEnergyCapacity()?4:getUniversalEnergyStored() >= getUniversalEnergyCapacity()/2?2:1));} + public void doEnergyExplosion() {if (getUniversalEnergyCapacity() > 0 && getUniversalEnergyStored() >= getUniversalEnergyCapacity()/5) {doExplosion(oOutput*(getUniversalEnergyStored() >= getUniversalEnergyCapacity()?4:getUniversalEnergyStored() >= getUniversalEnergyCapacity()/2?2:1)); GT_Mod.instance.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "electricproblems");}} @Override public void doExplosion(long aAmount) { diff --git a/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index 4411c528df..b93e467111 100644 --- a/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -1,6 +1,7 @@ package gregtech.api.metatileentity.implementations; import static gregtech.api.enums.GT_Values.V; +import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.enums.ConfigCategories; import gregtech.api.gui.GT_Container_MultiMachine; @@ -179,10 +180,9 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { if (!polluteEnvironment(getPollutionPerTick(mInventory[1]))) { stopMachine(); } - if (mMaxProgresstime > 0 && ++mProgresstime>=mMaxProgresstime) { - if (mOutputItems != null) for (ItemStack tStack : mOutputItems) if (tStack != null) addOutput(tStack); - if (mOutputFluids != null&&mOutputFluids.length==1) {for (FluidStack tStack : mOutputFluids) if (tStack != null) addOutput(tStack);} + if (mOutputItems != null) for (ItemStack tStack : mOutputItems) if (tStack != null) {GT_Mod.instance.achievements.issueAchivementHatch(aBaseMetaTileEntity.getWorld().getPlayerEntityByName(aBaseMetaTileEntity.getOwnerName()), tStack);addOutput(tStack);} + if (mOutputFluids != null&&mOutputFluids.length==1) {for (FluidStack tStack : mOutputFluids) if (tStack != null) {addOutput(tStack);}} else if(mOutputFluids!=null&&mOutputFluids.length>1){ addFluidOutputs(mOutputFluids);} mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); @@ -191,6 +191,12 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { mMaxProgresstime = 0; mEfficiencyIncrease = 0; if (aBaseMetaTileEntity.isAllowedToWork()) checkRecipe(mInventory[1]); + if(mOutputFluids!=null&&mOutputFluids.length>0){ + System.out.println("fluids"+mOutputFluids.length); + GT_Mod.instance.achievements.issueAchivementHatchFluid(aBaseMetaTileEntity.getWorld().getPlayerEntityByName(aBaseMetaTileEntity.getOwnerName()), mOutputFluids[0]); + if(mOutputFluids.length>1){GT_Mod.instance.achievements.issueAchievement(aBaseMetaTileEntity.getWorld().getPlayerEntityByName(aBaseMetaTileEntity.getOwnerName()), "oilplant");} + mOutputFluids = null; + } } } } else { diff --git a/main/java/gregtech/api/util/GT_ModHandler.java b/main/java/gregtech/api/util/GT_ModHandler.java index 6f44731c62..91addfbdec 100644 --- a/main/java/gregtech/api/util/GT_ModHandler.java +++ b/main/java/gregtech/api/util/GT_ModHandler.java @@ -16,6 +16,7 @@ import ic2.api.reactor.IReactorComponent; import ic2.api.recipe.IRecipeInput; import ic2.api.recipe.RecipeInputItemStack; import ic2.api.recipe.RecipeOutput; +import ic2.core.AdvRecipe; import java.util.*; import java.util.Map.Entry; @@ -1010,6 +1011,85 @@ public class GT_ModHandler { return rReturn; } +// public static int replaceRecipe(ItemStack aOldItem, ItemStack aNewItem){ +// int replaced =0; +// ArrayList tList = (ArrayList)CraftingManager.getInstance().getRecipeList(); +// System.out.println("tList.size "+tList.size()); +// for (int i = 0; i < tList.size(); i++){ +// System.out.println(tList.get(i).getClass()); +// if(tList.get(i) instanceof ShapedRecipes){ +// ShapedRecipes tRecipe = (ShapedRecipes)tList.get(i); +// System.out.println("found recipe!"); +// for( int g =0 ; g < tRecipe.recipeItems.length;g++){ +// if(GT_Utility.areStacksEqual(aOldItem, tRecipe.recipeItems[g], true)){ +// ItemStack[] tItems = tRecipe.recipeItems; +// for(int f = 0; f < tItems.length;f++){ +// if(GT_Utility.areStacksEqual(aOldItem, tItems[f], true)){ +// tItems[f]=aNewItem; +// } +// } +// ShapedRecipes nRecipe = new ShapedRecipes(tRecipe.recipeWidth,tRecipe.recipeHeight,tItems,tRecipe.getRecipeOutput()); +// tList.set(i, nRecipe); +// replaced++; +// } +// } +// } +// +// if(tList.get(i) instanceof AdvRecipe){ +// AdvRecipe tRecipe = (AdvRecipe)tList.get(i); +// System.out.println("found recipe!"); +// for( int g =0 ; g < tRecipe.input.length;g++){ +// if(GT_Utility.areStacksEqual(aOldItem, (ItemStack) tRecipe.input[g], true)){ +// ItemStack[] tItems = (ItemStack[]) tRecipe.input; +// for(int f = 0; f < tItems.length;f++){ +// if(GT_Utility.areStacksEqual(aOldItem, tItems[f], true)){ +// tItems[f]=aNewItem; +// } +// } +// System.out.println("converted Recipe"); +// AdvRecipe nRecipe = new AdvRecipe(tRecipe.getRecipeOutput(),tItems); +// tList.set(i, nRecipe); +// replaced++; +// } +// } +// } +//// if(tList.get(i) instanceof GT_Shaped_Recipe){ +//// GT_Shaped_Recipe tRecipe = (GT_Shaped_Recipe)tList.get(i); +//// System.out.println("found recipe!"); +//// for( int g =0 ; g < tRecipe.getInput().length;g++){ +//// if(GT_Utility.areStacksEqual(aOldItem, (ItemStack)tRecipe.getInput()[g], true)){ +//// ItemStack[] tItems = (ItemStack[]) tRecipe.getInput(); +//// for(int f = 0; f < tItems.length;f++){ +//// if(GT_Utility.areStacksEqual(aOldItem, tItems[f], true)){ +//// tItems[f]=aNewItem; +//// } +//// } +//// GT_Shaped_Recipe nRecipe = new GT_Shaped_Recipe(tItems,tRecipe.getRecipeOutput()); +//// tList.set(i, nRecipe); +//// replaced++; +//// } +//// } +//// } +// if(tList.get(i) instanceof ShapelessRecipes){ +// ShapelessRecipes tRecipe = (ShapelessRecipes)tList.get(i); +// System.out.println("found recipe!"); +// for( int g =0 ; g < tRecipe.recipeItems.size();g++){ +// if(GT_Utility.areStacksEqual(aOldItem, (ItemStack) tRecipe.recipeItems.get(g), true)){ +// List tItems = tRecipe.recipeItems; +// for(int f = 0; f < tItems.size();f++){ +// if(GT_Utility.areStacksEqual(aOldItem, (ItemStack) tItems.get(f), true)){ +// tItems.set(f,aNewItem); +// } +// } +// ShapelessRecipes nRecipe = new ShapelessRecipes(tRecipe.getRecipeOutput(),tItems); +// tList.set(i, nRecipe); +// replaced++; +// } +// } +// } +// }return replaced; +// } + public static boolean removeRecipeByOutput(ItemStack aOutput) { return removeRecipeByOutput(aOutput, T, F, F); } diff --git a/main/java/gregtech/common/GT_Proxy.java b/main/java/gregtech/common/GT_Proxy.java index 6b9cbf9686..e6dce1cd51 100644 --- a/main/java/gregtech/common/GT_Proxy.java +++ b/main/java/gregtech/common/GT_Proxy.java @@ -149,6 +149,8 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { public boolean mHungerEffect = true; public boolean mOnline = true; public boolean mIgnoreTcon = true; + public boolean mDisableIC2Cables = false; + public boolean mAchievements = true; public int mSkeletonsShootGTArrows = 16; public int mMaxEqualEntitiesAtOneSpot = 3; public int mFlintChance = 30; @@ -610,6 +612,11 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.wireFine, aMaterial, 1L), tBits, new Object[] { "Xx", Character.valueOf('X'), OrePrefixes.foil.get(aMaterial) }); + GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.turbineBlade, aMaterial, 1L), tBits, new Object[] { "fPd", "SPS", " P ", + Character.valueOf('P'), aMaterial == Materials.Wood ? OrePrefixes.plank.get(aMaterial) : OrePrefixes.plateDouble.get(aMaterial), + Character.valueOf('R'), OrePrefixes.ring.get(aMaterial), Character.valueOf('S'), OrePrefixes.screw.get(aMaterial) }); + + GT_ModHandler.addCraftingRecipe(GT_OreDictUnificator.get(OrePrefixes.arrowGtWood, aMaterial, 1L), tBits, new Object[] { " A", " S ", "F ", Character.valueOf('S'), OrePrefixes.stick.get(Materials.Wood), Character.valueOf('F'), OreDictNames.craftingFeather, Character.valueOf('A'), OrePrefixes.toolHeadArrow.get(aMaterial) }); @@ -1310,11 +1317,11 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler { GT_OreDictUnificator.set(OrePrefixes.ingot, Materials.RedAlloy, new ItemStack(aEvent.Ore.getItem(), 1, 0)); GT_OreDictUnificator.set(OrePrefixes.ingot, Materials.BlueAlloy, new ItemStack(aEvent.Ore.getItem(), 1, 1)); GT_OreDictUnificator.set(OrePrefixes.ingot, Materials.Brass, new ItemStack(aEvent.Ore.getItem(), 1, 2)); - + if(!mDisableIC2Cables){ GT_Values.RA.addWiremillRecipe(GT_ModHandler.getIC2Item("copperCableItem", 3L), new ItemStack(aEvent.Ore.getItem(), 1, 8), 400, 1); GT_Values.RA.addWiremillRecipe(GT_ModHandler.getIC2Item("ironCableItem", 6L), - new ItemStack(aEvent.Ore.getItem(), 1, 9), 400, 2); + new ItemStack(aEvent.Ore.getItem(), 1, 9), 400, 2);} GT_Values.RA.addCutterRecipe(new ItemStack(aEvent.Ore.getItem(), 1, 3), new ItemStack(aEvent.Ore.getItem(), 16, 4), null, 400, 8); } diff --git a/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java b/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java index 745575a01e..44d8b330c6 100644 --- a/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java +++ b/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java @@ -1,12 +1,16 @@ /* 1: */ package gregtech.common; /* 2: */ -/* 3: */ import gregtech.api.GregTech_API; +/* 3: */ import gregtech.GT_Mod; +import gregtech.api.GregTech_API; /* 4: */ import gregtech.api.enums.Materials; /* 5: */ import gregtech.api.util.GT_Config; /* 6: */ import gregtech.api.world.GT_Worldgen; /* 7: */ import gregtech.common.blocks.GT_TileEntity_Ores; +import gregtech.loaders.misc.GT_Achievements; + /* 8: */ import java.util.ArrayList; /* 9: */ import java.util.Random; + /* 10: */ import net.minecraft.world.World; /* 11: */ import net.minecraft.world.chunk.IChunkProvider; /* 12: */ @@ -44,6 +48,10 @@ /* 44:32 */ this.mBetweenMeta = ((short)GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "OreSporadiclyInbetween", aBetween.mMetaItemSubID)); /* 45:33 */ this.mSporadicMeta = ((short)GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "OreSporaticlyAround", aSporadic.mMetaItemSubID)); /* 46:34 */ if (this.mEnabled) { + GT_Achievements.registerOre(aPrimary,aMinY,aMaxY,aWeight,aOverworld,aNether,aEnd); +/* 46:34 */ GT_Achievements.registerOre(aSecondary,aMinY,aMaxY,aWeight,aOverworld,aNether,aEnd); +/* 46:34 */ GT_Achievements.registerOre(aBetween,aMinY,aMaxY,aWeight,aOverworld,aNether,aEnd); +/* 46:34 */ GT_Achievements.registerOre(aSporadic,aMinY,aMaxY,aWeight,aOverworld,aNether,aEnd); /* 47:34 */ sWeight += this.mWeight; /* 48: */ } /* 49: */ } diff --git a/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java b/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java index 137ed5d07b..3900fa02cf 100644 --- a/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java +++ b/main/java/gregtech/common/items/GT_MetaGenerated_Item_02.java @@ -44,7 +44,7 @@ /* 44: */ /* 45: */ public GT_MetaGenerated_Item_02() /* 46: */ { -/* 47: 36 */ super("metaitem.02", new OrePrefixes[] { OrePrefixes.toolHeadSword, OrePrefixes.toolHeadPickaxe, OrePrefixes.toolHeadShovel, OrePrefixes.toolHeadAxe, OrePrefixes.toolHeadHoe, OrePrefixes.toolHeadHammer, OrePrefixes.toolHeadFile, OrePrefixes.toolHeadSaw, OrePrefixes.toolHeadDrill, OrePrefixes.toolHeadChainsaw, OrePrefixes.toolHeadWrench, OrePrefixes.toolHeadUniversalSpade, OrePrefixes.toolHeadSense, OrePrefixes.toolHeadPlow, OrePrefixes.toolHeadArrow, OrePrefixes.toolHeadBuzzSaw, null, null, null, OrePrefixes.wireFine, OrePrefixes.gearGtSmall, OrePrefixes.rotor, OrePrefixes.stickLong, OrePrefixes.springSmall, OrePrefixes.spring, OrePrefixes.arrowGtWood, OrePrefixes.arrowGtPlastic, OrePrefixes.gemChipped, OrePrefixes.gemFlawed, OrePrefixes.gemFlawless, OrePrefixes.gemExquisite, OrePrefixes.gearGt }); +/* 47: 36 */ super("metaitem.02", new OrePrefixes[] { OrePrefixes.toolHeadSword, OrePrefixes.toolHeadPickaxe, OrePrefixes.toolHeadShovel, OrePrefixes.toolHeadAxe, OrePrefixes.toolHeadHoe, OrePrefixes.toolHeadHammer, OrePrefixes.toolHeadFile, OrePrefixes.toolHeadSaw, OrePrefixes.toolHeadDrill, OrePrefixes.toolHeadChainsaw, OrePrefixes.toolHeadWrench, OrePrefixes.toolHeadUniversalSpade, OrePrefixes.toolHeadSense, OrePrefixes.toolHeadPlow, OrePrefixes.toolHeadArrow, OrePrefixes.toolHeadBuzzSaw, OrePrefixes.turbineBlade , null, null, OrePrefixes.wireFine, OrePrefixes.gearGtSmall, OrePrefixes.rotor, OrePrefixes.stickLong, OrePrefixes.springSmall, OrePrefixes.spring, OrePrefixes.arrowGtWood, OrePrefixes.arrowGtPlastic, OrePrefixes.gemChipped, OrePrefixes.gemFlawed, OrePrefixes.gemFlawless, OrePrefixes.gemExquisite, OrePrefixes.gearGt}); /* 48: 37 */ INSTANCE = this; /* 49: */ /* 50: 39 */ int tLastID = 0; diff --git a/main/java/gregtech/common/items/GT_MetaGenerated_Tool_01.java b/main/java/gregtech/common/items/GT_MetaGenerated_Tool_01.java index 155625dd8b..f6ed7f412c 100644 --- a/main/java/gregtech/common/items/GT_MetaGenerated_Tool_01.java +++ b/main/java/gregtech/common/items/GT_MetaGenerated_Tool_01.java @@ -43,6 +43,11 @@ import gregtech.api.enums.ConfigCategories; /* 42: */ import gregtech.common.tools.GT_Tool_SoftHammer; import gregtech.common.tools.GT_Tool_Soldering_Iron; /* 43: */ import gregtech.common.tools.GT_Tool_Sword; +import gregtech.common.tools.GT_Tool_Turbine; +import gregtech.common.tools.GT_Tool_Turbine_Huge; +import gregtech.common.tools.GT_Tool_Turbine_Large; +import gregtech.common.tools.GT_Tool_Turbine_Normal; +import gregtech.common.tools.GT_Tool_Turbine_Small; /* 44: */ import gregtech.common.tools.GT_Tool_UniversalSpade; /* 45: */ import gregtech.common.tools.GT_Tool_WireCutter; /* 46: */ import gregtech.common.tools.GT_Tool_Wrench; @@ -94,6 +99,11 @@ import gregtech.common.tools.GT_Tool_Soldering_Iron; /* 92: */ public static final short BUZZSAW = 140; /* 93: */ public static final short SCREWDRIVER_LV = 150; public static final short SOLDERING_IRON_LV = 160; + public static final short TURBINE_SMALL = 170; + public static final short TURBINE = 172; + public static final short TURBINE_LARGE = 174; + public static final short TURBINE_HUGE = 176; + public static final short TURBINE_BLADE = 178; /* 94: */ /* 95: */ public GT_MetaGenerated_Tool_01() /* 96: */ { @@ -137,6 +147,11 @@ import gregtech.common.tools.GT_Tool_Soldering_Iron; /* =4:57 */ addTool(140, "Buzzsaw (LV)", "Not suitable for harvesting Blocks", new GT_Tool_BuzzSaw(), new Object[] { ToolDictNames.craftingToolSaw, new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.FABRICO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ARBOR, 2L) }); /* =5:58 */ GregTech_API.registerTool(addTool(150, "Screwdriver (LV)", "Adjusts Covers and Machines", new GT_Tool_Screwdriver_LV(), new Object[] { ToolDictNames.craftingToolScrewdriver, new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.FABRICO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L) }), GregTech_API.sScrewdriverList); /* =6: */ GregTech_API.registerTool(addTool(SOLDERING_IRON_LV, "Soldering Iron (LV)", "Fixes burned out Circuits. Needs soldering materials in inventory", new GT_Tool_Soldering_Iron(), new Object[] { ToolDictNames.craftingToolSolderingIron, new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.FABRICO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L) }), GregTech_API.sSolderingToolList); + + addTool(TURBINE_SMALL, "Small Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Small(), new Object[] {}); + addTool(TURBINE, "Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Normal(), new Object[] {}); + addTool(TURBINE_LARGE, "Large Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Large(), new Object[] {}); + addTool(TURBINE_HUGE, "Huge Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Huge(), new Object[] {}); /* =7:60 */ GT_ModHandler.addCraftingRecipe(INSTANCE.getToolWithStats(24, 1, Materials.Flint, Materials.Stone, null), GT_ModHandler.RecipeBits.NOT_REMOVABLE, new Object[] { " I ", "SIS", "SSS", Character.valueOf('I'), new ItemStack(Items.flint, 1), Character.valueOf('S'), OrePrefixes.stone }); /* =8:61 */ GT_ModHandler.addCraftingRecipe(INSTANCE.getToolWithStats(24, 1, Materials.Bronze, Materials.Stone, null), GT_ModHandler.RecipeBits.NOT_REMOVABLE, new Object[] { " I ", "SIS", "SSS", Character.valueOf('I'), OrePrefixes.ingot.get(Materials.Bronze), Character.valueOf('S'), OrePrefixes.stone }); diff --git a/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BronzeBlastFurnace.java b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BronzeBlastFurnace.java index 5f66a7c54b..b139161228 100644 --- a/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BronzeBlastFurnace.java +++ b/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BronzeBlastFurnace.java @@ -1,6 +1,7 @@ /* 1: */ package gregtech.common.tileentities.machines.multi; /* 2: */ -/* 3: */ import gregtech.api.GregTech_API; +/* 3: */ import gregtech.GT_Mod; +import gregtech.api.GregTech_API; /* 4: */ import gregtech.api.enums.Materials; /* 5: */ import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.Textures; @@ -225,6 +226,7 @@ import gregtech.api.enums.Textures; /* 224: */ { /* 225:151 */ if (++this.mProgresstime >= this.mMaxProgresstime) /* 226: */ { + GT_Mod.instance.achievements.issueAchievement(aBaseMetaTileEntity.getWorld().getPlayerEntityByName(aBaseMetaTileEntity.getOwnerName()), "steel"); /* 227:152 */ addOutputProducts(); /* 228:153 */ this.mOutputItem1 = null; /* 229:154 */ this.mOutputItem2 = null; diff --git a/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java b/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java index 3249ea4531..9b0b1683c2 100644 --- a/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java +++ b/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java @@ -132,7 +132,7 @@ public class GT_MetaTileEntity_QuantumChest extends GT_MetaTileEntity_TieredMach this.mInventory[0] = null; } } - if (this.mInventory[1] == null) + if (this.mInventory[1] == null&&mItemStack!=null) { this.mInventory[1] = mItemStack.copy(); this.mInventory[1].stackSize = Math.min(mItemStack.getMaxStackSize(), this.mItemCount); @@ -188,12 +188,15 @@ public class GT_MetaTileEntity_QuantumChest extends GT_MetaTileEntity_TieredMach @Override public void saveNBTData(NBTTagCompound aNBT) { aNBT.setInteger("mItemCount", this.mItemCount); + if(this.mItemStack!=null) aNBT.setTag("mItemStack", this.mItemStack.writeToNBT(new NBTTagCompound())); } @Override public void loadNBTData(NBTTagCompound aNBT) { + if(aNBT.hasKey("mItemCount")) this.mItemCount = aNBT.getInteger("mItemCount"); + if(aNBT.hasKey("mItemStack")) this.mItemStack = ItemStack.loadItemStackFromNBT((NBTTagCompound) aNBT.getTag("mItemStack")); } diff --git a/main/java/gregtech/common/tools/GT_Tool_Chainsaw_LV.java b/main/java/gregtech/common/tools/GT_Tool_Chainsaw_LV.java index 391177bd66..66bed7d5bf 100644 --- a/main/java/gregtech/common/tools/GT_Tool_Chainsaw_LV.java +++ b/main/java/gregtech/common/tools/GT_Tool_Chainsaw_LV.java @@ -1,6 +1,7 @@ /* 1: */ package gregtech.common.tools; /* 2: */ -/* 3: */ import gregtech.api.GregTech_API; +/* 3: */ import gregtech.GT_Mod; +import gregtech.api.GregTech_API; /* 4: */ import gregtech.api.enums.Materials; import gregtech.api.enums.Textures; /* 5: */ import gregtech.api.enums.Textures.ItemIcons; @@ -10,6 +11,7 @@ import gregtech.api.enums.Textures; /* 8: */ import java.util.Map; /* 9: */ import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; /* 10: */ import net.minecraft.item.ItemStack; /* 11: */ import net.minecraft.util.ChatComponentText; /* 12: */ import net.minecraft.util.EnumChatFormatting; @@ -87,6 +89,13 @@ import gregtech.api.enums.Textures; /* 84: */ { /* 85:82 */ return true; /* 86: */ } + + public void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer) +/* 117: */ { +/* 118:117 */ super.onToolCrafted(aStack, aPlayer); + GT_Mod.achievements.issueAchievement(aPlayer, "brrrr"); +/* 121: */ } + /* 87: */ /* 88: */ public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) /* 89: */ { diff --git a/main/java/gregtech/common/tools/GT_Tool_Drill_HV.java b/main/java/gregtech/common/tools/GT_Tool_Drill_HV.java index a71722a17d..bdf696c0c8 100644 --- a/main/java/gregtech/common/tools/GT_Tool_Drill_HV.java +++ b/main/java/gregtech/common/tools/GT_Tool_Drill_HV.java @@ -5,6 +5,7 @@ import gregtech.api.enums.Textures; /* 4: */ import gregtech.api.enums.Textures.ItemIcons; /* 5: */ import gregtech.api.interfaces.IIconContainer; /* 6: */ import gregtech.common.GT_Proxy; +import net.minecraft.entity.player.EntityPlayer; /* 7: */ import net.minecraft.item.ItemStack; /* 8: */ /* 9: */ public class GT_Tool_Drill_HV @@ -49,6 +50,12 @@ import gregtech.api.enums.Textures; /* 48: */ { /* 49:48 */ return 4.0F; /* 50: */ } + + public void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer) +/* 117: */ { +/* 118:117 */ super.onToolCrafted(aStack, aPlayer); + GT_Mod.achievements.issueAchievement(aPlayer, "highpowerdrill"); +/* 121: */ } /* 51: */ /* 52: */ public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) /* 53: */ { diff --git a/main/java/gregtech/common/tools/GT_Tool_Drill_LV.java b/main/java/gregtech/common/tools/GT_Tool_Drill_LV.java index 941b3c037b..625f20593c 100644 --- a/main/java/gregtech/common/tools/GT_Tool_Drill_LV.java +++ b/main/java/gregtech/common/tools/GT_Tool_Drill_LV.java @@ -122,6 +122,7 @@ import gregtech.api.enums.Textures; /* 119:118 */ super.onToolCrafted(aStack, aPlayer); /* 120:119 */ aPlayer.triggerAchievement(AchievementList.buildPickaxe); /* 121:120 */ aPlayer.triggerAchievement(AchievementList.buildBetterPickaxe); + GT_Mod.achievements.issueAchievement(aPlayer, "driltime"); /* 122: */ } /* 123: */ /* 124: */ public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) diff --git a/main/java/gregtech/common/tools/GT_Tool_HardHammer.java b/main/java/gregtech/common/tools/GT_Tool_HardHammer.java index 67cb45ff24..eeb323f8be 100644 --- a/main/java/gregtech/common/tools/GT_Tool_HardHammer.java +++ b/main/java/gregtech/common/tools/GT_Tool_HardHammer.java @@ -1,6 +1,7 @@ /* 1: */ package gregtech.common.tools; /* 2: */ -/* 3: */ import gregtech.api.GregTech_API; +/* 3: */ import gregtech.GT_Mod; +import gregtech.api.GregTech_API; /* 4: */ import gregtech.api.enums.Materials; /* 5: */ import gregtech.api.interfaces.IIconContainer; /* 6: */ import gregtech.api.items.GT_MetaGenerated_Tool; @@ -20,6 +21,7 @@ /* 18: */ import net.minecraft.entity.monster.EntityIronGolem; /* 19: */ import net.minecraft.entity.player.EntityPlayer; /* 20: */ import net.minecraft.item.ItemStack; +import net.minecraft.stats.AchievementList; /* 21: */ import net.minecraft.util.ChatComponentText; /* 22: */ import net.minecraft.util.EnumChatFormatting; /* 23: */ import net.minecraft.util.IChatComponent; @@ -179,6 +181,12 @@ import net.minecraftforge.event.world.BlockEvent; /* 176: */ { /* 177:173 */ return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " was squashed by " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE); /* 178: */ } + + public void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer) +/* 117: */ { +/* 118:117 */ super.onToolCrafted(aStack, aPlayer); + GT_Mod.achievements.issueAchievement(aPlayer, "tools"); +/* 121: */ } /* 179: */ } diff --git a/main/java/gregtech/common/tools/GT_Tool_JackHammer.java b/main/java/gregtech/common/tools/GT_Tool_JackHammer.java index 17f8c6be64..cb50cfbd8d 100644 --- a/main/java/gregtech/common/tools/GT_Tool_JackHammer.java +++ b/main/java/gregtech/common/tools/GT_Tool_JackHammer.java @@ -101,6 +101,13 @@ import net.minecraftforge.event.world.BlockEvent; /* 97: */ } /* 98: 91 */ return rConversions; /* 99: */ } + + public void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer) +/* 117: */ { +/* 118:117 */ super.onToolCrafted(aStack, aPlayer); + GT_Mod.achievements.issueAchievement(aPlayer, "hammertime"); +/* 121: */ } + /* 100: */ /* 101: */ public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) /* 102: */ { diff --git a/main/java/gregtech/common/tools/GT_Tool_Pickaxe.java b/main/java/gregtech/common/tools/GT_Tool_Pickaxe.java index e4bca9b7af..d535fd4a48 100644 --- a/main/java/gregtech/common/tools/GT_Tool_Pickaxe.java +++ b/main/java/gregtech/common/tools/GT_Tool_Pickaxe.java @@ -118,6 +118,7 @@ /* 118:117 */ super.onToolCrafted(aStack, aPlayer); /* 119:118 */ aPlayer.triggerAchievement(AchievementList.buildPickaxe); /* 120:119 */ aPlayer.triggerAchievement(AchievementList.buildBetterPickaxe); + GT_Mod.achievements.issueAchievement(aPlayer, "flintpick"); /* 121: */ } /* 122: */ /* 123: */ public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) diff --git a/main/java/gregtech/common/tools/GT_Tool_Turbine.java b/main/java/gregtech/common/tools/GT_Tool_Turbine.java new file mode 100644 index 0000000000..bf79012661 --- /dev/null +++ b/main/java/gregtech/common/tools/GT_Tool_Turbine.java @@ -0,0 +1,25 @@ +package gregtech.common.tools; + +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.items.GT_MetaGenerated_Tool; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; + +public abstract class GT_Tool_Turbine extends GT_Tool{ + public abstract float getBaseDamage(); + @Override public boolean isMinableBlock(Block aBlock, byte aMetaData) {return false;} + @Override public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {return aIsToolHead ? Textures.ItemIcons.TURBINE : null;} + @Override public short[] getRGBa(boolean aIsToolHead, ItemStack aStack) {return aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa : null;} + public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) + { + return new ChatComponentText(EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE + " put " + EnumChatFormatting.RED + + aEntity.getCommandSenderName()+"s" + EnumChatFormatting.WHITE + " head into a turbine"); + } + public abstract float getSpeedMultiplier(); + public abstract float getMaxDurabilityMultiplier(); +} diff --git a/main/java/gregtech/common/tools/GT_Tool_Turbine_Huge.java b/main/java/gregtech/common/tools/GT_Tool_Turbine_Huge.java new file mode 100644 index 0000000000..0bf3b783a5 --- /dev/null +++ b/main/java/gregtech/common/tools/GT_Tool_Turbine_Huge.java @@ -0,0 +1,7 @@ +package gregtech.common.tools; + +public class GT_Tool_Turbine_Huge extends GT_Tool_Turbine { + @Override public float getSpeedMultiplier() {return 4.0F;} + @Override public float getMaxDurabilityMultiplier() {return 4.0F;} + @Override public float getBaseDamage() {return 3.0F;} +} diff --git a/main/java/gregtech/common/tools/GT_Tool_Turbine_Large.java b/main/java/gregtech/common/tools/GT_Tool_Turbine_Large.java new file mode 100644 index 0000000000..57947aea7a --- /dev/null +++ b/main/java/gregtech/common/tools/GT_Tool_Turbine_Large.java @@ -0,0 +1,7 @@ +package gregtech.common.tools; + +public class GT_Tool_Turbine_Large extends GT_Tool_Turbine { + @Override public float getSpeedMultiplier() {return 3.0F;} + @Override public float getMaxDurabilityMultiplier() {return 3.0F;} + @Override public float getBaseDamage() {return 5.0F;} +} diff --git a/main/java/gregtech/common/tools/GT_Tool_Turbine_Normal.java b/main/java/gregtech/common/tools/GT_Tool_Turbine_Normal.java new file mode 100644 index 0000000000..8327a74332 --- /dev/null +++ b/main/java/gregtech/common/tools/GT_Tool_Turbine_Normal.java @@ -0,0 +1,7 @@ +package gregtech.common.tools; + +public class GT_Tool_Turbine_Normal extends GT_Tool_Turbine { + @Override public float getSpeedMultiplier() {return 2.0F;} + @Override public float getMaxDurabilityMultiplier() {return 2.0F;} + @Override public float getBaseDamage() {return 2.5F;} +} diff --git a/main/java/gregtech/common/tools/GT_Tool_Turbine_Small.java b/main/java/gregtech/common/tools/GT_Tool_Turbine_Small.java new file mode 100644 index 0000000000..fb93a2b290 --- /dev/null +++ b/main/java/gregtech/common/tools/GT_Tool_Turbine_Small.java @@ -0,0 +1,7 @@ +package gregtech.common.tools; + +public class GT_Tool_Turbine_Small extends GT_Tool_Turbine { + @Override public float getSpeedMultiplier() {return 1.0F;} + @Override public float getMaxDurabilityMultiplier() {return 1.0F;} + @Override public float getBaseDamage() {return 0.0F;} +} diff --git a/main/java/gregtech/common/tools/GT_Tool_UniversalSpade.java b/main/java/gregtech/common/tools/GT_Tool_UniversalSpade.java index 78c4fecb4c..431654124d 100644 --- a/main/java/gregtech/common/tools/GT_Tool_UniversalSpade.java +++ b/main/java/gregtech/common/tools/GT_Tool_UniversalSpade.java @@ -1,11 +1,14 @@ /* 1: */ package gregtech.common.tools; /* 2: */ -/* 3: */ import gregtech.api.GregTech_API; +/* 3: */ import gregtech.GT_Mod; +import gregtech.api.GregTech_API; /* 4: */ import gregtech.api.enums.Materials; /* 5: */ import gregtech.api.interfaces.IIconContainer; /* 6: */ import gregtech.api.items.GT_MetaGenerated_Tool; /* 7: */ import gregtech.common.items.behaviors.Behaviour_Crowbar; + /* 8: */ import java.util.Map; + /* 9: */ import net.minecraft.block.Block; /* 10: */ import net.minecraft.block.material.Material; /* 11: */ import net.minecraft.entity.EntityLivingBase; @@ -124,6 +127,7 @@ /* 124: */ { /* 125:122 */ super.onToolCrafted(aStack, aPlayer); /* 126:123 */ aPlayer.triggerAchievement(AchievementList.buildSword); + GT_Mod.achievements.issueAchievement(aPlayer, "unitool"); /* 127: */ } /* 128: */ /* 129: */ public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) diff --git a/main/java/gregtech/loaders/misc/GT_Achievements.java b/main/java/gregtech/loaders/misc/GT_Achievements.java new file mode 100644 index 0000000000..bdc340b255 --- /dev/null +++ b/main/java/gregtech/loaders/misc/GT_Achievements.java @@ -0,0 +1,469 @@ +package gregtech.loaders.misc; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent.ItemSmeltedEvent; +import gregtech.GT_Mod; +import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OreDictNames; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.api.objects.ItemData; +import gregtech.api.util.GT_Log; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Casings1; +import gregtech.common.blocks.GT_TileEntity_Ores; +import gregtech.common.items.GT_MetaGenerated_Item_01; +import gregtech.common.items.GT_MetaGenerated_Tool_01; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; +import net.minecraft.stats.AchievementList; +import net.minecraft.stats.StatBase; +import net.minecraftforge.common.AchievementPage; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.EntityItemPickupEvent; +import net.minecraftforge.fluids.FluidStack; + +public class GT_Achievements { + + public HashMap achievementList; +public int adjX = 5; +public int adjY = 9; + + public GT_Achievements() { + this.achievementList = new HashMap(); + for (int i = 0; i < oreList.size(); i++) { + if (GT_Values.D1 && this.achievementList.get(oreList.get(i).name()) == null) { + GT_Log.out.println("achievement." + oreList.get(i).name() + "=Find " + oreList.get(i).name() + " Ore"); + GT_Log.out.println("achievement." + oreList.get(i).name() + ".desc=Height: " + (oreStats.get(i)[0]) + "-" + (oreStats.get(i)[1]) + ", Chance: "+ (oreStats.get(i)[2]) + ", " + (oreStats.get(i)[3] == 1 ? "Overworld" : "") + "/" + (oreStats.get(i)[4] == 1 ? "Nether" : "") + "/"+ (oreStats.get(i)[5] == 1 ? "End" : "")); + } + registerOreAchievement(oreList.get(i)); + } + registerAchievement("flintpick", 0, 0, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(2, 1, Materials.Flint, Materials.Wood, null), "", false); + registerAchievement("crops", -4, 0, GT_ModHandler.getIC2Item("crop", 1L), "flintpick", false); + registerAchievement("havestlead", -4, 2, ItemList.Crop_Drop_Plumbilia.get(1, new Object[] {}), "crops", false); + registerAchievement("havestcopper", -2, 1, ItemList.Crop_Drop_Coppon.get(1, new Object[] {}), "crops", false); + registerAchievement("havesttin", -2, -1, ItemList.Crop_Drop_Tine.get(1, new Object[] {}), "crops", false); + registerAchievement("havestoil", -4, -4, ItemList.Crop_Drop_OilBerry.get(1, new Object[] {}), "crops", false); + registerAchievement("havestiron", -2, -3, ItemList.Crop_Drop_Ferru.get(1, new Object[] {}), "crops", false); + registerAchievement("havestgold", -2, -6, ItemList.Crop_Drop_Aurelia.get(1, new Object[] {}), "havestiron", false); + registerAchievement("havestsilver", -4, -5, ItemList.Crop_Drop_Argentia.get(1, new Object[] {}), "havestiron", false); + registerAchievement("havestemeralds", -2, -8, ItemList.Crop_Drop_BobsYerUncleRanks.get(1, new Object[] {}), "havestgold", false); + + registerAchievement("tools", 0, 4, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(12, 1, Materials.Iron, Materials.Wood, null), "flintpick", false); + registerAchievement("driltime", 2, 4, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(100, 1, Materials.BlueSteel, Materials.StainlessSteel, null),"tools", false); + registerAchievement("brrrr", 2, 6, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(110, 1, Materials.BlueSteel, Materials.StainlessSteel, null),"driltime", false); + registerAchievement("highpowerdrill", 3, 5,GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(104, 1, Materials.TungstenSteel, Materials.TungstenSteel, null), "driltime", false); + registerAchievement("hammertime", 3, 7,GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(130, 1, Materials.TungstenSteel, Materials.TungstenSteel, null), "highpowerdrill", false); + registerAchievement("repair", 4, 5, ItemList.Machine_HV_Disassembler.get(1, new Object[] {}), "highpowerdrill", false); + + registerAchievement("unitool", -2, 4, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(32, 1, Materials.Steel, Materials.Iron, null), "tools", false); + registerAchievement("recycling", -4, 4, ItemList.Machine_LV_ArcFurnace.get(1, new Object[] {}), "unitool", false); + + registerAchievement("crushed", 0, 6, GT_OreDictUnificator.get(OrePrefixes.crushed, Materials.Tin, 1L), "tools", false); + registerAchievement("cleandust", 0, 10, GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Redstone, 1L), "crushed", false); + registerAchievement("washing", -2, 6, GT_OreDictUnificator.get(OrePrefixes.crushedPurified, Materials.Iron, 1L), "crushed", false); + registerAchievement("spinit", -4, 6, GT_OreDictUnificator.get(OrePrefixes.crushedCentrifuged, Materials.Redstone, 1L), "crushed", false); + registerAchievement("newfuel", -4, 8, ItemList.ThoriumCell_4.get(1, new Object[] {}), "spinit", false); + registerAchievement("newmetal", -4, 10, GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Lutetium, 1L), "newfuel", false); + registerAchievement("reflect", -2, 9, ItemList.Neutron_Reflector.get(1, new Object[] {}), "newfuel", false); + + registerAchievement("bronze", 2, 0, GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Bronze, 1L), "flintpick", false); + registerAchievement("simplyeco", 2, 2, ItemList.Machine_Bronze_Boiler_Solar.get(1, new Object[] {}), "bronze", false); + registerAchievement("firststeam", 2, -2, ItemList.Machine_Bronze_Boiler.get(1, new Object[] {}), "bronze", false); + registerAchievement("alloysmelter", 2, -4, ItemList.Machine_Bronze_AlloySmelter.get(1, new Object[] {}), "firststeam", false); + registerAchievement("macerator", 0, -2, ItemList.Machine_Bronze_Macerator.get(1, new Object[] {}), "firststeam", false); + registerAchievement("extract", 0, -4, ItemList.Machine_Bronze_Extractor.get(1, new Object[] {}), "alloysmelter", false); + + registerAchievement("smallparts", 0, -8, ItemList.Circuit_Primitive.get(1, new Object[] {}), "extract", false); + registerAchievement("bettercircuits", 0, -10, ItemList.Circuit_Good.get(1, new Object[] {}), "smallparts", false); + registerAchievement("stepforward", -2, -10, ItemList.Circuit_Advanced.get(1, new Object[] {}), "bettercircuits", false); + registerAchievement("energyflow", -4, -10, ItemList.Circuit_Master.get(1, new Object[] {}), "stepforward", false); + registerAchievement("orbs", -6, -10, ItemList.Energy_LapotronicOrb.get(1, new Object[] {}), "energyflow", false); + registerAchievement("thatspower", -8, -10, ItemList.Energy_LapotronicOrb2.get(1, new Object[] {}), "orbs", false); + registerAchievement("datasaving", -2, -12, ItemList.Tool_DataOrb.get(1, new Object[] {}), "stepforward", false); + registerAchievement("superbuffer", 0, -12, ItemList.Automation_SuperBuffer_LV.get(1, new Object[] {}), "datasaving", false); + registerAchievement("newstorage", -2, -14, ItemList.Quantum_Chest_HV.get(1, new Object[] {}), "superbuffer", false); + registerAchievement("whereistheocean", 2, -14, ItemList.Quantum_Tank_IV.get(1, new Object[] {}), "superbuffer", false); + registerAchievement("luck", 2, -6, ItemList.ZPM.get(1, new Object[] {}), "", false); + + registerAchievement("steel", 4, 0, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Steel, 1L), "bronze", false); + registerAchievement("highpressure", 4, 2, ItemList.Machine_Steel_Boiler.get(1, new Object[] {}), "steel", false); + registerAchievement("extremepressure", 4, 4, ItemList.Machine_Multi_LargeBoiler_Steel.get(1, new Object[] {}), "highpressure", false); + registerAchievement("cheapermac", 6, 1, ItemList.Machine_LV_Hammer.get(1, new Object[] {}), "steel", false); + registerAchievement("complexalloys", 6, 3, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.BlueSteel, 1L), "cheapermac", false); + + registerAchievement("magneticiron", 4, -2, GT_OreDictUnificator.get(OrePrefixes.stick, Materials.IronMagnetic, 1L), "steel", false); + registerAchievement("lvmotor", 4, -6, ItemList.Electric_Motor_LV.get(1, new Object[] {}), "magneticiron", false); + registerAchievement("pump", 2, -8, ItemList.Electric_Pump_LV.get(1, new Object[] {}), "lvmotor", false); + registerAchievement("closeit", 2, -10, ItemList.Cover_Shutter.get(1, new Object[] {}), "pump", false); + registerAchievement("slurp", 2, -12, ItemList.Pump_HV.get(1, new Object[] {}), "closeit", false); + registerAchievement("transport", 4, -10, ItemList.Conveyor_Module_LV.get(1, new Object[] {}), "lvmotor", false); + registerAchievement("manipulation", 4, -12, ItemList.Cover_Controller.get(1, new Object[] {}), "transport", false); + registerAchievement("buffer", 4, -14, ItemList.Automation_ChestBuffer_LV.get(1, new Object[] {}), "manipulation", false); + registerAchievement("complexmachines", 6, -9, ItemList.Robot_Arm_LV.get(1, new Object[] {}), "lvmotor", false); + registerAchievement("avengers", 8, -11, ItemList.Machine_LV_Assembler.get(1, new Object[] {}), "complexmachines", false); + registerAchievement("filterregulate", 10, -11, ItemList.Component_Filter.get(1, new Object[] {}), "avengers", false); + + registerAchievement("steampower", 6, -6, ItemList.Generator_Steam_Turbine_LV.get(1, new Object[] {}), "lvmotor", false); + registerAchievement("batterys", 6, -4, ItemList.Battery_Buffer_2by2_MV.get(1, new Object[] {}), "steampower", false); + registerAchievement("badweather", 6, -8, ItemList.Casing_FireHazard.get(1, new Object[] {}), "steampower", false); + registerAchievement("electricproblems", 7, -7, ItemList.Casing_ExplosionHazard.get(1, new Object[] {}), "steampower", false); + registerAchievement("ebf", 8, -6, ItemList.Machine_Multi_BlastFurnace.get(1, new Object[] {}), "steampower", false); + registerAchievement("energyhatch", 12, -6, ItemList.Hatch_Energy_LV.get(1, new Object[] {}), "ebf", false); + + registerAchievement("aluminium", 8, 0, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Aluminium, 1L), "steel", false); + registerAchievement("highpowersmelt", 8, 2, ItemList.Machine_Multi_Furnace.get(1, new Object[] {}), "aluminium", false); + registerAchievement("oilplant", 8, 4, ItemList.Distillation_Tower.get(1, new Object[] {}), "highpowersmelt", false); + registerAchievement("factory", 8, 6, ItemList.Processing_Array.get(1, new Object[] {}), "oilplant", false); + registerAchievement("upgradeebf", 8, -2, ItemList.Hatch_Energy_MV.get(1, new Object[] {}), "aluminium", false); + registerAchievement("maintainance", 10, -2, ItemList.Hatch_Maintenance.get(1, new Object[] {}), "upgradeebf", false); + + registerAchievement("titan", 10, 0, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Titanium, 1L), "aluminium", false); + registerAchievement("magic", 10, 4, ItemList.MagicEnergyConverter_LV.get(1, new Object[] {}), "titan", false); + registerAchievement("highmage", 10, 6, ItemList.MagicEnergyAbsorber_HV.get(1, new Object[] {}), "magic", false); + registerAchievement("artificaldia", 11, 2, ItemList.IC2_Industrial_Diamond.get(1, new Object[] {}), "titan", false); + registerAchievement("muchsteam", 12, 1, ItemList.LargeTurbine.get(1, new Object[] {}), "titan", false); + registerAchievement("efficientsteam", 12, 3, ItemList.LargeTurbine.get(1, new Object[] {}), "muchsteam", false); + + registerAchievement("upgrade", 14, 0, ItemList.Casing_Coil_Kanthal.get(1, new Object[] {}), "titan", false); + registerAchievement("tungsten", 16, 0, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Tungsten, 1L), "upgrade", false); + registerAchievement("hightech", 15, -1, ItemList.Field_Generator_LV.get(1, new Object[] {}), "tungsten", false); + registerAchievement("amplifier", 17, -3, ItemList.Machine_LV_Amplifab.get(1, new Object[] {}), "hightech", false); + registerAchievement("scanning", 13, -2, ItemList.Machine_HV_Scanner.get(1, new Object[] {}), "hightech", false); + registerAchievement("alienpower", 14, -4, ItemList.Generator_Naquadah_Mark_I.get(1, new Object[] {}), "hightech", false); + registerAchievement("universal", 15, -6, ItemList.Machine_LV_Massfab.get(1, new Object[] {}), "hightech", false); + registerAchievement("replication", 17, -6, ItemList.Machine_LV_Replicator.get(1, new Object[] {}), "universal", false); + + registerAchievement("upgrade2", 16, 6, ItemList.Casing_Coil_Nichrome.get(1, new Object[] {}), "tungsten", false); + registerAchievement("tungstensteel", 14, 6, GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.TungstenSteel, 1L), "upgrade2", false); + registerAchievement("conducting", 12, 6, ItemList.Casing_Coil_Superconductor.get(1, new Object[] {}), "tungstensteel", false); + registerAchievement("fusion", 14, 8, ItemList.FusionComputer_LuV.get(1, new Object[] {}), "tungstensteel", false); + registerAchievement("higherefficency", 14, 10, ItemList.Generator_Plasma_IV.get(1, new Object[] {}), "fusion", false); + registerAchievement("advancing", 12, 8, ItemList.FusionComputer_ZPMV.get(1, new Object[] {}), "fusion", false); + registerAchievement("tothelimit", 12, 10, ItemList.Generator_Plasma_LuV.get(1, new Object[] {}), "advancing", false); + registerAchievement("denseaspossible", 10, 10, ItemList.FusionComputer_UV.get(1, new Object[] {}), "tothelimit", false); + registerAchievement("fullefficiency", 10, 12, ItemList.Generator_Plasma_ZPMV.get(1, new Object[] {}), "denseaspossible", false); + registerAchievement("whatnow", 8, 10, GT_OreDictUnificator.get(OrePrefixes.battery, Materials.Ultimate, 1L), "denseaspossible", false); + + AchievementPage.registerAchievementPage(new AchievementPage("GregTech 5", (Achievement[]) this.achievementList.values().toArray( + new Achievement[this.achievementList.size()]))); + MinecraftForge.EVENT_BUS.register(this); + FMLCommonHandler.instance().bus().register(this); + } + + public Achievement registerAchievement(String textId, int x, int y, ItemStack icon, Achievement requirement, boolean special) { + Achievement achievement = new Achievement(textId, textId, this.adjX + x, this.adjY+y, icon, requirement); + if (special) { + achievement.setSpecial(); + } + achievement.registerStat(); + if (GT_Values.D2) { + GT_Log.out.println("achievement." + textId + "="); + GT_Log.out.println("achievement." + textId + ".desc="); + } + this.achievementList.put(textId, achievement); + return achievement; + } + + public Achievement registerAchievement(String textId, int x, int y, ItemStack icon, String requirement, boolean special) { + Achievement achievement = new Achievement(textId, textId, this.adjX + x, this.adjY+y, icon, getAchievement(requirement)); + if (special) { + achievement.setSpecial(); + } + achievement.registerStat(); + if (GT_Values.D2) { + GT_Log.out.println("achievement." + textId + "="); + GT_Log.out.println("achievement." + textId + ".desc="); + } + this.achievementList.put(textId, achievement); + return achievement; + } + + public static List oreList = new ArrayList(); + public static List oreStats = new ArrayList(); + + public static void registerOre(Materials aMaterial, int min, int max, int chance, boolean overworld, boolean nether, boolean end) { + if (aMaterial != Materials._NULL) { + oreList.a