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

First off, sorry for my bad English, I`m from Poland :P

 

I have problem with metadata block. I`d like to did block like wood, with:

1. rotate on placing

2. side textures.

Side textures is easy with normal block, but i have problem with metadata block.

Code:

Blocks.java

package rpgcraft.blocks;

import rpgcraft.lib.Reference;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.item.ItemStack;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;

public class blocks
{
public static void init_Blocks()
{
      
       Block RpgwoodBlock;
       RpgwoodBlock = new BlockRpgwood(500, Material.rock).setUnlocalizedName("RpgwoodBlock");
       GameRegistry.registerBlock(RpgwoodBlock, ItemRpgwoodBlock.class, Reference.MOD_ID + (RpgwoodBlock.getUnlocalizedName().substring(5)));
       LanguageRegistry.addName(new ItemStack(RpgwoodBlock, 1, 0), "Dark wood");
       LanguageRegistry.addName(new ItemStack(RpgwoodBlock, 1, 1), "Noname wood");
            
};
}

 

ItemRpgwoodBlock.java

package rpgcraft.blocks;

import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;

public class ItemRpgwoodBlock extends ItemBlock
{
       public ItemRpgwoodBlock(int par1)
       {
             super(par1);
             setHasSubtypes(true);
       }
      
       public String getUnlocalizedName(ItemStack itemstack)
       {
             String name = "";
             switch(itemstack.getItemDamage())
             {
                    case 0:
                    {
                           name = "world";
                           break;
                    }
                    case 1:
                    {
                           name = "nether";
                           break;
                    }
                    default: name = "broken";
             }
             return getUnlocalizedName() + "." + name;
       }
      
       public int getMetadata(int par1)
       {
             return par1;
       }
}

 

BlockRpgwood.java

package rpgcraft.blocks;

import java.util.List;

import rpgcraft.lib.Reference;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockRpgwood extends Block
{
       public BlockRpgwood(int id, Material material)
       {
              super(id, material);
              this.setCreativeTab(CreativeTabs.tabBlock);
       }
      
       public int damageDropped(int par1)
    {
        return par1;
    }
      
       @SideOnly(Side.CLIENT)
    private Icon[] icons;
  
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        icons = new Icon[4];
        
        for(int i = 0; i < icons.length; i++)
        {
            icons[i] = par1IconRegister.registerIcon(Reference.MOD_ID + ":" + (this.getUnlocalizedName().substring(5)) + i + "_side");
        }
    }
  
    @SideOnly(Side.CLIENT)
    public Icon getIcon(int par1, int par2)
    {
        switch(par2)
        {
            case 0:
              return icons[0];
            case 1:
            {
              switch(par1)
                {
                     case 0:
                           return icons[1];
                    case 1:
                        return icons[2];
                    default:
                        return icons[3];
                }
            }
            default:
            {
              System.out.println("Invalid metadata for " + this.getUnlocalizedName());
                return icons[0];
            }
        }
    }
  
    @SideOnly(Side.CLIENT)
    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
    {
          for(int i = 0; i < 2; i++)
          {
                 par3List.add(new ItemStack(par1, 1, i));
          }
    }

}

 

And i have textures with "_side" and "_top" (RpgwoodBlock0_side.png and RpgwoodBlock0_top.png for example).

look at the code for the log blocks. I made a custom wood, literally copied the code from the vanilla logs, and it worked. :P

  • Author

Wow, it`s easy!

I`m just replace:

public class BlockRpgwood extends Block

for this:

public class BlockRpgwood extends BlockRotatedPillar

and my block is rotating like wood :D But i still have problem with sided texture in metadata block :/

 

EDIT:

BlockRotatedPillar work with metadata 0, but when I place metadata 2 block, it just... place metadata 0 with textures. So, I still need help.

 

Actual code:

package rpgcraft.blocks;

import java.util.List;

import rpgcraft.lib.Reference;
import net.minecraft.block.Block;
import net.minecraft.block.BlockRotatedPillar;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockRpgwood extends BlockRotatedPillar
{
       public BlockRpgwood(int id, Material material)
       {
              super(id, material);
              this.setCreativeTab(CreativeTabs.tabBlock);
       }
      
       public int damageDropped(int par1)
    {
        return par1;
    }
      
       @SideOnly(Side.CLIENT)
    private Icon[] icons;
  
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        icons = new Icon[4];
        
        for(int i = 0; i < icons.length; i++)
        {
            icons[i] = par1IconRegister.registerIcon(Reference.MOD_ID + ":" + (this.getUnlocalizedName().substring(5)) + i + "_side");
        }
    }
  
    @SideOnly(Side.CLIENT)
    public Icon getIcon(int par1, int par2)
    {
        switch(par2)
        {
            case 0:
              return icons[0];
            case 1:
            {
              switch(par1)
                {
                     case 0:
                        return icons[1];
                    case 1:
                        return icons[2];
                    default:
                        return icons[3];
                }
            }
            default:
            {
              System.out.println("Invalid metadata for " + this.getUnlocalizedName());
                return icons[0];
            }
        }
    }
  
    @SideOnly(Side.CLIENT)
    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
    {
          for(int i = 0; i < 2; i++)
          {
                 par3List.add(new ItemStack(par1, 1, i));
          }
    }

}

I don't think you need public Icon getIcon(int par1, int par2) . You just have to put there: protected Icon getSideIcon(int i) and return the side icon in that (the parameter is metadata of subblock (if you have any)) and than you need this: protected Icon getEndIcon(int par1) where you return the top and bottom icon (the parameter is the same as before) and I think that should work ;)

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Guest
This topic is now closed to further replies.

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.