aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/items/behaviors/Behaviour_Switch_Mode.java53
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool.java10
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool_Wrench.java12
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;
+ }
}