I have been trying to create a chisel tool that can be used to break chunks off of bedrock. The problem is that whenever I try to override the onItemUse or onItemRightClick the methods do not get called. I have confirmed this by replacing my code with a simple message to tell me when the method has been called but receive no messages. Is anyone willing to help me fix the issue. I'll put the code below. Thanks in advanced.
This is the base class I made for the chisels.
package com.mrtinkerman.modularmachines.items;
import java.util.Set;
import com.mrtinkerman.modularmachines.ModularMachines;
import com.mrtinkerman.modularmachines.creativetabs.CustomTabs;
import com.mrtinkerman.modularmachines.init.ModItems;
import com.mrtinkerman.modularmachines.util.IHasModel;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemTool;
public class ChiselBase extends ItemTool implements IHasModel
{
public ChiselBase(String name, ToolMaterial materialIn, Set<Block> effectiveBlocks)
{
super(materialIn, effectiveBlocks);
setUnlocalizedName(name);
setRegistryName(name);
setMaxStackSize(1);
ModItems.ITEMS.add(this);
}
@Override
public void registerModels()
{
ModularMachines.proxy.registerItemRenderer(this, 0, "inventory");
}
}
This is the actual chisel class
package com.mrtinkerman.modularmachines.items.tools;
import java.util.Set;
import com.mrtinkerman.modularmachines.items.ChiselBase;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World;
import net.minecraftforge.fml.client.FMLClientHandler;
public class HandChiselIron extends ChiselBase
{
public HandChiselIron(String name, ToolMaterial materialIn, Set<Block> effectiveBlocks)
{
super(name, materialIn, effectiveBlocks);
}
@Override
public EnumActionResult onItemUse(EntityPlayer playerIn, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
playerIn.sendMessage(new TextComponentString("Block Right Clicked"));
System.out.println("OnItemUse Called");
// if(true)
// {
// //System.out.println("OnItemUse Called inside if loop");
// playerIn.sendMessage(new TextComponentString("Block Right Clicked IF"));
// }
return super.onItemUse(playerIn, worldIn, pos, hand, facing, hitX, hitY, hitZ);
}
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
{
playerIn.sendMessage(new TextComponentString("Right Clicked!"));
// TODO Auto-generated method stub
return super.onItemRightClick(worldIn, playerIn, handIn);
}
@Override
public double getDurabilityForDisplay(ItemStack stack)
{
return super.getDurabilityForDisplay(stack);
}
@Override
public boolean hasContainerItem()
{
return true;
}
@Override
public Item getContainerItem()
{
return super.getContainerItem();
}
}
This is the ModItems class
package com.mrtinkerman.modularmachines.init;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.mrtinkerman.modularmachines.items.ChiselBase;
import com.mrtinkerman.modularmachines.items.ItemBase;
import com.mrtinkerman.modularmachines.items.tools.TinkerWrench;
import com.google.common.collect.Sets;
import com.mrtinkerman.modularmachines.init.ModMaterials;
public class ModItems
{
public static final List<Item> ITEMS = new ArrayList<Item>();
//Block Sets
public static final Set<Block> CHISEL_EFFECTIVE = Sets.newHashSet(new Block[]{ Blocks.BEDROCK });
//Tools
public static final Item HAND_CHISEL_IRON = new ChiselBase("hand_chisel_iron", ModMaterials.IRON_CHISEL, CHISEL_EFFECTIVE);
}
Registry class
package com.mrtinkerman.modularmachines.util.handlers;
import com.mrtinkerman.modularmachines.blocks.BlockTileEntityBase;
import com.mrtinkerman.modularmachines.blocks.functional.Machine_Frame_Block;
import com.mrtinkerman.modularmachines.entity.tile.Machine_Frame_Data;
import com.mrtinkerman.modularmachines.init.ModBlocks;
import com.mrtinkerman.modularmachines.init.ModItems;
import com.mrtinkerman.modularmachines.init.ModTileEntities;
import com.mrtinkerman.modularmachines.util.IHasModel;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
@EventBusSubscriber
public class RegistryHandler
{
@SubscribeEvent
public static void onItemRegister(RegistryEvent.Register<Item> event)
{
event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0]));
}
@SubscribeEvent
public static void onBlockRegister(RegistryEvent.Register<Block> event)
{
event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0]));
event.getRegistry().registerAll(ModTileEntities.TILE_ENTITIES.toArray(new Block[0]));
for (BlockTileEntityBase blockTileEntity : ModTileEntities.TILE_ENTITIES)
{
GameRegistry.registerTileEntity(blockTileEntity.getTileEntityClass(), blockTileEntity.getRegistryName());
}
}
@SubscribeEvent
public static void onModelRegister(ModelRegistryEvent event)
{
for (Item item : ModItems.ITEMS)
{
if (item instanceof IHasModel)
{
((IHasModel) item).registerModels();
}
}
for (Block block : ModBlocks.BLOCKS)
{
if (block instanceof IHasModel)
{
((IHasModel) block).registerModels();
}
}
for (BlockTileEntityBase tileEntity : ModTileEntities.TILE_ENTITIES)
{
if (tileEntity instanceof IHasModel)
{
((IHasModel) tileEntity).registerModels();
}
}
}
}
I think that is all you'll need but please let me know otherwise. Thanks again.