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

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
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;
Block NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F)
+
NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F)
 
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf");
 
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf");
 
}
 
}
68行目: 70行目:
 
*今回は変更点がドロップアイテムだけなので、BlockBookshelf(既存の本棚)クラスを継承して新しい本棚を作る。
 
*今回は変更点がドロップアイテムだけなので、BlockBookshelf(既存の本棚)クラスを継承して新しい本棚を作る。
 
**既存のブロックの動作を変更する場合、既存のクラスを継承して変更点だけ記述する方が楽。
 
**既存のブロックの動作を変更する場合、既存のクラスを継承して変更点だけ記述する方が楽。
*BlockBookshelf内のsuperとは引数が異なる点に注意。
+
*BlockBookshelf内のsuparとは引数が異なる点に注意。
*BloclBookshelfのsuperはBlockを呼び出すのに対し、BlockNewBookshelfのsuperはBlockBookshelfを呼び出す。
+
*BloclBookshelfのsuparはBlockを呼び出すのに対し、BlockNewBookshelfのsuparはBlockBookshelfを呼び出す。
*そのため、superの引数はBlockBookshelfのコンストラクタに合わせる必要がある。
+
*そのため、suparの引数はBlockBookshelfのコンストラクタに合わせる必要がある。
**既存クラスの引継ぎで忘れやすい部分なので注意。
 
  
 
==ドロップするブロックを設定する==
 
==ドロップするブロックを設定する==
103行目: 104行目:
 
==新しい本棚を登録する==
 
==新しい本棚を登録する==
 
<source lang="java">
 
<source lang="java">
Block NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F)
+
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 のみ注意。このメソッドの設定値はBlock.javaで定義されているので、(Block.soundWoodFootstep)と、明示的にBlockのスコープを与えてやる必要がある。
+
**.setStepSound のみ注意。この関数の設定値はBlock.javaで定義されているので、(Block.soundWoodFootstep)と、明示的にBlockのスコープを与えてやる必要がある。
 
 
  
 
=応用=
 
=応用=
 
==ブロックの硬さや爆破耐性などを変更する==
 
==ブロックの硬さや爆破耐性などを変更する==
ブロックを登録する際に、硬さや明るさを変更できる。
+
ブロックを登録する部分で設定を変更できる。
 
<source lang="java">
 
<source lang="java">
Block NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F)
+
NewBookshelf = (new BlockNewBookshelf(47, 35)).setHardness(1.5F)
 
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf");
 
.setStepSound(Block.soundWoodFootstep).setBlockName("bookshelf");
 
</source>
 
</source>
設定できる項目は以下の通り。他にもset~で変更できる値はほぼ変更できる。
+
設定できる項目は以下の通り。
 
{|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)||上を歩いた時や破壊した時の音 設定値はBlock.java参照
+
|setStepSound(StepSound par1StepSound)||上を歩いた時、破壊した時の音
 
|-
 
|-
 
|setBlockUnbreakable()||ブロックを破壊不可能にする
 
|setBlockUnbreakable()||ブロックを破壊不可能にする
 
|}
 
|}
 +
 +
  
 
==シルクタッチで回収可能にする==
 
==シルクタッチで回収可能にする==
本棚は元々シルクタッチでの回収が可能だが、回収不可能なブロックを明示的にシルクタッチ回収可能にするには、MinecraftForge で Blockクラスに追加される canSilkHarvestメソッドを使用する。
+
本棚は元々シルクタッチでの回収が可能だが、回収不可能なブロックを明示的にシルクタッチ回収可能にするには、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 を返せばよい。
+
*MinecraftForgeを使わない場合、func_50074_q関数で true を返せばよい。
**なおこのメソッドはMinecraftForgeではcanSilkHarvest()に改名されているが、参照されないので注意が必要である。
 
 
<source lang="java">
 
<source lang="java">
 
protected boolean func_50074_q()
 
protected boolean func_50074_q()
153行目: 154行目:
 
}
 
}
 
</source>
 
</source>
;※ForgeとModLoader両対応MODを作る場合
+
*関数が見つからない場合、BlockGlass.java の一番下の関数を参照。
:Forgeで開発し、canSilkHarvest() と canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata) の両方を記述する必要があります。
 
  
 
==フォーチュンでドロップ数を増やす==
 
==フォーチュンでドロップ数を増やす==
幸運のエンチャント付きツールでブロックを破壊した場合のドロップ数は、quantityDroppedWithBonusメソッドで設定する。<br>
+
幸運のエンチャント付きツールでブロックを破壊した場合のドロップ数は、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になる。
 
==メソッドの追加などが無い場合==
 
例えば光レベルの変更や、硬さ、爆破耐性の変更など、メソッドを書き換えたり、追加したりする必要の無い要素のみの変更であれば、代替クラスファイルも不要で簡単に実現できる。<br>
 
この書き方で変更可能なのは、set~のメソッドで変更可能な値のみなので、ドロップアイテムの変更などは不可能。<br>
 
 
例のソースは、黒曜石の硬さ(50.0F)を、丸石と同じ(2.0F)に変更するだけのMOD。
 
;mod_ChangeHardness.java
 
<source lang="java">
 
package net.minecraft.src;
 
 
public class mod_ChangeHardness extends BaseMod
 
{
 
public void load()
 
{
 
Block.obsidian.setHardness(2.0F);
 
}
 
 
public String getVersion()
 
{
 
return "";
 
}
 
 
}
 
</source>
 
  
 
<!--
 
<!--

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: