aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2021-12-20 21:11:54 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2021-12-20 21:11:54 +0000
commit9f62f89514735c39a48c311593531e7ec6805d09 (patch)
tree9e77bd141455959256f6796057869c272d167037 /src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities
parentaadb1b8f7f0f909feb747c05548351fcfe271de5 (diff)
downloadGT5-Unofficial-9f62f89514735c39a48c311593531e7ec6805d09.tar.gz
GT5-Unofficial-9f62f89514735c39a48c311593531e7ec6805d09.tar.bz2
GT5-Unofficial-9f62f89514735c39a48c311593531e7ec6805d09.zip
Further cache optimizations.
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntity_AutoChisel.java26
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java3
2 files changed, 19 insertions, 10 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntity_AutoChisel.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntity_AutoChisel.java
index 3cdd43c24e..f2fc0cce7a 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntity_AutoChisel.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntity_AutoChisel.java
@@ -9,6 +9,8 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.item.ItemStack;
import team.chisel.carving.Carving;
@@ -57,15 +59,14 @@ public class GregtechMetaTileEntity_AutoChisel extends GT_MetaTileEntity_BasicMa
return null;
}
- private boolean hasValidCache(ItemStack mItem, boolean mClearOnFailure) {
- if (mInputCache != null
- && mOutputCache != null
- && mInputCache.isItemEqual(mItem)
- && ItemStack.areItemStackTagsEqual(mItem, mInputCache)) {
- return true;
+ private boolean hasValidCache(ItemStack aStack, ItemStack aSpecialSlot, boolean aClearOnFailure) {
+ if (mInputCache != null && mOutputCache != null) {
+ if (GT_Utility.areStacksEqual(aStack, mInputCache) && GT_Utility.areStacksEqual(aSpecialSlot, mOutputCache)) {
+ return true;
+ }
}
// clear cache if it was invalid
- if (mClearOnFailure) {
+ if (aClearOnFailure) {
mInputCache = null;
mOutputCache = null;
}
@@ -79,7 +80,7 @@ public class GregtechMetaTileEntity_AutoChisel extends GT_MetaTileEntity_BasicMa
@Override
protected boolean allowPutStackValidated(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
- return hasValidCache(aStack, false) ? true : super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, aSide, aStack) && hasChiselResults(aStack);
+ return hasValidCache(aStack, this.getSpecialSlot(), false) ? true : super.allowPutStackValidated(aBaseMetaTileEntity, aIndex, aSide, aStack) && hasChiselResults(aStack);
}
// lets make sure the user isn't trying to make something from a block that doesn't have this as a valid target
@@ -108,6 +109,9 @@ public class GregtechMetaTileEntity_AutoChisel extends GT_MetaTileEntity_BasicMa
if (aTarget != null && canBeMadeFrom(aInput, aTarget)) {
tOutput = aTarget;
}
+ else if (aTarget != null && !canBeMadeFrom(aInput, aTarget)) {
+ tOutput = null;
+ }
else {
tOutput = getItemsForChiseling(aInput).get(0);
}
@@ -119,10 +123,12 @@ public class GregtechMetaTileEntity_AutoChisel extends GT_MetaTileEntity_BasicMa
ItemStack tOutput = null;
ItemStack aInput = getInputAt(0);
ItemStack aTarget = getSpecialSlot();
- boolean tIsCached = hasValidCache(aInput, true);
+ boolean tIsCached = hasValidCache(aInput, aTarget, true);
if (aInput != null && hasChiselResults(aInput) && aInput.stackSize > 0) {
tOutput = tIsCached ? mOutputCache.copy() : getChiselOutput(aInput, aTarget);
if (tOutput != null) {
+ tOutput = tOutput.copy();
+ tOutput.stackSize = 1;
// We can chisel this
if (canOutput(tOutput)) {
getInputAt(0).stackSize -= 1;
@@ -132,7 +138,7 @@ public class GregtechMetaTileEntity_AutoChisel extends GT_MetaTileEntity_BasicMa
return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
}
if (!tIsCached) {
- cacheItem(aInput, tOutput);
+ cacheItem(ItemUtils.getSimpleStack(aInput, 1), ItemUtils.getSimpleStack(tOutput, 1));
}
this.mOutputItems[0] = tOutput.copy();
return FOUND_AND_SUCCESSFULLY_USED_RECIPE;
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
index 290a36c052..b59bf61301 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
@@ -222,6 +222,9 @@ public class GregtechMetaTileEntity_IndustrialChisel extends GregtechMeta_MultiB
if (aTarget != null && canBeMadeFrom(aInput, aTarget)) {
tOutput = aTarget;
}
+ else if (aTarget != null && !canBeMadeFrom(aInput, aTarget)) {
+ tOutput = null;
+ }
else {
tOutput = getItemsForChiseling(aInput).get(0);
}