diff options
Diffstat (limited to 'src')
3 files changed, 33 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/interfaces/IToolStats.java b/src/main/java/gregtech/api/interfaces/IToolStats.java index b2e170445c..9dcfc4bce8 100644 --- a/src/main/java/gregtech/api/interfaces/IToolStats.java +++ b/src/main/java/gregtech/api/interfaces/IToolStats.java @@ -110,6 +110,13 @@ public interface IToolStats { boolean isWrench(); /** + * @return if this Tool can be used as an PR screwdriver + */ + default boolean isScrewdriver() { + return false; + } + + /** * @return If this Tool can be used as Weapon i.e. if that is the main purpose. */ boolean isWeapon(); diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java index 2516aa9f87..576fb79923 100644 --- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java +++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import mods.railcraft.api.core.items.IToolCrowbar; +import mrtjp.projectred.api.IScrewdriver; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -63,10 +64,11 @@ import net.minecraftforge.event.world.BlockEvent; @Optional.Interface(iface = "forestry.api.arboriculture.IToolGrafter", modid = "ForestryAPI|arboriculture"), @Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = "RailcraftAPI|items"), @Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraftAPI|tools"), - @Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIOAPI|Tools") + @Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIOAPI|Tools"), + @Optional.Interface(iface = "mrtjp.projectred.api.IScrewdriver", modid = "ProjRed|Core"), }) public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item - implements IDamagableItem, IToolGrafter, IToolCrowbar, IToolWrench, ITool { + implements IDamagableItem, IToolGrafter, IToolCrowbar, IToolWrench, ITool, IScrewdriver { /** * All instances of this Item Class are listed here. * This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true. @@ -818,6 +820,23 @@ public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item return canWrench(player, x, y, z); } + // ProjectRed screwdriver + @Override + public boolean canUse(EntityPlayer player, ItemStack stack) { + if (player == null) return false; + if (GT_Utility.isStackInvalid(stack) || !isItemStackUsable(stack)) return false; + IToolStats tStats = getToolStats(stack); + return tStats != null && tStats.isScrewdriver(); + } + + @Override + public void damageScrewdriver(EntityPlayer player, ItemStack stack) { + if (player == null) return; + if (GT_Utility.isStackInvalid(stack) || !isItemStackUsable(stack)) return; + IToolStats tStats = getToolStats(stack); + if (tStats != null) doDamage(stack, tStats.getToolDamagePerEntityAttack()); + } + @Override public void used(ItemStack stack, EntityPlayer player, int x, int y, int z) { wrenchUsed(player, x, y, z); diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Screwdriver.java b/src/main/java/gregtech/common/tools/GT_Tool_Screwdriver.java index b09839f0cc..1007c81f9f 100644 --- a/src/main/java/gregtech/common/tools/GT_Tool_Screwdriver.java +++ b/src/main/java/gregtech/common/tools/GT_Tool_Screwdriver.java @@ -108,6 +108,11 @@ public class GT_Tool_Screwdriver extends GT_Tool { } @Override + public boolean isScrewdriver() { + return true; + } + + @Override public boolean isMinableBlock(Block aBlock, byte aMetaData) { return GT_ToolHarvestHelper.isAppropriateTool(aBlock, aMetaData, "screwdriver") || GT_ToolHarvestHelper.isAppropriateMaterial(aBlock, Material.circuits); |