package micdoodle8.mods.galacticraft.api.item; import net.minecraft.item.ItemStack; import java.lang.reflect.Field; import java.util.HashMap; public class GCItems { // GALACTICRAFT CORE BLOCKS: // "rocketLaunchPad" // "buggyFuelingPad" // "oxygenDistributor" // "oxygenCompressor" // "oxygenCollector" // "refinery" // "fuelLoader" // "oxygenSealer" // "oxygenDetector" // "cargoLoader" // "cargoUnloader" // "oxygenPipe" // "nasaWorkbench" // "fallenMeteor" // "tinDecorationBlock1" // "tinDecorationBlock2" // "airLockFrame" // "sealableOxygenPipe" // "sealableCopperCable" // "sealableGoldCable" // "sealableHighVoltageCable" // "sealableGlassFibreCable" // "sealableLowVoltageCable" // "sealableStonePipeItem" // "sealableCobblestonePipeItem" // "sealableStonePipeFluid" // "sealableCobblestonePipeFluid" // "sealableStonePipePower" // "sealableGoldPipePower" // "sealableMECable" // "treasureChestTier1" // "parachest" // "solarPanelBasic" // "solarPanelAdvanced" // "copperWire" // "coalGenerator" // "energyStorageModule" // "electricFurnace" // "electricArcFurnace" // "ingotCompressor" // "ingotCompressorElectric" // "circuitFabricator" // "oreCopper" // "oreTin" // "oreAluminum" // "oreSilicon" // "torchGlowstone" // "wireAluminum" // "wireAluminumHeavy" // GALACTICRAFT CORE ITEMS: // "oxygenTankLightFull" // "oxygenTankMediumFull" // "oxygenTankHeavyFull" // "oxygenTankLightEmpty" // "oxygenTankMediumEmpty" // "oxygenTankHeavyEmpty" // "oxygenMask" // "rocketTier1" // "rocketTier1_18cargo" // "rocketTier1_36cargo" // "rocketTier1_54cargo" // "rocketTier1_prefueled" // "heavyDutyPickaxe" // "heavyDutyShovel" // "heavyDutyAxe" // "heavyDutyHoe" // "heavyDutySword" // "heavyDutyHelmet" // "heavyDutyChestplate" // "heavyDutyLeggings" // "heavyDutyBoots" // "tinCanister" // "copperCanister" // "oxygenVent" // "oxygenFan" // "oxygenConcentrator" // "heavyPlatingTier1" // "rocketEngineTier1" // "rocketBoosterTier1" // "rocketFins" // "rocketNoseCone" // "sensorLens" // "moonBuggy" // "moonBuggy_18cargo" // "moonBuggy_36cargo" // "moonBuggy_54cargo" // "flagAmerican" // "flagBlack" // "flagLightBlue" // "flagLime" // "flagBrown" // "flagBlue" // "flagGray" // "flagGreen" // "flagLightGray" // "flagMagenta" // "flagOrange" // "flagPink" // "flagPurple" // "flagRed" // "flagCyan" // "flagYellow" // "flagWhite" // "oxygenGear" // "parachuteWhite" // "parachuteBlack" // "parachuteLightBlue" // "parachuteLime" // "parachuteBrown" // "parachuteBlue" // "parachuteGray" // "parachuteGreen" // "parachuteLightGray" // "parachutePink" // "parachuteOrange" // "parachutePink" // "parachutePurple" // "parachuteRed" // "parachuteCyan" // "parachuteYellow" // "canvas" // "fuelCanisterFull" // "oilCanisterFull" // "liquidCanisterEmpty" // "steelPole" // "oilExtractor" // "schematicMoonBuggy" // "schematicRocketTier2" // "tier1Key" // "buggyMaterialWheel" // "buggyMaterialSeat" // "buggyMaterialStorage" // "solarModuleSingle" // "solarModuleFull" // "batteryEmpty" // "batteryFull" // "infiniteBattery" // "rawSilicon" // "ingotCopper" // "ingotTin" // "ingotAluminum" // "ingotSteel" // "ingotBronze" // "compressedCopper" // "compressedTin" // "compressedAluminum" // "compressedSteel" // "compressedBronze" // "compressedIron" // "waferSolar" // "waferBasic" // "waferAdvanced" // "dehydratedApple" // "dehydratedCarrot" // "dehydratedMelon" // "dehydratedPotato" // "meteorThrowable" // "meteorThrowableHot" // "frequencyModule" /** * Request an itemstack from Galacticraft. * <p/> * Be sure to check if the itemstack is null, since items may be disabled, * planets addon might not be installed, etc. * <p/> * Since the items are initialized and added to list in pre-init, you should * only be calling this method in init or later. * * @param key Item identifier, see {@link GCItems} for item/block keys * @param amount Stack size * @return A stack of Galacticraft items with the passed key. */ public static ItemStack requestItem(String key, int amount) { try { if (GCItems.itemsList == null) { Class<?> clazz = Class.forName(GCItems.getItemListClass()); Field f = clazz.getDeclaredField("itemList"); GCItems.itemsList = (HashMap<String, ItemStack>) f.get(null); } if (GCItems.itemsList != null) { @SuppressWarnings("unchecked") ItemStack stack = GCItems.itemsList.get(key); return new ItemStack(stack.getItem(), amount, stack.getItemDamage()); } } catch (Exception ex) { ex.printStackTrace(); } return null; } /** * Request an itemstack from Galacticraft. * <p/> * Be sure to check if the itemstack is null, since items may be disabled, * planets addon might not be installed, etc. * <p/> * Since the items are initialized and added to list in pre-init, you should * only be calling this method in init or later. * * @param key Item identifier, see {@link GCItems} for item/block keys * @param amount Stack size * @return A stack of Galacticraft items with the passed key. */ public static ItemStack requestBlock(String key, int amount) { try { if (GCItems.blocksList == null) { Class<?> clazz = Class.forName(GCItems.getItemListClass()); Field f = clazz.getDeclaredField("blocksList"); GCItems.blocksList = (HashMap<String, ItemStack>) f.get(null); } if (GCItems.blocksList != null) { @SuppressWarnings("unchecked") ItemStack stack = GCItems.blocksList.get(key); return new ItemStack(stack.getItem(), amount, stack.getItemDamage()); } } catch (Exception ex) { ex.printStackTrace(); } return null; } private static String getItemListClass() { return "micdoodle8.mods.galacticraft.core.GalacticraftCore"; } private static HashMap<String, ItemStack> blocksList; private static HashMap<String, ItemStack> itemsList; }