aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r--src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java72
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeConstants.java34
2 files changed, 57 insertions, 49 deletions
diff --git a/src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java b/src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java
index 1ada9c78d5..dbe0ff2c40 100644
--- a/src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java
+++ b/src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java
@@ -367,7 +367,12 @@ public class GT_AssemblyLineUtils {
* @return Did we set the new recipe data & Recipe Hash String on the Data Stick?
*/
public static boolean setAssemblyLineRecipeOnDataStick(ItemStack aDataStick, GT_Recipe_AssemblyLine aNewRecipe) {
- if (isItemDataStick(aDataStick)) {
+ return setAssemblyLineRecipeOnDataStick(aDataStick, aNewRecipe, true);
+ }
+
+ public static boolean setAssemblyLineRecipeOnDataStick(ItemStack aDataStick, GT_Recipe_AssemblyLine aNewRecipe,
+ boolean setUpdateTime) {
+ if (isItemDataStick(aDataStick) && aNewRecipe.mOutput != null) {
String s = aNewRecipe.mOutput.getDisplayName();
if (FMLCommonHandler.instance()
.getEffectiveSide()
@@ -419,29 +424,8 @@ public class GT_AssemblyLineUtils {
tNBT.setTag("output", aNewRecipe.mOutput.writeToNBT(new NBTTagCompound()));
tNBT.setInteger("time", aNewRecipe.mDuration);
tNBT.setInteger("eu", aNewRecipe.mEUt);
- for (int i = 0; i < aNewRecipe.mInputs.length; i++) {
- tNBT.setTag("" + i, aNewRecipe.mInputs[i].writeToNBT(new NBTTagCompound()));
- }
- for (int i = 0; i < aNewRecipe.mOreDictAlt.length; i++) {
- if (aNewRecipe.mOreDictAlt[i] != null && aNewRecipe.mOreDictAlt[i].length > 0) {
- tNBT.setInteger("a" + i, aNewRecipe.mOreDictAlt[i].length);
- for (int j = 0; j < aNewRecipe.mOreDictAlt[i].length; j++) {
- tNBT.setTag("a" + i + ":" + j, aNewRecipe.mOreDictAlt[i][j].writeToNBT(new NBTTagCompound()));
- }
- }
- }
- for (int i = 0; i < aNewRecipe.mFluidInputs.length; i++) {
- tNBT.setTag("f" + i, aNewRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound()));
- }
tNBT.setString("author", author);
NBTTagList tNBTList = new NBTTagList();
- s = aNewRecipe.mOutput.getDisplayName();
- if (FMLCommonHandler.instance()
- .getEffectiveSide()
- .isServer()) {
- s = GT_Assemblyline_Server.lServerNames.get(aNewRecipe.mOutput.getDisplayName());
- if (s == null) s = aNewRecipe.mOutput.getDisplayName();
- }
tNBTList.appendTag(
new NBTTagString(
"Construction plan for " + aNewRecipe.mOutput.stackSize
@@ -452,11 +436,17 @@ public class GT_AssemblyLineUtils {
+ " Production time: "
+ (aNewRecipe.mDuration / 20)));
for (int i = 0; i < aNewRecipe.mInputs.length; i++) {
- if (aNewRecipe.mOreDictAlt[i] != null) {
+ boolean hasSetOreDictAlt = false;
+
+ if (aNewRecipe.mOreDictAlt[i] != null && aNewRecipe.mOreDictAlt[i].length > 0) {
+ tNBT.setInteger("a" + i, aNewRecipe.mOreDictAlt[i].length);
int count = 0;
StringBuilder tBuilder = new StringBuilder("Input Bus " + (i + 1) + ": ");
- for (ItemStack tStack : aNewRecipe.mOreDictAlt[i]) {
+ for (int j = 0; j < aNewRecipe.mOreDictAlt[i].length; j++) {
+ ItemStack tStack = aNewRecipe.mOreDictAlt[i][j];
if (tStack != null) {
+ tNBT.setTag("a" + i + ":" + j, tStack.writeToNBT(new NBTTagCompound()));
+
s = tStack.getDisplayName();
if (FMLCommonHandler.instance()
.getEffectiveSide()
@@ -472,21 +462,33 @@ public class GT_AssemblyLineUtils {
count++;
}
}
- if (count > 0) tNBTList.appendTag(new NBTTagString(tBuilder.toString()));
- } else if (aNewRecipe.mInputs[i] != null) {
- s = aNewRecipe.mInputs[i].getDisplayName();
- if (FMLCommonHandler.instance()
- .getEffectiveSide()
- .isServer()) {
- s = GT_Assemblyline_Server.lServerNames.get(aNewRecipe.mInputs[i].getDisplayName());
- if (s == null) s = aNewRecipe.mInputs[i].getDisplayName();
+ if (count > 0) {
+ tNBTList.appendTag(new NBTTagString(tBuilder.toString()));
+ hasSetOreDictAlt = true;
+ }
+ }
+
+ if (aNewRecipe.mInputs[i] != null) {
+ tNBT.setTag("" + i, aNewRecipe.mInputs[i].writeToNBT(new NBTTagCompound()));
+
+ if (!hasSetOreDictAlt) {
+ s = aNewRecipe.mInputs[i].getDisplayName();
+ if (FMLCommonHandler.instance()
+ .getEffectiveSide()
+ .isServer()) {
+ s = GT_Assemblyline_Server.lServerNames.get(aNewRecipe.mInputs[i].getDisplayName());
+ if (s == null) s = aNewRecipe.mInputs[i].getDisplayName();
+ }
+ tNBTList.appendTag(
+ new NBTTagString(
+ "Input Bus " + (i + 1) + ": " + aNewRecipe.mInputs[i].stackSize + " " + s));
}
- tNBTList.appendTag(
- new NBTTagString("Input Bus " + (i + 1) + ": " + aNewRecipe.mInputs[i].stackSize + " " + s));
}
}
for (int i = 0; i < aNewRecipe.mFluidInputs.length; i++) {
if (aNewRecipe.mFluidInputs[i] != null) {
+ tNBT.setTag("f" + i, aNewRecipe.mFluidInputs[i].writeToNBT(new NBTTagCompound()));
+
s = aNewRecipe.mFluidInputs[i].getLocalizedName();
if (FMLCommonHandler.instance()
.getEffectiveSide()
@@ -500,7 +502,7 @@ public class GT_AssemblyLineUtils {
}
}
tNBT.setTag("pages", tNBTList);
- tNBT.setLong("lastUpdate", System.currentTimeMillis());
+ if (setUpdateTime) tNBT.setLong("lastUpdate", System.currentTimeMillis());
aDataStick.setTagCompound(tNBT);
// Set recipe hash
setRecipeHashOnDataStick(aDataStick, aHash);
diff --git a/src/main/java/gregtech/api/util/GT_RecipeConstants.java b/src/main/java/gregtech/api/util/GT_RecipeConstants.java
index 7077654fb4..a8cdb19b7a 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeConstants.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeConstants.java
@@ -480,12 +480,28 @@ public class GT_RecipeConstants {
tPersistentHash = tPersistentHash * 31 + aResearchTime;
tPersistentHash = tPersistentHash * 31 + r.mDuration;
tPersistentHash = tPersistentHash * 31 + r.mEUt;
+
+ GT_Recipe.GT_Recipe_AssemblyLine tRecipe = new GT_Recipe.GT_Recipe_AssemblyLine(
+ aResearchItem,
+ aResearchTime,
+ r.mInputs,
+ r.mFluidInputs,
+ aOutput,
+ r.mDuration,
+ r.mEUt,
+ r.mOreDictAlt);
+ tRecipe.setPersistentHash(tPersistentHash);
+ GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes.add(tRecipe);
+ GT_AssemblyLineUtils.addRecipeToCache(tRecipe);
+
+ ItemStack writesDataStick = ItemList.Tool_DataStick.getWithName(1L, "Writes Research result");
+ GT_AssemblyLineUtils.setAssemblyLineRecipeOnDataStick(writesDataStick, tRecipe, false);
Collection<GT_Recipe> ret = new ArrayList<>(3);
ret.addAll(
GT_Values.RA.stdBuilder()
.itemInputs(aResearchItem)
.itemOutputs(aOutput)
- .special(ItemList.Tool_DataStick.getWithName(1L, "Writes Research result"))
+ .special(writesDataStick)
.duration(aResearchTime)
.eut(TierEU.RECIPE_LV)
.specialValue(-201) // means it's scanned
@@ -494,12 +510,14 @@ public class GT_RecipeConstants {
.fake()
.addTo(scannerFakeRecipes));
+ ItemStack readsDataStick = ItemList.Tool_DataStick.getWithName(1L, "Reads Research result");
+ GT_AssemblyLineUtils.setAssemblyLineRecipeOnDataStick(readsDataStick, tRecipe, false);
ret.add(
RecipeMaps.assemblylineVisualRecipes.addFakeRecipe(
false,
r.mInputs,
new ItemStack[] { aOutput },
- new ItemStack[] { ItemList.Tool_DataStick.getWithName(1L, "Reads Research result") },
+ new ItemStack[] { readsDataStick },
r.mFluidInputs,
null,
r.mDuration,
@@ -508,18 +526,6 @@ public class GT_RecipeConstants {
r.mOreDictAlt,
false));
- GT_Recipe.GT_Recipe_AssemblyLine tRecipe = new GT_Recipe.GT_Recipe_AssemblyLine(
- aResearchItem,
- aResearchTime,
- r.mInputs,
- r.mFluidInputs,
- aOutput,
- r.mDuration,
- r.mEUt,
- r.mOreDictAlt);
- tRecipe.setPersistentHash(tPersistentHash);
- GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes.add(tRecipe);
- GT_AssemblyLineUtils.addRecipeToCache(tRecipe);
return ret;
});