From 7ba0fc903e5d14928d2b894b00a7b7dfc65eee18 Mon Sep 17 00:00:00 2001 From: querns <33518699+querns@users.noreply.github.com> Date: Thu, 19 Sep 2024 08:53:17 -0500 Subject: Infinite Spraycan Additions (#3226) Co-authored-by: Caedis --- src/main/java/gregtech/api/items/GTGenericItem.java | 6 +++++- src/main/java/gregtech/api/items/MetaBaseItem.java | 16 +++++++++++++--- src/main/java/gregtech/api/items/MetaGeneratedItem.java | 6 ++++++ 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src/main/java/gregtech/api/items') diff --git a/src/main/java/gregtech/api/items/GTGenericItem.java b/src/main/java/gregtech/api/items/GTGenericItem.java index 4f0994bb12..5febfcc173 100644 --- a/src/main/java/gregtech/api/items/GTGenericItem.java +++ b/src/main/java/gregtech/api/items/GTGenericItem.java @@ -151,7 +151,11 @@ public class GTGenericItem extends Item implements IProjectileItem { @Override public ItemStack dispenseStack(IBlockSource aSource, ItemStack aStack) { - return ((GTGenericItem) aStack.getItem()).onDispense(aSource, aStack); + final GTGenericItem item = (GTGenericItem) aStack.getItem(); + if (item != null) { + return item.onDispense(aSource, aStack); + } + return aStack; } @Override diff --git a/src/main/java/gregtech/api/items/MetaBaseItem.java b/src/main/java/gregtech/api/items/MetaBaseItem.java index 32e4bba392..fa47043fcc 100644 --- a/src/main/java/gregtech/api/items/MetaBaseItem.java +++ b/src/main/java/gregtech/api/items/MetaBaseItem.java @@ -24,6 +24,8 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; +import com.gtnewhorizons.modularui.api.KeyboardUtil; + import gregtech.api.enums.SubTag; import gregtech.api.interfaces.IItemBehaviour; import gregtech.api.util.GTLanguageManager; @@ -123,6 +125,10 @@ public abstract class MetaBaseItem extends GTGenericItem return forEachBehavior(aStack, behavior -> behavior.onLeftClick(this, aStack, aPlayer)); } + public boolean onMiddleClick(ItemStack aStack, EntityPlayer aPlayer) { + return forEachBehavior(aStack, behavior -> behavior.onMiddleClick(this, aStack, aPlayer)); + } + @Override public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { use(aStack, 0, aPlayer); @@ -260,9 +266,13 @@ public abstract class MetaBaseItem extends GTGenericItem "" + formatNumbers(tStats[0])) + EnumChatFormatting.GRAY); } - ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) - aList = tBehavior.getAdditionalToolTips(this, aList, aStack); + ArrayList> behaviours = mItemBehaviors.get((short) getDamage(aStack)); + if (behaviours != null) { + for (IItemBehaviour behavior : behaviours) { + aList = !KeyboardUtil.isShiftKeyDown() ? behavior.getAdditionalToolTips(this, aList, aStack) + : behavior.getAdditionalToolTipsWhileSneaking(this, aList, aStack); + } + } addAdditionalToolTips(aList, aStack, aPlayer); } diff --git a/src/main/java/gregtech/api/items/MetaGeneratedItem.java b/src/main/java/gregtech/api/items/MetaGeneratedItem.java index 449b1ced24..0d8c1f1b32 100644 --- a/src/main/java/gregtech/api/items/MetaGeneratedItem.java +++ b/src/main/java/gregtech/api/items/MetaGeneratedItem.java @@ -244,6 +244,12 @@ public abstract class MetaGeneratedItem extends MetaBaseItem implements IGT_Item return this; } + @SuppressWarnings("UnusedReturnValue") + public final MetaGeneratedItem setSubIcons(int metaValue, int length) { + mIconList[metaValue] = Arrays.copyOf(mIconList[metaValue], length + 1); + return this; + } + /** * * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765] -- cgit