MOD製作チュートリアル > 鉱石の追加

概要

ドロップアイテムがそのブロック自身ではなく、さらに経験値をドロップするブロックを追加し、地下に生成させる。

ソースコード

  • AluminiumMod.java
package tutorial.aluminiummod;
 
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
 
@Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION)
public class AluminiumMod {
 
	public static final String MODID = "AluminiumMod";
	public static final String MODNAME = "Aluminium Mod";
	public static final String VERSION = "1.0.0";
 
	public static Item aluminium;
 
	public static Block oreAluminium;
 
	@EventHandler
	public void perInit(FMLPreInitializationEvent event) {
		aluminium = new Item()
		.setCreativeTab(CreativeTabs.tabMaterials)
		.setUnlocalizedName("aluminium")
		.setTextureName("aluminiummod:aluminium");
		GameRegistry.registerItem(aluminium, "aluminium");
 
		oreAluminium = new AluminiumOre()
		.setBlockName("oreAluminium")
		.setBlockTextureName("aluminiummod:aluminium_ore");
		GameRegistry.registerBlock(oreAluminium, "oreAluminium");
	}
 
	@EventHandler
	public void init(FMLInitializationEvent event) {
		GameRegistry.registerWorldGenerator(new AluminiumOreGenerator(), 0);
	}
 
}
 

  • AluminiumOre.java
package tutorial.aluminiummod;
 
import java.util.Random;
 
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
 
public class AluminiumOre extends Block {
 
	private Random random = new Random();
 
	public AluminiumOre() {
		super(Material.rock);
		this.setCreativeTab(CreativeTabs.tabBlock);
		this.setHardness(3.0F);
		this.setResistance(5.0F);
		this.setStepSound(Block.soundTypeStone);
		this.setHarvestLevel("pickaxe", 2);
	}
 
	@Override
	public Item getItemDropped(int meta, Random random, int fortune) {
		return AluminiumMod.aluminium;
	}
 
	@Override
	public int quantityDroppedWithBonus(int fortune, Random random) {
		if (fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, random, fortune)) {
			int i = random.nextInt(fortune + 2) - 1;
			if (i < 0) {
				i = 0;
			}
			return this.quantityDropped(random) * (i + 1);
		} else {
			return this.quantityDropped(random);
		}
	}
 
	@Override
	public int getExpDrop(IBlockAccess iBlockAccess, int meta, int fortune) {
		return MathHelper.getRandomIntegerInRange(random, 3, 7);
	}
 
}
 

  • AluminiumOreGenerator.java
package tutorial.aluminiummod;
 
import java.util.Random;
 
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.WorldProviderSurface;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import cpw.mods.fml.common.IWorldGenerator;
 
public class AluminiumOreGenerator implements IWorldGenerator {
 
	@Override
	public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
		if (world.provider instanceof WorldProviderSurface) {
			generateOre(world, random, chunkX << 4, chunkZ << 4);
		}
	}
 
	private void generateOre(World world, Random random, int x, int z) {
		for(int i = 0; i < 10; i++) {
			int genX = x + random.nextInt(16);
			int genY = 1 + random.nextInt(15);
			int genZ = z + random.nextInt(16);
			new WorldGenMinable(AluminiumMod.oreAluminium, 0, 20, Blocks.stone).generate(world, random, genX, genY, genZ);
		}
	}
 
}
 

解説

Block

Item getItemDropped(int meta, Random random, int fortune)

そのブロックを破壊したときにドロップするアイテムを返す。

int quantityDroppedWithBonus(int fortune, Random random)

破壊するのに使用したツールの幸運レベルをもとに、ドロップ数を変更する。

int getExpDrop(IBlockAccess iBlockAccess, int meta, int fortune)

経験値のドロップ量を返す。

GameRegistry

void registerWorldGenerator(IWorldGenerator generator, int modGenerationWeight)

GameRegistryにチャンク生成時にブロックを自然生成させるためのクラスを登録するメソッド。
第二引数は生成の優先度(?)。

IWorldGenerator

チャンク生成時にブロックを自然生成させるためのインターフェース。

generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)

world.providerはそのワールド(ディメンション)のプロバイダ。
これを使って判定することで鉱石を生成するディメンションを制御できる。

WorldGenMinable

ブロックを生成させるクラスの一つ。
コンストラクタで指定したパラメータをもとにgenerateで鉱脈を生成する。

コンストラクタ(Block block, int meta, int number, Block target)

引数は、生成するブロック、生成するブロックのメタデータ、生成する鉱脈の大きさ、置き換えるブロック。
第二引数はなくてもよい。

boolean generate(World world, Random random, int x, int y, int z)

鉱脈を生成する処理。
戻り値は生成が成功したかどうか。

使用例

オファレン鉱石を追加している部分。
+ オファレンMOD
  • OfalenModCore.java
package nahama.ofalenmod;
 
/*略*/
 
/**@author Akasata Nahama*/
@Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION)
public class OfalenModCore {
 
	public static final String MODID = "OfalenMod";
	public static final String MODNAME = "Ofalen Mod";
	public static final String VERSION = "[1.7.10]1.0.0";
 
/*略*/
 
	/**最初に行われる処理。アイテム・ブロックの追加などを行う*/
	@EventHandler
	public void preInit(FMLPreInitializationEvent event) {
/*略*/
		//アイテムを設定するメソッドを実行
		OfalenModItemCore.registerItem();
 
		//ブロックを設定するメソッドを実行
		OfalenModBlockCore.registerBlock();
/*略*/
	}
 
	/**2番目に行われる処理。レシピの追加などを行う*/
	@EventHandler
	public void init (FMLInitializationEvent event) {
		//鉱石を生成させる
		GameRegistry.registerWorldGenerator(new OfalenOreGenerator(), 1);
/*略*/
	}
 
/*略*/
 
}
 

+ あまり関係ないので格納
  • OfalenModItemCore.java
package nahama.ofalenmod.core;
 
/*略*/
 
public class OfalenModItemCore {
 
/*略*/
	public static Item fragmentOfalen;
/*略*/
 
	/**アイテムを設定する*/
	public static void registerItem () {
/*略*/
		fragmentOfalen = new Ofalen()
		.setUnlocalizedName("fragmentOfalen")
		.setTextureName("ofalenmod:ofalen_fragment");
		GameRegistry.registerItem(fragmentOfalen,"fragmentOfalen");
/*略*/
	}
 
}
 

  • Ofalen.java
package nahama.ofalenmod.item;
 
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class Ofalen extends Parts {
 
	public Ofalen () {
		super (4);
	}
 
	/**メタデータにより返すIIconを変える。*/
	@Override
	@SideOnly(Side.CLIENT)
	public IIcon getIconFromDamage(int meta) {
		return iicon[meta & 3];
	}
 
	/**メタデータを返す。*/
	@Override
	public int getMetadata(int meta) {
		return meta & 3;
	}
 
}
 

  • Parts.java
package nahama.ofalenmod.item;
 
import java.util.List;
 
import nahama.ofalenmod.OfalenModCore;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class Parts extends Item {
 
	protected IIcon[] iicon;
	private final int type;
 
	public Parts (int type) {
		super ();
		this.type = type;
		this.setCreativeTab(OfalenModCore.tabOfalen);
		this.setHasSubtypes(true);
		this.setMaxDamage(0);
	}
 
	/**メタデータ違いのテクスチャを登録する*/
	@Override
	@SideOnly(Side.CLIENT)
	public void registerIcons(IIconRegister register) {
		this.iicon = new IIcon[type];
		for (int i = 0; i < type; i ++) {
			this.iicon[i] =  register.registerIcon(this.getIconString() + "-" + i);
		}
	}
 
	/**メタデータにより返すIIconを変える*/
	@Override
	@SideOnly(Side.CLIENT)
	public IIcon getIconFromDamage(int meta) {
		return iicon[meta];
	}
 
	/**メタデータ違いのアイテムを登録する*/
	@Override
	@SideOnly(Side.CLIENT)
	public void getSubItems(Item item, CreativeTabs creativeTab, List list) {
		for (int i = 0; i < type; i ++) {
			list.add(new ItemStack(this, 1, i));
		}
	}
 
	/**メタデータを返す*/
	@Override
	public int getMetadata(int meta) {
		return meta;
	}
 
	/**メタデータにより内部名を変える*/
	@Override
	public String getUnlocalizedName(ItemStack itemStack) {
		return this.getUnlocalizedName() + "." + itemStack.getItemDamage();
	}
 
}
 

  • OfalenModBlockCore.java
package nahama.ofalenmod.core;
 
/*略*/
 
public class OfalenModBlockCore {
	//ブロックの定義
	public static Block oreOfalen;
/*略*/
 
	/**ブロックを設定する*/
	public static void registerBlock () {
		oreOfalen = new OfalenOre()
		.setBlockName("oreOfalen")
		.setBlockTextureName("ofalenmod:ofalen_ore-");
		GameRegistry.registerBlock(oreOfalen, ItemOfalenBlock.class, "oreOfalen");
/*略*/
	}
 
}
 

  • OfalenOre.java
package nahama.ofalenmod.block;
 
import java.util.List;
import java.util.Random;
 
import nahama.ofalenmod.OfalenModCore;
import nahama.ofalenmod.core.OfalenModConfigCore;
import nahama.ofalenmod.core.OfalenModItemCore;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class OfalenOre extends Block {
 
	private IIcon[] iicon = new IIcon[4];
	private Random random = new Random();
 
	public OfalenOre() {
		super(Material.rock);
		this.setCreativeTab(OfalenModCore.tabOfalen);
		this.setHardness(5.0F);
		this.setResistance(7.5F);
		this.setStepSound(Block.soundTypePiston);
		this.setLightLevel(0.6F);
		this.setHarvestLevel("pickaxe", 3);
	}
 
	/**ドロップアイテムの設定*/
	@Override
	public Item getItemDropped(int meta, Random random, int fortune) {
		return OfalenModItemCore.fragmentOfalen;
	}
 
	/**ドロップ数の設定*/
	@Override
	public int quantityDropped(Random random) {
		return OfalenModConfigCore.amountDrop;
	}
 
	/**fortuneによるドロップ増加の設定。BlockOre参照*/
	@Override
	public int quantityDroppedWithBonus(int level, Random random) {
		//幸運のレベルが1以上で、ドロップアイテムがこのブロック自身でない場合
		if (level > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, random, level)) {
			int i = random.nextInt(level + 2) - 1;
			if (i < 0) {
				i = 0;
			}
			return this.quantityDropped(random) * (i + 1);
		} else {
			return this.quantityDropped(random);
		}
	}
 
	/**経験値ドロップの設定*/
	@Override
	public int getExpDrop(IBlockAccess iBlockAccess, int meta, int fortune) {
		return MathHelper.getRandomIntegerInRange(random, 3, 7);
	}
 
	/**メタデータ違いのテクスチャを登録する*/
	@Override
	@SideOnly(Side.CLIENT)
	public void registerBlockIcons(IIconRegister iicon) {
		for (int i = 0; i < 4; i ++) {
			this.iicon[i] = iicon.registerIcon(this.getTextureName() + i);
		}
	}
 
	/**メタデータにより返すIIconを変える*/
	@Override
	@SideOnly(Side.CLIENT)
	public IIcon getIcon(int side, int meta) {
		return iicon[meta & 3];
	}
 
	/**メタデータ違いのブロックを登録する*/
	@Override
	@SideOnly(Side.CLIENT)
	public void getSubBlocks(Item item, CreativeTabs creativeTab, List list) {
		for (int i = 0; i < 4; i ++) {
			list.add(new ItemStack(item, 1, i));
		}
	}
 
	/**メタデータによりドロップ品を変える*/
	@Override
	public int damageDropped(int meta) {
		return meta & 3;
	}
 
}
 

  • OfalenOreGenerator.java
package nahama.ofalenmod.generator;
 
import java.util.Random;
 
import nahama.ofalenmod.core.OfalenModBlockCore;
import nahama.ofalenmod.core.OfalenModConfigCore;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.WorldProviderSurface;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import cpw.mods.fml.common.IWorldGenerator;
 
public class OfalenOreGenerator implements IWorldGenerator {
 
	public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
		if (OfalenModConfigCore.enabledGenerator) {
			if (world.provider instanceof WorldProviderSurface) {
				generateOreRed(world, random, chunkX << 4, chunkZ << 4);
				generateOreGreen(world, random, chunkX << 4, chunkZ << 4);
				generateOreBlue(world, random, chunkX << 4, chunkZ << 4);
				generateOreBig(world, random, chunkX << 4, chunkZ << 4);
			}
		}
	}
 
	private void generateOreRed(World world, Random random, int x, int z) {
		for(int i = 0; i < OfalenModConfigCore.probabilityGeneration; i++) {
			int genX = x + random.nextInt(16);
			int genY = 1 + random.nextInt(15);
			int genZ = z + random.nextInt(16);
			new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, OfalenModConfigCore.limitGeneration, Blocks.stone).generate(world, random, genX, genY, genZ);
		}
	}
 
	private void generateOreGreen(World world, Random random, int x, int z) {
		for(int i = 0; i < OfalenModConfigCore.probabilityGeneration; i++) {
			int genX = x + random.nextInt(16);
			int genY = 1 + random.nextInt(15);
			int genZ = z + random.nextInt(16);
			new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, OfalenModConfigCore.limitGeneration, Blocks.stone).generate(world, random, genX, genY, genZ);
		}
	}
 
	private void generateOreBlue(World world, Random random, int x, int z) {
		for(int i = 0; i < OfalenModConfigCore.probabilityGeneration; i++) {
			int genX = x + random.nextInt(16);
			int genY = 1 + random.nextInt(15);
			int genZ = z + random.nextInt(16);
			new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, OfalenModConfigCore.limitGeneration, Blocks.stone).generate(world, random, genX, genY, genZ);
		}
	}
 
	private void generateOreBig(World world, Random random, int x, int z) {
		int i = random.nextInt(10000);
		if (i < OfalenModConfigCore.probabilityGenerationLode) {
			int genX = x + random.nextInt(16);
			int genY = 1 + random.nextInt(15);
			int genZ = z + random.nextInt(16);
 
			int type = random.nextInt(19)/3;
			switch (type) {
			case 0:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 1:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 2:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 3:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 4:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 5:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 2, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 1, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 0, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
				break;
 
			case 6:
				new WorldGenMinable(OfalenModBlockCore.oreOfalen, 3, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
			}
			new WorldGenMinable(OfalenModBlockCore.oreOfalen, 3, 40, Blocks.stone).generate(world, random, genX, genY, genZ);
		}
	}
 
}
 

コメント

この項目に関する質問などをどうぞ。
  • 鉱石から鉱石ブロックをドロップする方法くぉおあいえていただけないでsy - World_of_the_Takumi 2016-03-11 07:40:22
    • AluminiumOreクラスで、getItemDropped・quantityDroppedWithBonus・getExpDropの部分を削除すればできます。 - 赤砂蛇凪浜 2016-03-13 07:44:13
      • 返信ありがとうございました、わかりにくいコメントですいません。今後から気を付けます。あともう一つお願いします" new WorldGenMinable(AluminiumMod.oreAluminium, 0, 20, Blocks.stone).generate(world,”以降はどうなっていますか。wikiにものってなかったのでお願いします。 - World_of_the_Takumi 2016-03-13 19:18:57
        • ソースコードの表示が見切れてしまっていたでしょうか。このようになっています。
          new WorldGenMinable(AluminiumMod.oreAluminium, 0, 20, Blocks.stone).generate(world, random, genX, genY, genZ); - 赤砂蛇凪浜 2016-03-14 06:40:37
          • ありがとうございました。感謝します - World_of_the_Takumi 2016-03-14 17:38:44
  • はじめまして このような素晴らしいwikiをありがとうございます 一つ気になることがあるのですが  AluminiumOreGenerator.javaの22行目 「for(int i = 0; i < 64; i++) {」 26行目 「new WorldGenMinable(decorationMOD.oreDecoration, 0, 64, Blocks.stone).generate(world, random, genX, genY, genZ);」 としているのですが 地下に鉱石が生成された気配が全くありません どこか間違えている・その他に設定が必要 などありましたら教えていただけないでしょうか 長文失礼しました - さくら 2016-04-01 00:10:45
    • こちらの環境でそのように変更すると、チャンクを読み込もうとしたときにクラッシュしました。
      鉱石はクリエイティブタブなどから利用できますか?GameRegistry.registerBlockをpreInitで呼び出しているか、GameRegistry.registerWorldGeneratorをinitで呼び出しているかなどを確認してください。
      WorldGenMinable.generateの次の行に「FMLLog.info("Generated ore. (" + genX + ", " + genY + ", " + genZ + ")");」と入れてログを確認するのも有効かと思います。 - 赤砂蛇凪浜 2016-04-01 06:58:20
      • 返信ありがとうございます。まず報告からなんですが、行けました! 無事に生成されてました。ありがとうございます。で、原因なんですが「GameRegistry.registerWorldGeneratorをinitで呼び出しているかなどを確認してください。」というのが気になったので 上をよく見るとそのような文章があり、「げ」と思ってEclipseを見なおしたところ追加し忘れていました。お騒がせして申し訳ありません。 (int i = 0; i < 16; i++) WorldGenMinable(decorationMOD.oreDecoration, 0, 8, Blocks.stone) として無事生成できました。本当にありがとうございました!長文、大変失礼いたしました - さくら 2016-04-02 05:55:25
        • 解決できたようでよかったです。 - 赤砂蛇凪浜 2016-04-02 06:10:29
  • わかりやすい解説ありがとうございます。アイテムをドロップさせる際にメタデータを指定する為にはどのようにすればよいのでしょうか。よろしくお願いします。 - asajyra 2016-04-02 02:14:53
  • WorldGenMinableのコンストラクタの第三引数をバニラの鉱石を参考にしたいのですが、バニラの鉱石のWorldGenMinableってどこにあるんですかね? - 名無しさん 2017-02-08 21:38:00
    • net.minecraft.world.biome.BiomeDecoratorのコンストラクタにおいて、通常世界の鉱石類のためにWorldGenMinableインスタンスの生成が行われています。
      (以下、補足。今後のModdingをより便利に行うためにご活用ください。)
      このような情報はIDEの機能を使うと簡単に調べることができます。
      今回の場合、コード内の「WorldGenMinable」にカーソルを合わせて「定義へ移動」(EclipseではF3)をすると、Forgeコード内のコンストラクタ記述部に移動でき、WorldGenMinableがコンストラクタを三種類持っていることがわかります。
      それぞれのコンストラクタ記述部にカーソルを合わせて「呼び出し階層を開く」(EclipseではCtrl+Alt+H)をすると、それぞれがどこから呼び出されているかがわかります。
      WorldGenMinable(Block p_i45459_1_, int p_i45459_2_)がBiomeDecoratorから呼び出されていることはこうして調べました。 - 赤砂蛇凪浜 2017-02-10 18:39:31
      • 丁寧な回答ありがとうございます。どうにか丁度よい生成量にできました! - 名無しさん 2017-02-10 22:55:50
  • すみません、鉱石の生成率を鉱脈の大きさを変えるのにはどうすればいいんですか?わかりにくい質問でごめんなさい - 頭の中お花畑 2017-04-13 22:22:48
  • 鉱石の生成率の件は解決しました。鉱脈の大きさを決めるプログラムを教えていただけますでしょうか。何度もすいません - 頭の中お花畑 2017-04-13 23:25:16
    • 「解説」に記載してありますが、WorldGenMinableのコンストラクタの第三引数である"int number"を変更することで大きさを制御できます。
      これは、生成される可能性のある最大のパターンでの鉱石数を指定しています。 - 赤砂蛇凪浜 2017-04-14 18:34:08
  • ありがとうございます!早速試してみます! - 頭の中お花畑 2017-04-16 19:26:45
最終更新:2015年07月23日 13:58