diff options
author | Tec <daniel112092@gmail.com> | 2018-11-25 11:16:25 +0100 |
---|---|---|
committer | Tec <daniel112092@gmail.com> | 2018-11-25 11:16:25 +0100 |
commit | 553743ce4c30e7f27cc2ed6f6894943a3a45d7e1 (patch) | |
tree | 4b7c22d12199b09a93eec95f62d70c7a0a512112 /src | |
parent | ad33fe767bf00f9aa804ec5d26f8a07598d1571b (diff) | |
download | GT5-Unofficial-553743ce4c30e7f27cc2ed6f6894943a3a45d7e1.tar.gz GT5-Unofficial-553743ce4c30e7f27cc2ed6f6894943a3a45d7e1.tar.bz2 GT5-Unofficial-553743ce4c30e7f27cc2ed6f6894943a3a45d7e1.zip |
Fix assline recipe gen?
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java | 213 |
1 files changed, 152 insertions, 61 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java index 91d2bca9a2..745c3709d7 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java @@ -30,6 +30,7 @@ import net.minecraft.nbt.NBTTagString; import net.minecraft.util.EnumChatFormatting; import java.util.ArrayList; +import java.util.LinkedHashMap; import static com.github.technus.tectech.CommonValues.V; import static com.github.technus.tectech.CommonValues.VN; @@ -201,18 +202,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB if (GT_Utility.areStacksEqual(assRecipe.mResearchItem, holdItem, true)) { tRecipe = assRecipe; //if found - for (GT_Recipe ttRecipe : TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.mRecipeList) { - if (GT_Utility.areStacksEqual(ttRecipe.mInputs[0], holdItem, true)) { - computationRequired = computationRemaining = ttRecipe.mDuration * 20L; - mMaxProgresstime = 20; - mEfficiencyIncrease = 10000; - eRequiredData = (short) (ttRecipe.mSpecialValue >>> 16); - eAmpereFlow = (short) (ttRecipe.mSpecialValue & 0xFFFF); - mEUt = ttRecipe.mEUt; - eHolders.get(0).getBaseMetaTileEntity().setActive(true); - return true; - } - } + if (iterateRecipes()) return true; } } }else if(ItemList.Tool_DataOrb.isStackEqual(itemStack, false, true)){ @@ -221,18 +211,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB aRecipe = assRecipeTT; machineType=machine; //if found - for (GT_Recipe ttRecipe : TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.mRecipeList) { - if (GT_Utility.areStacksEqual(ttRecipe.mInputs[0], holdItem, true)) { - computationRequired = computationRemaining = ttRecipe.mDuration * 20L; - mMaxProgresstime = 20; - mEfficiencyIncrease = 10000; - eRequiredData = (short) (ttRecipe.mSpecialValue >>> 16); - eAmpereFlow = (short) (ttRecipe.mSpecialValue & 0xFFFF); - mEUt = ttRecipe.mEUt; - eHolders.get(0).getBaseMetaTileEntity().setActive(true); - return true; - } - } + if (iterateRecipes()) return true; } } for (TT_recipe.TT_assLineRecipe assRecipeTT:TT_recipe.TT_Recipe_Map.sCrafterRecipes.recipeList()){ @@ -240,18 +219,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB aRecipe = assRecipeTT; machineType=crafter; //if found - for (GT_Recipe ttRecipe : TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.mRecipeList) { - if (GT_Utility.areStacksEqual(ttRecipe.mInputs[0], holdItem, true)) { - computationRequired = computationRemaining = ttRecipe.mDuration * 20L; - mMaxProgresstime = 20; - mEfficiencyIncrease = 10000; - eRequiredData = (short) (ttRecipe.mSpecialValue >>> 16); - eAmpereFlow = (short) (ttRecipe.mSpecialValue & 0xFFFF); - mEUt = ttRecipe.mEUt; - eHolders.get(0).getBaseMetaTileEntity().setActive(true); - return true; - } - } + if (iterateRecipes()) return true; } } } @@ -264,6 +232,22 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB return false; } + private boolean iterateRecipes() { + for (GT_Recipe ttRecipe : TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.mRecipeList) { + if (GT_Utility.areStacksEqual(ttRecipe.mInputs[0], holdItem, true)) { + computationRequired = computationRemaining = ttRecipe.mDuration * 20L; + mMaxProgresstime = 20; + mEfficiencyIncrease = 10000; + eRequiredData = (short) (ttRecipe.mSpecialValue >>> 16); + eAmpereFlow = (short) (ttRecipe.mSpecialValue & 0xFFFF); + mEUt = ttRecipe.mEUt; + eHolders.get(0).getBaseMetaTileEntity().setActive(true); + return true; + } + } + return false; + } + @Override public boolean onRunningTick(ItemStack aStack) { if(computationRemaining<=0) { @@ -277,39 +261,146 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB } } - @Override - public void outputAfterRecipe_EM() { - if(!eHolders.isEmpty()) { - if (tRecipe != null && ItemList.Tool_DataStick.isStackEqual(mInventory[1], false, true)){ - eHolders.get(0).getBaseMetaTileEntity().setActive(false); - eHolders.get(0).mInventory[0] = null; + private void makeStick(){ + mInventory[1].setTagCompound(new NBTTagCompound()); + mInventory[1].setStackDisplayName(GT_LanguageManager.getTranslation(tRecipe.mOutput.getDisplayName()) + " Construction Data"); + GT_Utility.ItemNBT.setBookTitle(mInventory[1], GT_LanguageManager.getTranslation(tRecipe.mOutput.getDisplayName()) + " Construction Data"); + NBTTagCompound tNBT = mInventory[1].getTagCompound();//code above makes it not null + + 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(String.valueOf(i), tRecipe.mInputs[i].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", EnumChatFormatting.BLUE + "Tec" + EnumChatFormatting.DARK_BLUE + "Tech" + EnumChatFormatting.WHITE + " Assembling Line Recipe Generator"); + NBTTagList tNBTList = new NBTTagList(); + tNBTList.appendTag(new NBTTagString("Construction plan for " + tRecipe.mOutput.stackSize + ' ' + GT_LanguageManager.getTranslation(tRecipe.mOutput.getDisplayName()) + ". Needed EU/t: " + tRecipe.mEUt + " Production time: " + tRecipe.mDuration / 20)); + for (int i = 0; i < tRecipe.mInputs.length; i++) { + if (tRecipe.mInputs[i] != null) { + tNBTList.appendTag(new NBTTagString("Input Bus " + (i + 1) + ": " + tRecipe.mInputs[i].stackSize + ' ' + GT_LanguageManager.getTranslation(tRecipe.mInputs[i].getDisplayName()))); + } + } + for (int i = 0; i < tRecipe.mFluidInputs.length; i++) { + if (tRecipe.mFluidInputs[i] != null) { + tNBTList.appendTag(new NBTTagString("Input Hatch " + (i + 1) + ": " + tRecipe.mFluidInputs[i].amount + "L " + GT_LanguageManager.getTranslation(tRecipe.mFluidInputs[i].getLocalizedName()))); + } + } + tNBT.setTag("pages", tNBTList); + } - mInventory[1].setStackDisplayName(GT_LanguageManager.getTranslation(tRecipe.mOutput.getDisplayName()) + " Construction Data"); - NBTTagCompound tNBT = mInventory[1].getTagCompound();//code above makes it not null + private static LinkedHashMap<String, String> lServerNames; + static { + try { + Class GT_Assemblyline_Server = Class.forName("gregtech.api.util.GT_Assemblyline_Server"); + lServerNames=(LinkedHashMap<String, String>)GT_Assemblyline_Server.getField("lServerNames").get(null); + }catch (ClassNotFoundException|NoSuchFieldException|IllegalAccessException e){ + lServerNames=null; + } + } - 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(String.valueOf(i), tRecipe.mInputs[i].writeToNBT(new NBTTagCompound())); + private void makeStick2(){ + String s = tRecipe.mOutput.getDisplayName(); + if (getBaseMetaTileEntity().isServerSide()) { + s = lServerNames.get(tRecipe.mOutput.getDisplayName()); + if (s==null) { + s = tRecipe.mOutput.getDisplayName(); + } + } + mInventory[1].setTagCompound(new NBTTagCompound()); + mInventory[1].setStackDisplayName(s+" Construction Data"); + GT_Utility.ItemNBT.setBookTitle(mInventory[1], s+" Construction Data"); + + NBTTagCompound tNBT = mInventory[1].getTagCompound(); + + 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())); + } + } + for(int i = 0 ; i < tRecipe.mFluidInputs.length ; i++){ + tNBT.setTag("f"+i, tRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound())); + } + tNBT.setString("author", EnumChatFormatting.BLUE + "Tec" + EnumChatFormatting.DARK_BLUE + "Tech" + EnumChatFormatting.WHITE + ' ' + machineType+ " Recipe Generator"); + NBTTagList tNBTList = new NBTTagList(); + s=tRecipe.mOutput.getDisplayName(); + if (getBaseMetaTileEntity().isServerSide()) { + s = 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<tRecipe.mInputs.length;i++){ + if (tRecipe.mOreDictAlt[i] != null) { + int count = 0; + StringBuilder tBuilder = new StringBuilder("Input Bus "+(i+1)+": "); + for (ItemStack tStack : tRecipe.mOreDictAlt[i]) { + if (tStack != null) { + s=tStack.getDisplayName(); + if (getBaseMetaTileEntity().isServerSide()) { + s=lServerNames.get(tStack.getDisplayName()); + if (s==null) + s=tStack.getDisplayName(); + } + + + tBuilder.append(count == 0 ? "" : "\nOr ").append(tStack.stackSize).append(" ").append(s); + count++; + } } - tNBT.setString("author", EnumChatFormatting.BLUE + "Tec" + EnumChatFormatting.DARK_BLUE + "Tech" + EnumChatFormatting.WHITE + " Assembling Line Recipe Generator"); - NBTTagList tNBTList = new NBTTagList(); - tNBTList.appendTag(new NBTTagString("Construction plan for " + tRecipe.mOutput.stackSize + ' ' + GT_LanguageManager.getTranslation(tRecipe.mOutput.getDisplayName()) + ". Needed EU/t: " + tRecipe.mEUt + " Production time: " + tRecipe.mDuration / 20)); - for (int i = 0; i < tRecipe.mInputs.length; i++) { - if (tRecipe.mInputs[i] != null) { - tNBTList.appendTag(new NBTTagString("Input Bus " + (i + 1) + ": " + tRecipe.mInputs[i].stackSize + ' ' + GT_LanguageManager.getTranslation(tRecipe.mInputs[i].getDisplayName()))); + if (count > 0) tNBTList.appendTag(new NBTTagString(tBuilder.toString())); + } else if(tRecipe.mInputs[i]!=null){ + s=tRecipe.mInputs[i].getDisplayName(); + if (getBaseMetaTileEntity().isServerSide()) { + s = lServerNames.get(tRecipe.mInputs[i].getDisplayName()); + if (s==null) { + s = tRecipe.mInputs[i].getDisplayName(); } } - for (int i = 0; i < tRecipe.mFluidInputs.length; i++) { - if (tRecipe.mFluidInputs[i] != null) { - tNBTList.appendTag(new NBTTagString("Input Hatch " + (i + 1) + ": " + tRecipe.mFluidInputs[i].amount + "L " + GT_LanguageManager.getTranslation(tRecipe.mFluidInputs[i].getLocalizedName()))); + tNBTList.appendTag(new NBTTagString("Input Bus "+(i+1)+": "+tRecipe.mInputs[i].stackSize+" "+s)); + } + } + for(int i=0;i<tRecipe.mFluidInputs.length;i++){ + if(tRecipe.mFluidInputs[i]!=null){ + s=tRecipe.mFluidInputs[i].getLocalizedName(); + if (getBaseMetaTileEntity().isServerSide()) { + s = lServerNames.get(tRecipe.mFluidInputs[i].getLocalizedName()); + if (s==null) { + s = tRecipe.mFluidInputs[i].getLocalizedName(); } } - tNBT.setTag("pages", tNBTList); + tNBTList.appendTag(new NBTTagString("Input Hatch "+(i+1)+": "+tRecipe.mFluidInputs[i].amount+"L "+s)); + } + } + tNBT.setTag("pages", tNBTList); + + mInventory[1].setTagCompound(tNBT); + } + + @Override + public void outputAfterRecipe_EM() { + if(!eHolders.isEmpty()) { + if (tRecipe != null && ItemList.Tool_DataStick.isStackEqual(mInventory[1], false, true)){ + eHolders.get(0).getBaseMetaTileEntity().setActive(false); + eHolders.get(0).mInventory[0] = null; + if (lServerNames == null) { + makeStick(); + } else { + makeStick2(); + } }else if (aRecipe != null && ItemList.Tool_DataOrb.isStackEqual(mInventory[1], false, true)) { eHolders.get(0).getBaseMetaTileEntity().setActive(false); eHolders.get(0).mInventory[0] = null; |