1.7の独自Renderの追加

提供:Minecraft Modding Wiki
移動: 案内, 検索

この記事は"Minecraft Forge Universal"を前提MODとしています。

Stone pickaxe.png
中級者向けのチュートリアルです。
C none.png
Renderに関係のあるチュートリアルです。
C block.png
Blockに関係のあるチュートリアルです。
C item.png
Itemに関係のあるチュートリアルです。

1.7での独自Renderの追加

ここでは1.7での独自Renderの追加と、その適用方法について解説する。

  • core.java
package SampleRender;
 
import省略
 
@Mod(modid=core.MODID, name=core.MODNAME, version=core.VERSION)
public class core {
 
	public static final String MODID = "core";
	public static final String MODNAME = "core";
	public static final String VERSION = "0.1";
 
        //RenderIDの登録
        public static int RenderID;
 
        @EventHandler
	   public void preInit(FMLPreInitializationEvent event){}
 
        @EventHandler
	   public void init(FMLInitializationEvent event) {
 
        //RenderIDを自動で割り振っている
	this.RenderID = RenderingRegistry.getNextAvailableRenderId();
        //レンダーを指定する
	RenderingRegistry.registerBlockHandler(new Samplerender());
  • Samplerender.java
package SampleRender;
 
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.world.IBlockAccess;
 
public class Samplerender implements ISimpleBlockRenderingHandler
{
 
        /**インベントリ内のレンダリング,今回はパス**/
	@Override
	public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer)
	{}
 
@Override
	public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
	{
		if (modelId == this.getRenderId())
		{
 
			//(始X, 始Y, 始Z, 終X, 終Y, 終Z)の順
			renderer.setRenderBounds(0.2D, 0.2D, 0.2D, 0.8D, 0.8D, 0.8D);
			/*ここを別のものにすることで、複雑な形を作ることができる*/
 
			renderer.renderStandardBlock(block, x, y, z);
			renderer.setRenderBounds(0.2D, 0.2D, 0.2D, 0.8D, 0.8D, 0.8D);
			renderer.renderStandardBlock(block, x, y, z);
			renderer.setRenderBounds(0.2D, 0.2D, 0.2D, 0.8D, 0.8D, 0.8D);
			renderer.renderStandardBlock(block, x, y, z);
			renderer.setRenderBounds(0.2D, 0.2D, 0.2D, 0.8D, 0.8D, 0.8D);
			renderer.renderStandardBlock(block, x, y, z);
 
			return true;
		}
		return false;
      }
	@Override
	/**インベントリ内でレンダリングするか**/
	public boolean shouldRender3DInInventory(int modelId) {
		return false;
	}
 
	/**自らのRenderIDをreturnする**/
	@Override
	public int getRenderId() {
 
		return core.RenderID;
	}
 
}

Renderの適用

        @Override
	public int getRenderType()
	{
		return core.RenderID;
	}

これだけ。
getRenderTypeでRenderIDをreturnしている。

  • 必要に応じて
    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
    {
        return true;
    }
 
 
    public boolean renderAsNormalBlock()
    {
        return false;
    }
 
 
    public boolean isOpaqueCube()
    {
        return false;
    }

などを入れる。

チュートリアル
個人用ツール