diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 254b7bfa13..57ba33ab16 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -563,7 +563,11 @@ public void onPreLoad(FMLPreInitializationEvent aEvent) { for (Runnable tRunnable : GregTech_API.sAfterGTPreload) { tRunnable.run(); } - } catch (Throwable e) {e.printStackTrace(GT_Log.err);} + } catch (Throwable e) { + e.printStackTrace(GT_Log.err); + } + if (FMLCommonHandler.instance().getEffectiveSide().isServer()) + GT_Assemblyline_Server.fillMap(aEvent); } @Mod.EventHandler diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java index ad808f3a71..a34696b94c 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java @@ -11,6 +11,7 @@ import gregtech.api.util.GT_ModHandler.RecipeBits; import gregtech.api.util.GT_Recipe.GT_Recipe_Map; import gregtech.api.util.GT_Utility; +import gregtech.api.util.GT_OreDictUnificator; import ic2.core.Ic2Items; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.init.Blocks; @@ -647,6 +648,11 @@ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex case 2: return (!mRequiresFluidForFiltering || getFillableStack() != null) && (((getInputAt(0) != null && getInputAt(1) != null) || (getInputAt(0) == null && getInputAt(1) == null ? getRecipeList().containsInput(aStack) : (getRecipeList().containsInput(aStack) && null != getRecipeList().findRecipe(getBaseMetaTileEntity(), mLastRecipe, true, V[mTier], new FluidStack[]{getFillableStack()}, getSpecialSlot(), aIndex == getInputSlot() ? new ItemStack[]{aStack, getInputAt(1)} : new ItemStack[]{getInputAt(0), aStack}))))); default: + int tID = getBaseMetaTileEntity().getMetaTileID(); + if (tID >= 211 && tID <= 218) {// assemblers IDs + if (GT_OreDictUnificator.isItemStackInstanceOf(aStack, "circuitBasic")) return true; // allow input all LV-circuits for assemblers + if (GT_OreDictUnificator.isItemStackInstanceOf(aStack, "circuitAdvanced")) return true; // allow input all HV-circuits for assemblers + } return getRecipeList().containsInput(aStack); } } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Maintenance.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Maintenance.java index 608bec114e..d7dcbdd9ca 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Maintenance.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Maintenance.java @@ -214,11 +214,53 @@ public void onToolClick(ItemStack aStack, EntityLivingBase aPlayer) { @Override public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { - return mAuto && GT_Mod.gregtechproxy.mAMHInteraction; + if(!(mAuto && GT_Mod.gregtechproxy.mAMHInteraction)) + return false; + ItemStack[] mInputs = new ItemStack[]{ItemList.Duct_Tape.get(32, new Object[]{}), GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Lubricant, 32), GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Steel, 32), GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 32)}; + ItemStack[] aInputs = mInventory; + for(ItemStack nStack :mInputs) { + if (GT_Utility.areUnificationsEqual(aStack, nStack, true) || GT_Utility.areUnificationsEqual(GT_OreDictUnificator.get(false, aStack), GT_OreDictUnificator.get(false, nStack), true)) { + for (byte i = 0;i lServerNames = new LinkedHashMap(); + private static LinkedHashMap internal2 = new LinkedHashMap(); + private static LinkedHashMap internal3 = new LinkedHashMap(); + private static LinkedHashMap internal4 = new LinkedHashMap(); + private static LinkedHashMap internal_meta = new LinkedHashMap(); + private static HashMap internal = new HashMap(); + + public GT_Assemblyline_Server() { + } + + public static void fillMap(FMLPreInitializationEvent aEvent) { + System.out.println("SONCE FIX ENABLED"); + String s = new String(aEvent.getModConfigurationDirectory().getAbsolutePath()); + s = s.substring(0, aEvent.getModConfigurationDirectory().getAbsolutePath().length() - 6); + s = s + "GregTech.lang"; + File f = new File(s); + s = ""; + Configuration conf = new Configuration(f); + ConfigCategory cat = conf.getCategory("languagefile"); + internal.putAll(cat.getValues()); + Iterator var5 = internal.entrySet().iterator(); + + while(true) { + Entry entry; + while(var5.hasNext()) { + entry = (Entry)var5.next(); + s = ((Property)entry.getValue()).getString().replaceAll("%", ""); + if (((String)entry.getKey()).contains("metaitem") && s.contains("material")) { + internal2.put((String)entry.getKey(), s); + } else if (((String)entry.getKey()).contains("metaitem.01")) { + internal_meta.put((String)entry.getKey(), s); + } else if (((String)entry.getKey()).contains("blockmachines") && s.contains("material")) { + internal3.put((String)entry.getKey(), s); + } else if ((((String)entry.getKey()).contains("blockores") || ((String)entry.getKey()).contains("blockmetal") || ((String)entry.getKey()).contains("blockgem")) && s.contains("material")) { + internal4.put((String)entry.getKey(), s); + } else { + lServerNames.put((String)entry.getKey(), s); + } + } + + var5 = internal_meta.entrySet().iterator(); + + int i; + while(var5.hasNext()) { + entry = (Entry)var5.next(); + if (((String)entry.getKey()).contains("name")) { + try { + i = Integer.parseInt(((String)entry.getKey()).substring("gt.metaitem.01.".length(), ((String)entry.getKey()).length() - ".name".length())); + lServerNames.put((String)entry.getKey(),(String) entry.getValue()); + } catch (Exception var14) { + ; + } + } + } + + var5 = internal2.entrySet().iterator(); + + while(var5.hasNext()) { + entry = (Entry)var5.next(); + if (((String)entry.getKey()).contains("name")) { + i = Integer.parseInt(((String)entry.getKey()).substring("gt.metaitem.01.".length(), ((String)entry.getKey()).length() - ".name".length())); + i %= 1000; + + try { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", GregTech_API.sGeneratedMaterials[i].toString())); + } catch (Exception var13) { + ; + } + } + } + + var5 = internal3.entrySet().iterator(); + + while(true) { + while(var5.hasNext()) { + entry = (Entry)var5.next(); + if (((String)entry.getKey()).contains("cable")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.cable.".length(), ((String)entry.getKey()).length() - ".01.name".length()))); + } else if (((String)entry.getKey()).contains("gt_frame_")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_frame_".length(), ((String)entry.getKey()).length() - ".name".length()))); + } else if (((String)entry.getKey()).contains("gt_pipe_")) { + if (!((String)entry.getKey()).contains("_huge") && !((String)entry.getKey()).contains("_large") && !((String)entry.getKey()).contains("_nonuple") && !((String)entry.getKey()).contains("_quadruple") && !((String)entry.getKey()).contains("_small") && !((String)entry.getKey()).contains("_tiny")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_pipe_".length(), ((String)entry.getKey()).length() - ".name".length()))); + } else if (!((String)entry.getKey()).contains("_huge") && !((String)entry.getKey()).contains("_tiny")) { + if (!((String)entry.getKey()).contains("_large") && !((String)entry.getKey()).contains("_small")) { + if (((String)entry.getKey()).contains("_nonuple")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_pipe_".length(), ((String)entry.getKey()).length() - "_nonuple.name".length()))); + } else if (((String)entry.getKey()).contains("_quadruple")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_pipe_".length(), ((String)entry.getKey()).length() - "_quadruple.name".length()))); + } + } else { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_pipe_".length(), ((String)entry.getKey()).length() - "_large.name".length()))); + } + } else { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.gt_pipe_".length(), ((String)entry.getKey()).length() - "_tiny.name".length()))); + } + } else if (((String)entry.getKey()).contains("wire")) { + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", ((String)entry.getKey()).substring("gt.blockmachines.wire.".length(), ((String)entry.getKey()).length() - ".01.name".length()))); + } else { + lServerNames.put((String)entry.getKey(), (String)entry.getValue()); + } + } + + var5 = internal4.entrySet().iterator(); + + while(var5.hasNext()) { + entry = (Entry)var5.next(); + if (((String)entry.getKey()).contains("blockores")) { + try { + i = Integer.parseInt(((String)entry.getKey()).substring("gt.blockores.".length(), ((String)entry.getKey()).length() - ".name".length())); + i %= 1000; + lServerNames.put((String)entry.getKey(), ((String)entry.getValue()).replace("material", GregTech_API.sGeneratedMaterials[i].toString())); + } catch (Exception var11) { + ; + } + } else { + String t; + Materials[] mMats; + if (((String)entry.getKey()).contains("blockmetal")) { + mMats = null; + t = ((String)entry.getKey()).substring("gt.blockmetal".length()); + t = t.substring(0, 1); + i = Integer.parseInt(t); + switch(i) { + case 1: + mMats = new Materials[]{Materials.Adamantium, Materials.Aluminium, Materials.Americium, Materials.AnnealedCopper, Materials.Antimony, Materials.Arsenic, Materials.AstralSilver, Materials.BatteryAlloy, Materials.Beryllium, Materials.Bismuth, Materials.BismuthBronze, Materials.BlackBronze, Materials.BlackSteel, Materials.BlueAlloy, Materials.BlueSteel, Materials.Brass}; + break; + case 2: + mMats = new Materials[]{Materials.Bronze, Materials.Caesium, Materials.Cerium, Materials.Chrome, Materials.ChromiumDioxide, Materials.Cobalt, Materials.CobaltBrass, Materials.Copper, Materials.Cupronickel, Materials.DamascusSteel, Materials.DarkIron, Materials.DeepIron, Materials.Desh, Materials.Duranium, Materials.Dysprosium, Materials.Electrum}; + break; + case 3: + mMats = new Materials[]{Materials.ElectrumFlux, Materials.Enderium, Materials.Erbium, Materials.Europium, Materials.FierySteel, Materials.Gadolinium, Materials.Gallium, Materials.Holmium, Materials.HSLA, Materials.Indium, Materials.InfusedGold, Materials.Invar, Materials.Iridium, Materials.IronMagnetic, Materials.IronWood, Materials.Kanthal}; + break; + case 4: + mMats = new Materials[]{Materials.Knightmetal, Materials.Lanthanum, Materials.Lead, Materials.Lutetium, Materials.Magnalium, Materials.Magnesium, Materials.Manganese, Materials.MeteoricIron, Materials.MeteoricSteel, Materials.Mithril, Materials.Molybdenum, Materials.Naquadah, Materials.NaquadahAlloy, Materials.NaquadahEnriched, Materials.Naquadria}; + break; + case 5: + mMats = new Materials[]{Materials.Neodymium, Materials.NeodymiumMagnetic, Materials.Neutronium, Materials.Nichrome, Materials.Nickel, Materials.Niobium, Materials.NiobiumNitride, Materials.NiobiumTitanium, Materials.Osmiridium, Materials.Osmium, Materials.Palladium, Materials.PigIron, Materials.Platinum, Materials.Plutonium, Materials.Plutonium241, Materials.Praseodymium}; + break; + case 6: + mMats = new Materials[]{Materials.Promethium, Materials.RedAlloy, Materials.RedSteel, Materials.RoseGold, Materials.Rubidium, Materials.Samarium, Materials.Scandium, Materials.ShadowIron, Materials.ShadowSteel, Materials.Silicon, Materials.Silver, Materials.SolderingAlloy, Materials.StainlessSteel, Materials.Steel, Materials.SteelMagnetic, Materials.SterlingSilver}; + break; + case 7: + mMats = new Materials[]{Materials.Sunnarium, Materials.Tantalum, Materials.Tellurium, Materials.Terbium, Materials.Thaumium, Materials.Thorium, Materials.Thulium, Materials.Tin, Materials.TinAlloy, Materials.Titanium, Materials.Tritanium, Materials.Tungsten, Materials.TungstenSteel, Materials.Ultimet, Materials.Uranium, Materials.Uranium235}; + break; + case 8: + mMats = new Materials[]{Materials.Vanadium, Materials.VanadiumGallium, Materials.WroughtIron, Materials.Ytterbium, Materials.Yttrium, Materials.YttriumBariumCuprate, Materials.Zinc, Materials.TungstenCarbide, Materials.VanadiumSteel, Materials.HSSG, Materials.HSSE, Materials.HSSS, Materials.Steeleaf}; + } + + t = ((String)entry.getKey()).substring("gt.blockmetal1.".length(), ((String)entry.getKey()).length() - ".name".length()); + i = Integer.parseInt(t); + + try { + lServerNames.put((String)entry.getKey(), "Block of " + mMats[i].toString()); + } catch (ArrayIndexOutOfBoundsException var12) { + mMats = null; + } + } else if (((String)entry.getKey()).contains("blockgem")) { + mMats = null; + t = ((String)entry.getKey()).substring("gt.blockgem".length()); + t = t.substring(0, 1); + i = Integer.parseInt(t); + switch(i) { + case 1: + mMats = new Materials[]{Materials.InfusedAir, Materials.Amber, Materials.Amethyst, Materials.InfusedWater, Materials.BlueTopaz, Materials.CertusQuartz, Materials.Dilithium, Materials.EnderEye, Materials.EnderPearl, Materials.FoolsRuby, Materials.Force, Materials.Forcicium, Materials.Forcillium, Materials.GreenSapphire, Materials.InfusedFire, Materials.Jasper}; + break; + case 2: + mMats = new Materials[]{Materials.Lazurite, Materials.Lignite, Materials.Monazite, Materials.Niter, Materials.Olivine, Materials.Opal, Materials.InfusedOrder, Materials.InfusedEntropy, Materials.Phosphorus, Materials.Quartzite, Materials.GarnetRed, Materials.Ruby, Materials.Sapphire, Materials.Sodalite, Materials.Tanzanite, Materials.InfusedEarth}; + break; + case 3: + mMats = new Materials[]{Materials.Topaz, Materials.Vinteum, Materials.GarnetYellow, Materials.NetherStar, Materials.Charcoal, Materials.Blaze}; + } + + t = ((String)entry.getKey()).substring("gt.blockgem1.".length(), ((String)entry.getKey()).length() - ".name".length()); + i = Integer.parseInt(t); + lServerNames.put((String)entry.getKey(), "Block of " + mMats[i].toString()); + mMats = null; + } + } + } + + internal = null; + internal2 = null; + internal3 = null; + internal4 = null; + return; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java index 2cfdf2d178..355335a03d 100644 --- a/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java +++ b/src/main/java/gregtech/common/tileentities/machines/basic/GT_MetaTileEntity_Scanner.java @@ -1,17 +1,27 @@ package gregtech.common.tileentities.machines.basic; +import cpw.mods.fml.common.FMLCommonHandler; import forestry.api.genetics.AlleleManager; import forestry.api.genetics.IIndividual; import gregtech.GT_Mod; import gregtech.api.GregTech_API; -import gregtech.api.enums.*; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine; import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.ItemData; -import gregtech.api.util.*; +import gregtech.api.util.GT_Assemblyline_Server; +import gregtech.api.util.GT_Log; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; import gregtech.common.items.behaviors.Behaviour_DataOrb; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -151,64 +161,101 @@ public int checkRecipe() { } } if(ItemList.Tool_DataStick.isStackEqual(getSpecialSlot(), false, true)&& aStack !=null){ - for(GT_Recipe.GT_Recipe_AssemblyLine tRecipe:GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes){ - if(GT_Utility.areStacksEqual(tRecipe.mResearchItem, aStack, true)){ - this.mOutputItems[0] = GT_Utility.copyAmount(1L, new Object[]{getSpecialSlot()}); - GT_Utility.ItemNBT.setBookTitle(this.mOutputItems[0], tRecipe.mOutput.getDisplayName()+" Construction Data"); - NBTTagCompound tNBT = this.mOutputItems[0].getTagCompound(); - if (tNBT == null) { - tNBT = new NBTTagCompound(); - } - tNBT.setTag("output", tRecipe.mOutput.writeToNBT(new NBTTagCompound())); - tNBT.setInteger("time", tRecipe.mDuration); - tNBT.setInteger("eu", tRecipe.mEUt); - for(int i = 0 ; i < tRecipe.mInputs.length ; i++){ - tNBT.setTag(""+i, tRecipe.mInputs[i].writeToNBT(new NBTTagCompound())); - } - for(int i = 0 ; i < tRecipe.mOreDictAlt.length ; i++){ - if (tRecipe.mOreDictAlt[i] != null && tRecipe.mOreDictAlt[i].length > 0) { - tNBT.setInteger("a" + i, tRecipe.mOreDictAlt[i].length); - for (int j = 0; j < tRecipe.mOreDictAlt[i].length; j++) { - tNBT.setTag("a" + i + ":" + j, tRecipe.mOreDictAlt[i][j].writeToNBT(new NBTTagCompound())); - } - } - } - for(int i = 0 ; i < tRecipe.mFluidInputs.length ; i++){ - tNBT.setTag("f"+i, tRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound())); - } - tNBT.setString("author", "Assembly Line Recipe Generator"); - NBTTagList tNBTList = new NBTTagList(); - tNBTList.appendTag(new NBTTagString("Constructionplan for "+tRecipe.mOutput.stackSize+" "+ tRecipe.mOutput.getDisplayName()+". Needed EU/t: "+tRecipe.mEUt+" Productiontime: "+(tRecipe.mDuration/20))); - for(int i=0;i 0) tNBTList.appendTag(new NBTTagString(tBuilder.toString())); - } else if(tRecipe.mInputs[i]!=null){ - tNBTList.appendTag(new NBTTagString("Input Bus "+(i+1)+": "+tRecipe.mInputs[i].stackSize+" "+ tRecipe.mInputs[i].getDisplayName())); - } - } - for(int i=0;i 0) { + tNBT.setInteger("a" + i, tRecipe.mOreDictAlt[i].length); + for (int j = 0; j < tRecipe.mOreDictAlt[i].length; j++) { + tNBT.setTag("a" + i + ":" + j, tRecipe.mOreDictAlt[i][j].writeToNBT(new NBTTagCompound())); + } + } + } + for(int i = 0 ; i < tRecipe.mFluidInputs.length ; i++){ + tNBT.setTag("f"+i, tRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound())); + } + tNBT.setString("author", "Assembling Line Recipe Generator"); + NBTTagList tNBTList = new NBTTagList(); + s=tRecipe.mOutput.getDisplayName(); + if (FMLCommonHandler.instance().getEffectiveSide().isServer()) { + s = GT_Assemblyline_Server.lServerNames.get(tRecipe.mOutput.getDisplayName()); + if (s==null) + s=tRecipe.mOutput.getDisplayName(); + } + tNBTList.appendTag(new NBTTagString("Construction plan for "+tRecipe.mOutput.stackSize+" "+s+". Needed EU/t: "+tRecipe.mEUt+" Production time: "+(tRecipe.mDuration/20))); + for(int i=0;i 0) tNBTList.appendTag(new NBTTagString(tBuilder.toString())); + } else if(tRecipe.mInputs[i]!=null){ + s=tRecipe.mInputs[i].getDisplayName(); + if (FMLCommonHandler.instance().getEffectiveSide().isServer()) { + s = GT_Assemblyline_Server.lServerNames.get(tRecipe.mInputs[i].getDisplayName()); + if (s==null) + s=tRecipe.mInputs[i].getDisplayName(); + } + tNBTList.appendTag(new NBTTagString("Input Bus "+(i+1)+": "+tRecipe.mInputs[i].stackSize+" "+s)); + } + } + for(int i=0;i