diff options
| author | Батьків Нестор-Євген Васильович <mama040508@gmail.com> | 2023-12-26 23:08:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-26 22:08:33 +0100 |
| commit | 064c46683f58fd8a981dd03c13cf92556a28656e (patch) | |
| tree | fc0847e4c913b9557712acee0fe91f588aba5aa0 /src/main/java/gregtech/common | |
| parent | 44e88e146c87774088c68686bdea130fe7dde78d (diff) | |
| download | GT5-Unofficial-064c46683f58fd8a981dd03c13cf92556a28656e.tar.gz GT5-Unofficial-064c46683f58fd8a981dd03c13cf92556a28656e.tar.bz2 GT5-Unofficial-064c46683f58fd8a981dd03c13cf92556a28656e.zip | |
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 <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common')
3 files changed, 75 insertions, 0 deletions
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<String> getAdditionalToolTips(GT_MetaBase_Item aItem, List<String> 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; + } + +} diff --git a/src/main/java/gregtech/common/tools/GT_Tool.java b/src/main/java/gregtech/common/tools/GT_Tool.java index ac3fe66542..89c0a79ed0 100644 --- a/src/main/java/gregtech/common/tools/GT_Tool.java +++ b/src/main/java/gregtech/common/tools/GT_Tool.java @@ -188,4 +188,14 @@ public abstract class GT_Tool implements IToolStats { int aX, int aY, int aZ) { return aDefault; } + + @Override + public String getToolTypeName() { + return "tool"; + } + + @Override + public byte getMaxMode() { + return 1; + } } diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Wrench.java b/src/main/java/gregtech/common/tools/GT_Tool_Wrench.java index 0b27806160..5a5a69ad80 100644 --- a/src/main/java/gregtech/common/tools/GT_Tool_Wrench.java +++ b/src/main/java/gregtech/common/tools/GT_Tool_Wrench.java @@ -29,6 +29,7 @@ import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.IToolStats; import gregtech.api.items.GT_MetaGenerated_Tool; import gregtech.api.util.GT_ToolHarvestHelper; +import gregtech.common.items.behaviors.Behaviour_Switch_Mode; import gregtech.common.items.behaviors.Behaviour_Wrench; import ic2.api.tile.IWrenchable; @@ -145,6 +146,7 @@ public class GT_Tool_Wrench extends GT_Tool { @Override public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID) { + aItem.addItemBehavior(aID, new Behaviour_Switch_Mode()); aItem.addItemBehavior(aID, new Behaviour_Wrench(100)); } @@ -188,4 +190,14 @@ public class GT_Tool_Wrench extends GT_Tool { world.spawnEntityInWorld(new EntityItem(world, x, y, z, drop)); } } + + @Override + public String getToolTypeName() { + return "wrench"; + } + + @Override + public byte getMaxMode() { + return 2; + } } |
