提供: Minecraft Modding Wiki
(ページ作成) |
|||
1行目: | 1行目: | ||
+ | {{前提MOD|reqmod="ModLoader"}} | ||
+ | ここは、[[木・苗木を追加する]]を理解した中級者向けのチュートリアルです。<br /> | ||
==概要== | ==概要== | ||
− | + | アイテムの入ったチェストを生成します。<br> | |
+ | WorldGenerateについては[[木・苗木を追加する]]を参考にしてください。<br> | ||
+ | ここでは、generateSurfaceメソッドとWorldGeneratorを継承したクラスの中について解説します。<br> | ||
+ | <br> | ||
+ | ここでは、以下のクラスを使います。 | ||
+ | ;TileEntityChest | ||
+ | Chestの中身が保存されているクラス | ||
+ | ;WorldGenerator | ||
+ | Worldに建造物などを生成するためのクラス | ||
+ | ;World | ||
+ | 説明しにくいので割合<br> | ||
+ | ==Worldにチェストを生成する。== | ||
+ | ;mod_Sample | ||
+ | <source lang="java"> | ||
+ | package net.minecraft.src; | ||
+ | |||
+ | import java.util.Random; | ||
+ | |||
+ | public class mod_Sample extends BaseMod { | ||
+ | |||
+ | @Override | ||
+ | public String getVersion() { | ||
+ | return "Sample"; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public void load() { | ||
+ | |||
+ | } | ||
− | + | /* | |
− | + | * (非 Javadoc) | |
+ | * @see net.minecraft.src.BaseMod#generateSurface(net.minecraft.src.World, java.util.Random, int, int) | ||
+ | * ここの変数名や引数名は自分にあった使い方に変更してもいいです。 | ||
+ | */ | ||
− | === | + | @Override |
− | + | public void generateSurface(World par1World,Random rand,int par2,int par3){ | |
+ | WorldGenSample var1 = new WorldGenSample(true); | ||
+ | var1.setScale(1, 1, 1); | ||
+ | int xPos = par2 + rand.nextInt(16); | ||
+ | int zPos = par3 + rand.nextInt(16); | ||
+ | int yPos = par1World.getHeightValue(xPos, zPos); | ||
+ | |||
+ | var1.generate(par1World, rand, xPos, yPos, zPos); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </source> | ||
+ | ;WorldGenSample | ||
<source lang="java"> | <source lang="java"> | ||
− | + | package net.minecraft.src; | |
− | + | ||
− | + | import java.util.Random; | |
− | + | ||
− | + | public class WorldGenSample extends WorldGenerator { | |
− | + | ||
+ | private boolean flag = false; | ||
+ | /* | ||
+ | * this.flagは変数名を意味します。 | ||
+ | * this.flag = private boolean flag = false;の部分 | ||
+ | * flag = 引数のboolean flag | ||
+ | */ | ||
+ | public WorldGenSample(boolean flag){ | ||
+ | this.flag = flag; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public boolean generate(World par1World, Random rand, int par2, int par3, | ||
+ | int par4) { | ||
+ | //ここでTileEntityChestをキャストします。 | ||
+ | TileEntityChest Chest; | ||
+ | //Chestを配置します。 | ||
+ | par1World.setBlock(par2, par3, par4, Block.chest.blockID); | ||
+ | //TileEntityChest型変数にTileEntityをWorldクラスから取得し、代入します。 | ||
+ | Chest = (TileEntityChest) par1World.getBlockTileEntity(par2, par3+1, par4); | ||
+ | if(Chest != null){//Null以外なら | ||
+ | //引数はスロット番号(-1),ItemStackです。 | ||
+ | Chest.setInventorySlotContents(0, new ItemStack(Item.redstone)); | ||
+ | }else{ | ||
+ | //nullだったらコンソールに文字列を表示して知らせます。 | ||
+ | System.out.println("== TileEntityChest=null =="); | ||
+ | } | ||
+ | return flag; | ||
+ | } | ||
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | + | このクラスをコピペしてもTileEntityChestはNullになります。 | |
− | [[Category: | + | どこかを書き換えれば直ります。 |
+ | どこか探してみてください。 | ||
+ | [[Category:Worldに生成する]] |
2012年7月18日 (水) 10:33時点における版
この記事は"ModLoader"を前提MODとしています。 |
ここは、木・苗木を追加するを理解した中級者向けのチュートリアルです。
概要
アイテムの入ったチェストを生成します。
WorldGenerateについては木・苗木を追加するを参考にしてください。
ここでは、generateSurfaceメソッドとWorldGeneratorを継承したクラスの中について解説します。
ここでは、以下のクラスを使います。
- TileEntityChest
Chestの中身が保存されているクラス
- WorldGenerator
Worldに建造物などを生成するためのクラス
- World
説明しにくいので割合
Worldにチェストを生成する。
- mod_Sample
package net.minecraft.src; import java.util.Random; public class mod_Sample extends BaseMod { @Override public String getVersion() { return "Sample"; } @Override public void load() { } /* * (非 Javadoc) * @see net.minecraft.src.BaseMod#generateSurface(net.minecraft.src.World, java.util.Random, int, int) * ここの変数名や引数名は自分にあった使い方に変更してもいいです。 */ @Override public void generateSurface(World par1World,Random rand,int par2,int par3){ WorldGenSample var1 = new WorldGenSample(true); var1.setScale(1, 1, 1); int xPos = par2 + rand.nextInt(16); int zPos = par3 + rand.nextInt(16); int yPos = par1World.getHeightValue(xPos, zPos); var1.generate(par1World, rand, xPos, yPos, zPos); } }
- WorldGenSample
package net.minecraft.src; import java.util.Random; public class WorldGenSample extends WorldGenerator { private boolean flag = false; /* * this.flagは変数名を意味します。 * this.flag = private boolean flag = false;の部分 * flag = 引数のboolean flag */ public WorldGenSample(boolean flag){ this.flag = flag; } @Override public boolean generate(World par1World, Random rand, int par2, int par3, int par4) { //ここでTileEntityChestをキャストします。 TileEntityChest Chest; //Chestを配置します。 par1World.setBlock(par2, par3, par4, Block.chest.blockID); //TileEntityChest型変数にTileEntityをWorldクラスから取得し、代入します。 Chest = (TileEntityChest) par1World.getBlockTileEntity(par2, par3+1, par4); if(Chest != null){//Null以外なら //引数はスロット番号(-1),ItemStackです。 Chest.setInventorySlotContents(0, new ItemStack(Item.redstone)); }else{ //nullだったらコンソールに文字列を表示して知らせます。 System.out.println("== TileEntityChest=null =="); } return flag; } }
このクラスをコピペしてもTileEntityChestはNullになります。 どこかを書き換えれば直ります。 どこか探してみてください。