Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

So I've been following tutorials and learning how to work with forge, and I've got a new material that can be made into tools.  For some reason, I can't enchant any of them. 

 

Here's some example code for the pickaxe:

 

package moar.main;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraft.item.Item;
import net.minecraft.creativetab.*;
import moar.main.Moar;

public class MoarPickaxe extends MoarTool
{
public static final Block[] blocksEffectiveAgainst = new Block[] {Block.cobblestone, 
	Block.stoneDoubleSlab, Block.stoneSingleSlab, Block.stone, Block.sandStone, 
	Block.cobblestoneMossy, Block.oreIron, Block.blockSteel, Block.oreCoal, Block.blockGold, 
	Block.oreGold, Block.oreDiamond, Block.blockDiamond, Block.ice, Block.netherrack, Block.oreLapis, 
	Block.blockLapis, Block.oreRedstone, Block.oreRedstoneGlowing, Block.rail, Block.railDetector, Block.railPowered, Moar.oreSilver};
public MoarPickaxe(int ID, EnumToolMaterial m, int texture, String name)
{
         super(ID, 1, m, blocksEffectiveAgainst);
         this.setCreativeTab(CreativeTabs.tabTools);
         setIconIndex(texture);
         setItemName(name);
}
public boolean canHarvestBlock(Block par1Block)
{
         return par1Block == Block.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : 
        	 (par1Block != Block.blockDiamond && par1Block != Block.oreDiamond ? (par1Block != Block.oreEmerald && par1Block != Block.blockEmerald ? (par1Block != Block.blockGold && par1Block != Block.oreGold ? (par1Block != Block.blockSteel && par1Block != Block.oreIron ? (par1Block != Block.blockLapis && par1Block != Block.oreLapis ? (par1Block != Block.oreRedstone && par1Block != Block.oreRedstoneGlowing ? (par1Block.blockMaterial == Material.rock ? true : (par1Block.blockMaterial == Material.iron ? true : par1Block.blockMaterial == Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2);
}
public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block)
{
         return par2Block != null && (par2Block.blockMaterial == Material.iron || par2Block.blockMaterial == Material.anvil || par2Block.blockMaterial == Material.rock) ? this.efficiencyOnProperMaterial : super.getStrVsBlock(par1ItemStack, par2Block);
}
public String getTextureFile() 
{
        return CommonProxy.ITEMS_PNG;
}
public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) {
return Moar.silverIngot.itemID == par2ItemStack.itemID ? true:
super.getIsRepairable(par1ItemStack, par2ItemStack);
}
}

 

 

And my main class:

 

package moar.main;


import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.item.EnumAction;
import net.minecraft.item.EnumToolMaterial;


@Mod(modid="moar", name="MOAR", version="0.0.0")
@NetworkMod(clientSideRequired=true, serverSideRequired=false)
public class Moar {
        
        
        @Instance("moar")
        public static Moar instance;
        public static EnumToolMaterial silver = net.minecraftforge.common.EnumHelper.addToolMaterial("silver", 2, 1561, 4.0F, 2, 10);
        
        //Items
        public final static Item silverIngot = new MoarItem(5000).setMaxStackSize(64).setIconIndex(0).setItemName("silverIngot"); 
        
        //Tools and Weapons
        public final static Item silverSword = new MoarSword(5001, silver, 1, "silverSword");
        public final static Item silverShovel = new MoarShovel(5002, silver, 2, "silverShovel");
        public final static Item silverPickaxe = new MoarPickaxe(5003, silver, 3, "silverPickaxe");
        public final static Item silverAxe = new MoarAxe(5004, silver, 4, "silverAxe");
        public final static Item silverHoe = new MoarHoes(5005, silver, 5, "silverHoe");
        
        //Blocks
        public final static Block oreSilver = new MoarBlock(500,16,Material.iron);
        
        @SidedProxy(clientSide="moar.main.client.ClientProxy",
                        serverSide="moar.main.CommonProxy")
        public static CommonProxy proxy;
        
        @PreInit
        public void preInit(FMLPreInitializationEvent event) {
                // Stub Method
        }
        
        @Init
        public void load(FMLInitializationEvent event) {

        		//Names
                LanguageRegistry.addName(silverIngot, "Silver Ingot");
                LanguageRegistry.addName(oreSilver, "Silver Ore");
                LanguageRegistry.addName(silverSword, "Silver Sword");
                LanguageRegistry.addName(silverPickaxe, "Silver Pickaxe");
                LanguageRegistry.addName(silverShovel, "Silver Shovel");
                LanguageRegistry.addName(silverAxe, "Silver Axe");
                LanguageRegistry.addName(silverHoe, "Silver Hoe");
                
                //Harvest Levels
                MinecraftForge.setBlockHarvestLevel(oreSilver, "pickaxe", 2);
                
                //Block Registry
                GameRegistry.registerBlock(oreSilver, "oreSilver");
                
                //Crafting Recipes
                GameRegistry.addRecipe(new ItemStack(Moar.silverSword, 1), "#", "#", "X", '#', Moar.silverIngot, 'X', Item.stick);
                GameRegistry.addRecipe(new ItemStack(Moar.silverShovel, 1), "#", "X", "X", '#', Moar.silverIngot, 'X', Item.stick);
                GameRegistry.addRecipe(new ItemStack(Moar.silverPickaxe, 1), "###"," X ", " X ", '#', Moar.silverIngot, 'X', Item.stick);
                GameRegistry.addRecipe(new ItemStack(Moar.silverAxe, 1), "## ", "#X ", " X ", '#', Moar.silverIngot, 'X', Item.stick);
                GameRegistry.addRecipe(new ItemStack(Moar.silverHoe, 1), "## ", " X ", " X ", '#', Moar.silverIngot, 'X', Item.stick);
                
                //Furnace Recipes
                GameRegistry.addSmelting(oreSilver.blockID, new ItemStack(silverIngot), 0.5F);
        }
        
        @PostInit
        public void postInit(FMLPostInitializationEvent event) {
                // Stub Method
        }
}

 

 

Is there something that I'm missing to make them enchantable?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.