Asphere さんが書きました:ver1.12.2です。
新しいアイテムを作製しているのですが、addInformationでスタック数に応じて数値を入力させたいと思っていますが、スタック数の会得方法がわかりません。
よろしくおねがいします。
Asphere さんが書きました:できました!ありがとうございます!
追加質問ですが、なにかしらの行動をした時耐久値を減少させるにはどのような文を打てばいいのでしょうか。
通りすがり(滞在中) さんが書きました:初めまして。多分、MOD作成中の質問等をするのがここの掲示板の趣旨だという事はわかっているのですがあえて質問をさせてください。
また、質問する場所が違うのであれば誘導等をしていただけるとありがたいと考えています。
やりたい事
●全くの知識無しからのMOD作成
ゴール
①銃(散弾銃)の作成(エンチャ出来る物)
②バリア発生装置の作成(可能であれば工業系のMODとの連携)
③自動迎撃装置の作成(いわゆるセントリーガン)
④飛行装置の作成。
⑤村人の取引の追加(村人にナニカする系のMODに対応させたいので、あくまで村人にしたい)
上記をとりあえず、マインクラフト1.6.4で実装できるようにしたい。
質問事項
プログラムとかの知識が全くないのですが、上記の物を作るにはどういった事を学び、どういった作業をすればよいのでしょうか?
教えてください。
たとえば、Javaの基礎が必要とありますが、どの程度の所までを指しているのでしょうか?
あと、もしよければお勧めの書籍等があったら教えてください
ogachan1503 さんが書きました:Minecraft1.7.10で質問です。
鉱石辞書に、耐久値のあるアイテムを登録したいです。
現状は
OreDirectionary.registerOre("dyeBlack",new ItemStack(MyModItems.ItemPaintsBlack,1,-1));
という風に登録されているのですが、レシピで使おうとすると、耐久値が1でも減っているとクラフトできません。
わかる方はいますか?
Forge 10.13.4.1558です
さとなし さんが書きました:こんにちは。
mobを倒したときのドロップアイテムを追加したときに、わからないことがあったので質問させていただきました。
以下、私の構築環境および作成したプログラムになります。
Forge:ver 1.12.2
使用エディタ:Eclipse
***** OS情報 *****
OS名:Microsoft Windows 10 Home 64 ビット
ServicePack:0
詳細なバージョン:10.0.17134
***** コンピュータ情報 *****
製造元:Dell Inc.
型番:OptiPlex 7010
メモリ:8146 MB
***** CPU情報 *****
プロセッサ名:Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
最大CPUクロック:3201 MHz
現在のCPUクロック:3201 MHz
コア/スレッド数:4/4
***** ビデオカード情報 *****
ビデオチップ:NVIDIA GeForce GTX 1050 Ti
VRAM:4095 MB
ドライバ:23.21.13.8813
-------------------------------------------
package com.test.testMod;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@Mod(modid = TestMod.MOD_ID, version = TestMod.MOD_VERSION)
public class TestMod {
public static final String MOD_ID ="testmod";
public static final String MOD_VERSION = "1.0";
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(new AddDeathEvent());
}
}
-------------------------------------------
package com.test.testMod;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.init.Items;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class AddDeathEvent {
@SubscribeEvent
public void pickupItem(LivingDeathEvent event)
{
if(event.getEntity() instanceof EntityZombie) {
event.getEntity().dropItem(Items.DIAMOND, 1);
}
}
}
-------------------------------------------
作成したmodはゾンビを倒したときにドロップアイテムにダイヤモンド1つを追加するものでした。
実行した結果、意図通りダイヤモンドがドロップしたのですが、ゲーム画面では2個ドロップしていました。
またドロップした2つのダイヤモンドのうち1つは回収できたのですが、もう1つは回収できませんでした。
この現象はダイヤモンドのドロップ個数を変更しても発生していました。
回収できないダイヤモンドがどうして発生してしまうのかわからなかったので質問させていただきました。
ご回答よろしくお願いいたします。
defeatedcrow さんが書きました:ogachan1503 さんが書きました:Minecraft1.7.10で質問です。
鉱石辞書に、耐久値のあるアイテムを登録したいです。
現状は
OreDirectionary.registerOre("dyeBlack",new ItemStack(MyModItems.ItemPaintsBlack,1,-1));
という風に登録されているのですが、レシピで使おうとすると、耐久値が1でも減っているとクラフトできません。
わかる方はいますか?
Forge 10.13.4.1558です
メタデータにワイルドカード(32767)を使うと、すべてのメタデータにまとめて辞書名を指定できます
Forgeは、メタデータを問わないという意味でメタデータにマイナス値(-1)を使うことはありません、ですのでおそらく「あなたが不正な値を入れた」と認識されてメタデータ0のみ登録されています
鉱石辞書に関しては1.10くらいまではForge側で使用が変わっていませんので既存のチュートリアルが使い回せます
この辺を読むと良いです
https://mcmodding.jp/modding/index.php/ ... 9%E7%94%A8
https://mcmodding.jp/modding/index.php/ ... F%E4%BE%8B
defeatedcrow さんが書きました:さとなし さんが書きました:こんにちは。
mobを倒したときのドロップアイテムを追加したときに、わからないことがあったので質問させていただきました。
以下、私の構築環境および作成したプログラムになります。
Forge:ver 1.12.2
使用エディタ:Eclipse
***** OS情報 *****
OS名:Microsoft Windows 10 Home 64 ビット
ServicePack:0
詳細なバージョン:10.0.17134
***** コンピュータ情報 *****
製造元:Dell Inc.
型番:OptiPlex 7010
メモリ:8146 MB
***** CPU情報 *****
プロセッサ名:Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
最大CPUクロック:3201 MHz
現在のCPUクロック:3201 MHz
コア/スレッド数:4/4
***** ビデオカード情報 *****
ビデオチップ:NVIDIA GeForce GTX 1050 Ti
VRAM:4095 MB
ドライバ:23.21.13.8813
-------------------------------------------
package com.test.testMod;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@Mod(modid = TestMod.MOD_ID, version = TestMod.MOD_VERSION)
public class TestMod {
public static final String MOD_ID ="testmod";
public static final String MOD_VERSION = "1.0";
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(new AddDeathEvent());
}
}
-------------------------------------------
package com.test.testMod;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.init.Items;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class AddDeathEvent {
@SubscribeEvent
public void pickupItem(LivingDeathEvent event)
{
if(event.getEntity() instanceof EntityZombie) {
event.getEntity().dropItem(Items.DIAMOND, 1);
}
}
}
-------------------------------------------
作成したmodはゾンビを倒したときにドロップアイテムにダイヤモンド1つを追加するものでした。
実行した結果、意図通りダイヤモンドがドロップしたのですが、ゲーム画面では2個ドロップしていました。
またドロップした2つのダイヤモンドのうち1つは回収できたのですが、もう1つは回収できませんでした。
この現象はダイヤモンドのドロップ個数を変更しても発生していました。
回収できないダイヤモンドがどうして発生してしまうのかわからなかったので質問させていただきました。
ご回答よろしくお願いいたします。
ドロップアイテムはエンティティです
エンティティは、サーバー側でのみスポーン処理をしないといけないものですマイクラの現在のバニラの処理はマルチプレイと同じ仕組みで動いています
エンティティはサーバー側に存在していて、その”現在の見た目の情報”だけが定期的にクライアント側にパケット処理で送られてきて、クライアント側がそれを表示するという流れです
あなたはクライアント側かサーバー側かの判別をしないでスポーンさせているので、クライアント側で(行うべきでない)スポーン処理を行っています
そうすると、一応見た目だけは発生しますが、クライアント側にしか存在しない、中身のない見かけだけのドロップアイテムが発生してしまいます
これが拾えなかった方のドロップアイテムです
nullチェックを通しているinstanceof EntityZombieよりも後にif文を追加して、!event.getEntity().getEntityWorld().isRemote(サーバ側かどうかのチェックフラグ)を挟んでください
ogachan1503 さんが書きました:
allmi さんが書きました:新規の質問です。
視界にある距離30ブロック以内のブロックとの距離を計算し、特定キーを入力するとその距離をグレー色の薄さで表示するMODを作成しようとしています。
イメージとしては以下のように近いものと遠いものが色として表現されるものです。
https://cs.nyu.edu/~silberman/datasets/ ... th_v2.html
ForgeAPIを中心に近接ブロックとの距離を計算する方法を調べているのですが、該当の項目が見つからず難儀しています。
上記の直接的な方法、もしくは一人称視点時の描画に関するコードがどこにあるかなどヒントになる情報をおしえていただけないでしょうか?
Forge1.12.2を用いていますが、過去のバージョンに変更しても構いません。
よろしくお願いいたします。