提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
44行目: | 44行目: | ||
return "1.2.5-1"; | return "1.2.5-1"; | ||
} | } | ||
+ | |||
+ | public static Block NewBookshelf; | ||
public void load() | public void load() | ||
{ | { | ||
Block.blocksList[47] = null; | Block.blocksList[47] = null; | ||
− | + | NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F) | |
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | .setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | ||
} | } | ||
68行目: | 70行目: | ||
*今回は変更点がドロップアイテムだけなので、BlockBookshelf(既存の本棚)クラスを継承して新しい本棚を作る。 | *今回は変更点がドロップアイテムだけなので、BlockBookshelf(既存の本棚)クラスを継承して新しい本棚を作る。 | ||
**既存のブロックの動作を変更する場合、既存のクラスを継承して変更点だけ記述する方が楽。 | **既存のブロックの動作を変更する場合、既存のクラスを継承して変更点だけ記述する方が楽。 | ||
− | * | + | *BlockBookshelf内のsuparとは引数が異なる点に注意。 |
− | * | + | *BloclBookshelfのsuparはBlockを呼び出すのに対し、BlockNewBookshelfのsuparはBlockBookshelfを呼び出す。 |
− | * | + | *そのため、suparの引数はBlockBookshelfのコンストラクタに合わせる必要がある。 |
− | |||
==ドロップするブロックを設定する== | ==ドロップするブロックを設定する== | ||
103行目: | 104行目: | ||
==新しい本棚を登録する== | ==新しい本棚を登録する== | ||
<source lang="java"> | <source lang="java"> | ||
− | + | NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F) | |
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | .setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | ||
</source> | </source> | ||
109行目: | 110行目: | ||
*ブロックリストへの登録は自動的に行われる。 | *ブロックリストへの登録は自動的に行われる。 | ||
*ブロックの各種設定は、Block.javaから既存の本棚の設定をそのままコピーする。 | *ブロックの各種設定は、Block.javaから既存の本棚の設定をそのままコピーする。 | ||
− | **.setStepSound | + | **.setStepSound のみ注意。この関数の設定値はBlock.javaで定義されているので、(Block.soundWoodFootstep)と、明示的にBlockのスコープを与えてやる必要がある。 |
− | |||
=応用= | =応用= | ||
==ブロックの硬さや爆破耐性などを変更する== | ==ブロックの硬さや爆破耐性などを変更する== | ||
− | + | ブロックを登録する部分で設定を変更できる。 | |
<source lang="java"> | <source lang="java"> | ||
− | + | NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F) | |
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | .setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf"); | ||
</source> | </source> | ||
− | + | 設定できる項目は以下の通り。 | |
{|class="wikitable" style="border-width:1px 1px 1px 1px; border-color:black; border-style:solid; " | {|class="wikitable" style="border-width:1px 1px 1px 1px; border-color:black; border-style:solid; " | ||
|+ style="background:#ddd;text-align:left;padding:0 0 0 2px;"|登録時に設定可能な値の一例 | |+ style="background:#ddd;text-align:left;padding:0 0 0 2px;"|登録時に設定可能な値の一例 | ||
131行目: | 131行目: | ||
|setLightOpacity(int par1)||光度減衰量。葉ブロックが1、水が3 | |setLightOpacity(int par1)||光度減衰量。葉ブロックが1、水が3 | ||
|- | |- | ||
− | |setStepSound(StepSound par1StepSound)|| | + | |setStepSound(StepSound par1StepSound)||上を歩いた時、破壊した時の音 |
|- | |- | ||
|setBlockUnbreakable()||ブロックを破壊不可能にする | |setBlockUnbreakable()||ブロックを破壊不可能にする | ||
|} | |} | ||
+ | |||
+ | |||
==シルクタッチで回収可能にする== | ==シルクタッチで回収可能にする== | ||
− | 本棚は元々シルクタッチでの回収が可能だが、回収不可能なブロックを明示的にシルクタッチ回収可能にするには、MinecraftForge で Blockクラスに追加される | + | 本棚は元々シルクタッチでの回収が可能だが、回収不可能なブロックを明示的にシルクタッチ回収可能にするには、MinecraftForge で Blockクラスに追加される canSilkHarvest関数を使用する。 |
<source lang="java"> | <source lang="java"> | ||
public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) | public boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) | ||
145行目: | 147行目: | ||
</source> | </source> | ||
*これで true を返せばシルクタッチで回収可能になる。 | *これで true を返せばシルクタッチで回収可能になる。 | ||
− | * | + | *MinecraftForgeを使わない場合、func_50074_q関数で true を返せばよい。 |
− | |||
<source lang="java"> | <source lang="java"> | ||
protected boolean func_50074_q() | protected boolean func_50074_q() | ||
153行目: | 154行目: | ||
} | } | ||
</source> | </source> | ||
− | + | *関数が見つからない場合、BlockGlass.java の一番下の関数を参照。 | |
− | |||
==フォーチュンでドロップ数を増やす== | ==フォーチュンでドロップ数を増やす== | ||
− | + | 幸運のエンチャント付きツールでブロックを破壊した場合のドロップ数は、quantityDroppedWithBonus関数で設定する。<br> | |
以下に例としてスイカのソースを掲載する。 | 以下に例としてスイカのソースを掲載する。 | ||
<source lang="java"> | <source lang="java"> | ||
176行目: | 176行目: | ||
*par2Random.nextInt(1 + par1) で追加するドロップ数を指定(幸運IIIなら0~3) | *par2Random.nextInt(1 + par1) で追加するドロップ数を指定(幸運IIIなら0~3) | ||
*9以上は9になるので、最終的なドロップ数は、幸運IIIで3~9になる。 | *9以上は9になるので、最終的なドロップ数は、幸運IIIで3~9になる。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!-- | <!-- |