提供: Minecraft Modding Wiki
2014年11月23日 (日) 08:09時点におけるM0dfixG (トーク | 投稿記録)による版
移動先: 案内検索

この記事は"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, par4);
		if(Chest != null){//Null以外なら
			//引数はスロット番号(-1),ItemStackです。
			Chest.setInventorySlotContents(0, new ItemStack(Item.redstone));
		}else{
			//nullだったらコンソールに文字列を表示して知らせます。
			System.out.println("== TileEntityChest=null ==");
		}
		return flag;
	}

}