24 mars 2016, 22:24

Rebonjour,

Suite au problème de rendus dans mon ancien poste. J’ai voulu dire que j’ai reussi à le faire avec un code assez farfelue mais maintenant, l’item qui est dans la barre d’inventaire est en 2D mais pas en 3D comme les autres:

Main:


package fr.yohannlog.main;

import fr.yohannlog.main.proxies.CommonProxy;
import net.minecraft.init.Blocks;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = Main.MODID, version = Main.VERSION, name = Main.MODNAME)
public class Main
{
    public static final String MODID = "minecraftmore";
    public static final String VERSION = "1.0";
    public static final String MODNAME = "Reg";

    @Instance
    public static Main instance = new Main();

    @SidedProxy(clientSide="fr.yohannlog.main.proxies.ClientProxy", serverSide="fr.yohannlog.main.proxies.CommonProxy")
    public static CommonProxy proxy;
    @EventHandler
    public void preInit(FMLPreInitializationEvent e) {
        proxy.preInit(e);
    }

    @EventHandler
    public void init(FMLInitializationEvent e) {
        proxy.init(e);
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent e) {
        proxy.postInit(e);
    }
}

ClientProxy:


package fr.yohannlog.main.proxies;

import fr.yohannlog.blocks.ModBlocks;
import fr.yohannlog.blocks.render.BlockRenderRegister;
import fr.yohannlog.main.Main;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy
{

    @Override
    public void preInit(FMLPreInitializationEvent e) {
        super.preInit(e);
    }

    @Override
    public void init(FMLInitializationEvent e) {
        super.init(e);

        BlockRenderRegister.registerBlockRenderer();
    }

    @Override
    public void postInit(FMLPostInitializationEvent e) {
        super.postInit(e);
    }

}

CommonProxy:


package fr.yohannlog.main.proxies;

import fr.yohannlog.blocks.ModBlocks;
import fr.yohannlog.main.Main;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class CommonProxy {
    public void preInit(FMLPreInitializationEvent e) {
        ModBlocks.createBlocks();
    }

    public void init(FMLInitializationEvent e) {

    }

    public void postInit(FMLPostInitializationEvent e) {

    }
}

BlockRenderRegister:


package fr.yohannlog.blocks.render;

import fr.yohannlog.blocks.ModBlocks;
import fr.yohannlog.main.Main;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;

public class BlockRenderRegister {
    public static void registerBlockRenderer() {
        reg(ModBlocks.table);
    }

    public static String modid = Main.MODID;

    public static void reg(Block block) {
        Item item = Item.getItemFromBlock(block);
        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(modid + ":" + item.getUnlocalizedName().substring(5), "inventory"));
    }

}

Table:


package fr.yohannlog.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class Table extends Block
{
    public Table(String unlocalizedName, Material material, float hardness, float resistance){
        super(material);
        this.setUnlocalizedName(unlocalizedName);
        this.setCreativeTab(CreativeTabs.tabBlock);
        this.setHardness(hardness);
        this.setResistance(resistance);
    }

    public Table(String unlocalizedName, float hardness, float resistance) {
        this(unlocalizedName, Material.rock, hardness, resistance);
    }

    public Table(String unlocalizedName) {
        this(unlocalizedName, 2.0f, 10.0f);
    }

    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }

    public boolean isFullCube()
    {
        return false;
    }

    public EnumBlockRenderType getRenderType(IBlockState state)
    {
        return EnumBlockRenderType.MODEL;
    }

    @SideOnly(Side.CLIENT)
    public BlockRenderLayer getBlockLayer()
    {
        return BlockRenderLayer.CUTOUT;
    }

}

ModBlocks:


package fr.yohannlog.blocks;

import net.minecraft.block.Block;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class ModBlocks {

    public static Block table;

    public static void createBlocks() {
        GameRegistry.registerBlock(table = new Table("table").setLightLevel(1.0f), "table");
    }

}

Models.Item.Table.json (JsonFile):

{
   "parent": "minecraftmore:block/table",
   "display": {
       "thirdperson": {
           "rotation": [ 0, 90, -90 ],
           "translation": [ 0, 0, -4 ],
           "scale": [ 0.5, 0.5, 0.5 ]
       },
       "firstperson": {
           "rotation": [ 0, 225, 0 ]
       },
       "gui": {
           "rotation": [ 0, -65, 0 ],
           "translation": [ 0, -3, 0 ],
           "scale": [ 0.85, 0.85, 0.85 ]
       }
   }
}

Voilà, voilà

Yohann

PS: je précise que la code est super mal foutu donc je ferai des modifs un peu plus tard