提供: Minecraft Modding Wiki
2016年1月27日 (水) 17:28時点における新人もっだー (トーク | 投稿記録)による版 (ページの作成:「{{前提MOD|reqmod="Minecraft Forge Universal"}}{{チュートリアルカテゴリー ‎|type=Render| difficulty=0}} <p> <h1>独自Renderの追加</h1> ここでは...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

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

C none.png
Renderに関係のあるチュートリアルです。

独自Renderの追加

ここでは独自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;
    }

などを入れる。