提供: Minecraft Modding Wiki
この記事は"Minecraft Forge Universal"を前提MODとしています。 |
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; }
などを入れる。