diff options
author | querns <33518699+querns@users.noreply.github.com> | 2024-09-08 13:02:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-08 18:02:12 +0000 |
commit | 3b2431ea07cff32fa174f496a1e16246a89b429e (patch) | |
tree | 3987a80f2fd5e396ae70821971b3d673e003dfe0 /src/main/java/gregtech/api/items | |
parent | 8ca97eab0abfc33a37a15fe4a66bc112c743480a (diff) | |
download | GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.tar.gz GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.tar.bz2 GT5-Unofficial-3b2431ea07cff32fa174f496a1e16246a89b429e.zip |
Adds Infinite Spray Can, left click event for item behaviors (#3085)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Co-authored-by: boubou19 <miisterunknown@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/items')
-rw-r--r-- | src/main/java/gregtech/api/items/MetaBaseItem.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/items/MetaBaseItem.java b/src/main/java/gregtech/api/items/MetaBaseItem.java index 23726c96e9..32e4bba392 100644 --- a/src/main/java/gregtech/api/items/MetaBaseItem.java +++ b/src/main/java/gregtech/api/items/MetaBaseItem.java @@ -7,6 +7,7 @@ import static gregtech.api.util.GTUtility.formatNumbers; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Predicate; import net.minecraft.dispenser.IBlockSource; import net.minecraft.entity.Entity; @@ -118,6 +119,10 @@ public abstract class MetaBaseItem extends GTGenericItem return super.isItemStackUsable(aStack); } + public boolean onLeftClick(ItemStack aStack, EntityPlayer aPlayer) { + return forEachBehavior(aStack, behavior -> behavior.onLeftClick(this, aStack, aPlayer)); + } + @Override public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { use(aStack, 0, aPlayer); @@ -619,4 +624,25 @@ public abstract class MetaBaseItem extends GTGenericItem public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) { return false; } + + public boolean forEachBehavior(ItemStack aStack, Predicate<IItemBehaviour<MetaBaseItem>> predicate) { + ArrayList<IItemBehaviour<MetaBaseItem>> behaviorList = mItemBehaviors.get((short) getDamage(aStack)); + if (behaviorList == null) { + return false; + } + + try { + for (IItemBehaviour<MetaBaseItem> behavior : behaviorList) { + if (predicate.test(behavior)) { + // Returning true short circuits the loop, and false continues it. + return true; + } + } + } catch (Exception e) { + if (D1) e.printStackTrace(GTLog.err); + } + + return false; + } + } |