Jump to content

Recommended Posts

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).

Posted

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));
          }
    }

}

Posted

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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • *** buffer overflow detected ***: terminated /usr/bin/forge-1.12.2d: line 162: 15787 Aborted                 (core dumped) ${SUDO_CMD} screen -S "${SESSION_NAME}" -Q select . > /dev/null Starting server...There are several suitable screens on:     14630.forge-1.12.2    (Detached)     15796.forge-1.12.2    (Detached) Use -S to specify a session How do i fix this issue?
    • Oh I forgot to update the title. I figured out the issue and I'm rather embarrassed to say that it was a file path issue. The game already knew I was accessing the achievements so I wasn't suppose to include advancements in the file path. Minecraft file paths have always confused me a little bit... ResourceLocation advancementId = new ResourceLocation( TheDeadRise.MODID,"adventure/spawntrigger");
    • Can someone help my with this? My forge server won't open and I'm not that good with this stuff. It gave me this error message:   C:\Users\apbeu\Desktop\Forge server>java -Xmx4G -Xms1G -jar server.jar nogui 2024-12-11 18:21:01,054 main WARN Advanced terminal features are not available in this environment [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.34, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, nogui] [18:21:01] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.1.3+8.1.3+main-8.1.x.c94d18ec starting: java version 21.0.4 by Oracle Corporation Exception in thread "main" java.lang.IllegalAccessError: class cpw.mods.modlauncher.SecureJarHandler (in unnamed module @0x402e37bc) cannot access class sun.security.util.ManifestEntryVerifier (in module java.base) because module java.base does not export sun.security.util to unnamed module @0x402e37bc         at cpw.mods.modlauncher.SecureJarHandler.lambda$static$1(SecureJarHandler.java:45)         at cpw.mods.modlauncher.api.LamdbaExceptionUtils.uncheck(LamdbaExceptionUtils.java:95)         at cpw.mods.modlauncher.SecureJarHandler.<clinit>(SecureJarHandler.java:45)         at cpw.mods.modlauncher.Launcher.lambda$new$6(Launcher.java:55)         at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:52)         at cpw.mods.modlauncher.api.TypesafeMap.computeIfAbsent(TypesafeMap.java:47)         at cpw.mods.modlauncher.Environment.computePropertyIfAbsent(Environment.java:62)         at cpw.mods.modlauncher.Launcher.<init>(Launcher.java:55)         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)         at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63)         at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60)         at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) C:\Users\apbeu\Desktop\Forge server>pause
    • Here is the url for the crash report if anyone can help me, please. https://mclo.gs/KGn5LWy  
    • Every single time I try and open my modpack it crashes before the game fully opens and I don't know what is wrong. I open the crash logs but I don't understand what any of it means. What do I do?
  • Topics

×
×
  • Create New...

Important Information

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