Jump to content

Custom wall item dublicate


Tennik

Recommended Posts

Hello everyone!
I`m a novice in the forge modding, but have some basic skills and know basics about creating custom blocks, items and something else.
I work on rewriting a 1.7.10 mod for my new 1.12.2 server as author abandoned its developing.
I simply created main mod class, proxy, block and item registers, added new stone and wood blocks with metadata and create custom fence and gate with different textures.
But I have a problem with my custom walls. When my wall class inherits BlockWall class, I get two items in my inventory - one normal with texture and second bad. They are fully similar in the world and have similar IDs:

2020-01-24_16_48_15.png.b9728541aea2c31fff319e6ac49febb0.png2020-01-24_16_48_17.png.0a7f82c20dd4f8400b3f20c57ebe20f6.png2020-01-24_16_48_31.png.f8933770b391fd70c3d3e7f94b73ec1d.png

When I change BlockWall to BlockFence and make some changes in my constructor and models json files, everything is going fine and there are no more dublicates. But may be there is a right way to make them from BlockWall class, nor BlockFence?
BlocksRegister.class

package de.shittyco.morematerials.blocks;

import de.shittyco.morematerials.blocks.fence.BlockBrickFence;
import de.shittyco.morematerials.blocks.fence.BlockBrickFenceGate;
import de.shittyco.morematerials.blocks.wall.BlockStainedBrickWall;
import de.shittyco.morematerials.utils.ColorUtility;
import de.shittyco.morematerials.utils.WoodUtility;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.registry.ForgeRegistries;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class BlocksRegister {
	public static Block stainedBrickBlocks = new BlockStainedBricks();

	public static Block woodenFrame = new BlockWoodenFrame();

	public static Block backslashWoodenFrame = new BlockBackslashWoodenFrame();

	public static Block crossWoodenFrame = new BlockCrossWoodenFrame();

	public static Block slashWoodenFrame = new BlockSlashWoodenFrame();

	public static Block brick_fence_black = new BlockBrickFence("brick_fence_black");
	public static Block brick_fence_gate_black = new BlockBrickFenceGate("brick_fence_gate_black");
	
	public static Block brick_fence_blue = new BlockBrickFence("brick_fence_blue");
	public static Block brick_fence_gate_blue = new BlockBrickFenceGate("brick_fence_gate_blue");
	
	public static Block brick_fence_brown = new BlockBrickFence("brick_fence_brown");
	public static Block brick_fence_gate_brown = new BlockBrickFenceGate("brick_fence_gate_brown");
	
	public static Block brick_fence_cyan = new BlockBrickFence("brick_fence_cyan");
	public static Block brick_fence_gate_cyan = new BlockBrickFenceGate("brick_fence_gate_cyan");
	
	public static Block brick_fence_gray = new BlockBrickFence("brick_fence_gray");
	public static Block brick_fence_gate_gray = new BlockBrickFenceGate("brick_fence_gate_gray");
	
	public static Block brick_fence_green = new BlockBrickFence("brick_fence_green");
	public static Block brick_fence_gate_green = new BlockBrickFenceGate("brick_fence_gate_green");
	
	public static Block brick_fence_light_blue = new BlockBrickFence("brick_fence_light_blue");
	public static Block brick_fence_gate_light_blue = new BlockBrickFenceGate("brick_fence_gate_light_blue");
	
	public static Block brick_fence_lime = new BlockBrickFence("brick_fence_lime");
	public static Block brick_fence_gate_lime = new BlockBrickFenceGate("brick_fence_gate_lime");
	
	public static Block brick_fence_magenta = new BlockBrickFence("brick_fence_magenta");
	public static Block brick_fence_gate_magenta = new BlockBrickFenceGate("brick_fence_gate_magenta");
	
	public static Block brick_fence_orange = new BlockBrickFence("brick_fence_orange");
	public static Block brick_fence_gate_orange = new BlockBrickFenceGate("brick_fence_gate_orange");
	
	public static Block brick_fence_pink = new BlockBrickFence("brick_fence_pink");
	public static Block brick_fence_gate_pink = new BlockBrickFenceGate("brick_fence_gate_pink");
	
	public static Block brick_fence_purple = new BlockBrickFence("brick_fence_purple");
	public static Block brick_fence_gate_purple = new BlockBrickFenceGate("brick_fence_gate_purple");
	
	public static Block brick_fence_red = new BlockBrickFence("brick_fence_red");
	public static Block brick_fence_gate_red = new BlockBrickFenceGate("brick_fence_gate_red");
	
	public static Block brick_fence_silver = new BlockBrickFence("brick_fence_silver");
	public static Block brick_fence_gate_silver = new BlockBrickFenceGate("brick_fence_gate_silver");
	
	public static Block brick_fence_white = new BlockBrickFence("brick_fence_white");
	public static Block brick_fence_gate_white = new BlockBrickFenceGate("brick_fence_gate_white");
	
	public static Block brick_fence_yellow = new BlockBrickFence("brick_fence_yellow");
	public static Block brick_fence_gate_yellow = new BlockBrickFenceGate("brick_fence_gate_yellow");
	
	public static Block[] stainedBrickWallBlocks = new BlockStainedBrickWall[ColorUtility.COLOR_COUNT];

	public static void register()
	{
		setRegister(stainedBrickBlocks, new ItemBlockStainedBricks(stainedBrickBlocks));
		setRegister(woodenFrame, new ItemBlockWoodenFrame(woodenFrame));
		setRegister(backslashWoodenFrame, new ItemBlockWoodenFrame(backslashWoodenFrame));
		setRegister(crossWoodenFrame, new ItemBlockWoodenFrame(crossWoodenFrame));
		setRegister(slashWoodenFrame, new ItemBlockWoodenFrame(slashWoodenFrame));
		
		for (int i = 0; i < ColorUtility.COLOR_COUNT; i++) {
			BlockStainedBrickWall wall = new BlockStainedBrickWall(stainedBrickBlocks, i);
			stainedBrickWallBlocks[i] = wall;
			setRegister(wall);
		}
		
	}

	@SideOnly(Side.CLIENT)
	public static void registerRender()
	{
		setRender(stainedBrickBlocks, ColorUtility.COLOR_COUNT, ColorUtility.COLOR_IDS);
		setRender(woodenFrame, WoodUtility.WOOD_TYPE_COUNT, WoodUtility.WOOD_TYPE_IDS);
		setRender(backslashWoodenFrame, WoodUtility.WOOD_TYPE_COUNT, WoodUtility.WOOD_TYPE_IDS);
		setRender(crossWoodenFrame, WoodUtility.WOOD_TYPE_COUNT, WoodUtility.WOOD_TYPE_IDS);
		setRender(slashWoodenFrame, WoodUtility.WOOD_TYPE_COUNT, WoodUtility.WOOD_TYPE_IDS);

		setRender(brick_fence_black);
		setRender(brick_fence_gate_black);
		
		setRender(brick_fence_blue);
		setRender(brick_fence_gate_blue);
		
		setRender(brick_fence_brown);
		setRender(brick_fence_gate_brown);
		
		setRender(brick_fence_cyan);
		setRender(brick_fence_gate_cyan);
		
		setRender(brick_fence_gray);
		setRender(brick_fence_gate_gray);
		
		setRender(brick_fence_green);
		setRender(brick_fence_gate_green);
		
		setRender(brick_fence_light_blue);
		setRender(brick_fence_gate_light_blue);
		
		setRender(brick_fence_lime);
		setRender(brick_fence_gate_lime);
		
		setRender(brick_fence_magenta);
		setRender(brick_fence_gate_magenta);
		
		setRender(brick_fence_orange);
		setRender(brick_fence_gate_orange);
		
		setRender(brick_fence_pink);
		setRender(brick_fence_gate_pink);
		
		setRender(brick_fence_purple);
		setRender(brick_fence_gate_purple);
		
		setRender(brick_fence_red);
		setRender(brick_fence_gate_red);
		
		setRender(brick_fence_silver);
		setRender(brick_fence_gate_silver);
		
		setRender(brick_fence_white);
		setRender(brick_fence_gate_white);
		
		setRender(brick_fence_yellow);
		setRender(brick_fence_gate_yellow);
		
		for (int i = 0; i < stainedBrickWallBlocks.length; i++) {
			setRender(stainedBrickWallBlocks[i]);
		}
	}

	private static void setRegister(Block block)
	{
		ForgeRegistries.BLOCKS.register(block);
		ForgeRegistries.ITEMS.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
	}

	public static void setRegister(Block block, ItemBlock itemBlock) 
	{
		ForgeRegistries.BLOCKS.register(block);
		ForgeRegistries.ITEMS.register(itemBlock.setRegistryName(block.getRegistryName()));
	}

	@SideOnly(Side.CLIENT)
	private static void setRender(Block block, int meta_count, String[] meta_name)
	{
		for (int i = 0; i < meta_count; i++) {
			Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), i, new ModelResourceLocation(block.getRegistryName() + "_" + meta_name[i], "inventory"));
			ModelBakery.registerItemVariants(
					Item.getItemFromBlock(block),
					new ModelResourceLocation(
							"morematerials:" + block.getRegistryName(), 
							"variant=" + block.getRegistryName() + "_" + meta_name[i]));
		}
	}

	@SideOnly(Side.CLIENT)
	private static void setRender(Block block)
	{
		Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
		ModelBakery.registerItemVariants(
				Item.getItemFromBlock(block),
				new ModelResourceLocation(
						"morematerials:" + block.getRegistryName(), 
						"variant=" + block.getRegistryName()));
	}
}

 

BlocksStainedBrickWall.class

/**
 * Copyright (C) Jon Rowlett. All rights reserved.
 */
package de.shittyco.morematerials.blocks.wall;

import de.shittyco.morematerials.MoreMaterialsMod;
import de.shittyco.morematerials.blocks.BlockStainedBricks;
import de.shittyco.morematerials.utils.ColorUtility;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFence;
import net.minecraft.block.BlockWall;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;

/**
 * Different color brick walls.
 * @author jrowlett
 *
 */
public class BlockStainedBrickWall extends BlockFence {
    /**
     * base unlocalized name of the block.
     */
    private static final String NAME = "stainedBrickWall";

    /**
     * Block hardness.
     */
    private static final float HARDNESS = 2.0f;

    /**
     * block resistance.
     */
    private static final float RESISTANCE = 10.0f;

    /**
     * color of the bricks.
     */
    private int color;

    /**
     * Initializes a new instance of the BlockStainedBrickWall class.
     * @param stainedBrickBlocks the registered stained bricks block.
     * @param brickColor color of the bricks.
     */
    public BlockStainedBrickWall(Block stainedBrickBlocks, int brickColor) {
    	super(Material.ROCK, Material.ROCK.getMaterialMapColor());
    	//super(stainedBrickBlocks);
        this.color = brickColor;
        this.setRegistryName(getId());
        this.setUnlocalizedName(NAME + "." + ColorUtility.COLOR_NAMES[this.color]);
        this.setHardness(HARDNESS);
        this.setResistance(RESISTANCE);
        this.setCreativeTab(MoreMaterialsMod.creativeTab);
    }

    /**
     * Gets the ID to use for registration.
     * @return the unique name of the block.
     */
    public final String getId() {
       return BlockStainedBricks.ID + "_" + ColorUtility.COLOR_IDS[this.color] + "_wall";
    }

    /**
     * Call on init to register the icons for inventory.
     * @param proxy the proxy to register the models.
     */
    /*
    public final void registerModels(
        final CommonProxy proxy) {
        String id = this.getId();
        Item itemBlock = GameUtility.getItemFromBlock(id);
        proxy.addModelBakeryVariant(
            itemBlock,
            "morematerials:" + id);
        proxy.registerInventoryModel(
            itemBlock,
            id,
            0);
    }
    */
}

 

ColorUtility.class (for different color blocks with different textures)

/**
 * Copyright (C) Jon Rowlett. All rights reserved.
 */
package de.shittyco.morematerials.utils;

/**
 * Common Definitions and helpers for color.
 * @author jrowlett
 *
 */
public final class ColorUtility {

    /**
     * Common color names (unlocalized) indexed by item damage.
     */
    public static final String[] COLOR_NAMES = new String[] {
        "black",
        "red",
        "green",
        "brown",
        "blue",
        "purple",
        "cyan",
        "silver",
        "gray",
        "pink",
        "lime",
        "yellow",
        "lightBlue",
        "magenta",
        "orange",
        "white"
    };

    /**
     * Count of total colors.
     */
    public static final int COLOR_COUNT = COLOR_NAMES.length;

    /**
     * Common color tags used for icon name lookup indexed by item damage.
     */
    public static final String[] COLOR_IDS = new String[] {
        "black",
        "red",
        "green",
        "brown",
        "blue",
        "purple",
        "cyan",
        "silver",
        "gray",
        "pink",
        "lime",
        "yellow",
        "light_blue",
        "magenta",
        "orange",
        "white"
    };

    /**
     * Prevent instantiation of the ColorUtility class.
     */
    private ColorUtility() {
    }
}

 

Edited by Tennik
Link to comment
Share on other sites

 1.12 is no longer supported. Update to at least 1.14 to recieve support.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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