• 6

    posted a message on 1.8.9 Modding Tutorials by NealeGaming

    Hello everyone!


    I have started a new modding series for 1.8.9! All of the videos are hosted on Youtube, but for the sake of convenience, I'd ask that you post your questions here rather than comment on the video.

    Don't hesitate to let me know if you have any special requests or if I need some correction on the content. As a general warning, I wanted the series to be pretty fun and relaxed; so much so that there may be a bit of profanity here and there. Ya can't code without cursing!


    Minecraft Modding 1.8.9 - S3E1 - Setup



    Minecraft Modding 1.8.9 - S3E2 - Setting Up Mod Class and Proxies



    Minecraft Modding 1.8.9 - S3E3 - Blocks and Rendering



    Minecraft Modding 1.8.9 - S3E4 - Items and Rendering



    Minecraft Modding 1.8.9 - S3E5 - CreativeTabs



    Minecraft Modding 1.8.9 - S3E6 - Get Item from Block



    Minecraft Modding 1.8.9 - S3E7 - Recipes



    Minecraft Modding 1.8.9 - S3E8 - Smelting



    Minecraft Modding 1.8.9 - S3E9 - Tools



    Minecraft Modding 1.8.9 - S3E10 - Armor and Effects



    Minecraft Modding 1.8.9 - S3E11 - Custom Drops



    Minecraft Modding 1.8.9 - S3E12 - FuelHandler



    Minecraft Modding 1.8.9 - S3E14 - WorldGen



    Minecraft Modding 1.8.9 - S3E15 - Recipe/Furnace Remover



    Minecraft Modding 1.8.9 - S3E16 - Durable Items



    Minecraft Modding 1.8.9 - S3E17 - Food and Fish



    Minecraft Modding 1.8.9 - S3E18 - Crops



    Minecraft Modding 1.8.9 - S3E19.1 - Custom Furnace - Block Class


    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on Multiple Potion Effects to Food?

    Try adding another IF statement to the onFoodEaten methodfor the third potion effect. Maybe something like:


    if (!par2world.isRemote && this.thirdpotionid > 0 && par2world.rand.nextFloat() < this.thirdpotionDuration * 20) {
      par3EntityPlayer.addPotionEffect(new PotionEffect (this.thirdpotionid, this.thirdpotionDuration * 20, this.thirdpotionAmplifier));;
                 }
    Posted in: Modification Development
  • 0

    posted a message on Multiple Potion Effects to Food?

    Check this out: http://www.minecraftforge.net/forum/index.php?topic=29219.0

    Go with what that fella has: adding the effects via the class (MyFoodA) and let me know what you come up with! :)

    Posted in: Modification Development
  • 0

    posted a message on Minecraft 1.8 Forge SRC

    Many thanks! :)

    Posted in: Modification Development
  • 0

    posted a message on Minecraft 1.8 Forge SRC

    I am looking to to restart my YouTube channel for MC modding and have played around with 1.8 in the past, but when I look for the latest src now, it is not available. Could anyone point me in the right direction on how to get started with the latest version? Most of the tutorials that I have seen involve the old src with running gradle. Thank you all!

    Posted in: Modification Development
  • 0

    posted a message on Generating Ores with Metadata
    I have created an ore class using metadata for all of the ores that I plan using in my mod. I am running into difficulty when I go to generate the ores in my world. It is only spawning the first ore in the array. Any suggestions?

     
    private void generateSurface(World world, Random random, int x, int z) {
    
    this.addOreSpawn(BlockDecNG.blockOres, world, random, x, z, 16, 16, 4 + random.nextInt(6), 25, 38, 100);
     
     }
    
    private void addOreSpawn(Block block, int metadata, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chanceToSpawn, int minY, int maxY) {
    
    for(int i = 0; i < chanceToSpawn; i++) {
     int posX = blockXPos + random.nextInt(maxX);
     int posY = minY + random.nextInt(maxY - minY);
     int posZ = blockZPos + random.nextInt(maxZ);
     (new WorldGenMinable(block, maxVeinSize)).generate(world, random, posX, posY, posZ);
     }
     
     }
    
    
    Posted in: Modification Development
  • 0

    posted a message on 1.7.2 Modding Tutorial Videos by NealeGaming
    Quote from TacoRedneck

    Hey Neale. Your videos are fantastic and you should be proud of yourself. They have really helped me out and I hope to become an author of a major mod someday because of you.

    So, I need your help with a few things.

    I have made a block that i want to burn like logs and i have no idea how to do it. I wanted to know if instead of spawning an ore in every chunk, you could do it over a larger area say 64x64. Also, I want to know how to disable vanilla minecraft blocks and items.

    Thanks in advance.


    To my knowledge, if you want something to be flammable, just put a .setBurning() on it when you initialize it and that should do it.

    I know that you can remove the recipes for vanilla items, but I am not sure how to remove blocks or items completely from the game. Which would you be looking for?

    In your worldgen file under generateSurface you could probably do the following and change it from this:

    this.addOreSpawn(Nealecraft.oreCopperOre, world, random, x, z, 16, 16, 4+random.nextInt(6), 25, 38, 100);

    to this:

    this.addOreSpawn(Nealecraft.oreCopperOre, world, random, x, z, 64, 64, 4+random.nextInt(6), 25, 38, 100);

    That should increase the rarity of the ore dramatically, a la iridium from the old FTB Ultimate days.

    MultiBlock structures elude me. Although I haven't given up on them. Hopefully something soon.
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on craftResult not appearing in Custom Table
    Solved.
    Posted in: Modification Development
  • 0

    posted a message on Trees rendering oddly
    Quote from jaquadro

    Make sure you have:

     @Override
    public boolean renderAsNormalBlock () {
    return false;
    }
    
    @Override
    public boolean isOpaqueCube () {
    return false;
    }
    
    @Override
    public boolean shouldSideBeRendered (IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
    return true;
    }



    That did it! Thanks!
    Posted in: Modification Development
  • 0

    posted a message on Trees rendering oddly
    I have been working on trees in 1.7.2 and keep running into a problem with how the leaves are rendered. I have lifted the leaves code directly from vanilla and made a few additions, but I just can't get it to come out right.



    It only shows the outsides of the leaf blocks and not any of the interior sides.

    Here is the code from my main class:

    blockMapleLeaves = new NCLeaves().setBlockName("MapleLeaves");


    And the Leaves class:


    package net.nealecraft.mod.biome;
    
    import java.util.ArrayList;
    import java.util.Random;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockLeavesBase;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    import net.minecraft.world.ColorizerFoliage;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import net.minecraftforge.common.IShearable;
    import net.nealecraft.mod.Nealecraft;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class NCLeaves extends BlockLeavesBase implements IShearable
    {
        int[] field_150128_a;
        @SideOnly(Side.CLIENT)
        protected int iconType;
        protected boolean graphicsLevel;
        private IIcon[] iconArray = new IIcon[2];
        private static final String __OBFID = "CL_00000263";
    
        public NCLeaves()
        {
            super(Material.leaves, false);
            this.setTickRandomly(true);
            this.setCreativeTab(CreativeTabs.tabDecorations);
            this.setHardness(0.2F);
            this.setLightOpacity(1);
            this.setStepSound(soundTypeGrass);
        }
    
        @SideOnly(Side.CLIENT)
        public int getBlockColor()
        {
            double d0 = 0.5D;
            double d1 = 1.0D;
            return ColorizerFoliage.getFoliageColor(d0, d1);
        }
    
        /**
         * Returns the color this block should be rendered. Used by leaves.
         */
        @SideOnly(Side.CLIENT)
        public int getRenderColor(int p_149741_1_)
        {
            return ColorizerFoliage.getFoliageColorBasic();
        }
    
        /**
         * Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called
         * when first determining what to render.
         */
        @SideOnly(Side.CLIENT)
        public int colorMultiplier(IBlockAccess p_149720_1_, int p_149720_2_, int p_149720_3_, int p_149720_4_)
        {
            int l = 0;
            int i1 = 0;
            int j1 = 0;
    
            for (int k1 = -1; k1 <= 1; ++k1)
            {
                for (int l1 = -1; l1 <= 1; ++l1)
                {
                    int i2 = p_149720_1_.getBiomeGenForCoords(p_149720_2_ + l1, p_149720_4_ + k1).getBiomeFoliageColor(p_149720_2_ + l1, p_149720_3_, p_149720_4_ + k1);
                    l += (i2 &amp; 16711680) >> 16;
                    i1 += (i2 &amp; 65280) >> 8;
                    j1 += i2 &amp; 255;
                }
            }
    
            return (l / 9 &amp; 255) << 16 | (i1 / 9 &amp; 255) << 8 | j1 / 9 &amp; 255;
        }
    
        public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
        {
            byte b0 = 1;
            int i1 = b0 + 1;
    
            if (p_149749_1_.checkChunksExist(p_149749_2_ - i1, p_149749_3_ - i1, p_149749_4_ - i1, p_149749_2_ + i1, p_149749_3_ + i1, p_149749_4_ + i1))
            {
                for (int j1 = -b0; j1 <= b0; ++j1)
                {
                    for (int k1 = -b0; k1 <= b0; ++k1)
                    {
                        for (int l1 = -b0; l1 <= b0; ++l1)
                        {
                            Block block = p_149749_1_.getBlock(p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1);
                            if (block.isLeaves(p_149749_1_, p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1))
                            {
                                block.beginLeavesDecay(p_149749_1_, p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1);
                            }
                        }
                    }
                }
            }
        }
    
        /**
         * Ticks the block if it's been scheduled
         */
        public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_)
        {
            if (!p_149674_1_.isRemote)
            {
                int l = p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_);
    
                if ((l &amp; 8) != 0 &amp;&amp; (l &amp; 4) == 0)
                {
                    byte b0 = 4;
                    int i1 = b0 + 1;
                    byte b1 = 32;
                    int j1 = b1 * b1;
                    int k1 = b1 / 2;
    
                    if (this.field_150128_a == null)
                    {
                        this.field_150128_a = new int[b1 * b1 * b1];
                    }
    
                    int l1;
    
                    if (p_149674_1_.checkChunksExist(p_149674_2_ - i1, p_149674_3_ - i1, p_149674_4_ - i1, p_149674_2_ + i1, p_149674_3_ + i1, p_149674_4_ + i1))
                    {
                        int i2;
                        int j2;
    
                        for (l1 = -b0; l1 <= b0; ++l1)
                        {
                            for (i2 = -b0; i2 <= b0; ++i2)
                            {
                                for (j2 = -b0; j2 <= b0; ++j2)
                                {
                                    Block block = p_149674_1_.getBlock(p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2);
    
                                    if (!block.canSustainLeaves(p_149674_1_, p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2))
                                    {
                                        if (block.isLeaves(p_149674_1_, p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2))
                                        {
                                            this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -2;
                                        }
                                        else
                                        {
                                            this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -1;
                                        }
                                    }
                                    else
                                    {
                                        this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = 0;
                                    }
                                }
                            }
                        }
    
                        for (l1 = 1; l1 <= 4; ++l1)
                        {
                            for (i2 = -b0; i2 <= b0; ++i2)
                            {
                                for (j2 = -b0; j2 <= b0; ++j2)
                                {
                                    for (int k2 = -b0; k2 <= b0; ++k2)
                                    {
                                        if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1] == l1 - 1)
                                        {
                                            if (this.field_150128_a[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1;
                                            }
    
                                            if (this.field_150128_a[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1;
                                            }
    
                                            if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] = l1;
                                            }
    
                                            if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] = l1;
                                            }
    
                                            if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] = l1;
                                            }
    
                                            if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] == -2)
                                            {
                                                this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] = l1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
    
                    l1 = this.field_150128_a[k1 * j1 + k1 * b1 + k1];
    
                    if (l1 >= 0)
                    {
                        p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, l &amp; -9, 4);
                    }
                    else
                    {
                        this.removeLeaves(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_);
                    }
                }
            }
        }
    
        /**
         * A randomly called display update to be able to add particles or other items for display
         */
        @SideOnly(Side.CLIENT)
        public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_)
        {
            if (p_149734_1_.canLightningStrikeAt(p_149734_2_, p_149734_3_ + 1, p_149734_4_) &amp;&amp; !World.doesBlockHaveSolidTopSurface(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_) &amp;&amp; p_149734_5_.nextInt(15) == 1)
            {
                double d0 = (double)((float)p_149734_2_ + p_149734_5_.nextFloat());
                double d1 = (double)p_149734_3_ - 0.05D;
                double d2 = (double)((float)p_149734_4_ + p_149734_5_.nextFloat());
                p_149734_1_.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D);
            }
        }
    
        private void removeLeaves(World p_150126_1_, int p_150126_2_, int p_150126_3_, int p_150126_4_)
        {
            this.dropBlockAsItem(p_150126_1_, p_150126_2_, p_150126_3_, p_150126_4_, p_150126_1_.getBlockMetadata(p_150126_2_, p_150126_3_, p_150126_4_), 0);
            p_150126_1_.setBlockToAir(p_150126_2_, p_150126_3_, p_150126_4_);
        }
    
        /**
         * Returns the quantity of items to drop on block destruction.
         */
        public int quantityDropped(Random p_149745_1_)
        {
            return p_149745_1_.nextInt(20) == 0 ? 1 : 0;
        }
    
        public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
        {
            return Item.getItemFromBlock(Blocks.sapling);
        }
    
        /**
         * Drops the block items with a specified chance of dropping the specified items
         */
        public void dropBlockAsItemWithChance(World p_149690_1_, int p_149690_2_, int p_149690_3_, int p_149690_4_, int p_149690_5_, float p_149690_6_, int p_149690_7_)
        {
            if (!p_149690_1_.isRemote)
            {
                int j1 = this.func_150123_b(p_149690_5_);
    
                if (p_149690_7_ > 0)
                {
                    j1 -= 2 << p_149690_7_;
    
                    if (j1 < 10)
                    {
                        j1 = 10;
                    }
                }
    
                if (p_149690_1_.rand.nextInt(j1) == 0)
                {
                    Item item = this.getItemDropped(p_149690_5_, p_149690_1_.rand, p_149690_7_);
                    this.dropBlockAsItem(p_149690_1_, p_149690_2_, p_149690_3_, p_149690_4_, new ItemStack(item, 1, this.damageDropped(p_149690_5_)));
                }
    
                j1 = 200;
    
                if (p_149690_7_ > 0)
                {
                    j1 -= 10 << p_149690_7_;
    
                    if (j1 < 40)
                    {
                        j1 = 40;
                    }
                }
    
                this.func_150124_c(p_149690_1_, p_149690_2_, p_149690_3_, p_149690_4_, p_149690_5_, j1);
            }
        }
    
        protected void func_150124_c(World p_150124_1_, int p_150124_2_, int p_150124_3_, int p_150124_4_, int p_150124_5_, int p_150124_6_) {}
    
        protected int func_150123_b(int p_150123_1_)
        {
            return 20;
        }
    
        /**
         * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the
         * block and l is the block's subtype/damage.
         */
        public void harvestBlock(World p_149636_1_, EntityPlayer p_149636_2_, int p_149636_3_, int p_149636_4_, int p_149636_5_, int p_149636_6_)
        {
            {
                super.harvestBlock(p_149636_1_, p_149636_2_, p_149636_3_, p_149636_4_, p_149636_5_, p_149636_6_);
            }
        }
    
        /**
         * Determines the damage on the item the block drops. Used in cloth and wood.
         */
        public int damageDropped(int p_149692_1_)
        {
            return p_149692_1_ &amp; 3;
        }
    
        /**
         * Is this block (a) opaque and (B) a full 1m cube?  This determines whether or not to render the shared face of two
         * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
         */
        public boolean isOpaqueCube()
        {
         return true;
        }
    
        /**
         * Gets the block's texture. Args: side, meta
         */
        @SideOnly(Side.CLIENT)
        public IIcon func_149691_a(int par1, int par2)
        {
          return this.iconArray[par2];
        }
    
        @SideOnly(Side.CLIENT)
        public boolean renderAsNormalBlock() {
         return false;
        }
    
        @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister iconRegister) {
    
         this.blockIcon = iconRegister.registerIcon(Nealecraft.modid + ":" + this.getUnlocalizedName().substring(5)); 
    
    }
    
        /**
         * Pass true to draw this block using fancy graphics, or false for fast graphics.
         */
        @SideOnly(Side.CLIENT)
        public void setGraphicsLevel(boolean par1)
        {
            this.graphicsLevel = par1;
            this.iconType = par1 ? 0 : 1;
        }
    
        /**
         * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage
         * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null.
         */
        protected ItemStack createStackedBlock(int p_149644_1_)
        {
            return new ItemStack(Item.getItemFromBlock(this), 1, p_149644_1_ &amp; 3);
        }
    
        public String[] func_150125_e() {
    return null;
    }
    
    
        @Override
        public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z)
        {
            return true;
        }
    
        @Override
        public ArrayList<ItemStack> onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune)
        {
            ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
            ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) &amp; 3));
            return ret;
        }
    
        @Override
        public void beginLeavesDecay(World world, int x, int y, int z)
        {
    
            int i2 = world.getBlockMetadata(x, y, z);
    
            if ((i2 &amp; 8) == 0)
            {
                world.setBlockMetadataWithNotify(x, y, z, i2 | 8, 4);
            }
            world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4);
        }
    
        @Override
        public boolean isLeaves(IBlockAccess world, int x, int y, int z)
        {
            return true;
        }
    }


    Any thoughts or suggestions would be greatly appreciated. :)
    Posted in: Modification Development
  • 1

    posted a message on [1.7.2] [FORGE] Metadata blocks?
    Quote from HonestFlames

    My pet hate is people asking a question in a forum that I also am interested to learn the answer, then that person comes back and says "I fixed it" and then doesn't bloody well tell anyone how.


    Posted in: Modification Development
  • 0

    posted a message on [FORGE] 1.6.2 Crafting Table with custom grid sizes [updating to 1.6.4] adding videos
    A day or two
    Quote from MintyFox

    its been a week :<


    Yeah, took me longer than I thought it would. :( Sorry about that.

    The tutorials are in video format, but the source link is included in the video if you would rather learn by reading. :)

    Posted in: Mapping and Modding Tutorials
  • 1

    posted a message on [1.6.4] Minecraft Forge Modding Tutorial ~Synasonic~ SRC video tutorials
    Quote from flarespire

    Grr, running into more problems, I have an Idea set up for one of the swords in my mod pack, but I'm not sure how to implement it, I want the sword to have the ability to fire a projectile like a Bow would, however I dont want to use the arrow projectile, instead I want it to use an animated texture instead, to show the sword firing a beam. Can anyone help?

    I do know that the bowsword code nxwhitney gave me is definatly the way to go as a base, I just cant figure this whole texture projectile out...


    You are on the right track by using your BowSword class as a base. Go this way: create a sword texture that will be your default texture and then create a few more that simulates the sword being pulled back for the projectile strike. You could use EntityArrow as a base for it but it will still act like an arrow rather than a beam, i.e. falling back to earth after a bit. You'd have to work out the math to get it to suit your needs.
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on [1.6.4] Minecraft Forge Modding Tutorial ~Synasonic~ SRC video tutorials
    Quote from waterjack32

    Help please :(

    For some reason in my main code, I keep getting an error for the Blocks im trying to add, saying that the other class it is referencing is undefined, when, as far as I can tell, I have defined it.

    Help Images:




    Lahackmod.java
    package gasa.lahackmod.common; //Package directory
    /*
    * Basic importing
    */
    import net.minecraft.block.Block;
    import net.minecraft.item.Item;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.Init;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.network.NetworkMod;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.common.registry.LanguageRegistry;
    /*
    * Basic needed forge stuff
    */
    @Mod(modid="lahackmod",name="lahackmod",version="0.0.1")
    @NetworkMod(clientSideRequired=true,serverSideRequired=false)
    public class Lahackmod {
    /*
    * ToolMaterial
    */
    //Telling forge that we are creating these
    //items
    public static Item amethyst;
    //tools
    //blocks
    public static Block amethystblock;
    //Declaring Init
    @Init
    public void load(FMLInitializationEvent event){
    // define items
    amethyst = new Synitems(2000).setUnlocalizedName("amethyst");
    // define blocks
    amethystblock = new AmethystBlock(6564, "amethystblock").setUnlocalizedName("amethyst_block").setHardness(3.0F).setStepSound(Block.soundMetalFootstep).setResistance(10.0F);
    GameRegistry.registerBlock(amethystblock, "amethystblock");
    //adding names
    //items
    LanguageRegistry.addName(amethyst, "WhatItems");
    //blocks
    LanguageRegistry.addName(amethystblock, "Amethyst Block");
    //crafting
    }
    }

    Synitems.java
    package gasa.lahackmod.common;
    import net.minecraft.item.Item;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.relauncher.*;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    public class Synitems extends Item {
    public Synitems(int par1) {
    super(par1); //Returns super constructor: par1 is ID
    setCreativeTab(CreativeTabs.tabMaterials); }
    
    public void registerIcons(IconRegister reg) {
    if (itemID == gasa.Lahackmod.LOL.itemID) {
    this.itemIcon = reg.registerIcon("LOL");
    }
    }
    }


    I hope this issue can be resolved soon as its really driving me up the wall. Also, sorry for not using spoiler tags, I wasnt sure on how to impliment it here.

    Help plz :( :(


    Based on what I see here and the lack of an import in your main modding class, I would say that you need a class named AmethystBlock.
    Posted in: Mapping and Modding Tutorials
  • 0

    posted a message on [1.7.2] [FORGE] Metadata blocks?
    Quote from HonestFlames

    My pet hate is people asking a question in a forum that I also am interested to learn the answer, then that person comes back and says "I fixed it" and then doesn't bloody well tell anyone how.


    If it helps, I am putting out a tutorial on this here in a bit.
    Posted in: Modification Development
  • To post a comment, please or register a new account.