aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2022-03-05 15:11:44 +0100
committerGitHub <noreply@github.com>2022-03-05 15:11:44 +0100
commit41a36c2ebe9834cd1d716ad89f3d2b40d093358f (patch)
treeff67f12833d00757279741cb01e99cde16509c12
parentdbab3423566f64c354977acc362ccdd3335bb865 (diff)
downloadGT5-Unofficial-41a36c2ebe9834cd1d716ad89f3d2b40d093358f.tar.gz
GT5-Unofficial-41a36c2ebe9834cd1d716ad89f3d2b40d093358f.tar.bz2
GT5-Unofficial-41a36c2ebe9834cd1d716ad89f3d2b40d093358f.zip
Fix invalid materials being accepted in radio hatch (#100)
* Fix invalid materials being accepted in radio hatch * Dont show decay ticks when there is no material inside Former-commit-id: 707c6e793f7844f900762eed26a17d5b2de0621a
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java157
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/server/container/GT_Container_RadioHatch.java40
-rw-r--r--src/main/java/com/github/bartimaeusnek/crossmod/GTpp/loader/RadioHatchCompat.java7
3 files changed, 122 insertions, 82 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java
index d4269cc534..dab124781a 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java
@@ -167,79 +167,123 @@ public class GT_MetaTileEntity_RadioHatch extends GT_MetaTileEntity_Hatch {
}
}
+ if(this.mass >= this.cap)
+ return;
+
ItemStack lStack = this.mInventory[0];
- if (lStack == null)
- return;
+ isStackValidRadioMaterial(lStack, true);
+
+ }
+ }
+
+ public boolean isStackValidRadioMaterial(ItemStack lStack)
+ {
+ return isStackValidRadioMaterial(lStack, false);
+ }
- IRadMaterial radmat = null;
- //gt++ compat
- if (LoaderReference.miscutils)
- radmat = RadioHatchCompat.GTppRadChecker(lStack);
-
- if (lStack.getItem() instanceof IRadMaterial || radmat != null) {
- if (radmat == null)
- radmat = ((IRadMaterial) lStack.getItem());
- int sv = radmat.getRadiationLevel(lStack);
- if (sv > BioVatLogicAdder.RadioHatch.getMaxSv())
- BioVatLogicAdder.RadioHatch.MaxSV = sv;
- if (this.mass == 0 || this.sievert == sv) {
- if (this.mass + radmat.getAmountOfMaterial(lStack) <= this.cap) {
- this.mass += radmat.getAmountOfMaterial(lStack);
- this.sievert = sv;
- this.mInventory[0].stackSize--;
- this.updateSlots();
- this.colorForGUI = radmat.getColorForGUI(lStack);
- this.material = radmat.getNameForGUI(lStack);
- return;
+ public boolean isStackValidRadioMaterial(ItemStack lStack, boolean use){
+ if (lStack == null)
+ return false;
+
+ IRadMaterial radmat = null;
+ //gt++ compat
+ if (LoaderReference.miscutils)
+ radmat = RadioHatchCompat.GTppRadChecker(lStack);
+
+ //GT++ and BW Materials check
+
+ if (lStack.getItem() instanceof IRadMaterial || radmat != null) {
+ if (radmat == null)
+ radmat = ((IRadMaterial) lStack.getItem());
+ int sv = radmat.getRadiationLevel(lStack);
+ int amount = radmat.getAmountOfMaterial(lStack);
+ if (sv > BioVatLogicAdder.RadioHatch.getMaxSv())
+ BioVatLogicAdder.RadioHatch.MaxSV = sv;
+ if ((this.mass == 0 || this.sievert == sv) && sv > 0 && amount > 0) {
+ if(use) {
+ if (this.mass + amount <= this.cap) {
+ String name = radmat.getNameForGUI(lStack);
+ if (this.mass == 0 || this.material.equals(name)) {
+ this.mass += amount;
+ this.sievert = sv;
+ this.mInventory[0].stackSize--;
+ this.updateSlots();
+ this.colorForGUI = radmat.getColorForGUI(lStack);
+ this.material = name;
+ return true;
+ }
}
+ return false;
}
+ return true;
}
+ }
- for (ItemStack varStack : BioVatLogicAdder.RadioHatch.getIsSv().keySet()) {
- if (GT_Utility.areStacksEqual(varStack, lStack, true)) {
- if (this.mass == 0 || this.sievert == BioVatLogicAdder.RadioHatch.getIsSv().get(varStack)) {
- int massToAdd = BioVatLogicAdder.RadioHatch.getIsKg().getOrDefault(varStack,1);
- if (this.mass + massToAdd <= this.cap) {
- this.mass += massToAdd;
- this.sievert = BioVatLogicAdder.RadioHatch.getIsSv().get(varStack);
- this.mInventory[0].stackSize--;
- this.updateSlots();
- this.colorForGUI = BioVatLogicAdder.RadioHatch.getIsColor().get(varStack);
- this.material = StatCollector.translateToLocal(varStack.getUnlocalizedName());
- return;
+ // Predefined materials check
+
+ for (ItemStack varStack : BioVatLogicAdder.RadioHatch.getIsSv().keySet()) {
+ if (GT_Utility.areStacksEqual(varStack, lStack, true)) {
+ int amount = BioVatLogicAdder.RadioHatch.getIsKg().getOrDefault(varStack,0);
+ int sv = BioVatLogicAdder.RadioHatch.getIsSv().get(varStack);
+ if ((this.mass == 0 || this.sievert == sv) && sv > 0 && amount > 0) {
+ if (use) {
+ if (this.mass + amount <= this.cap) {
+ String name = StatCollector.translateToLocal(varStack.getUnlocalizedName());
+ if (this.mass == 0 || this.material.equals(name)) {
+ this.mass += amount;
+ this.sievert = BioVatLogicAdder.RadioHatch.getIsSv().get(varStack);
+ this.mInventory[0].stackSize--;
+ this.updateSlots();
+ this.colorForGUI = BioVatLogicAdder.RadioHatch.getIsColor().get(varStack);
+ this.material = name;
+ return true;
+ }
}
+ return false;
}
+ return true;
}
}
+ }
- //check material for general validity
- if (GT_OreDictUnificator.getAssociation(lStack) != null && GT_OreDictUnificator.getAssociation(lStack).mMaterial != null && GT_OreDictUnificator.getAssociation(lStack).mMaterial.mMaterial != null) {
- //check orePrefix for general validity
- if (GT_OreDictUnificator.getAssociation(lStack).mPrefix != null) {
- OrePrefixes orePrefixes = GT_OreDictUnificator.getAssociation(lStack).mPrefix;
- //check orePrefix for specialised validity
- if (orePrefixes.equals(OrePrefixes.stickLong) || orePrefixes.equals(OrePrefixes.stick)) {
- Materials materials = GT_OreDictUnificator.getAssociation(lStack).mMaterial.mMaterial;
- //check material for specialised validity
- if (materials.getProtons() >= 83 && materials.getProtons() != 125 || materials.getProtons() == 61 || materials.getProtons() == 43) {
- if (this.mass == 0 || this.sievert == calculateSv(materials)) {
- if ((this.mass + (orePrefixes.equals(OrePrefixes.stickLong) ? 2 : 1)) <= this.cap) {
- this.sievert = calculateSv(materials);
- this.mass += orePrefixes.equals(OrePrefixes.stickLong) ? 2 : 1;
- this.mInventory[0].stackSize--;
- this.updateSlots();
- this.colorForGUI = materials.mColor.mRGBa;
- this.material = materials.mName;
+ // Rest
+
+ //check material for general validity
+ if (GT_OreDictUnificator.getAssociation(lStack) != null && GT_OreDictUnificator.getAssociation(lStack).mMaterial != null && GT_OreDictUnificator.getAssociation(lStack).mMaterial.mMaterial != null) {
+ //check orePrefix for general validity
+ if (GT_OreDictUnificator.getAssociation(lStack).mPrefix != null) {
+ OrePrefixes orePrefixes = GT_OreDictUnificator.getAssociation(lStack).mPrefix;
+ //check orePrefix for specialised validity
+ if (orePrefixes.equals(OrePrefixes.stickLong) || orePrefixes.equals(OrePrefixes.stick)) {
+ Materials materials = GT_OreDictUnificator.getAssociation(lStack).mMaterial.mMaterial;
+ //check material for specialised validity
+ if (materials.getProtons() >= 83 && materials.getProtons() != 125 || materials.getProtons() == 61 || materials.getProtons() == 43) {
+ if (use) {
+ int sv = calculateSv(materials);
+ int amount = (orePrefixes.equals(OrePrefixes.stickLong) ? 2 : 1);
+ if (this.mass == 0 || this.sievert == sv) {
+ if ((this.mass + amount) <= this.cap) {
+ String name = materials.mName;
+ if (this.mass == 0 || this.material.equals(name)) {
+ this.sievert = sv;
+ this.mass += orePrefixes.equals(OrePrefixes.stickLong) ? 2 : 1;
+ this.mInventory[0].stackSize--;
+ this.updateSlots();
+ this.colorForGUI = materials.mColor.mRGBa;
+ this.material = materials.mName;
+ return true;
+ }
}
}
+ return false;
}
+ return true;
}
}
}
-
-
}
+ return false;
}
@Override
@@ -249,7 +293,7 @@ public class GT_MetaTileEntity_RadioHatch extends GT_MetaTileEntity_Hatch {
@Override
public String[] getInfoData() {
- if (GT_MetaTileEntity_RadioHatch.calcDecayTicks(this.sievert) != 0)
+ if (this.sievert != 0)
return new String[]{
StatCollector.translateToLocal("tooltip.tile.radhatch.2.name") + " " + this.material,
StatCollector.translateToLocal("tooltip.tile.radhatch.3.name") + " " + this.sievert,
@@ -291,7 +335,8 @@ public class GT_MetaTileEntity_RadioHatch extends GT_MetaTileEntity_Hatch {
}
public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
- return aSide == this.getBaseMetaTileEntity().getFrontFacing();
+ return (aSide == this.getBaseMetaTileEntity().getFrontFacing() &&
+ isStackValidRadioMaterial(aStack));
}
public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/server/container/GT_Container_RadioHatch.java b/src/main/java/com/github/bartimaeusnek/bartworks/server/container/GT_Container_RadioHatch.java
index e576296d7b..9d89ad03b3 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/server/container/GT_Container_RadioHatch.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/server/container/GT_Container_RadioHatch.java
@@ -22,18 +22,11 @@
package com.github.bartimaeusnek.bartworks.server.container;
-import com.github.bartimaeusnek.bartworks.API.BioVatLogicAdder;
-import com.github.bartimaeusnek.bartworks.API.IRadMaterial;
import com.github.bartimaeusnek.bartworks.common.tileentities.tiered.GT_MetaTileEntity_RadioHatch;
-import com.github.bartimaeusnek.bartworks.util.BW_Util;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import gregtech.api.enums.OrePrefixes;
import gregtech.api.gui.GT_Container_1by1;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.objects.ItemData;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Utility;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
@@ -43,7 +36,6 @@ import net.minecraft.item.ItemStack;
import java.nio.ByteBuffer;
import java.util.Iterator;
-import java.util.Optional;
public class GT_Container_RadioHatch extends GT_Container_1by1 {
@@ -168,6 +160,21 @@ public class GT_Container_RadioHatch extends GT_Container_1by1 {
return true;
}
+ // Handle shift-clicking
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer player, int id){
+ Slot slot = (Slot)this.inventorySlots.get(id);
+ ItemStack stack = slot.getStack();
+ if(stack == null)
+ return null;
+ if(slot instanceof RadioSlot)
+ return super.transferStackInSlot(player, id);
+ else if (((GT_MetaTileEntity_RadioHatch)this.mTileEntity.getMetaTileEntity()).isStackValidRadioMaterial(stack))
+ return super.transferStackInSlot(player, id);
+ else
+ return null;
+ }
+
private static class RadioSlot extends Slot{
public RadioSlot(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
@@ -175,22 +182,7 @@ public class GT_Container_RadioHatch extends GT_Container_1by1 {
@Override
public boolean isItemValid(ItemStack p_75214_1_) {
- if (BioVatLogicAdder.RadioHatch.getIsSv()
- .keySet()
- .stream()
- .anyMatch(
- stack -> GT_Utility.areStacksEqual(stack, p_75214_1_,true)
- ))
- return true;
-
- if (!BW_Util.checkStackAndPrefix(p_75214_1_))
- return false;
-
- ItemData ass = GT_OreDictUnificator.getAssociation(p_75214_1_);
- return IRadMaterial.class.isAssignableFrom(p_75214_1_.getItem().getClass()) ||
- ass.mPrefix == OrePrefixes.rod ||
- ass.mPrefix == OrePrefixes.stick ||
- ass.mPrefix == OrePrefixes.stickLong;
+ return ((GT_MetaTileEntity_RadioHatch)((IGregTechTileEntity)this.inventory).getMetaTileEntity()).isStackValidRadioMaterial(p_75214_1_);
}
}
diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/GTpp/loader/RadioHatchCompat.java b/src/main/java/com/github/bartimaeusnek/crossmod/GTpp/loader/RadioHatchCompat.java
index 2b46acee0f..e362bdd5e4 100644
--- a/src/main/java/com/github/bartimaeusnek/crossmod/GTpp/loader/RadioHatchCompat.java
+++ b/src/main/java/com/github/bartimaeusnek/crossmod/GTpp/loader/RadioHatchCompat.java
@@ -165,7 +165,10 @@ public class RadioHatchCompat {
if (RadioHatchCompat.intf.isAssignableFrom(lStack.getItem().getClass())){
if (!RadioHatchCompat.isRadioactive.getBoolean(RadioHatchCompat.f.get(lStack.getItem())))
return null;
- return new RadioHatchCompat.GTPPRadAdapter(RadioHatchCompat.componentType.get(lStack.getItem()).equals(RadioHatchCompat.rod) ? 1 : RadioHatchCompat.componentType.get(lStack.getItem()).equals(RadioHatchCompat.longRod) ? 2 : 0, RadioHatchCompat.f.get(lStack.getItem()));
+ int amount = RadioHatchCompat.componentType.get(lStack.getItem()).equals(RadioHatchCompat.rod) ? 1 : RadioHatchCompat.componentType.get(lStack.getItem()).equals(RadioHatchCompat.longRod) ? 2 : 0;
+ if (amount == 0)
+ return null;
+ return new RadioHatchCompat.GTPPRadAdapter(amount, RadioHatchCompat.f.get(lStack.getItem()));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
@@ -268,4 +271,4 @@ public class RadioHatchCompat {
}
}
-} \ No newline at end of file
+}