From 064c46683f58fd8a981dd03c13cf92556a28656e Mon Sep 17 00:00:00 2001 From: Батьків Нестор-Євген Васильович Date: Tue, 26 Dec 2023 23:08:33 +0200 Subject: Add modes to tools (#2423) * Add tool modes change * Deprecate! Deprecate! Deprecate! * Add mode to item name * Opsie * Byte 8 bit * Add enum * Spotless * Types types types!!!! God I love types * Make it trigger when player clicks midair * update deps + fix wci --------- Co-authored-by: Martin Robertz --- .../items/behaviors/Behaviour_Switch_Mode.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Mode.java (limited to 'src/main/java/gregtech/common/items') diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Mode.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Mode.java new file mode 100644 index 0000000000..1e93362882 --- /dev/null +++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Mode.java @@ -0,0 +1,53 @@ +package gregtech.common.items.behaviors; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +import gregtech.api.items.GT_MetaBase_Item; +import gregtech.api.items.GT_MetaGenerated_Tool; +import gregtech.api.util.GT_Utility; + +public class Behaviour_Switch_Mode extends Behaviour_None { + + public Behaviour_Switch_Mode() {} + + @Override + public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + if (aStack != null && (aPlayer == null || aPlayer.isSneaking()) && !aWorld.isRemote) { + + GT_MetaGenerated_Tool itemTool = (GT_MetaGenerated_Tool) aItem; + final byte maxMode = itemTool.getToolMaxMode(aStack); + if (maxMode == 1) { + return aStack; + } + + MovingObjectPosition mop = GT_Utility.getPlayerLookingTarget(); + if (mop == null) { + byte currentMode = itemTool.getToolMode(aStack); + currentMode = (byte) ((currentMode + 1) % maxMode); + itemTool.setToolMode(aStack, currentMode); + } + return aStack; + } + return aStack; + } + + @Override + public List getAdditionalToolTips(GT_MetaBase_Item aItem, List aList, ItemStack aStack) { + super.getAdditionalToolTips(aItem, aList, aStack); + if ((aItem instanceof GT_MetaGenerated_Tool)) { + GT_MetaGenerated_Tool itemTool = (GT_MetaGenerated_Tool) aItem; + final int maxMode = itemTool.getToolMaxMode(aStack); + if (maxMode > 1) { + aList.add("Shift+Rclick to change mode"); + } + } + + return aList; + } + +} -- cgit