最新版 |
編集中の文章 |
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;
| + | ;TileEntityChest:チェストを開くと出てくるアイテム欄です。 |
| + | ;ItemStack:アイテム欄の1項目単位です。 |
| | | |
− | public class mod_Sample extends BaseMod {
| + | ===TileEntityChestにItemStackをセット=== |
| + | 次のコードでアイテム欄にレッドストーンダストと金ブロックをセットします。 |
| + | <source lang="java"> |
| + | TileEntityChest tEntity = new TileEntityChest(); |
| + | ItemStack redstoneStack = new ItemStack( Item.redstone, 15); // 第2引数でアイテムの数を指定します。 |
| + | ItemStack goldStack = new ItemStack( Block.blockGold, 20); |
| + | tEntity.setInventorySlotContents(0, redstoneStack); // 第1引数はアイテム欄のスロット番号です。左上が0で、右方向に連番が振られています。 |
| + | tEntity.setInventorySlotContents(1, goldStack); |
| + | </source> |
| | | |
− | @Override
| + | ===チェストをワールドに配置=== |
− | public String getVersion() {
| + | まず何も入っていないチェストを置いてから、TileEntityChestを貼り付けてアイテムを格納します。 |
− | return "Sample";
| + | <source lang="java"> |
− | }
| + | world.setBlock(Xc, Yc, Zc, 54); |
| + | world.setBlockTileEntity(Xc, Yc, Zc, tEntity); |
| + | </source> |
| + | 変数world,Xc,Yc,Zcは各自で適切なものを用意してください。(world:チェストを置くワールド, (Xc,Yc,Zc):チェストを置く座標) |
| | | |
− | @Override
| + | ==コード全体== |
− | public void load() {
| + | <source lang="java"> |
− | | + | TileEntityChest tEntity = new TileEntityChest(); |
− | }
| + | ItemStack redstoneStack = new ItemStack( Item.redstone, 15); |
− | | + | ItemStack goldStack = new ItemStack( Block.blockGold, 20); |
− | /*
| + | tEntity.setInventorySlotContents(0, redstoneStack); |
− | * (非 Javadoc)
| + | tEntity.setInventorySlotContents(1, goldStack); |
− | * @see net.minecraft.src.BaseMod#generateSurface(net.minecraft.src.World, java.util.Random, int, int)
| + | world.setBlock(Xc, Yc, Zc, 54); |
− | * ここの変数名や引数名は自分にあった使い方に変更してもいいです。
| + | world.setBlockTileEntity(Xc, Yc, Zc, tEntity); |
− | */
| |
− | | |
− | @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> | | </source> |
− | ;WorldGenSample
| |
− | <source lang="java">
| |
− | package net.minecraft.src;
| |
| | | |
− | import java.util.Random;
| + | [[Category:アイテムの配置]] |
− | | |
− | 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, par4);
| |
− | if(Chest != null){//Null以外なら
| |
− | //引数はスロット番号(-1),ItemStackです。
| |
− | Chest.setInventorySlotContents(0, new ItemStack(Item.redstone));
| |
− | }else{
| |
− | //nullだったらコンソールに文字列を表示して知らせます。
| |
− | System.out.println("== TileEntityChest=null ==");
| |
− | }
| |
− | return flag;
| |
− | }
| |
− | | |
− | }
| |
− | | |
− | </source>
| |