Posted March 27, 20169 yr Hello everybody, I'm trying to add the textures for a block with meta data, I set the texture in the blockstate json file. The blocks self have the correct texture but the items not. Screenshot: [/img] Ore.json: { "forge_marker": 1, "defaults":{ "textures": {}, "model": "cube_all", "uvlock": true }, "variants": { "type":{ "copper":{ "textures":{ "all": "transmatrics:blocks/CopperOre" } }, "tin":{ "textures": { "all": "transmatrics:blocks/TinOre" } }, "silver":{ "textures": { "all": "transmatrics:blocks/SilverOre" } }, "lead":{ "textures": { "all": "transmatrics:blocks/LeadOre" } } } } } OreBlock.java: package at.korti.transmatrics.block; import at.korti.transmatrics.api.Constants.TransmatricsBlock; import net.minecraft.block.material.Material; 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.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; import java.util.List; /** * Created by Korti on 18.03.2016. */ public class OreBlock extends ModBlock { public static final PropertyEnum<OreType> TYPE = PropertyEnum.create("type", OreType.class); public OreBlock() { super(Material.rock, TransmatricsBlock.ORE_BLOCK.getRegName()); } @Override protected BlockState createBlockState() { return new BlockState(this, TYPE); } @Override public int getMetaFromState(IBlockState state) { return state.getValue(TYPE).meta; } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(TYPE, getFromMeta(meta)); } private OreType getFromMeta(int meta) { if (meta < 0 || meta > OreType.values().length) { meta = 0; } return OreType.values()[meta]; } public enum OreType implements IStringSerializable { COPPER, TIN, SILVER, LEAD; public final int meta; OreType() { meta = ordinal(); } @Override public String getName() { return this.toString(); } } } The ModBlock class is just a base class to set the creative tab, the unlocalized name and the registry name. ItemOreBlock.java: package at.korti.transmatrics.item.ore; import at.korti.transmatrics.Transmatrics; import at.korti.transmatrics.api.Constants; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; /** * Created by Korti on 19.03.2016. */ public class ItemOreBlock extends ItemBlock { public ItemOreBlock(Block block) { super(block); this.setHasSubtypes(true); } @Override public String getUnlocalizedName(ItemStack stack) { String extension; switch (stack.getItemDamage()) { case 0: extension = "copper"; break; case 1: extension = "tin"; break; case 2: extension = "silver"; break; case 3: extension = "lead"; break; default: extension = "unknown"; break; } return super.getUnlocalizedName(stack) + "." + extension; } @Override public int getMetadata(int damage) { return damage; } } Block register: package at.korti.transmatrics.registry; import at.korti.transmatrics.block.OreBlock; import at.korti.transmatrics.block.crafting.Pulverizer; import at.korti.transmatrics.block.generator.*; import at.korti.transmatrics.block.network.Controller; import at.korti.transmatrics.block.network.LargeSwitch; import at.korti.transmatrics.block.network.MediumSwitch; import at.korti.transmatrics.block.network.SmallSwitch; import at.korti.transmatrics.item.ore.ItemOreBlock; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.List; import static net.minecraftforge.fml.common.registry.GameRegistry.registerBlock; /** * Created by Korti on 01.03.2016. */ public final class Blocks { private static SolarPanel solarPanel; private static AdvancedSolarPanel advancedSolarPanel; private static LavaGenerator lavaGenerator; private static ThermalGenerator thermalGenerator; private static HydrogenGenerator hydrogenGenerator; private static Windmill windmill; private static Watermill watermill; private static SmallSwitch smallSwitch; private static MediumSwitch mediumSwitch; private static LargeSwitch largeSwitch; private static Controller controller; private static Pulverizer pulverizer; private static OreBlock oreBlock; public static void registerBlocks() { registerBlock(solarPanel = new SolarPanel()); registerBlock(advancedSolarPanel = new AdvancedSolarPanel()); registerBlock(lavaGenerator = new LavaGenerator()); registerBlock(thermalGenerator = new ThermalGenerator()); registerBlock(hydrogenGenerator = new HydrogenGenerator()); registerBlock(windmill = new Windmill()); registerBlock(watermill = new Watermill()); registerBlock(smallSwitch = new SmallSwitch()); registerBlock(mediumSwitch = new MediumSwitch()); registerBlock(largeSwitch = new LargeSwitch()); registerBlock(controller = new Controller()); registerBlock(pulverizer = new Pulverizer()); registerBlock(oreBlock = new OreBlock(), ItemOreBlock.class); } public static void registerBlockTextures() { registerBlockTexture(solarPanel); registerBlockTexture(advancedSolarPanel); registerBlockTexture(lavaGenerator); registerBlockTexture(thermalGenerator); registerBlockTexture(hydrogenGenerator); registerBlockTexture(windmill); registerBlockTexture(watermill); registerBlockTexture(smallSwitch); registerBlockTexture(mediumSwitch); registerBlockTexture(largeSwitch); registerBlockTexture(controller); registerBlockTexture(pulverizer); registerMetaBlockTextures(oreBlock, "copper", "tin", "silver", "lead"); } private static void registerBlockTexture(Block block) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory")); } private static void registerMetaBlockTextures(Block block, String... variants) { Item blockItem = Item.getItemFromBlock(block); List<ItemStack> subItems = new ArrayList<>(); block.getSubBlocks(blockItem, null, subItems); for (int i = 0; i < subItems.size(); i++) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(blockItem, subItems.get(i).getMetadata(), new ModelResourceLocation(block.getRegistryName(), "type=" + variants[i])); } } }
March 27, 20169 yr This is because you need to specify models for the block item as well. You should make a file models/item_block_name.json which points to the main block model, like this: { "parent":"modid:block/copper_ore", "display": { "thirdperson": { "rotation": [ 10, -45, 170 ], "translation": [ 0, 1.5, -2.75 ], "scale": [ 0.375, 0.375, 0.375 ] } } }
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.