aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/items/behaviors
diff options
context:
space:
mode:
authoriouter <62897714+iouter@users.noreply.github.com>2022-10-05 19:27:10 +0800
committerGitHub <noreply@github.com>2022-10-05 13:27:10 +0200
commit3747917217697361c1a4ca4da679a1597ac03c04 (patch)
treec655a84dc5395b0bc6df68e448d4371b13f437b3 /src/main/java/gregtech/common/items/behaviors
parente9576a3a670267040abae4f908ffdce8b531a784 (diff)
downloadGT5-Unofficial-3747917217697361c1a4ca4da679a1597ac03c04.tar.gz
GT5-Unofficial-3747917217697361c1a4ca4da679a1597ac03c04.tar.bz2
GT5-Unofficial-3747917217697361c1a4ca4da679a1597ac03c04.zip
Port pocket multitool from gt6 (#1435)
* Pocket Multitool * :spotlessApply * Revert ":spotlessApply" This reverts commit f1421c537c25627bb3d56ddca4fa610d90b16b07. * :spotlessApply again
Diffstat (limited to 'src/main/java/gregtech/common/items/behaviors')
-rw-r--r--src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Metadata.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Metadata.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Metadata.java
new file mode 100644
index 0000000000..69e5cb8a81
--- /dev/null
+++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Metadata.java
@@ -0,0 +1,73 @@
+package gregtech.common.items.behaviors;
+
+import gregtech.api.items.GT_Generic_Block;
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.util.GT_Util;
+import gregtech.api.util.GT_Utility;
+import java.util.List;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class Behaviour_Switch_Metadata extends Behaviour_None {
+ public final int mSwitchIndex;
+ public final boolean mCheckTarget, mShowModeSwitchTooltip;
+
+ public Behaviour_Switch_Metadata(int aSwitchIndex) {
+ this(aSwitchIndex, false);
+ }
+
+ public Behaviour_Switch_Metadata(int aSwitchIndex, boolean aCheckTarget) {
+ this(aSwitchIndex, aCheckTarget, false);
+ }
+
+ public Behaviour_Switch_Metadata(int aSwitchIndex, boolean aCheckTarget, boolean aShowModeSwitchTooltip) {
+ mSwitchIndex = aSwitchIndex;
+ mCheckTarget = aCheckTarget;
+ mShowModeSwitchTooltip = aShowModeSwitchTooltip;
+ }
+
+ @Override
+ public List<String> getAdditionalToolTips(GT_MetaBase_Item aItem, List<String> aList, ItemStack aStack) {
+ if (mShowModeSwitchTooltip) aList.add(GT_Utility.trans("330", "Sneak Rightclick to switch Mode"));
+ return aList;
+ }
+
+ @Override
+ public boolean onItemUseFirst(
+ GT_MetaBase_Item aItem,
+ ItemStack aStack,
+ EntityPlayer aPlayer,
+ World aWorld,
+ int aX,
+ int aY,
+ int aZ,
+ int aSide,
+ float aHitX,
+ float aHitY,
+ float aHitZ) {
+ if (aStack != null && (aPlayer == null || aPlayer.isSneaking()) && !aWorld.isRemote) {
+ if (mCheckTarget) {
+ Block aBlock = aWorld.blockExists(aX, aY, aZ) ? aWorld.getBlock(aX, aY, aZ) : Blocks.air;
+ if (aBlock instanceof GT_Generic_Block) {
+ Items.feather.setDamage(aStack, (short) mSwitchIndex);
+ GT_Utility.updateItemStack(aStack);
+ return true;
+ }
+ if (GT_Util.getTileEntity(aWorld, aX, aY, aZ, true) == null) {
+ Items.feather.setDamage(aStack, (short) mSwitchIndex);
+ GT_Utility.updateItemStack(aStack);
+ return true;
+ }
+ return false;
+ }
+ Items.feather.setDamage(aStack, (short) mSwitchIndex);
+ GT_Utility.updateItemStack(aStack);
+ return true;
+ }
+ return false;
+ }
+}