aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/items
diff options
context:
space:
mode:
authorquerns <33518699+querns@users.noreply.github.com>2024-09-08 13:02:12 -0500
committerGitHub <noreply@github.com>2024-09-08 18:02:12 +0000
commit3b2431ea07cff32fa174f496a1e16246a89b429e (patch)
tree3987a80f2fd5e396ae70821971b3d673e003dfe0 /src/main/java/gregtech/api/items
parent8ca97eab0abfc33a37a15fe4a66bc112c743480a (diff)
downloadGT5-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.java26
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;
+ }
+
}