Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.8] Blockstates and Metadata , Blocks dont taking the variation model


Raflex14
 Share

Recommended Posts

 

So i resolved the blockstates, metadata block, no errors, but i have some problems with registering i think. First my block didnt appear in the inventory nor the game, so i created a new block like always, but using the blockstate class. all the 16 block variations appear but without model or texture when placed and in the hand.

 

My block variation class

package raflex14.pixarcraft.blocks;

import java.util.List;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import raflex14.pixarcraft.PixarCraft;

public class Balloon extends Block 
{
public enum EnumType implements IStringSerializable{
	WHITE(0, "white"),
    BLACK(1, "black"),
	GRAY(2, "gray"),
	BLUE(3, "blue"),
	LIGHT_GRAY(4, "light_gray"),
	BROWN(5, "brown"),
	CYAN(6, "cyan"),
	GREEN(7, "green"),
	LIGHT_BLUE(8, "light_blue"),
	LIME(9, "lime"),
	MAGENTA(10, "magenta"),
	ORANGE(11, "orange"),
	PINK(12, "pink"),
	PURPLE(13, "purple"),
	RED(14, "red"),
	YELLOW(15, "yellow");

	public int getMetadata()
    {
      return this.meta;
    }

    @Override
    public String toString()
    {
      return this.name;
    }

    public static EnumType byMetadata(int meta)
    {
      if (meta < 0 || meta >= META_LOOKUP.length)
      {
        meta = 0;
      }

      return META_LOOKUP[meta];
    }

    public String getName()
    {
      return this.name;
    }

    private final int meta;
    private final String name;
    private static final EnumType[] META_LOOKUP = new EnumType[values().length];

    private EnumType(int i_meta, String i_name)
    {
      this.meta = i_meta;
      this.name = i_name;
    }

    static
    {
      for (EnumType colortype : values()) {
        META_LOOKUP[colortype.getMetadata()] = colortype;
      }
    }
}

@Override
protected BlockState createBlockState() {
    return new BlockState(this, new IProperty[] { COLORTYPE });
}





public Balloon() {
        super(Material.cloth);
        this.setCreativeTab(PixarCraft.tabPixarCraftBlocks);
    }

@Override
  public int getRenderType() {
    return 3;
  }

public static final PropertyEnum COLORTYPE = PropertyEnum.create("colortype", Balloon.EnumType.class);

@Override
  public int damageDropped(IBlockState state)
  {
    EnumType enumType = (EnumType)state.getValue(COLORTYPE);
    return enumType.getMetadata();
  }

@Override
  @SideOnly(Side.CLIENT)
  public void getSubBlocks(Item itemIn, CreativeTabs tab, List list)
  {
    EnumType[] allColours = EnumType.values();
    for (EnumType colortype : allColours) {
      list.add(new ItemStack(itemIn, 1, colortype.getMetadata()));
    }
  }

@Override
  public IBlockState getStateFromMeta(int meta)
  {
    int colourbits = (meta & 0x0c) >> 2; // 0x0c is hexadecimal, in binary 1100
    EnumType colortype = EnumType.byMetadata(colourbits);
    return this.getDefaultState().withProperty(COLORTYPE, colortype);
  }

@Override
  public int getMetaFromState(IBlockState state)
  {
    EnumType colortype = (EnumType)state.getValue(COLORTYPE);
    

    
    int colourbits = colortype.getMetadata() << 2;
    return  colourbits;
  }





@Override
  public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing blockFaceClickedOn, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
  {


    EnumType colortype = EnumType.byMetadata(meta);
    // find the quadrant the player is facing


    return this.getDefaultState().withProperty(COLORTYPE, colortype);
  }



}

 

My Itemblockvariation class

package raflex14.pixarcraft.items;

import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import raflex14.pixarcraft.blocks.Balloon;

public class ItemBalloon extends ItemBlock{

  public ItemBalloon(Block block)
  {
    super(block);
    this.setMaxDamage(0);
    this.setHasSubtypes(true);
  }

  @Override
  public int getMetadata(int metadata)
  {
    return metadata;
  }


  @Override
  public String getUnlocalizedName(ItemStack stack)
  {
    Balloon.EnumType colortype = Balloon.EnumType.byMetadata(stack.getMetadata());
    return super.getUnlocalizedName() + "." + colortype.toString();
  }

}

 

Startup Client

package raflex14.pixarcraft.proxy;

import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry;
import raflex14.pixarcraft.blocks.Balloon;

public class StartupClientOnly
{
  public static void preInitClientOnly()
  {
    Item itemBalloon = GameRegistry.findItem("pc", "balloon_variants");

    
    ModelBakery.addVariantName(itemBalloon, "pc:balloon_variants_blue",
            "pc:balloon_variants_green",
            "pc:balloon_variants_red",
            "pc:balloon_variants_yellow",
            "pc:balloon_variants_cyan",
"pc:balloon_variants_light_blue",
"pc:balloon_variants_white",
"pc:balloon_variants_black",
"pc:balloon_variants_gray",
"pc:balloon_variants_light_gray",
"pc:balloon_variants_pink",
"pc:balloon_variants_magenta",
"pc:balloon_variants_lime",
"pc:balloon_variants_purple",
"pc:balloon_variants_brown",
"pc:balloon_variants_orange");
    		
    
  }

  public static void initClientOnly()
  {
   
    Item itemBalloon = GameRegistry.findItem("pc", "balloon_variants");
    ModelResourceLocation itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_blue", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.BLUE.getMetadata(), itemModelResourceLocation);

    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_green", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.GREEN.getMetadata(), itemModelResourceLocation);

    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_red", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.RED.getMetadata(), itemModelResourceLocation);

    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_yellow", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.YELLOW.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_cyan", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.CYAN.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_brown", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.BROWN.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_pink", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.PINK.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_magenta", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.MAGENTA.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_purple", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.PURPLE.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_light_blue", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.LIGHT_BLUE.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_gray", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.GRAY.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_light_gray", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.LIGHT_GRAY.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_black", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.BLACK.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_white", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.WHITE.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_lime", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.LIME.getMetadata(), itemModelResourceLocation);
    
    itemModelResourceLocation = new ModelResourceLocation("pc:balloon_variants_orange", "inventory");
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemBalloon, Balloon.EnumType.ORANGE.getMetadata(), itemModelResourceLocation);
  }

  public static void postInitClientOnly()
  {
  }
}

 

StartupCommon

package raflex14.pixarcraft.proxy;

import net.minecraftforge.fml.common.registry.GameRegistry;
import raflex14.pixarcraft.blocks.Balloon;
import raflex14.pixarcraft.items.ItemBalloon;


public class StartupCommon
{
  public static Balloon balloon;  

  public static void preInitCommon()
  {
   
    balloon = (Balloon)(new Balloon().setUnlocalizedName("balloon_variants"));
    GameRegistry.registerBlock(balloon, ItemBalloon.class, "balloon_variants");
   

  }

  public static void initCommon()
  {
  }

  public static void postInitCommon()
  {
  }
}

 

And finally

Blockstate

{
    "variants": {
    "COLORTYPE=red": { "model": "pc:balloon_variants_model_red"},
    "COLORTYPE=green": { "model": "pc:balloon_variants_model_green" },
    "COLORTYPE=yellow": { "model": "pc:balloon_variants_model_yellow" },
    "COLORTYPE=blue": { "model": "pc:balloon_variants_model_blue" },
"COLORTYPE=brown": { "model": "pc:balloon_variants_model_brown" },
"COLORTYPE=cyan": { "model": "pc:balloon_variants_model_cyan" },
"COLORTYPE=white": { "model": "pc:balloon_variants_model_white" },
"COLORTYPE=black": { "model": "pc:balloon_variants_model_black" },
"COLORTYPE=gray": { "model": "pc:balloon_variants_model_gray" },
"COLORTYPE=light_gray": { "model": "pc:balloon_variants_model_light_gray" },
"COLORTYPE=purple": { "model": "pc:balloon_variants_model_purple" },
"COLORTYPE=magenta": { "model": "pc:balloon_variants_model_magenta" },
"COLORTYPE=orange": { "model": "pc:balloon_variants_model_orange" },
"COLORTYPE=lime": { "model": "pc:balloon_variants_model_lime" },
"COLORTYPE=light_blue": { "model": "pc:balloon_variants_model_light_blue" },
"COLORTYPE=pink": { "model": "pc:balloon_variants_model_pink" }    
    }
}

Link to comment
Share on other sites

i fixed the code but the block doesnt render

Then post your updated code. Also, next time, please be more specific than 'block doesn't render'.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

In your blockstate file try changing all the variants name (example BLACK, GREEN, ecc) with their respective name in the constructor (so BLACK will turn "black", WHITE will turn "white" and so on)

Don't blame me if i always ask for your help. I just want to learn to be better :)

Link to comment
Share on other sites

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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • You can download builds of OpenJDK for free from Eclipse Adoptium or AdoptOpenJDK NOTE: The AdoptOpenJDK site is not liable to be around much longer as they became Eclipse Adoptium, however there are still some older builds that were not carried over to the new site
    • Please provide debug.log (more info on where it is and how to provide it can be found in my signature below, just expand the spoiler)
    • Please provide a screenshot of your launcher
    • You "deleted the phrase"? I'm not sure what that is supposed to mean.
    • so i watched this tutorial on youtube(https://www.youtube.com/watch?v=vZgYjHwKcHA&t=691s) for make sittable blocks and even if is a 1,12,2 tutorial video a kind of translated it to 1.16.5 code but is not working "correctly"; the SeatEntity spawns in MY position and not in the position of the chair, and it blocks me the mouse movement in Y, and i can't shift for exit the chair, i can break blocks but my hand is kind of freeze in time (https://imgur.com/a/6xoKrV5)   this is my code:  @SubscribeEvent public static void test(PlayerInteractEvent.RightClickBlock event) { PlayerEntity player = event.getPlayer(); if(player.getRidingEntity() != null) { return; } World world = event.getWorld(); BlockPos pos = event.getPos(); Vector3d vec = new Vector3d(pos.getX() + 0.5f,pos.getY(), pos.getZ() + 0.5f); double maxDistance = 4.5D; if((vec.x - player.getPosX()) * (vec.x - player.getPosX()) + (vec.y - player.getPosY()) * (vec.y - player.getPosY()) + (vec.z - player.getPosZ()) * (vec.z - player.getPosZ()) > maxDistance * maxDistance) { return; } BlockState state = world.getBlockState(pos); ItemStack mainStack = player.getHeldItemMainhand(); ItemStack offStack = player.getHeldItemOffhand(); if(!mainStack.isEmpty() || !offStack.isEmpty()) { return; } if(state.getBlock() instanceof StairsBlock) { //List<SeatStair> seats = world.getEntitiesWithinAABB(SeatStair.class, new AxisAlignedBB(pos,pos.add(1,1,1))); SeatStair seat = new SeatStair(EntityType.ARMOR_STAND,world,pos); world.addEntity(seat); player.startRiding(seat); } } public static class SeatStair extends Entity { public SeatStair(EntityType<QUESTIONMARK extends Entity> type, World world, BlockPos pos) { super(type,world); setPosition(pos.getX() + 0.5D,pos.getY() + 0.2D,pos.getZ() + 0.5D); } @Override protected void registerData() { } @Override public void tick() { super.tick(); BlockPos pos = getPosition(); if(!(getEntityWorld().getBlockState(pos).getBlock() instanceof StairsBlock)) { setDead(); return; } List<Entity> passengers = getPassengers(); if(passengers.isEmpty()) { setDead(); } for(Entity entity : passengers) { if(entity.isSneaking()) { setDead(); } } } @Override protected void readAdditional(CompoundNBT compound) { } @Override protected void writeAdditional(CompoundNBT compound) { } @Override public IPacket<QUESTIONMARK> createSpawnPacket() { return null; } }  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.