約 1,102,734 件
https://w.atwiki.jp/akasatanahama/pages/68.html
概要 新しい食料アイテムを追加する。 食べたときにポーションエフェクトを確率で付与することもできる。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemFood; import net.minecraft.potion.Potion; @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 foodAluminium; @EventHandler public void perInit(FMLPreInitializationEvent event) { foodAluminium = new ItemFood(5, 2.0F, false) .setPotionEffect(Potion.regeneration.id, 60, 0, 0.8F) .setCreativeTab(CreativeTabs.tabFood) .setUnlocalizedName("foodAluminium") .setTextureName("aluminiummod foodAluminium"); GameRegistry.registerItem(foodAluminium, "foodAluminium"); } } 解説 ItemFood コンストラクタ(int healAmount, float saturationModifier, boolean isWolfsFavoriteMeat) 引数は順に、満腹度回復量・隠し満腹度回復量(腹持ち)・オオカミが食べられるか ItemFood setPotionEffect(int potionId, int potionDuration, int potionAmplifier, float potionEffectProbability) 食べたときに確率でポーションエフェクトを付与する。 引数は順に、ポーションID・効果時間・効果レベル・付与される確率。 効果時間は単位が秒なので注意。 効果レベルは表示値より1少ない。(0がレベル1) 使用例 オファレンMODの回復玉を追加している部分。 回復玉は、ItemFoodを継承しているが、オーバーライドして変えている部分も多い。 +オファレン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(); /*略*/ } /*略*/ } OfalenModItemCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModItemCore { /*略*/ public static Item ballRecovery; /*略*/ /**アイテムを設定する*/ public static void registerItem () { /*略*/ ballRecovery = new OfalenBall(new PotionEffect[]{new PotionEffect(Potion.heal.id, 1, 0)}) .setUnlocalizedName("ballRecovery") .setTextureName("ofalenmod recovery_ball"); GameRegistry.registerItem(ballRecovery, "ballRecovery"); /*略*/ } } OfalenBall.java package nahama.ofalenmod.item; import nahama.ofalenmod.OfalenModCore; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class OfalenBall extends ItemFood { /**付与するポーション効果の配列*/ private final PotionEffect[] effects; /**新規コンストラクター。ポーション効果の配列を受け取る。*/ public OfalenBall(PotionEffect[] effects) { super(0, 0.0F, false); this.effects = effects; this.setCreativeTab(OfalenModCore.tabOfalen); } /**食べるのにかかる時間を返す。(通常よりも少し早い) * @return 20*/ @Override public int getMaxItemUseDuration(ItemStack itemStack) { return 20; } /**右クリックされた時の処理。ItemFoodの満腹度の判定を消している。*/ @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); return itemStack; } /**食べる時の処理。クリエイティブモードではアイテム数が減らないようにしている。また、ポーション効果も付与する。*/ /* EntityLivingBase.addPotionEffect(PotionEffect)では、効果時間を上書きしているらしい(?)ので、 * 新たにPotionEffectのオブジェクトを生成して引数として渡している。*/ @Override public ItemStack onEaten(ItemStack itemStack, World world, EntityPlayer player) { //クリエイティブモード以外ならスタックサイズを減らす。 if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } //つけるポーション効果の数だけ繰り返す。 for (int i = 0; i effects.length; i ++) { //サーバー側の処理で、情報が正常なら処理を続ける。 if (!world.isRemote effects[i] != null effects[i].getPotionID() 0) { //即時回復なら、 if (effects[i].getPotionID() == Potion.heal.id) { //ID・効果時間を固定して、 PotionEffect effect = new PotionEffect(Potion.heal.id, 1, effects[i].getAmplifier()); //プレイヤーに付与。 player.addPotionEffect(effect); //即時回復以外なら、 } else { //効果時間のみ固定して、 PotionEffect effect = new PotionEffect(effects[i].getPotionID(), effects[i].getDuration(), effects[i].getAmplifier()); //プレイヤーに付与。 player.addPotionEffect(effect); } } } world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F); return itemStack; } } コメント この項目に関する質問などをどうぞ。 ItemFood setPotionEffect の引数が (int, int, int, float) ではなく (string) になっているのですが、なぜですか? - あるふぁ 2017-05-20 14 48 36 自己解決しました。 - あるふぁ 2017-05-20 14 51 35 金リンゴのように、満腹度MAXの時でも食べられるものはどう作るのですか? - あるふぁ 2017-05-20 14 54 50 こちらも解決しました。setAlwaysEdible()を使いました。 - あるふぁ 2017-05-20 18 57 23 名前
https://w.atwiki.jp/3dce/pages/27.html
※仮ページとしてとりあえず羅列 ツール関係 BUC00001.zip3D少女カスタムエボリューション向け tdg(tah) tso2mqo 3D少女のファイルを編集可能な状態にします BUC00002.zipカス子modをエボ子に移植 evoconv カスタム少女のMODを3D少女で使えるように変換します 完全に再現されるワケではなく、細かい部分では調整が必要 BUC00005.zip3D少女カスタムエボリューション向け names.txt BUC00017.zip.TBN内容表示 スクリプトを閲覧&txt化して保存 あくまで閲覧専用 BUC00020.zip体型スライダ定義を編集 体型スライダー各種をユーザー側で自由に改造できる 限界突破はもちろん、既存スライダーを全く別の部位に適用する事も可能
https://w.atwiki.jp/akasatanahama/pages/67.html
概要 新しいヘルメット・チェストプレート・レギンス・ブーツを追加する。 ソースコード AluminiumMod.java package tutorial.aluminiummod; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraftforge.common.util.EnumHelper; @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 Item helmetAluminium; public static Item chestPlateAluminium; public static Item leggingsAluminium; public static Item bootsAluminium; public static ArmorMaterial ALUMINIUMARMOR; @EventHandler public void perInit(FMLPreInitializationEvent event) { aluminium = new Item() .setCreativeTab(CreativeTabs.tabMaterials) .setUnlocalizedName("aluminium") .setTextureName("aluminiummod aluminium"); GameRegistry.registerItem(aluminium, "aluminium"); ALUMINIUMARMOR = EnumHelper.addArmorMaterial("ALUMINIUMARMOR", 33, new int[] { 3, 8, 6, 3 }, 10); ALUMINIUMARMOR.customCraftingMaterial = aluminium; helmetAluminium = new ItemAluminiumArmor(0) .setUnlocalizedName("helmetAluminium") .setTextureName("aluminiummod helmetAluminium"); GameRegistry.registerItem(helmetAluminium, "helmetAluminium"); chestPlateAluminium = new ItemAluminiumArmor(1) .setUnlocalizedName("chestPlateAluminium") .setTextureName("aluminiummod chestPlateAluminium"); GameRegistry.registerItem(chestPlateAluminium, "chestPlateAluminium"); leggingsAluminium = new ItemAluminiumArmor(2) .setUnlocalizedName("leggingsAluminium") .setTextureName("aluminiummod leggingsAluminium"); GameRegistry.registerItem(leggingsAluminium, "leggingsAluminium"); bootsAluminium = new ItemAluminiumArmor(3) .setUnlocalizedName("bootsAluminium") .setTextureName("aluminiummod bootsAluminium"); GameRegistry.registerItem(bootsAluminium, "bootsAluminium"); } } ItemAluminiumArmor.java package tutorial.aluminiummod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class ItemAluminiumArmor extends ItemArmor { public ItemAluminiumArmor(int type) { super(AluminiumMod.ALUMINIUMARMOR, 0, type); this.setCreativeTab(CreativeTabs.tabCombat); } @Override public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) { if (this.armorType == 2) { return "aluminiummod textures/models/armor/aluminium_layer_2.png"; } return "aluminiummod textures/models/armor/aluminium_layer_1.png"; } } 解説 ArmorMaterial 防具の性質を保持するためのenum。 Item customCraftingMaterial 金床で修繕するときに使う素材。 EnumHelper ArmorMaterial addArmorMaterial(String name, int durability, int[] reductionAmounts, int enchantability) 新しくアーマーマテリアルを追加するためのメソッド。 引数は順に、アーマーマテリアルの名前・耐久値・部位ごとの防御力・エンチャントの付きやすさ 今回はダイヤモンドと同じ数値を使用。 耐久値は、第二引数で指定された値に、部位ごとにそれぞれ11, 16, 15, 13が乗算される。 防御力は、第三引数に防御力アイコン一個=2として入れる。 例えば、ヘルメット2、チェストプレート4、レギンス2、ブーツ1の防御力にする場合は、 第三引数にnew int[]{4, 8, 4, 2}と渡す。 ItemArmor コンストラクタ(ArmorMaterial material, int renderIndex, int armorType) armorTypeはどの部位かを表す数値。 renderIndexはgetArmorTextureをオーバーライドしているので関係ない。 String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) アーマーのモデルのテクスチャファイルの場所を返す。 モデルのテクスチャは、"C /forge/src/main/resources/assets/aluminiummod/textures/models/armor/"に、"aluminium_layer_1.png"、"aluminium_layer_2.png"として保存する。 バニラのものを参考にするとよい。 使用例 オファレンの防具を追加している部分。 +オファレン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(); /*略*/ } /*略*/ } OfalenModItemCore.java package nahama.ofalenmod.core; /*略*/ public class OfalenModItemCore { /*略*/ //アーマーの定義 public static Item helmetOfalen; public static Item chestplateOfalen; public static Item leggingsOfalen; public static Item bootsOfalen; /*略*/ /**アイテムを設定する*/ public static void registerItem () { /*略*/ //アーマーの設定 helmetOfalen = new OfalenArmor(OfalenModMaterialCore.OFALENA, 0, 1) .setUnlocalizedName("helmetOfalen") .setTextureName("ofalenmod ofalen_helmet"); GameRegistry.registerItem(helmetOfalen, "helmetOfalen"); chestplateOfalen = new OfalenArmor(OfalenModMaterialCore.OFALENA, 1, 1) .setUnlocalizedName("chestplateOfalen") .setTextureName("ofalenmod ofalen_chestplate"); GameRegistry.registerItem(chestplateOfalen, "chestplateOfalen"); leggingsOfalen = new OfalenArmor(OfalenModMaterialCore.OFALENA, 2, 1) .setUnlocalizedName("leggingsOfalen") .setTextureName("ofalenmod ofalen_leggings"); GameRegistry.registerItem(leggingsOfalen, "leggingsOfalen"); bootsOfalen = new OfalenArmor(OfalenModMaterialCore.OFALENA, 3, 1) .setUnlocalizedName("bootsOfalen") .setTextureName("ofalenmod ofalen_boots"); GameRegistry.registerItem(bootsOfalen, "bootsOfalen"); /*略*/ } } OfalenModMaterialCore.java package nahama.ofalenmod.core; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraftforge.common.util.EnumHelper; public class OfalenModMaterialCore { //ツールマテリアルの定義 public static ToolMaterial OFALENT = EnumHelper.addToolMaterial("OFALENT", 4, 1561, 8.0F, 3.0F, 10); public static ToolMaterial OFALENG2T = EnumHelper.addToolMaterial("OFALENG2T", 4, 3123, 16.0F, 6.0F, 20); public static ToolMaterial OFALENG3T = EnumHelper.addToolMaterial("OFALENG3T", 4, 6247, 32.0F, 12.0F, 40); public static ToolMaterial PERFECTT = EnumHelper.addToolMaterial("PERFECTT", 5, 12495, OfalenModConfigCore.efficiencyPerfectTool, 24.0F, 80); //アーマーマテリアルの定義 public static ArmorMaterial OFALENA = EnumHelper.addArmorMaterial("OFALENA", 33, new int[]{3, 8, 6, 3}, 10); public static ArmorMaterial OFALENG2A = EnumHelper.addArmorMaterial("OFALENG2A", 66, new int[] {3, 8, 6, 3}, 20); public static ArmorMaterial OFALENG3A = EnumHelper.addArmorMaterial("OFALENG3A", 132, new int[] {3, 8, 6, 3}, 40); public static ArmorMaterial PERFECTA = EnumHelper.addArmorMaterial("PERFECTA", 264, new int[] {3, 8, 6, 3}, 80); } OfalenArmor.java package nahama.ofalenmod.item.armor; import nahama.ofalenmod.OfalenModCore; import nahama.ofalenmod.core.OfalenModItemCore; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class OfalenArmor extends ItemArmor { private int grade = 0; public OfalenArmor(ArmorMaterial material, int type, int grade) { super(material, 0, type); this.setCreativeTab(OfalenModCore.tabOfalen); this.grade = grade; } /**テクスチャを指定する*/ @Override public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) { int i = 1; if (this.armorType == 2) i = 2; if (this.grade == 4) return "ofalenmod textures/models/armor/ofalen_P_layer_" + i + ".png"; return "ofalenmod textures/models/armor/ofalen_G" + grade + "_layer_" + i + ".png"; } /*略*/ } コメント この項目に関する質問などをどうぞ。 防御力の設定は、どうやるのですか。 - 新人もっだー 2015-12-23 11 41 45 訂正しました。addArmorMaterialの第三引数で、ヘルメット、チェストプレート、レギンス、ブーツの順で登録してください。 - Tom Kate 2015-12-23 14 09 17 一応コメントにて。耐久値を1600に設定していざ動かしてみたら、耐久値が17600になったので、計算してみたところ耐久値は設定されている値に16かけた数値みたいですね。 - 初心者modder 2016-01-20 14 54 07 ご指摘ありがとうございます。コードより確認し、addArmorMaterialの説明部分に追記しておきました。 - 赤砂蛇凪浜 2016-10-10 12 27 46 「ItemStack customCraftingMaterial」にブロックは指定できないのですか? - モアイさん 2016-10-04 19 14 00 返信遅くなり申し訳ありません。記述に間違いがありました。customCraftingMaterialはItem型です。修正しておきます。ブロックを指定する場合、Item.getItemFromBlockメソッドを使用してItem型として代入してください。 - 赤砂蛇凪浜 2016-10-10 12 22 34 「装備していると何かが起こる防具」を作る方法を教えてください。 - あるふぁ 2017-05-25 17 33 50 「何か」とは、具体的にどのようなことでしょうか。Item.onArmorTick(World, EntityPlayer, ItemStack)は、プレイヤーが装備している時に毎tick呼ばれます。ある程度のことはこのメソッドを利用することで実装できると思います。 - 赤砂蛇凪浜 2017-05-26 13 31 31 装備しているmob(プレイヤー)にポーション効果をつけたかったのですが、汎用性を高めるために、わかりにくくしてしまいました。すみません。ともかく、ありがとうございました。 - あるふぁ 2017-05-26 20 34 50 このソースコードをコピペしても金床で修理することが出来ません - 名無しさん 2017-06-11 15 31 00 ご指摘ありがとうございます。ArmorMaterial.customCraftingMaterialへの代入がaluminiumへの代入より先だったため、素材指定ができていませんでした。修正しておきました。ご確認ください。 - 赤砂蛇凪浜 2017-06-16 18 29 15 初心者ですが二日かかっても解決できなかった部分を解決できました。ソースコードを書いてくれた方、本当に感謝しています。ありがとうございます。 - 名無しさん 2017-08-07 09 32 11 上の「装備していると何かが起こる防具」を作る方法を教えてください。 - 名無しさん 2017-09-02 00 30 22 に被ってしまうと思いますが全ての防具スロットに着けているのを確認する方法がわかりません... - 名無しさん 2017-09-02 00 31 07 Item#onArmorTick(World, EntityPlayer, ItemStack)の第二引数を利用します。EntityPlayer#getCurrentArmor(int)を呼び出すと、プレイヤーが装備している防具をItemStackとして取得できます。引数は、3が頭、2が胴、1が脚、0が足になっていますので、ご注意ください。 - 赤砂蛇凪浜 2017-09-03 11 32 17 名前
https://w.atwiki.jp/resha1201/pages/21.html
DQRmod(旧DQM3Nextmod)は、マインクラフトの世界に某ゲームのアイテムやモンスター、職業、魔法などの 新要素を追加するmodです。
https://w.atwiki.jp/aceofspades/pages/28.html
AoSでは、ゲーム用のファイルを編集したり置き替えることによって、ゲーム内のアイテムやプレイヤーキャラクター等の外観を変更することができる。 こうして変更されたゲーム用ファイルを、ここでは「mod」という。「mod」は自分でファイルを編集して作るか、他の人が作ってネット上にアップロードしたものを使うことができる。 modを入れる方法を説明する。 銃ファイルの変更 変更の対象となるファイルの場所は、Aosがインストールされたフォルダにある「kv6」フォルダ(デフォルトでは「C \Ace of Spades\kv6」)である。 注意 変更前にフォルダの中身のバックアップ推奨 銃ファイルを編集する場合、編集ソフト(slab6)が必要 プレイヤー関連のkv6はデフォルトと同じ最大幅でないと認識されないので注意 画像ファイルの変更 変更の対象となるファイルの場所は、AoSがインストールされたフォルダにある「png」フォルダ(デフォルトでは「C \Ace of Spades\png」)である。 注意 変更前にフォルダの中身をバックアップ推奨。 画像を編集する場合、透過画像を扱える画像編集ソフト(GIMP等)が必要。 アイアンサイトの変更 ゲーム中で銃使用時に右クリックすると表示されるアイアンサイト(照準器)の見かけを変更する。 上記フォルダ中の「semi」「smg」「shotgun」という名前のpng画像ファイルを編集するか置き替える(「semi」がライフル用、「smg」がマシンガン用、「shotgun」がショットガン用)。 編集上の注意 画像の座標(400,300)が中心点である。この点が示す方向へ銃弾が放たれる。 画像の「背景」つまり銃身や照準器以外の領域(スコープ型の照準器を描く場合、ガラス部分も)を透過領域にしておく。
https://w.atwiki.jp/xops/pages/23.html
MOD紹介・解説とか テンプレ [名前] [URL] [導入手順] [コメント] [名前]XOPS Addon Downloader [URL]http //www15.atwiki.jp/xops?cmd=upload act=open pageid=23 file=addon+downloader_3.zip [導入手順]中に入っている説明書を参照 [コメント]アドオンミッションを公開している場所のリストを作るソフトです うん、MODではないんだ。済まない(´・ω・`) [名前]ADDdata20070110 [URL]http //www15.atwiki.jp/xops?cmd=upload act=open pageid=23 file=ADDdata20070110.zip [導入手順]中に入っている説明書を参照 [コメント]XOPS Addon Downloader用のミッションデータ。07/01/10版
https://w.atwiki.jp/mineminemagic/pages/16.html
導入しているModのフォーラムに飛べます。()内は現在導入しているバージョンです。 クライアント&サーバー両方に導入する必要があるMod MinecraftForge(1.4.7-6.6.0.518) MinecraftForge AllVersion MinecraftIM (v2.2b) SignFix(forge6.5.0.467)←同フォーラム BitmapFont(1.1.3_forMC1.4.7) IndustrialCraft2(1.115.207) Advanced Machines(4.7b) Advanced Power Management(1.1.55-IC2_1.112) AtomicStryker's Power Converters(1.4.1) IC2 Backpack HUD(v2.3 - MC 1.4.6) QuantumPack(1.06) IronChest(1.4.7-5.0.0.228) BuildCraft(3.4.3) Additional Pipes(2.1.2-1.4.7) AtomicStryker's Minefactory Reloaded(1.6.7) Valve Pipe(1.4.7-2013/01/27付) RedPower2(2.0pr6) RailCraft(1.4.7-6.17.0.0) Flan's Mod(2.1.1 for Minecraft 1.4.7) ContentPack:Simple Parts Pack(1.1.0 for Flans Mod 2.1) ContentPack:World War Two Pack(1.1.0 for Flans Mod 2.1) ContentPack:Modern Weapons Pack(1.1.0 for Flans Mod 2.1) Mo'Creatures(v4.5.1) CustomMobSpawner(1.11) GuiAPI(0.15.2-1.4.6) CobbleStoneFuel(1.4.6) BackPack(1.5.7-1.4.6) CraftGuide(1.6.5.12) WirelessRedstone(v1.6.1) TreeCapitator(1.4.6.r06) クライアントのみで導入するMod OptiFine(1.4.6_HD_U_D5) OptiFine日本語化(1.4.6_HD_U_B2_jpLocalize) MCPatcher HD fix(2.4.5_02) IDChecker(1.4.6) Rei's Minimap(v3.2_06) MAtmos(r21__1_4_6) Matmos expansion(1.35) Audiotori(r3__1_4_6) Tooltip Plus(v2.3.2.10) ConvenientInventory(2.9) Minecraft ControlPack(5.6)
https://w.atwiki.jp/akasatanahama/pages/86.html
もし宜しければ他のmodのアイテムを使ったレシピの追加方法も教えて頂けませんでしょうか? - 名無しさん 2015-06-30 19 00 52ご意見ありがとうございます。現在追加予定です。 - TomKate 2015-07-01 16 29 41先ほど、他MODのアイテム取得のチュートリアルを掲載いたしました。 - Tom Kate 2015-07-01 18 47 11 特殊な形のブロックを作る場合はどうしたらよろしいのでしょうか。可能であれば教えて下さい。 - Modding 2015-07-04 14 54 30ご意見ありがとうございます。現在追加予定です。 - Tom Kate 2015-07-05 12 21 02ありがとうございます。 - # 2015-07-05 14 39 37 追加させていただきました。 - Tom Kate 2015-07-08 21 24 38 GUIの追加方法を教えてください。 - R 2015-07-04 20 18 50ご意見ありがとうございます。今後、「上級編」にて紹介する可能性がありますので、しばらくお待ちください。 - Tom Kate 2015-07-05 12 21 57 「GUIの実装」を作成しました。遅くなってしまい申し訳ございません。 - 赤砂蛇凪浜 2015-12-18 18 40 12 骨粉などの農業系の追加法を教えていただけないでしょうか? - 名無しさん 2015-07-07 19 40 10ご意見ありがとうございます。「木・作物の追加」を追加予定です。 - 赤砂蛇凪浜 2015-07-07 20 00 09 遅くなりましたが、「木の追加」を作成しました。骨粉はIGrowableを実装すれば対応できますが、今後「植物の追加」も作成予定です。 - 赤砂蛇凪浜 2015-12-17 07 47 45 作物の追加を作成しました。 - 赤砂蛇凪浜 2017-01-24 19 49 20 この会話はコメント/トップページに移動しました。 この会話はコメント/MOD製作チュートリアル/ツール類の追加に移動しました。 「MOD製作チュートリアル」をもっと更新していただけませんか? - 名無しさん 2015-11-07 23 31 18更新が滞っていてすみません。MODの更新で手一杯な状況です。MOD更新直後などのタイミングで一気にチュートリアルの更新ができるかと思いますので、もうしばらくお待ちください。 - 赤砂蛇凪浜 2015-11-11 20 14 34 Mobの追加方法を教えてくださいますか? - 名無しさん 2015-12-06 16 11 45ご意見ありがとうございます。今年中に更新したいと思いますのでもうしばらくお待ちください。 - Tom Kate 2015-12-06 17 07 01 ここのMOD講座がわかりやすくて助かります。建材MODを作るとして、階段、半ブロック、フェンス、ゲート、壁、ガラス、ガラス板などを、16個のテクスチャーからメタデータを使って追加するチュートリアルがあると非常にありがたいです - 名無しさん 2015-12-10 21 08 49ご意見ありがとうございます。返信が遅れてしまいすみません。少なくとも階段・ハーフブロックは方向をメタデータを利用して保持しているので、一つのIDで16個追加するのは無理かと思われます。私自身が半ブロック・フェンス・ゲート・壁・ガラス板の実装をやったことがないので、BFOの製作などで技術を身につけてからになりますが、それでよろしければチュートリアルを追加します。 - 赤砂蛇凪浜 2015-12-16 13 00 59返答感謝。メタデータで方向を管理していたんですね。BFO楽しみにしてます。 - 名無しさん 2015-12-20 02 12 33 プレイヤーにダメージを与えたり燃やしたりする方法のチュートリアルを作っていただけないでしょうか。 - 新人もっだー 2016-01-17 15 38 01わかりました。今後追加します。少し遅くなるかもしれません。少々お待ちください。 - 赤砂蛇凪浜 2016-01-18 18 38 30 既存クラスの書き換えの方法を教えていただけないでしょうか。 - World_of_the_Takumi 2016-02-11 15 09 38私自身、既存クラスの書き換えをやったことがないため、チュートリアルを作成することができません。今後、もし使うことがあればその際に追加します。申し訳ございません。 - 赤砂蛇凪浜 2016-02-11 20 06 00返信ありがとうございます。自分で頑張ってみようと思います。 - World_of_the_Takumi 2016-02-12 07 43 03 実績の追加と、作物の追加を教えてくださいますか? - 88taishi88 2016-04-10 14 06 51コメントありがとうございます。現在、管理人がどちらも多忙なため、今暫くお待ちください。申し訳ありません。 - Tom Kate 2016-04-10 22 21 10返信ありがとうございます。そうですか・・・ 頑張ってください!待ってます - 88taishi88 2016-04-11 17 08 17 追加いたしました。 - Tom Kate 2016-12-11 08 15 47 作物の追加を作成しました。 - 赤砂蛇凪浜 2017-01-24 19 49 20 1.8以降のテクスチャ指定方法を解説をしていただきたいです - 名無しさん 2016-05-05 11 43 071.8以降のチュートリアルも準備中です。今しばらくお待ちください。 - Tom Kate 2016-08-14 23 20 16 TileEntintyの追加を押したら木の追加に飛ばされるんですが・・・ - 名無しさん 2016-08-14 18 37 20ご報告ありがとうございます。修正いたしました。 - Tom Kate 2016-08-14 23 20 38 新しい独自の魚を追加する方法、できれば教えてください - 名無しさん 2016-09-10 21 06 54コメントありがとうございます。私達がやったことがないため、チュートリアルの作成ができません。申し訳ありません。 - 赤砂蛇凪浜 2016-09-17 14 06 50わかりました。返信ありがとうございます。 - 名無しさん 2016-09-17 17 54 48 お久しぶりです。よろしければ、サウンドの追加などを解説してもらえますか。 - hrt1534 2016-09-20 00 35 56次のオファレンMODのバージョンアップで挑戦してみようと思っていました。成功したら作成しますので、しばらくお待ちください。誤爆のようですので一部コメントアウトしておきますね。 - 赤砂蛇凪浜 2016-09-22 11 30 15分かりました。ありがとうございます。 - hrt1534 2016-09-24 22 56 55 もしよろしければ村人の追加なども解説していただけませんか? - aaaa 2016-12-06 19 45 50追加しました。このような内容でよろしかったでしょうか? - Tom Kate 2016-12-12 22 45 31 すみません、よろしければ爆発の処理なども解説していただけないでしょうか? - PPAP 2016-12-30 00 59 39「イベントの活用」チュートリアルで解説予定です。 - Tom Kate 2016-12-30 18 08 53ありがとうございます - 名無しさん 2016-12-30 20 38 39追加しました。 - Tom Kate 2017-05-27 11 31 41 コンフィグの生成方法のチュートリアル作ってくださいませんか? - shu_hrg 2016-12-30 11 55 48今後追加したいと思います。 - Tom Kate 2016-12-30 18 09 23 作成しました。 - 赤砂蛇凪浜 2017-01-30 18 40 53 弓の追加の仕方を教えてください - 名無しさん 2017-01-22 15 36 27 アイテムの追加を参考に、追加するItemにItemBowを継承したクラスを渡して下さい。テクスチャの変更方法等もItemBowを参照すればわかると思います。また何かありましたら、ご質問下さい。 - Tom Kate 2017-01-22 20 52 29強さ(飛距離や攻撃力)を変えるにはどうすればいいでしょうか? - 名無しさん 2017-01-23 16 10 17 エンチャント追加の方法を教えてください。modding wikiのほうにもあったのですがバージョンが違うせいかインポート文の時点でエラーが出てしまいました。 - 名無しさん 2017-01-28 10 01 50 新しいエンチャントの追加です。わかりにくくてすいません。 - 名無しさん 2017-01-28 10 03 36 解決しました。 - 名無しさん 2017-02-06 18 43 08 バイオームとディメンションの追加の仕方を教えてください。 - mod初心者 2017-02-08 19 13 13 教えてくださいというか、解説してくださいですね。分かりにくくてすいません。 - mod初心者 2017-02-11 09 35 33 ご意見ありがとうございます。上級編に解説を作成予定です。 - 赤砂蛇凪浜 2017-02-11 18 44 56 ありがとうございます! - mod初心者 2017-02-11 22 58 34 新しいゲージ(体力ゲージのような)の追加のチュートリアルの追加をしてみたらどうですか? - 参考になっております。 2017-04-05 21 58 33 すみません。わかにくいですね、 □□□□□□□□□□ ♥♥♥♥♥♥♥♥♥♥ □□□□□□□□□□ こんな感じで水のゲージ(ステータス(?))を追加するチュートリアルはどうでしょうか? - 参考になっております。 2017-04-09 10 58 13 左の四角が水、右のしかくが肉です。(肉のゲージの上に水のゲージが来るようなイメージで、) - 参考になっております。 2017-04-09 11 03 45 ご意見ありがとうございます。私もTom Kate氏も挑戦したことがありませんので、チュートリアルの作成ができません。もし今後、ゲージ追加に成功した場合は、チュートリアルを作成したいと思います。 - 赤砂蛇凪浜 2017-04-09 18 53 12 ご回答ありがとうございます。そうですか…mod制作頑張ってください。 - 参考になっております。 2017-04-10 22 01 40 この会話はコメント/MOD製作チュートリアル/ツール類の追加/コメントログに移動しました。 独自のクラフトシステムと作業台を追加するにはどうすればいいのですか? - 名無しさん 2017-05-20 23 18 06 私もTom Kate氏も挑戦したことがありませんので、チュートリアルの作成ができません。もし今後、成功した場合は、チュートリアルを作成したいと思います。 - 赤砂蛇凪浜 2017-05-22 19 22 55 cliantからtileentityを同期させる方法の解説をお願いしたいです - anatawa12 2017-05-21 16 35 25 GUIを開いている時に開いているプレイヤーのみに対してであれば、ContainerクラスにあるdetectAndSendChangesなどの一連のメソッドが利用できます。また、かまどなどのように、いくつか(16種類まで)の状態を切り替えるだけであれば、メタデータを利用することができます。テクスチャへの反映などで常時、詳しいデータの同期が必要な場合は、独自にパケットを追加する必要があると思われます。チュートリアル「パケットの追加」は今後作成する予定です。 - 赤砂蛇凪浜 2017-05-22 19 30 28 moddingの時によくこのサイトを拝見させていただくのですが、私だけかもしれませんが突然文字化け?のようなことが起こり一部のチュートリアルが閲覧できませんでした。ご時間ありましたら、対処をお願いします。長文失礼しました。 - 名無しさん 2017-07-31 23 51 44 例えば、「アイテムの追加」が、以下のようになっていたりします。 - 名無しさん 2017-07-31 23 54 17 span style="color #a1a100;" 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.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "AluminiumMod""Aluminium Mod", version = "1.0.0"//追加するアイテムの宣言 //Itemのインスタンスを生成し、代入する。 //クリエイティブタブの登録 //システム名の登録 "aluminium") //テクスチャ名の登録 "aluminiummod aluminium"); //GameRegistryへの登録 "aluminium"); } } - 名無しさん 2017-07-31 23 54 31 よく拝見させていただきます。私も同じですー(汗 対処方お願いいたします。 - ad2y 2017-08-02 21 41 15 ご迷惑をおかけしております。@wikiのプラグインの不具合と思われます。トップページのお知らせを更新しましたので、ご覧ください。 - 赤砂蛇凪浜 2017-08-03 11 58 10 正常に表示されております。ありがとうございました。 - ad2y 2017-08-05 06 11 12 エフェクトの追加の仕方を教えてください。 - 名無しさん 2017-08-13 01 16 42 ご意見有難うございます。記事追加は赤砂蛇凪浜と話し合って何をやるか決めますので、検討いたします。 - Tom Kate 2017-08-13 23 13 27 わかりました。 - 名無しさん 2017-08-14 02 19 18 「エフェクト」とは何を指していますか?ポーション効果や、パーティクル、サウンドなどかと思いましたので、それぞれについてお伝えします。ポーション効果かサウンドでしたら、解説を作成予定です。パーティクルは私たちに技術がないため解説できません。返信いただけるとありがたいです。 - 赤砂蛇凪浜 (2017-08-18 10 32 40) ポーション効果です。 - 名無しさん (2017-08-18 18 31 50) オファレン変換機やオファレン製錬機の様な新しいレシピシステムを追加するチュートリアルを作っては頂けないでしょうか。 - 名無しさん 2017-09-16 16 15 49 できれば鉱石辞書にも対応していただけるとありがたいです。 - 名無しさん 2017-09-16 17 49 48 ご意見ありがとうございます。今後、解説を作成したいと思います。 - 赤砂蛇凪浜 2017-09-16 18 25 38 有難うございます - 名無しさん 2017-09-17 09 01 36 素材や完成品を2つ以上にすることも可能でしょうか。できるのであれば、そのチュートリアルも作って頂けないでしょうか。 - 名無しさん 2017-09-18 15 33 22 わかりました。ページを分けるかどうかは作成の際に検討したいと思います。 - 赤砂蛇凪浜 2017-09-21 16 40 47 基本事項のGradleのとこがコンパイラとなってますが、ビルドシステムのほうが正しいと思います - anatawa12 2017-10-11 21 03 11 ご指摘ありがとうございます。修正しました。 - 赤砂蛇凪浜 2017-10-12 16 31 19
https://w.atwiki.jp/callofduty4pc/pages/98.html
● Call of Duty 4 Map and Mod Tools v1.1 (604MB/画像/動画/08.1.19更新) CoD4のModと、シングル、マルチのカスタムマップ作成を支援するための公式ツール集です。 ・ 現在のところ英語のみのサポート ・ XP互換モードでの動作報告はあるが、基本的にVistaでの動作は不可 ・ パッチ済みのCoD4、Shader3.0対応のDX9ビデオカード、NET Framework Ver2.0以上が必要 導入 : DLして解凍した中身を「Call of Duty 4 - Modern Warfare」フォルダに展開して、 コンパイルツール (\bin\CoD4CompileTools\ CoD4CompileTools.exe) と Modビルダー (\bin\MoDBuilder.exe) のショートカットを任意の場所に作成します。 http //www.infinityward.com/wiki/index.php?title=Mod_Tools_Download_and_Revision_History Call of Duty 4 Mod Tools Wiki (本家・英語) : http //www.infinityward.com/wiki/ Call of Duty 4 Mod Tools 日本語 Community Wiki : http //www13.atwiki.jp/cod4mod/ *) Modツールを使用するには、CoD4フォルダ下に多数のフォルダを展開する必要があります。 使う当てのない人は入れないほうがいいかも。 Modの導入方法 <シングルプレイModの場合> 1) ダウンロードしたファイルを解凍し、その中にある拡張子 ”****.iwd” ファイルなどが入っているフォルダ ”mymod (仮名)” をまるごと、CoD4をインストールした場所にある以下のフォルダ内にコピーします。 ~\Program Files\Activision\Call of Duty 4 - Modern Warfare\Mods Modファイルが ”****.iwd” のみの場合は、”Mods” フォルダ下に”mymod (仮名/任意の名前でよい)” フォルダを新規作成するか、現在使用しているModのフォルダに一緒に入れてください。 2) CoD4シングルプレイのショートカット (”iw3sp.exe” のショートカット) を右クリック → ”プロパティ” → ”リンク先(T)” の文末に以下の命令文を追加します。 ~\Call of Duty 4 - Modern Warfare\iw3sp.exe" +set fs_game mods/mymod 3) 2)で作成したショートカットから起動すると、”mymod” フォルダ内のModがプレイに反映されます。 複数のModを同時に使用する場合は、使いたいModの ”iwd” ファイルを ” +set fs_game mods/” で指定した1つのModフォルダにまとめて入れて下さい。 4) Modを外す時は、該当Modの ”iwd” ファイルを ”mymod” フォルダから除去するか、”mymod” フォルダ 自体を削除してください。 <マルチプレイModの場合> 1) シングルプレイModと同じ手順で、”Mods” フォルダ下に各Mod用のフォルダをコピーします。 2) CoD4マルチプレイのショートカット (”iw3mp.exe” のショートカット) を右クリック → ”プロパティ” → ”リンク先” の文末に以下の命令文を追加します。 ~\Call of Duty 4 - Modern Warfare\iw3mp.exe" +set fs_game mods/mymod 3) またはCoD4マルチプレイを起動し、メニュー画面の ”Mods” から適用したいModのフォルダを選択して ”Launch” を押します。 適用されているModを外すには ”Mods” → ”Launch without Mod” を選択します。 <カスタムMAPの場合> 1) ダウンロードしたファイルを解凍し、その中の”****.iwd”や”****.ff”ファイルなどが入っているMAP名の フォルダ ”mp_mymap (仮名)” を、CoD4をインストールした場所にある以下のフォルダ内にコピーします。 ~\Program Files\Activision\Call of Duty 4 - Modern Warfare\usermaps ”usermaps”フォルダがない場合は新規に作成してください。 2) 1)と同じMAPを導入しているマルチプレイサーバーに接続してプレイします。 3) 一人で導入済みのMAPを探索したいときは、CoD4マルチプレイを起動し、メニュー画面から ”Mods” → ”ModWarfare” を選択して ”Launch” を押します。 4) メニュー画面でコンソール(Ctrl+半角/全角キー)を開いて、”map mp_mymap” と入力します。 *) コンソールに長い文を入力する時は、事前に文をコピーしておけば ”Ctrl”+”V” キーで入力場所にペースト できて便利です。 *) マルチプレイでは”Options”→”Multiplayer Options”→”Allow Downloading”を”Yes”にすると サーバーに接続すると同時に、ModやMAPなどの必要なファイルをプレーヤーのHDDへダウンロードします。 但し、サーバー側のアップロード回線が細かったり、DLするファイルが膨大な場合には、事前にサーバーの 管理者が運営するサイトなどから必要なファイルをDLして導入しておく必要があります。 *) 基本的にカスタムMAPを含むModを導入しているサーバーでは、敵を倒してもRankを上げるための XPを獲得することはできません。 但しModによっては独自のRankを設けているものもあります。
https://w.atwiki.jp/akasatanahama/pages/63.html
概要 ドロップアイテムがそのブロック自身ではなく、さらに経験値をドロップするブロックを追加し、地下に生成させる。 ソースコード 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 MOD製作チュートリアル/メタデータを持つブロックの追加でも触れていますが、AluminiumOre内で、Block.damageDropedをオーバーライドするとできます。 - 赤砂蛇凪浜 2016-04-02 06 12 33 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 名前