【総合】トピック立てるまでもない質問【Mod制作】

フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999

返信する

:
不正プログラムによるアクセスを防ぐため、reCaptcha 認証コードの入力を強制しています。表示されている 2 つのワードをテキストフィールドにご入力ください。

BBCode: OFF
スマイリー: OFF
トピックのレビュー
   

ファイルを添付します

展開ビュー トピックのレビュー: 【総合】トピック立てるまでもない質問【Mod制作】

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ShuperDark » 2018年1月07日(日) 18:51

こんにちは。
現在アイテムのGUIを作成中でして、GuiTextFieldの変数が3つありますが、クリックしても入力することが出来ません。
setFocusedをtrueにすると全てのGuiTextFieldが連動してしまい、文字を入力すると同じ文字が打たれてしまいます。
どうか対策できませんか?
お手間を取らせて申し訳ありませんが、マイクラのタブの大きさを変えるとGuiButtonの位置がずれてしまいます(最大のときは正常な位置です)
これはどうすることもできないのでしょうか

GuiTravelRod
コード: 全て選択
import org.lwjgl.opengl.GL11;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;

public class GuiTravelRod extends GuiContainer {
   
   private static final ResourceLocation texture = new ResourceLocation("easytravel:textures/gui/container/generic_travel.png");
   
   private GuiTextField Guix;
   private GuiTextField Guiy;
   private GuiTextField Guiz;
   
   public GuiTravelRod(InventoryPlayer player) {
      super(new ContainerTravelRod(player));
      this.ySize = 222;
   }
   
   @Override
   public void initGui() {
      super.initGui();
      
      this.buttonList.add(new GuiButton(1, 210, 130, 100, 20, "Travel"));

       Guix = new GuiTextField(this.fontRendererObj, 70, 20, 50, 10);
         Guix.setMaxStringLength(8);
         Guix.setText("x");
         Guix.setFocused(false);
          
         Guiy = new GuiTextField(this.fontRendererObj, 70, 40, 50, 10);
         Guiy.setMaxStringLength(8);
         Guiy.setText("y");
         Guiy.setFocused(false);
          
         Guiz = new GuiTextField(this.fontRendererObj, 70, 60, 50, 10);
         Guiz.setMaxStringLength(8);
         Guiz.setText("z");
         Guiz.setFocused(false);
   }
   
   @Override
    protected void drawGuiContainerForegroundLayer(int x, int p_146979_2_)
    {
        this.fontRendererObj.drawString("TravelRod", 8, 6, 4210752);
        this.fontRendererObj.drawString("Inventory", 8, this.ySize - 96 + 2, 4210752);
        this.fontRendererObj.drawString("x:", 56, 20, 4210752);
        this.fontRendererObj.drawString("y:", 56, 40, 4210752);
        this.fontRendererObj.drawString("z:", 56, 60, 4210752);

        Guix.drawTextBox();
       
        Guiy.drawTextBox();
       
        Guiz.drawTextBox();
    }
   
   @Override
   protected void keyTyped(char par1, int par2) {
      super.keyTyped(par1, par2);
      this.Guix.textboxKeyTyped(par1, par2);
      this.Guiy.textboxKeyTyped(par1, par2);
      this.Guiz.textboxKeyTyped(par1, par2);
   }
   
   @Override
   protected void mouseClicked(int x, int y, int btn) {
      super.mouseClicked(x, y, btn);
      this.Guix.mouseClicked(x, y, btn);
      this.Guiy.mouseClicked(x, y, btn);
      this.Guiz.mouseClicked(x, y, btn);
   }
   
   @Override
   public void updateScreen() {
      super.updateScreen();
      Guix.updateCursorCounter();
      Guiy.updateCursorCounter();
      Guiz.updateCursorCounter();
   }
   
    @Override
       protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_)
       {
           GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
           this.mc.getTextureManager().bindTexture(texture);
           int k = (this.width - this.xSize) / 2;
           int l = (this.height - this.ySize) / 2;
           this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
       }

}



開発環境は1.7.10です。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by nitrobomb08 » 2017年12月24日(日) 11:34

moddingについての知識をつけながらブロック追加modを作ろうと思っているのですが、

既にデフォルトで使用されているblockの、未使用のメタデータ(ダメージ値)に新しいblockを追加する
ex)id=2:1に、色の違うgrass blockを追加するetc

ということは不可能なのでしょうか?
MC1.4.7forgeでの開発をしようと思っていますが、もしそのような方法があれば現行のバージョンの知識でも構いませんのでお願いします。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by elise_blacklab » 2017年12月09日(土) 14:02

ゲスト さんが書きました:どうもです。forge1.12での質問です。
私は http://www.watermelonheadman.com を見ながら1.7.10のmoddingをしていたのですがせっかくだから最新バージョンもしてみたいなぁと思い、1.12のmdkをインストールしeclipseに入れる所までできたのですが
いざmoddingしてみるとforge1.12のプロジェクトをビルドパスで設定していたのにもかかわらず、forgeに関するものがインポートできず、googleなどで「forge 1.12 modding」で検索してみるとこちら側の情報が古いのでしょうかexamplemodの場所に作るmodを置いていました。上述のサイトの方法のようにmdkから違うjavaプロジェクトでする方法は可能なのでしょうか。

参照URLは記事個別のものを貼り付けてください.
インポートに関する問題も切り分けが必要です.行った手順は詳細かつ正確に記載してください.
viewtopic.php?f=5&t=999

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ゲスト » 2017年12月09日(土) 13:14

どうもです。forge1.12での質問です。
私は http://www.watermelonheadman.com を見ながら1.7.10のmoddingをしていたのですがせっかくだから最新バージョンもしてみたいなぁと思い、1.12のmdkをインストールしeclipseに入れる所までできたのですが
いざmoddingしてみるとforge1.12のプロジェクトをビルドパスで設定していたのにもかかわらず、forgeに関するものがインポートできず、googleなどで「forge 1.12 modding」で検索してみるとこちら側の情報が古いのでしょうかexamplemodの場所に作るmodを置いていました。上述のサイトの方法のようにmdkから違うjavaプロジェクトでする方法は可能なのでしょうか。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by sin5804 » 2017年12月07日(木) 18:12

僕は、1.7.10でmodを作っているのですが、防具を追加したいのですが見た目が変更されませんコードをのせておくので原因を教えてくださいお願いします。

public class Core {
public static Item zeusuHelmet;
public static Item zeusuChestplate;
public static Item zeusuLeggings;
public static Item zeusuBoots;
public ArmorMaterial GODA;


@EventHandler
public void preInit(FMLPreInitializationEvent event) {
ArmorMaterial GODA = EnumHelper.addArmorMaterial("GODA",99999, new int[] {30, 80, 60, 30}, 300);

GameRegistry.registerItem(zeusuHelmet = new ItemModArmor("zeusu_helmet", GODA, 1, 0), "zeusu_helmet");
GameRegistry.registerItem(zeusuChestplate = new ItemModArmor("zeusu_chestplate", GODA, 1, 1), "zeusu_chestplate");
GameRegistry.registerItem(zeusuLeggings = new ItemModArmor("zeusu_leggings", GODA, 2, 2), "zeusu_leggings");
GameRegistry.registerItem(zeusuBoots = new ItemModArmor("zeusu_boots", GODA, 1, 3), "zeusu_boots");


public class ItemModArmor extends ItemArmor {
public ItemModArmor(String unlocalizedName, ArmorMaterial material, int renderIndex, int armorType) {
super(material, renderIndex, armorType);


this.setUnlocalizedName(unlocalizedName);}


@Override
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
if (itemStack.getItem() == Core.zeusuHelmet) {
effectPlayer(player, Potion.waterBreathing, 5);
}
if (itemStack.getItem() == Core.zeusuChestplate) {
effectPlayer(player, Potion.digSpeed, 10);
}
if (itemStack.getItem() == Core.zeusuLeggings) {
effectPlayer(player, Potion.fireResistance, 0);
}
if (itemStack.getItem() == Core.zeusuBoots) {
effectPlayer(player, Potion.regeneration, 10);
}
}

private void effectPlayer(EntityPlayer player, Potion potion, int amplifier) {
//Always effect for 8 seconds, then refresh
if (player.getActivePotionEffect(potion) == null || player.getActivePotionEffect(potion).getDuration() <= 1)
player.addPotionEffect(new PotionEffect(potion.id, 159));

}

public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type)
{
if (this.armorType == 2) {
return "swordmod:goda_layer_2.png";
}
return "swordmod:goda_layer_1.png";
}


{
}

}

ちなみに僕は厨二病です。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by mpslayer » 2017年12月07日(木) 11:34

1.7.10のMod制作で、ダンジョン生成(構造物)について学べるサイト、ページなどはありますでしょうか。海外サイトでも構いません。
Modding Wikiに1.6.xのページはありましたが1.7.xはありませんでしたので質問させていただきました。
よろしくお願いします。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by kirito3002 » 2017年11月09日(木) 20:19

1.12でmod制作をしてるんですが
ブロックを破壊時に
アイテムをドロップさせるやり方が
わかりません

wikiに乗っていなかったので
どなたか教えていただけると光栄です
初歩的なことですいません

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by elise_blacklab » 2017年11月07日(火) 13:02

mpslayer さんが書きました:1つずつ出力したい

複数MODを同一workspaceで開発するには,マルチプロジェクト構成が必要です.modding wiki参照.

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by mpslayer » 2017年11月07日(火) 11:52

1.7.10 forge でMod制作中です。

2つのModを制作し、
src/main/java のディレクトリに2つModのパッケージを制作しました。
コマンドラインから「./gradlew build」でjarファイルに出力するのみなのですが、

com
- examplemod
- aaaamod

build.gradleの設定が分からず、2つのModが1つのjarファイルにまとめられて出力されてしまいます。
Minecraftに導入し起動してみると2つともしっかり反映されているのですが、
1つずつ出力したいので、質問させていただきました。

(build.gradleより一部抜粋)
コード: 全て選択
apply plugin: 'forge'

version = "1.0"
group = "com.examplemod"
archivesBaseName = "exampleMod-MC1.7.10"

minecraft {
    version = "1.7.10-10.13.4.1558-1.7.10"
    runDir = "eclipse"
}


よろしくお願いします。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by game6の人 » 2017年10月30日(月) 00:27

defeatedcrow さんが書きました:
game6の人 さんが書きました:modding&java初心者です。
forge 1.7.10でTickrateAPIをつかった効果のある防具を作りたいと思っています
onArmorTickで処理をしても防具を外したときに効果を無効化(tickrateを20に戻す)する処理をする必要があるようで、onLivingUpdateを使ってやってみてもうまくいきませんでした。
tickrateを20にする処理は出来てるみたいなので、おそらく処理の仕方が間違っているのかもしれません。
以下ソースです。modding初心者なので不要な物が含まれてるかもしれません
コード: 全て選択
package tutorial.testtickmod;

import me.guichaguri.tickratechanger.api.TickrateAPI;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class TestHakomeganeArmor extends ItemArmor  {


   public TestHakomeganeArmor(int type) {
      super(TestTickMod.ARMORMAT, 0, type);
      this.setCreativeTab(CreativeTabs.tabCombat);
   }

   @Override
   public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) {
      if (this.armorType == 2) {
         return "testtickmod:textures/models/armor/head.png";
      }
      return "testtickmod:textures/models/armor/head.png";
   }

   private EntityPlayer player;

   public void onLivingUpdate(){
      ItemStack armor = player.getCurrentArmor(3);

      if ((armor != null) && (armor.getItem() == TestTickMod.testHakomegane))
      {
         if (TickrateAPI.getClientTickrate() != 5.0) {
            TickrateAPI.changeTickrate(5.0F);
         }
      }
      else
      {
         if (TickrateAPI.getClientTickrate() != 20.0)
         {
            TickrateAPI.changeTickrate(20.0F);
         }
      }
   }
}


防具が外れたときに何か効果を起こしたいのであれば、
それらの防具のメソッドはそれを装備している間しか飛ばれないので、防具Itemのメソッド内に機能をつけているのは間違っています
(時間経過で消えるPotion効果とか、外した後の処理が不要な効果にするべきです)

あなたが作りたい効果であれば、Playerが存在している間は呼ばれ続けるLivingUpdateEventを別途で用意して、
プレイヤーが着ている防具を常時監視するほうが良いと思います

防具スロットにそのアイテムがあった場合、発動
なくなっていたら解除


追記
コード: 全て選択
private EntityPlayer player;

   public void onLivingUpdate(){
      ItemStack armor = player.getCurrentArmor(3);

      if ((armor != null) && (armor.getItem() == TestTickMod.testHakomegane))
      {
         if (TickrateAPI.getClientTickrate() != 5.0) {
            TickrateAPI.changeTickrate(5.0F);
         }
      }
      else
      {
         if (TickrateAPI.getClientTickrate() != 20.0)
         {
            TickrateAPI.changeTickrate(20.0F);
         }
      }
   }

この記述はよくないです
まず、このプレイヤーのインスタンスどこで中身が入りますか
代入している箇所が見当たらない上に、playerがnullだった場合にクラッシュする内容になってますね
(おそらくは代入自体されていなくて、onLivingUpdate()も呼ばれないままな気もしますが)

あと、このゲームではItemのインスタンスは一つが使いまわされるので、
この記述だとこのEntityPlayerのインスタンスを全員で使いまわすことになります
着用者が複数いた場合とか、モンスターに着られた場合の場合分けも要ると思いますよ~

返信ありがとうございます!onTickPlayerEventの方でやってみてうまくいきました!

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by defeatedcrow » 2017年10月29日(日) 17:44

game6の人 さんが書きました:modding&java初心者です。
forge 1.7.10でTickrateAPIをつかった効果のある防具を作りたいと思っています
onArmorTickで処理をしても防具を外したときに効果を無効化(tickrateを20に戻す)する処理をする必要があるようで、onLivingUpdateを使ってやってみてもうまくいきませんでした。
tickrateを20にする処理は出来てるみたいなので、おそらく処理の仕方が間違っているのかもしれません。
以下ソースです。modding初心者なので不要な物が含まれてるかもしれません
コード: 全て選択
package tutorial.testtickmod;

import me.guichaguri.tickratechanger.api.TickrateAPI;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class TestHakomeganeArmor extends ItemArmor  {


   public TestHakomeganeArmor(int type) {
      super(TestTickMod.ARMORMAT, 0, type);
      this.setCreativeTab(CreativeTabs.tabCombat);
   }

   @Override
   public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) {
      if (this.armorType == 2) {
         return "testtickmod:textures/models/armor/head.png";
      }
      return "testtickmod:textures/models/armor/head.png";
   }

   private EntityPlayer player;

   public void onLivingUpdate(){
      ItemStack armor = player.getCurrentArmor(3);

      if ((armor != null) && (armor.getItem() == TestTickMod.testHakomegane))
      {
         if (TickrateAPI.getClientTickrate() != 5.0) {
            TickrateAPI.changeTickrate(5.0F);
         }
      }
      else
      {
         if (TickrateAPI.getClientTickrate() != 20.0)
         {
            TickrateAPI.changeTickrate(20.0F);
         }
      }
   }
}


防具が外れたときに何か効果を起こしたいのであれば、
それらの防具のメソッドはそれを装備している間しか飛ばれないので、防具Itemのメソッド内に機能をつけているのは間違っています
(時間経過で消えるPotion効果とか、外した後の処理が不要な効果にするべきです)

あなたが作りたい効果であれば、Playerが存在している間は呼ばれ続けるLivingUpdateEventを別途で用意して、
プレイヤーが着ている防具を常時監視するほうが良いと思います

防具スロットにそのアイテムがあった場合、発動
なくなっていたら解除


追記
コード: 全て選択
private EntityPlayer player;

   public void onLivingUpdate(){
      ItemStack armor = player.getCurrentArmor(3);

      if ((armor != null) && (armor.getItem() == TestTickMod.testHakomegane))
      {
         if (TickrateAPI.getClientTickrate() != 5.0) {
            TickrateAPI.changeTickrate(5.0F);
         }
      }
      else
      {
         if (TickrateAPI.getClientTickrate() != 20.0)
         {
            TickrateAPI.changeTickrate(20.0F);
         }
      }
   }

この記述はよくないです
まず、このプレイヤーのインスタンスどこで中身が入りますか
代入している箇所が見当たらない上に、playerがnullだった場合にクラッシュする内容になってますね
(おそらくは代入自体されていなくて、onLivingUpdate()も呼ばれないままな気もしますが)

あと、このゲームではItemのインスタンスは一つが使いまわされるので、
この記述だとこのEntityPlayerのインスタンスを全員で使いまわすことになります
着用者が複数いた場合とか、モンスターに着られた場合の場合分けも要ると思いますよ~

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by game6の人 » 2017年10月29日(日) 13:52

modding&java初心者です。
forge 1.7.10でTickrateAPIをつかった効果のある防具を作りたいと思っています
onArmorTickで処理をしても防具を外したときに効果を無効化(tickrateを20に戻す)する処理をする必要があるようで、onLivingUpdateを使ってやってみてもうまくいきませんでした。
tickrateを20にする処理は出来てるみたいなので、おそらく処理の仕方が間違っているのかもしれません。
以下ソースです。modding初心者なので不要な物が含まれてるかもしれません
コード: 全て選択
package tutorial.testtickmod;

import me.guichaguri.tickratechanger.api.TickrateAPI;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class TestHakomeganeArmor extends ItemArmor  {


   public TestHakomeganeArmor(int type) {
      super(TestTickMod.ARMORMAT, 0, type);
      this.setCreativeTab(CreativeTabs.tabCombat);
   }

   @Override
   public String getArmorTexture(ItemStack itemStack, Entity entity, int slot, String type) {
      if (this.armorType == 2) {
         return "testtickmod:textures/models/armor/head.png";
      }
      return "testtickmod:textures/models/armor/head.png";
   }

   private EntityPlayer player;

   public void onLivingUpdate(){
      ItemStack armor = player.getCurrentArmor(3);

      if ((armor != null) && (armor.getItem() == TestTickMod.testHakomegane))
      {
         if (TickrateAPI.getClientTickrate() != 5.0) {
            TickrateAPI.changeTickrate(5.0F);
         }
      }
      else
      {
         if (TickrateAPI.getClientTickrate() != 20.0)
         {
            TickrateAPI.changeTickrate(20.0F);
         }
      }
   }
}

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by 秋葉の大妖精 » 2017年10月26日(木) 17:55

防具で落下ダメージを無効化したいのですがどのように書けばよいかわかりません。
バージョンは1.7.10です。誰かよろしくお願いします。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by elise_blacklab » 2017年10月22日(日) 21:44

ユメミノウツツ さんが書きました:1.7.10,Forge1558にて、素材にエンチャントされたアイテムを使う方法がわかりません。(完成品にではないです。)

エンチャントされたアイテムは完全にそのNBTで一致するとは限らないため,素材に指定するのではなくあとから判定する必要があります
が,クラフトの場合と違い,精錬の場合はGameRegistryに素材と結果しか登録できないため,エンチャントで判断するなど複雑な機構が組めません.

クラフトの場合は,IRecipe実装クラスのgetCraftingResult等を弄繰り回してGameRegistryに登録すれば,希望の操作は可能です

suteppi さんが書きました:1.12.2 Forge14.23.0.249でPickaxeにデフォルトでエンチャントを付ける方法を教えてください。


基本的にはクラフト時に上記の方法で付与するか,onUpdate内で付与するかどちらかですね

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ユメミノウツツ » 2017年10月22日(日) 21:30

suteppi さんが書きました:1.12.2 Forge14.23.0.249でPickaxeにデフォルトでエンチャントを付ける方法を教えてください。

1.7.10しかわからないから正しいかどうかはわかりませんが、NBTタグとaddEnchantmentあたりでいけるんじゃないですかね・・・?自分もやったことないので詳しくはわかりませんが。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by ユメミノウツツ » 2017年10月17日(火) 20:55

いつも頼ってばっかですがどうしてもわからないのでまたよろしくお願いします。
1.7.10,Forge1558にて、素材にエンチャントされたアイテムを使う方法がわかりません。(完成品にではないです。)素材にエンチャントしたアイテムを要求するMODがこれしか思い浮かばなかったため、抜刀剣MOD(https://github.com/flammpfeil/SlashBlade/blob/1.7/src/main/java/mods/flammpfeil/slashblade/named/Tukumo.java)を参考に書きましたがどうにもダメでした。なおFeItems.moltensteelが素材、ダメージ増加(レベルは問わない)が付いているものを精錬することによってFeItems.steel_ingot_exができるという仕様です。
以下ソース(関係ないアイテムも多いですが一応載せておきます)
コード: 全て選択
package femod.init;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;

/** レシピを登録するクラス */
public class FeRecipe {
   
   /** レシピの登録 */
   public static void setAllRecipes() {
      
/*      GameRegistry.addRecipe(new ItemStack(FeItems.xxx),
            new Object[]{"xxx",
                      "xxx",
            Character.valueOf('x'),Items.xxx,});      */
      
/*      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.yyy,1),
            new ItemStack(Items.yyy,1,0),
            new ItemStack(Items.yyy,1,0),
            new ItemStack(Items.yyy,1,0));      */   
      
/*      GameRegistry.addSmelting(FeBlocks.zzz,new ItemStack(Items.xyz),1.0f);      */   
      
      
      /* NBT */
      ItemStack StInEx = new ItemStack(FeItems.moltensteel,1,0);
      NBTTagCompound SIEE = new NBTTagCompound();
      StInEx.setTagCompound(SIEE);
      StInEx.addEnchantment(Enchantment.sharpness, 1);
      
      
      
      /* 素材 */
      //剣の柄
      GameRegistry.addRecipe(new ItemStack(FeItems.hilt),
            new Object[]{"SSS",
                      " S ",
            Character.valueOf('S'),Items.stick,});
      //長い柄
      GameRegistry.addRecipe(new ItemStack(FeItems.shaft),
            new Object[]{" S",
                      "S ",
            Character.valueOf('S'),Items.stick,});
      //鋼鉄インゴット
      GameRegistry.addSmelting(FeItems.pig_iron,new ItemStack(FeItems.steel_ingot),0.7f);
      //銑鉄
      GameRegistry.addRecipe(new ItemStack(FeItems.pig_iron,4),
            new Object[]{" I ",
                      "ICI",
                      " I ",
            Character.valueOf('I'),Items.iron_ingot,
            Character.valueOf('C'),Items.coal,});
      //銀インゴット
      GameRegistry.addSmelting(FeBlocks.silver_ore,new ItemStack(FeItems.silver_ingot),1.0f);
      //塗り薬
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cream,1),
            new ItemStack(FeItems.herb,1,0),
            new ItemStack(FeItems.herb,1,0),
            new ItemStack(FeItems.herb,1,0),
            new ItemStack(Items.dye,1,15),
            new ItemStack(Items.dye,1,15),
            new ItemStack(Items.dye,1,15),
            new ItemStack(Items.sugar,1,0),
            new ItemStack(Items.sugar,1,0),
            new ItemStack(Items.sugar,1,0));
      //布
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,0),
            new ItemStack(Blocks.wool,1,0),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,1),
            new ItemStack(Blocks.wool,1,1),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,2),
            new ItemStack(Blocks.wool,1,2),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,3),
            new ItemStack(Blocks.wool,1,3),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,4),
            new ItemStack(Blocks.wool,1,4),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,5),
            new ItemStack(Blocks.wool,1,5),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,6),
            new ItemStack(Blocks.wool,1,6),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,7),
            new ItemStack(Blocks.wool,1,7),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,8),
            new ItemStack(Blocks.wool,1,8),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,9),
            new ItemStack(Blocks.wool,1,9),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,10),
            new ItemStack(Blocks.wool,1,10),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,11),
            new ItemStack(Blocks.wool,1,11),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,12),
            new ItemStack(Blocks.wool,1,12),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,13),
            new ItemStack(Blocks.wool,1,13),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,14),
            new ItemStack(Blocks.wool,1,14),
            new ItemStack(Items.string,1,0));
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.cloth,4,15),
            new ItemStack(Blocks.wool,1,15),
            new ItemStack(Items.string,1,0));
      //なめし革
      GameRegistry.addRecipe(new ItemStack(FeItems.feleather),
            new Object[]{" s ",
                      "sls",
                      " s ",
            Character.valueOf('s'),Items.string,
            Character.valueOf('l'),Items.leather,});
      //紐
      GameRegistry.addRecipe(new ItemStack(FeItems.festring,2),
            new Object[]{"s",
                      "s",
            Character.valueOf('s'),Items.string,});
      //鉄の板
      GameRegistry.addRecipe(new ItemStack(FeItems.feironplate),
            new Object[]{"ii",
                      "ii",
            Character.valueOf('i'),Items.iron_ingot,});
      //ベルト
      GameRegistry.addRecipe(new ItemStack(FeItems.belt),
            new Object[]{" ss",
                      "ill",
                      " ss",
            Character.valueOf('s'),FeItems.festring,
            Character.valueOf('l'),FeItems.feleather,
            Character.valueOf('i'),Items.iron_ingot,});
      //靴底
      GameRegistry.addRecipe(new ItemStack(FeItems.sole,2),
            new Object[]{"l l",
                      "i i",
            Character.valueOf('l'),FeItems.feleather,
            Character.valueOf('i'),FeItems.feironplate,});
      //溶鋼
      GameRegistry.addSmelting(FeItems.steel_ingot,new ItemStack(FeItems.moltensteel),1.0f);
      //鋼鉄インゴット鍛
      GameRegistry.addSmelting(StInEx,new ItemStack(FeItems.steel_ingot_ex),10.0f);
      GameRegistry.addRecipe(new ItemStack(FeItems.steel_ingot_ex),
            new Object[]{"x",
            Character.valueOf('x'),StInEx,});
      
      
      /* クラス(アーマー) */
      //傭兵の眼帯
      GameRegistry.addRecipe(new ItemStack(FeItems.classmercenary_eyepatch),
            new Object[]{"  s",
                      " b ",
                      "s  ",
            Character.valueOf('s'),FeItems.festring,
            Character.valueOf('b'),new ItemStack(FeItems.cloth,1,15),});
      //傭兵の服
      GameRegistry.addRecipe(new ItemStack(FeItems.classmercenary_tops),
            new Object[]{"c c",
                      "lbl",
                      "iii",
            Character.valueOf('c'),new ItemStack(FeItems.cloth,1,2),
            Character.valueOf('l'),FeItems.feleather,
            Character.valueOf('b'),FeItems.belt,
            Character.valueOf('i'),FeItems.feironplate,});
      //傭兵のズボン
      GameRegistry.addRecipe(new ItemStack(FeItems.classmercenary_bottoms),
            new Object[]{"lbl",
                      "i i",
                      "c c",
            Character.valueOf('l'),FeItems.feleather,
            Character.valueOf('c'),new ItemStack(FeItems.cloth,1,2),
            Character.valueOf('b'),FeItems.belt,
            Character.valueOf('i'),FeItems.feironplate,});
      //傭兵の靴
      GameRegistry.addRecipe(new ItemStack(FeItems.classmercenary_shoes),
            new Object[]{"l l",
                      "s s",
            Character.valueOf('l'),FeItems.feleather,
            Character.valueOf('s'),FeItems.sole,});
      
      
      
      /* 剣 */
      //鉄の剣
      GameRegistry.addRecipe(new ItemStack(FeItems.feironsword),
            new Object[]{"  I",
                      " I ",
                      "H  ",
            Character.valueOf('I'),Items.iron_ingot,
            Character.valueOf('H'),FeItems.hilt});
      //鋼の剣
      GameRegistry.addRecipe(new ItemStack(FeItems.festeelsword),
            new Object[]{"  S",
                      " S ",
                      "H  ",
            Character.valueOf('S'),FeItems.steel_ingot,
            Character.valueOf('H'),FeItems.hilt,});
      //銀の剣
      GameRegistry.addRecipe(new ItemStack(FeItems.fesilversword),
            new Object[]{"  S",
                      " S ",
                      "H  ",
            Character.valueOf('S'),FeItems.silver_ingot,
            Character.valueOf('H'),FeItems.hilt,});
      
      
      
      /* 槍 */
      //鉄の槍
      GameRegistry.addRecipe(new ItemStack(FeItems.feironlance),
            new Object[]{" II",
                      " SI",
                      "S  ",
            Character.valueOf('I'),Items.iron_ingot,
            Character.valueOf('S'),FeItems.shaft,});
      //鋼の槍   
      GameRegistry.addRecipe(new ItemStack(FeItems.festeellance),
            new Object[]{" SS",
                      " HS",
                      "H  ",
            Character.valueOf('S'),FeItems.steel_ingot,
            Character.valueOf('H'),FeItems.shaft,});
      //銀の槍
      GameRegistry.addRecipe(new ItemStack(FeItems.fesilverlance),
            new Object[]{" SS",
                      " HS",
                      "H  ",
            Character.valueOf('S'),FeItems.silver_ingot,
            Character.valueOf('H'),FeItems.shaft,});
      
      
      
      /* 斧 */
      //鉄の斧
      GameRegistry.addRecipe(new ItemStack(FeItems.feironaxe),
            new Object[]{" I ",
                      "ISI",
                      "SI ",
            Character.valueOf('I'),Items.iron_ingot,
            Character.valueOf('S'),FeItems.shaft,});
      //鋼の斧
      GameRegistry.addRecipe(new ItemStack(FeItems.festeelaxe),
            new Object[]{" S ",
                      "SHS",
                      "HS ",
            Character.valueOf('S'),FeItems.steel_ingot,
            Character.valueOf('H'),FeItems.shaft,});
      //銀の斧
      GameRegistry.addRecipe(new ItemStack(FeItems.fesilveraxe),
            new Object[]{" S ",
                      "SHS",
                      "HS ",
            Character.valueOf('S'),FeItems.silver_ingot,
            Character.valueOf('H'),FeItems.shaft,});
      
      
      
      /* その他 */
      //傷薬
      GameRegistry.addShapelessRecipe(new ItemStack(FeItems.ointment),
            new ItemStack(FeItems.cream,1),
            Items.glass_bottle);
   }

}

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by suteppi » 2017年10月05日(木) 18:56

1.12.2 Forge14.23.0.249でPickaxeにデフォルトでエンチャントを付ける方法を教えてください。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by 黒の剣士 コロン » 2017年10月01日(日) 18:56

technedeで作ったものを防具の見た目にしたいです。あとチェストプレートを付けたらクリエイティブ飛行ができるようにしたいです。バカ(私)でもわかるように説明をお願いします。1.7.10です。

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by zacco320 » 2017年9月30日(土) 23:38

elise_blacklab さんが書きました:1.10.2では,ItemStackはまだNullableなので,getHeldItemOffHand()で取得したものがnullかもしれない.
他にもItemStackの扱いで,getItemを判定するにはほぼ必ずnullチェックが必要です.


返信ありがとうございます、無事作動しました!

Re: 【総合】トピック立てるまでもない質問【Mod制作】

投稿記事 by elise_blacklab » 2017年9月30日(土) 20:38

zacco320 さんが書きました:Modで追加したアイテムをメインハンドに持った時にポーション効果付与、さらに別のModアイテムをオフハンドに所持したときに
別のポーション効果が追加されるという使用にしたいのですが、どうにもアイテムをインベントリに入れようとすると停止してしまいます。
zacco320 さんが書きました:if(player.getHeldItemOffhand().getItem() == ModTools.nikkari || player.getHeldItemOffhand().getItem() == ModTools.okurikara) {
         player.addPotionEffect(new PotionEffect(MobEffects.STRENGTH, 0, 1));
         }

1.10.2では,ItemStackはまだNullableなので,getHeldItemOffHand()で取得したものがnullかもしれない.
他にもItemStackの扱いで,getItemを判定するにはほぼ必ずnullチェックが必要です.

ページトップ

cron

x