提供: Minecraft Modding Wiki
ModderKina (トーク | 投稿記録) (作った。ForgeのJsonの書式については別のページで解説予定。) |
|||
(4人の利用者による、間の5版が非表示) | |||
23行目: | 23行目: | ||
import net.minecraftforge.fml.common.registry.GameRegistry; | import net.minecraftforge.fml.common.registry.GameRegistry; | ||
− | @Mod(modid = SampleMod.MOD_ID, | + | @Mod(modid = SampleMod.MOD_ID, |
name = SampleMod.MOD_NAME, | name = SampleMod.MOD_NAME, | ||
version = SampleMod.MOD_VERSION, | version = SampleMod.MOD_VERSION, | ||
52行目: | 52行目: | ||
GameRegistry.register(sampleBlock, registryName); | GameRegistry.register(sampleBlock, registryName); | ||
GameRegistry.register(sampleItemBlock, registryName); | GameRegistry.register(sampleItemBlock, registryName); | ||
− | |||
//テクスチャ・モデル指定JSONファイル名の登録。 | //テクスチャ・モデル指定JSONファイル名の登録。 | ||
74行目: | 73行目: | ||
public class SampleBlock extends Block{ | public class SampleBlock extends Block{ | ||
public SampleBlock() { | public SampleBlock() { | ||
− | super(Material. | + | super(Material.ROCK); |
− | setCreativeTab(CreativeTabs. | + | setCreativeTab(CreativeTabs.BUIDING_BLOCKS);/*クリエイティブタブの選択*/ |
setUnlocalizedName("blockSample");/*システム名の設定*/ | setUnlocalizedName("blockSample");/*システム名の設定*/ | ||
/*以下のものは消しても結構です*/ | /*以下のものは消しても結構です*/ | ||
setHardness(1.5F);/*硬さ*/ | setHardness(1.5F);/*硬さ*/ | ||
setResistance(1.0F);/*爆破耐性*/ | setResistance(1.0F);/*爆破耐性*/ | ||
− | + | setSoundType(SoundType.STONE);/*ブロックの上を歩いた時の音*/ | |
− | + | /*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/ | |
− | + | /*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/ | |
− | + | /*disableStats();*//*ブロックの統計情報を保存しない*/ | |
setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ | setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ | ||
setLightLevel(1.0F);/*明るさ 1.0F = 15*/ | setLightLevel(1.0F);/*明るさ 1.0F = 15*/ |
2021年9月10日 (金) 09:11時点における最新版
この記事は"Minecraft Forge Universal 12.16.0.xxx~"を前提MODとしています。 |
ワールド上に設置できる簡単な無機能ブロックの追加方法。
登録方法以外に変わった点はないので、BlockStateの扱いについては1.8のブロック追加を参照のこと。
また、Blockstate用のJsonにForgeの提供する書式を採用しているが、バニラの方法で書いても問題ない。
ブロックの追加[編集]
注意:一度入れたMODを外すと、再び入れてもテクスチャが反映されなくなります。デバッグ時にご注意を。
ソースコード[編集]
- SampleMod.java
package com.example.block; import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameData; import net.minecraftforge.fml.common.registry.GameRegistry; @Mod(modid = SampleMod.MOD_ID, name = SampleMod.MOD_NAME, version = SampleMod.MOD_VERSION, dependencies = SampleMod.MOD_DEPENDENCIES, acceptedMinecraftVersions = SampleMod.MOD_ACCEPTED_MC_VERSIONS, useMetadata = true) public class SampleMod{ /** ModID文字列 */ public static final String MOD_ID = "samplemod"; /** MOD名称 */ public static final String MOD_NAME = "SampleMod"; /** MODのバージョン */ public static final String MOD_VERSION = "0.0.1"; /** 前に読み込まれるべき前提MODをバージョン込みで指定 */ public static final String MOD_DEPENDENCIES = "required-after:Forge@[1.9-12.16.0.1853,)"; /** 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。 */ public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.9]"; /** 追加したいブロックのインスタンスを格納するための変数。レシピ等で利用。 */ public static Block sampleBlock; @EventHandler public void preInit(FMLPreInitializationEvent event){ sampleBlock = new SampleBlock(); //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 ResourceLocation registryName = new ResourceLocation(MOD_ID, "sampleblock"); ItemBlock sampleItemBlock = new ItemBlock(sampleBlock); GameRegistry.register(sampleBlock, registryName); GameRegistry.register(sampleItemBlock, registryName); //テクスチャ・モデル指定JSONファイル名の登録。 //今回は基本的な説明に留めるため、BlockStateについては解説しない。 //詳しくは1.8のブロック追加を見るように。 if(event.getSide().isClient()){ ModelLoader.setCustomModelResourceLocation(sampleItemBlock, 0, new ModelResourceLocation(new ResourceLocation(MOD_ID, "sampleblock"), "inventory")); } } }
- SampleBlock.java
package com.example.block; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; public class SampleBlock extends Block{ public SampleBlock() { super(Material.ROCK); setCreativeTab(CreativeTabs.BUIDING_BLOCKS);/*クリエイティブタブの選択*/ setUnlocalizedName("blockSample");/*システム名の設定*/ /*以下のものは消しても結構です*/ setHardness(1.5F);/*硬さ*/ setResistance(1.0F);/*爆破耐性*/ setSoundType(SoundType.STONE);/*ブロックの上を歩いた時の音*/ /*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/ /*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/ /*disableStats();*//*ブロックの統計情報を保存しない*/ setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ setLightLevel(1.0F);/*明るさ 1.0F = 15*/ /*this.setDefaultState(getBlockState().getBaseState());*//*初期BlockStateの設定*/ } }
- sampleblock.json(BlockState用)
{ "forge_marker": 1, "defaults": { "model": "cube_all", "textures": { "all": "blocks/dirt" }, "transform": "forge:default-block" }, "variants": { "normal":[{}], "inventory":[{}] } }