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

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.244006)

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

投稿記事by marisa12348 » 2015年8月21日(金) 23:34

こんにちは。
最近Mod制作を始めたものです。
私は武器追加Modを作っています。
武器を作ったのはいいのですが、その武器を作るためのレシピを追加する方法がわかりません。
既にあるアイテムなどのレシピ追加方法はわかります
自分のModの武器のレシピ追加方法がわからないのです。
wikiのレシピ追加方法に目を通したり、検索エンジンで検索してみましたが
自分の検索スキルが足りないのかもしれませんがわかりませんでした
バージョンは
1.7.10
forge-1.7.10-10.13.4.1492
です
わかる方がおられましたら回答お願いします
もっだー始めました
鬼畜mod作成ちう
marisa12348
ID:c1659402
水から上がったとこ
 
記事: 3
登録日時: 2015年8月21日(金) 23:18

  • (PostNo.244007)

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

投稿記事by ryokusitai » 2015年8月21日(金) 23:56

mistio100 さんが書きました:こんにちは。
現在、武器追加Modを作っている者なのですが、剣をもって右クリックすると自分にポーション効果が付与される武器を作っています。
そこで、そのポーション効果の付与にクールダウンを付けたいのですが、そのクールダウンの付け方がわかりません。

コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);

   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
    {
      player.addPotionEffect(StrengthEffect);

        return itemstack;
    }



}


これがコードです。
手が空いている方でよろしいので、どうか宜しくお願い致します。

もっといい方法もあると思いますが、ただそのような機能を実装するだけならそんなに難しくはないかと思います。
itemクラスにある毎tick呼び出されるメソッドを利用した例を紹介します。変数名とか変ですがご容赦ください。
一度発動すると次の発動までに3秒必要になってます。マインクラフトのバージョンが書かれていないためどのバージョンなのか良く分かりませんが、たぶん動くと思います。
私の試した環境は1.7.10です。
コード: 全て選択
ackage net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public final strengthCoolTime = 20 * 3;   // このポーション効果を発動するのに必要なクールタイム。1tickは0.05秒なので20tickなら1秒 つまり今回は3秒
   public coolTime = 0;      // この剣の現在の残りクールタイム
   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);

   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
   {
      // クライアントとサーバーの両方でやる必要はないのでサーバーのみで行う
      if (!world.isRemote) {
         // クールタイムが0なら効果が発動でき、クールタイムがセットされる
         if (coolTime == 0) {
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }
      }

      return itemstack;
   }

   /**
    * itemクラスにある毎tick呼び出されるメソッドをオーバーライドしてクールタイムを減らす処理を記述
    */
   @Override
   public void onUpdate(ItemStack stack, World world, Entity entity, int invSlot, boolean isHeldItem)
   {
      // クライアントとサーバーの両方でやる必要はないのでサーバーのみで行う
      if (!world.isRemote) {
         if (coolTime > 0) {
            coolTime--;
         }
      }
   }

}
Minecraft1.7.10のModderでした9割死亡。公開場所
A.K.さんが製作している1.2.5のEE2アドオンであるEEAAを1.7.10のProjectE環境に対応させたPEAAを公開しています。
その他「OldMassFabricator」、「MoonLightDetector(月光センサーMod)」など。
アバター
ryokusitai
ID:1725ac56
石炭掘り
 
記事: 243
登録日時: 2014年5月24日(土) 11:37

  • (PostNo.244012)

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

投稿記事by ryokusitai » 2015年8月22日(土) 00:11

marisa12348 さんが書きました:こんにちは。
最近Mod制作を始めたものです。
私は武器追加Modを作っています。
武器を作ったのはいいのですが、その武器を作るためのレシピを追加する方法がわかりません。
既にあるアイテムなどのレシピ追加方法はわかります
自分のModの武器のレシピ追加方法がわからないのです。
wikiのレシピ追加方法に目を通したり、検索エンジンで検索してみましたが
自分の検索スキルが足りないのかもしれませんがわかりませんでした
バージョンは
1.7.10
forge-1.7.10-10.13.4.1492
です
わかる方がおられましたら回答お願いします

アイテムの作成及び登録は出来ていると判断して説明します。今回の例のアイテムは武器ではありませんが方法は同じです。
まず作ったアイテムのインスタンスをフィールドとして作成します。
コード: 全て選択
public static Item chocolateBucket = new Item().setUnlocalizedName("ChocolateBucket");
public static Item chocolateBar = new ItemFood(2, 1.0F, false).setUnlocalizedName("ChocolateBar");

次にそのアイテムを登録します。
コード: 全て選択
GameRegistry.registerItem(chocolateBucket, "Chocolate Bucket");
GameRegistry.registerItem(chocolateBar, "Chocolate Bar");

ここまでは問題ないとして、レシピに指定する際はアイテム登録の時と同じインスタンスを利用します。
コード: 全て選択
GameRegistry.addShapelessRecipe(new ItemStack(chocolateBar, 8), new ItemStack(chocolateBucket));

かなりざっくりとした説明になってしまったので分からない部分がありましたらまた質問なさってください。
Minecraft1.7.10のModderでした9割死亡。公開場所
A.K.さんが製作している1.2.5のEE2アドオンであるEEAAを1.7.10のProjectE環境に対応させたPEAAを公開しています。
その他「OldMassFabricator」、「MoonLightDetector(月光センサーMod)」など。
アバター
ryokusitai
ID:1725ac56
石炭掘り
 
記事: 243
登録日時: 2014年5月24日(土) 11:37

  • (PostNo.244018)

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

投稿記事by marisa12348 » 2015年8月22日(土) 01:47

回答ありがとうございます。
試してみて、エラー等は出なかったのですがきちんとアイテムを作ることができません。
一応ソースを載せておきます
コード: 全て選択
package com.example.examplemod;

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;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;

@Mod(modid = "MarisaMod", version="β1.0")
public class ExampleMod
{
    public static final String MODID = "魔理沙Mod";
    public static final String VERSION = "1.0";
      public static Item sampleItemSword;
      @EventHandler
      public void preInit(FMLPreInitializationEvent event)
      {
         sampleItemSword = new ItemSword(Item.ToolMaterial.EMERALD)
         .setCreativeTab(CreativeTabs.tabCombat)
         .setUnlocalizedName("MarisaSword")
         .setTextureName("tex:Marisasword");
         GameRegistry.registerItem(sampleItemSword, "MarisaSword");
      }
      public static Item MarisaSword = new Item().setUnlocalizedName("MarisaSword");
      public void preInit1(FMLPreInitializationEvent event){
      GameRegistry.registerItem(MarisaSword, "MarisaSword");

    }
      public void preInit2(FMLPreInitializationEvent event)
      {
         GameRegistry.addRecipe(new ItemStack(MarisaSword),
         " 1 ",
         " 1 ",
         " 2 ",
         '1',Items.emerald,
         '2',Items.stick
         );         
}
}

何かわかりましたらまたご回答よろしくお願いします
最後に編集したユーザー marisa12348 [ 2015年8月22日(土) 12:18 ], 累計 1 回
もっだー始めました
鬼畜mod作成ちう
marisa12348
ID:c1659402
水から上がったとこ
 
記事: 3
登録日時: 2015年8月21日(金) 23:18

  • (PostNo.244030)

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

投稿記事by elise_blacklab » 2015年8月22日(土) 08:53

marisa12348 さんが書きました:回答ありがとうございます。
試してみて、エラー等は出なかったのですがきちんとアイテムを作ることができません。

いくつか気になる点を。
  • フィールド名はfinalでない場合英小文字から始めるのが普通です。
  • PreInitで呼び出されると想定したメソッドが不必要に3つありますが、そのうち2つは@EventHandlerがないため中に何を書いてもPreInitで呼び出されることはありません。ところが3つ全てに@EventHandlerをつければいいのかと訊かれるとそうでもなく。
    見たところそれぞれでアイテムの登録とレシピ登録を別々に行っていますが、これらのメソッドは同時に呼び出されるため、その処理順が不安定になります。
    レシピを登録する際は、それに使用するインスタンスが事前にきちんと初期化されていなければなりません。@EventHandlerのメソッドは1種類に1つに絞り、その中でアイテム登録→レシピ登録の順で処理を記述してください。
  • ソースコードにはspoilerではなくcodeを使用してください。
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:5f84d3cc
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.244033)

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

投稿記事by A.K. » 2015年8月22日(土) 09:24

elise_blacklab さんが書きました:
marisa12348 さんが書きました:回答ありがとうございます。
試してみて、エラー等は出なかったのですがきちんとアイテムを作ることができません。

いくつか気になる点を。
  • フィールド名はfinalでない場合英小文字から始めるのが普通です。
  • PreInitで呼び出されると想定したメソッドが不必要に3つありますが、そのうち2つは@EventHandlerがないため中に何を書いてもPreInitで呼び出されることはありません。ところが3つ全てに@EventHandlerをつければいいのかと訊かれるとそうでもなく。
    見たところそれぞれでアイテムの登録とレシピ登録を別々に行っていますが、これらのメソッドは同時に呼び出されるため、その処理順が不安定になります。
    レシピを登録する際は、それに使用するインスタンスが事前にきちんと初期化されていなければなりません。@EventHandlerのメソッドは1種類に1つに絞り、その中でアイテム登録→レシピ登録の順で処理を記述してください。
  • ソースコードにはspoilerではなくcodeを使用してください。

追記で。以下のように初期化イベントごとに扱う”べき”処理が決まっています。cpw.mods.fml.common.Modクラスに説明が(英語で)載ってますので、参照ください。
  • アイテム、ブロック登録はFMLPreInitializationEvent
  • レシピ、イベントハンドラー、アイテムブロック以外のその他の登録はFMLInitializationEvent
  • 他のMODとの連携に関わる処理等はFMLPostInitializationEvent

(追記)Message登録もPreInitでした。。。
Messageが何なのか分かんないでしょうが、一応分かる人のために。
最後に編集したユーザー A.K. [ 2015年8月22日(土) 14:08 ], 累計 1 回
もじんぐしたい。。。。
アバター
A.K.
ID:1e283ecf
ラピスラズリ収集家
 
記事: 1386
登録日時: 2012年9月03日(月) 19:34

  • (PostNo.244042)

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

投稿記事by mistio100 » 2015年8月22日(土) 10:59

ryokusitai さんが書きました:
mistio100 さんが書きました:こんにちは。
現在、武器追加Modを作っている者なのですが、剣をもって右クリックすると自分にポーション効果が付与される武器を作っています。
そこで、そのポーション効果の付与にクールダウンを付けたいのですが、そのクールダウンの付け方がわかりません。

コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);

   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
    {
      player.addPotionEffect(StrengthEffect);

        return itemstack;
    }



}


これがコードです。
手が空いている方でよろしいので、どうか宜しくお願い致します。

もっといい方法もあると思いますが、ただそのような機能を実装するだけならそんなに難しくはないかと思います。
itemクラスにある毎tick呼び出されるメソッドを利用した例を紹介します。変数名とか変ですがご容赦ください。
一度発動すると次の発動までに3秒必要になってます。マインクラフトのバージョンが書かれていないためどのバージョンなのか良く分かりませんが、たぶん動くと思います。
私の試した環境は1.7.10です。
コード: 全て選択
ackage net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public final strengthCoolTime = 20 * 3;   // このポーション効果を発動するのに必要なクールタイム。1tickは0.05秒なので20tickなら1秒 つまり今回は3秒
   public coolTime = 0;      // この剣の現在の残りクールタイム
   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);

   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
   {
      // クライアントとサーバーの両方でやる必要はないのでサーバーのみで行う
      if (!world.isRemote) {
         // クールタイムが0なら効果が発動でき、クールタイムがセットされる
         if (coolTime == 0) {
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }
      }

      return itemstack;
   }

   /**
    * itemクラスにある毎tick呼び出されるメソッドをオーバーライドしてクールタイムを減らす処理を記述
    */
   @Override
   public void onUpdate(ItemStack stack, World world, Entity entity, int invSlot, boolean isHeldItem)
   {
      // クライアントとサーバーの両方でやる必要はないのでサーバーのみで行う
      if (!world.isRemote) {
         if (coolTime > 0) {
            coolTime--;
         }
      }
   }

}


回答ありがとうございます!
勉強になりました。
バージョンに関しては1.7.10でいいので問題はありませんが、明記するべきでしたね。失礼しました。
CustomNPCs日本語Wikiの管理者です。
http://customnpcs.wiki.fc2.com/
面白いMODなので見てみてください。

ADVMAP製作中
http://customnpcs.jimdo.com/
アバター
mistio100
ID:e35aae98
石掘り
 
記事: 79
登録日時: 2013年1月25日(金) 16:19
お住まい: PCの中

  • (PostNo.244052)

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

投稿記事by marisa12348 » 2015年8月22日(土) 12:16

elise_blacklabさん,A.K.さん
ご回答、ご指摘ありがとうございます。
ご指摘された通りにコードを書き換えたら武器を作ることができました
ありがとうございます
もっだー始めました
鬼畜mod作成ちう
marisa12348
ID:c1659402
水から上がったとこ
 
記事: 3
登録日時: 2015年8月21日(金) 23:18

  • (PostNo.244065)

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

投稿記事by Silvers_Cat » 2015年8月22日(土) 13:32

Chespin さんが書きました:久しぶりです。forge-1.7.10-10.13.4.1448-1.7.10-srcの開発環境を構築して、起動しようとしたところエラーで起動しませんでした(´・ω・`)おまけにそのエラーが2行しかないんです。内容としてはエラー: メイン・クラスGradleStartが見つからなかったかロードできませんでした
Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
です。構築手順としては
1.Forgeとかいろいろ落とす
2.setupDevWorkspaceタスクは、eclipseタスクの依存タスクだという噂を聞いたのでgradlew eclipseを実行。
3.BUILD SUCCESSFUL←異常なほど速い
4.起動すんぞー
5.エラー
というかんじです。なにか間違っているんでしょうか?

install.batを作ったら解決しました。
アバター
Silvers_Cat
ID:e128f9eb
石掘り
 
記事: 128
登録日時: 2015年3月29日(日) 12:22
お住まい: Microsoft Windows 10 Pro

  • (PostNo.244093)

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

投稿記事by mistio100 » 2015年8月22日(土) 18:19

mistio100 さんが書きました:こんにちは。
現在、武器追加Modを作っている者なのですが、剣をもって右クリックすると自分にポーション効果が付与される武器を作っています。
そこで、そのポーション効果の付与にクールダウンを付けたいのですが、そのクールダウンの付け方がわかりません。

コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);

   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player)
    {
      player.addPotionEffect(StrengthEffect);

        return itemstack;
    }



}


これがコードです。
手が空いている方でよろしいので、どうか宜しくお願い致します。


こちらの質問をした者なのですが、回答通りにプログラムを組んだものの、一回目は動作するのですが、二回目以降からはポーション効果が付与されず、クールタイムのみが適用されるようになってしまいました。
原因が掴めないので、心当たりのある方がいましたら、回答の程宜しくお願い致します。
Minecraft 1.7.10
Forge Ver 1.7.10-10.13.2.1291

以下がコードになります。
コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public final int strengthCoolTime = 20 * 15;
   public int coolTime = 0;

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);


   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
   {
      if (!world.isRemote) {
         if (coolTime == 0) {
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }

      }
      return stack;
      
   }

   @Override
   public void onUpdate(ItemStack stack, World world, Entity entity, int invSlot, boolean isHeldItem)
   {
      if (!world.isRemote) {
         if (coolTime > 0) {
            coolTime--;
         }
      }
   }

}
CustomNPCs日本語Wikiの管理者です。
http://customnpcs.wiki.fc2.com/
面白いMODなので見てみてください。

ADVMAP製作中
http://customnpcs.jimdo.com/
アバター
mistio100
ID:e35aae98
石掘り
 
記事: 79
登録日時: 2013年1月25日(金) 16:19
お住まい: PCの中

  • (PostNo.244135)

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

投稿記事by ゲスト » 2015年8月23日(日) 00:11

IEntityAdditionalSpawnDataを使い既存Entityにパラメーターを追加するにはどのようにすればいいのでしょうか?
ゲスト
ID:acd22146
 

  • (PostNo.244147)

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

投稿記事by ryokusitai » 2015年8月23日(日) 02:28

mistio100 さんが書きました:
mistio100 さんが書きました:----省略----


こちらの質問をした者なのですが、回答通りにプログラムを組んだものの、一回目は動作するのですが、二回目以降からはポーション効果が付与されず、クールタイムのみが適用されるようになってしまいました。
原因が掴めないので、心当たりのある方がいましたら、回答の程宜しくお願い致します。
Minecraft 1.7.10
Forge Ver 1.7.10-10.13.2.1291

以下がコードになります。
コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public final int strengthCoolTime = 20 * 15;
   public int coolTime = 0;

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);


   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
   {
      if (!world.isRemote) {
         if (coolTime == 0) {
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }

      }
      return stack;
      
   }

   @Override
   public void onUpdate(ItemStack stack, World world, Entity entity, int invSlot, boolean isHeldItem)
   {
      if (!world.isRemote) {
         if (coolTime > 0) {
            coolTime--;
         }
      }
   }

}

たまたま私のテストの時の記述でこの問題を回避できてしまっていたため気がつきませんでした。申し訳ないです。
この問題、一番最初のコードの時点で既に発生していたのではないでしょうか?
原因は
コード: 全て選択
PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);
ここです。
最初に一回生成したポーションエフェクトを何度も呼び出しています。
無駄にポーションエフェクトを生成しないようにということだとおもうのですが、結果として2回目以降の呼び出しでは
残り時間が0秒になったポーション効果を呼び出しているという扱いになっているようですね。
呼び出し自体は成功しているのですが、既に効果時間は切れているため発動しない(発動した瞬間に効果が切れる)ということのようです。
効果時間を再設定できるようなメソッドはないようなので毎回生成するしかないかと思います。
なので最初はフィールドの宣言だけを行っておき
コード: 全て選択
PotionEffect StrengthEffect;

このメソッド内でインスタンスを毎回生成するように
コード: 全て選択
@Override
   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
   {
      if (!world.isRemote) {
         if (coolTime == 0) {
            StrengthEffect = new PotionEffect(5, 200, 1);
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }

      }
      return stack;
      
   }

と書き換えれば動くのではないかと思います。
Minecraft1.7.10のModderでした9割死亡。公開場所
A.K.さんが製作している1.2.5のEE2アドオンであるEEAAを1.7.10のProjectE環境に対応させたPEAAを公開しています。
その他「OldMassFabricator」、「MoonLightDetector(月光センサーMod)」など。
アバター
ryokusitai
ID:1725ac56
石炭掘り
 
記事: 243
登録日時: 2014年5月24日(土) 11:37

  • (PostNo.244184)

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

投稿記事by mistio100 » 2015年8月23日(日) 10:21

ryokusitai さんが書きました:
mistio100 さんが書きました:
mistio100 さんが書きました:----省略----


こちらの質問をした者なのですが、回答通りにプログラムを組んだものの、一回目は動作するのですが、二回目以降からはポーション効果が付与されず、クールタイムのみが適用されるようになってしまいました。
原因が掴めないので、心当たりのある方がいましたら、回答の程宜しくお願い致します。
Minecraft 1.7.10
Forge Ver 1.7.10-10.13.2.1291

以下がコードになります。
コード: 全て選択
package net.mistio.HolyAndDarkSwords.Items;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;

public class Holy_Dark_Sword extends Unbreakable_Sword{

   public final int strengthCoolTime = 20 * 15;
   public int coolTime = 0;

   public float efficiencyOnProperMaterial = 4.0F;
   PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);


   public Holy_Dark_Sword(ToolMaterial p_i45356_1_) {
      super(p_i45356_1_);
      this.efficiencyOnProperMaterial = p_i45356_1_.getEfficiencyOnProperMaterial();
   }

   @Override
   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
   {
      if (!world.isRemote) {
         if (coolTime == 0) {
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }

      }
      return stack;
      
   }

   @Override
   public void onUpdate(ItemStack stack, World world, Entity entity, int invSlot, boolean isHeldItem)
   {
      if (!world.isRemote) {
         if (coolTime > 0) {
            coolTime--;
         }
      }
   }

}

たまたま私のテストの時の記述でこの問題を回避できてしまっていたため気がつきませんでした。申し訳ないです。
この問題、一番最初のコードの時点で既に発生していたのではないでしょうか?
原因は
コード: 全て選択
PotionEffect StrengthEffect = new PotionEffect(5, 200, 1);
ここです。
最初に一回生成したポーションエフェクトを何度も呼び出しています。
無駄にポーションエフェクトを生成しないようにということだとおもうのですが、結果として2回目以降の呼び出しでは
残り時間が0秒になったポーション効果を呼び出しているという扱いになっているようですね。
呼び出し自体は成功しているのですが、既に効果時間は切れているため発動しない(発動した瞬間に効果が切れる)ということのようです。
効果時間を再設定できるようなメソッドはないようなので毎回生成するしかないかと思います。
なので最初はフィールドの宣言だけを行っておき
コード: 全て選択
PotionEffect StrengthEffect;

このメソッド内でインスタンスを毎回生成するように
コード: 全て選択
@Override
   public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
   {
      if (!world.isRemote) {
         if (coolTime == 0) {
            StrengthEffect = new PotionEffect(5, 200, 1);
            player.addPotionEffect(StrengthEffect);
            coolTime = strengthCoolTime;
         }

      }
      return stack;
      
   }

と書き換えれば動くのではないかと思います。


なるほど、そういうことですか。
毎度毎度ご迷惑をおかけします。
ありがとうございました。
CustomNPCs日本語Wikiの管理者です。
http://customnpcs.wiki.fc2.com/
面白いMODなので見てみてください。

ADVMAP製作中
http://customnpcs.jimdo.com/
アバター
mistio100
ID:5f84d3cc
石掘り
 
記事: 79
登録日時: 2013年1月25日(金) 16:19
お住まい: PCの中

  • (PostNo.244780)

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

投稿記事by Silvers_Cat » 2015年8月26日(水) 19:40

こんばんわ。私は鉱石ブロックを作ろうと思い、ブロックを追加したはいいものの、そのブロックを地下に生成する方法がわかりません。とりあえず、「Minecraft Modding Ore」とか「Minecraft Modding 鉱石追加」とか検索しましたが、いまいちよくわかりません。どうやるんでしょうか?
ソースコード(前よりは綺麗だと思う、多分)
コード: 全て選択
package mod_Core;

   import java.util.Random;

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.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

   public class Gico_Ore_block_Core extends Block
   {
       @SideOnly(Side.CLIENT)
       private IIcon TopIcon;

       @SideOnly(Side.CLIENT)
       private IIcon SideIcon;

       public Gico_Ore_block_Core() {
           super(Material.rock);
           setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/
           setBlockName("Gico_Ore_block");/*システム名の設定*/
           setBlockTextureName("nextpowercraft:gico_block");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/
           setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/
           setHardness(7.0F);/*硬さ*/
       }

       @Override
       public int quantityDropped(int meta, int fortune, Random random){
           //ドロップするアイテムを返す
           return quantityDroppedWithBonus(fortune, random);
       }

       @Override
       public int quantityDropped(Random random){
           //ドロップさせる量を返す
           return 1;
       }

       @Override
       @SideOnly(Side.CLIENT)
       public void registerBlockIcons(IIconRegister par1IconRegister)
       {
           this.TopIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block");
           this.SideIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block_side");
       }

       @SideOnly(Side.CLIENT)
       public IIcon getIcon(int par1, int par2)
       {
            if(par1 == 0 || par1 == 1)
            {
                     return TopIcon;
            }
            else
            {
                     return SideIcon;
            }
       }
   }
アバター
Silvers_Cat
ID:e128f9eb
石掘り
 
記事: 128
登録日時: 2015年3月29日(日) 12:22
お住まい: Microsoft Windows 10 Pro

  • (PostNo.244819)

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

投稿記事by noriokun4649 » 2015年8月26日(水) 22:59

Chespin さんが書きました:こんばんわ。私は鉱石ブロックを作ろうと思い、ブロックを追加したはいいものの、そのブロックを地下に生成する方法がわかりません。とりあえず、「Minecraft Modding Ore」とか「Minecraft Modding 鉱石追加」とか検索しましたが、いまいちよくわかりません。どうやるんでしょうか?
ソースコード(前よりは綺麗だと思う、多分)
コード: 全て選択
package mod_Core;

   import java.util.Random;

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.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

   public class Gico_Ore_block_Core extends Block
   {
       @SideOnly(Side.CLIENT)
       private IIcon TopIcon;

       @SideOnly(Side.CLIENT)
       private IIcon SideIcon;

       public Gico_Ore_block_Core() {
           super(Material.rock);
           setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/
           setBlockName("Gico_Ore_block");/*システム名の設定*/
           setBlockTextureName("nextpowercraft:gico_block");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/
           setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/
           setHardness(7.0F);/*硬さ*/
       }

       @Override
       public int quantityDropped(int meta, int fortune, Random random){
           //ドロップするアイテムを返す
           return quantityDroppedWithBonus(fortune, random);
       }

       @Override
       public int quantityDropped(Random random){
           //ドロップさせる量を返す
           return 1;
       }

       @Override
       @SideOnly(Side.CLIENT)
       public void registerBlockIcons(IIconRegister par1IconRegister)
       {
           this.TopIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block");
           this.SideIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block_side");
       }

       @SideOnly(Side.CLIENT)
       public IIcon getIcon(int par1, int par2)
       {
            if(par1 == 0 || par1 == 1)
            {
                     return TopIcon;
            }
            else
            {
                     return SideIcon;
            }
       }
   }

http://blogs.yahoo.co.jp/saganyandayo/38885551.html
こちらが参考になるかと
1.7.2 ですが1.7.10 でも動きます
質問した問題を解決に導いてくれた人には感謝の気持ちを忘れずに・・・・・・
プラスチックMOD・サイコパスMOD・AlmightyMOD・TorchBowMod・PowerManegerModなどを作成&配布しています→こちら
お問い合わせはこちら→https://noriokun4649.ddo.jp
プラスチックMODは絶賛IC2と連携作業中! こんな風に連携してほしい!など要望があればPMなどでお願いします。
アバター
noriokun4649
ID:358ab5aa
鉄鉱掘り
 
記事: 300
登録日時: 2014年12月26日(金) 12:37

  • (PostNo.244902)

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

投稿記事by Silvers_Cat » 2015年8月27日(木) 17:38

noriokun4649 さんが書きました:
Chespin さんが書きました:こんばんわ。私は鉱石ブロックを作ろうと思い、ブロックを追加したはいいものの、そのブロックを地下に生成する方法がわかりません。とりあえず、「Minecraft Modding Ore」とか「Minecraft Modding 鉱石追加」とか検索しましたが、いまいちよくわかりません。どうやるんでしょうか?

http://blogs.yahoo.co.jp/saganyandayo/38885551.html
こちらが参考になるかと
1.7.2 ですが1.7.10 でも動きます

noriokun4649さん、出来ました!有り難うございます!
アバター
Silvers_Cat
ID:e128f9eb
石掘り
 
記事: 128
登録日時: 2015年3月29日(日) 12:22
お住まい: Microsoft Windows 10 Pro

  • (PostNo.244928)

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

投稿記事by Silvers_Cat » 2015年8月27日(木) 20:33

Chespin さんが書きました:こんばんわ。私は鉱石ブロックを作ろうと思い、ブロックを追加したはいいものの、そのブロックを地下に生成する方法がわかりません。とりあえず、「Minecraft Modding Ore」とか「Minecraft Modding 鉱石追加」とか検索しましたが、いまいちよくわかりません。どうやるんでしょうか?

また私です( ;´∀`)
今度はブロックから特定のアイテム(自分のModで追加)をドロップされる方法がわかりません。(つまり :odi::dia: とか)
どうすればいいでしょうか?
ソースコード
Gico_Ore_block_Core(鉱石ブロックを追加している)
コード: 全て選択
package mod_Core;
 
import java.util.Random;

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.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class Gico_Ore_block_Core extends Block
{
    @SideOnly(Side.CLIENT)
    private IIcon TopIcon;
 
    @SideOnly(Side.CLIENT)
    private IIcon SideIcon;
 
    public Gico_Ore_block_Core() {
        super(Material.rock);
        setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/
        setBlockName("Gico_Ore_block");/*システム名の設定*/
        setBlockTextureName("nextpowercraft:gico_ore_block");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/
        /*以下のものは消しても結構です*/
        setHardness(1.5F);/*硬さ*/
        setResistance(1.0F);/*爆破耐性*/
        setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/
    }
 
 
    @Override
    public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player){
        //ブロックを左クリックした際の動作
    }
 
    @Override
    public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock){
        //周囲のブロックが更新された際の動作
    }
 
    @Override
    public int quantityDropped(int meta, int fortune, Random random){
        //ドロップするアイテムを返す
        return quantityDroppedWithBonus(fortune, random);
    }
 
    @Override
    public int quantityDropped(Random random){
        //ドロップさせる量を返す
        return 1;
    }
 
    @Override
    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister par1IconRegister)
    {
        this.TopIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block");
        this.SideIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block_side");
    }
 
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int par1, int par2)
    {
         if(par1 == 0 || par1 == 1)
         {
                  return TopIcon;
         }
         else
         {
                  return SideIcon;
         }
    }
}

Item_Core(アイテム&ブロックの変数とか)
コード: 全て選択
package mod_Core;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
public class Item_Core {
   public static Item Refined_iron;
   public static Block Refined_iron_Block;
   public static Block Gico_block;
   public static Block Gico_Ore_block;
   public static Block Husagico_block;
   public static Item Gico;
   public static Block Ahya_block;
   @EventHandler
   public static void init(FMLInitializationEvent event)
   {
      Refined_iron = new Item()
      .setCreativeTab(CreativeTabs.tabMaterials)
      .setUnlocalizedName("Refined_iron")
      .setTextureName("nextpowercraft:refined_iron_ingot")
      .setMaxStackSize(64);
      GameRegistry.registerItem(Refined_iron, "Refined_iron");

      Gico = new Item()
      .setCreativeTab(CreativeTabs.tabMaterials)
      .setUnlocalizedName("Gico")
      .setTextureName("nextpowercraft:gico")
      .setMaxStackSize(64);
      GameRegistry.registerItem(Gico, "Gico");

      //ブロックのインスタンス生成
      Refined_iron_Block = new Refined_iron_ingot_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Refined_iron_Block, "Refined_iron_Block");

      //ブロックのインスタンス生成
      Gico_block = new Gico_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Gico_block, "Gico_block");
      
      //ブロックのインスタンス生成
      Gico_Ore_block = new Gico_Ore_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Gico_Ore_block, "Gico_Ore_block");
      
      
      //ブロックのインスタンス生成
      Ahya_block = new Ahya_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Ahya_block, "Ahya_block");

      //ブロックのインスタンス生成
      Husagico_block = new Husagico_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Husagico_block, "Husagico_block");
      
      //追加鉱石ブロックのワールド生成
      Gico_Ore_Maker eventmanager = new Gico_Ore_Maker();
      GameRegistry.registerWorldGenerator(eventmanager, 0);
   }
}



追伸:アイテムのシステム名は「Gico」です。
アバター
Silvers_Cat
ID:e128f9eb
石掘り
 
記事: 128
登録日時: 2015年3月29日(日) 12:22
お住まい: Microsoft Windows 10 Pro

  • (PostNo.245058)

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

投稿記事by GluckLeute » 2015年8月28日(金) 21:26

Chespin さんが書きました:
Chespin さんが書きました:こんばんわ。私は鉱石ブロックを作ろうと思い、ブロックを追加したはいいものの、そのブロックを地下に生成する方法がわかりません。とりあえず、「Minecraft Modding Ore」とか「Minecraft Modding 鉱石追加」とか検索しましたが、いまいちよくわかりません。どうやるんでしょうか?

また私です( ;´∀`)
今度はブロックから特定のアイテム(自分のModで追加)をドロップされる方法がわかりません。(つまり :odi::dia: とか)
どうすればいいでしょうか?
ソースコード
Gico_Ore_block_Core(鉱石ブロックを追加している)
コード: 全て選択
package mod_Core;
 
import java.util.Random;

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.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class Gico_Ore_block_Core extends Block
{
    @SideOnly(Side.CLIENT)
    private IIcon TopIcon;
 
    @SideOnly(Side.CLIENT)
    private IIcon SideIcon;
 
    public Gico_Ore_block_Core() {
        super(Material.rock);
        setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/
        setBlockName("Gico_Ore_block");/*システム名の設定*/
        setBlockTextureName("nextpowercraft:gico_ore_block");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/
        /*以下のものは消しても結構です*/
        setHardness(1.5F);/*硬さ*/
        setResistance(1.0F);/*爆破耐性*/
        setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/
    }
 
 
    @Override
    public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player){
        //ブロックを左クリックした際の動作
    }
 
    @Override
    public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock){
        //周囲のブロックが更新された際の動作
    }
 
    @Override
    public int quantityDropped(int meta, int fortune, Random random){
        //ドロップするアイテムを返す
        return quantityDroppedWithBonus(fortune, random);
    }
 
    @Override
    public int quantityDropped(Random random){
        //ドロップさせる量を返す
        return 1;
    }
 
    @Override
    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister par1IconRegister)
    {
        this.TopIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block");
        this.SideIcon = par1IconRegister.registerIcon("nextpowercraft:gico_ore_block_side");
    }
 
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int par1, int par2)
    {
         if(par1 == 0 || par1 == 1)
         {
                  return TopIcon;
         }
         else
         {
                  return SideIcon;
         }
    }
}

Item_Core(アイテム&ブロックの変数とか)
コード: 全て選択
package mod_Core;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
public class Item_Core {
   public static Item Refined_iron;
   public static Block Refined_iron_Block;
   public static Block Gico_block;
   public static Block Gico_Ore_block;
   public static Block Husagico_block;
   public static Item Gico;
   public static Block Ahya_block;
   @EventHandler
   public static void init(FMLInitializationEvent event)
   {
      Refined_iron = new Item()
      .setCreativeTab(CreativeTabs.tabMaterials)
      .setUnlocalizedName("Refined_iron")
      .setTextureName("nextpowercraft:refined_iron_ingot")
      .setMaxStackSize(64);
      GameRegistry.registerItem(Refined_iron, "Refined_iron");

      Gico = new Item()
      .setCreativeTab(CreativeTabs.tabMaterials)
      .setUnlocalizedName("Gico")
      .setTextureName("nextpowercraft:gico")
      .setMaxStackSize(64);
      GameRegistry.registerItem(Gico, "Gico");

      //ブロックのインスタンス生成
      Refined_iron_Block = new Refined_iron_ingot_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Refined_iron_Block, "Refined_iron_Block");

      //ブロックのインスタンス生成
      Gico_block = new Gico_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Gico_block, "Gico_block");
      
      //ブロックのインスタンス生成
      Gico_Ore_block = new Gico_Ore_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Gico_Ore_block, "Gico_Ore_block");
      
      
      //ブロックのインスタンス生成
      Ahya_block = new Ahya_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Ahya_block, "Ahya_block");

      //ブロックのインスタンス生成
      Husagico_block = new Husagico_block_Core();
      //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerBlock(Husagico_block, "Husagico_block");
      
      //追加鉱石ブロックのワールド生成
      Gico_Ore_Maker eventmanager = new Gico_Ore_Maker();
      GameRegistry.registerWorldGenerator(eventmanager, 0);
   }
}



追伸:アイテムのシステム名は「Gico」です。

コード: 全て選択
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
    {
        return Item_Core.Gico;
    }

こう記述すればできると思います。
MOD開発したり居眠りしたりしています。
よろしくお願いします。
[1.7.10]AlchimiaCraft[錬金術MOD]

Twitterで開発状況をつぶやいていたりいなかったり。
GluckLeute
ID:ab4cd5e4
木を殴ってる
 
記事: 36
登録日時: 2015年3月12日(木) 19:40

  • (PostNo.245107)

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

投稿記事by Silvers_Cat » 2015年8月29日(土) 09:01

GluckLeute さんが書きました:
コード: 全て選択
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
    {
        return Item_Core.Gico;
    }

こう記述すればできると思います。

出来ました!有り難うございます!
アバター
Silvers_Cat
ID:e128f9eb
石掘り
 
記事: 128
登録日時: 2015年3月29日(日) 12:22
お住まい: Microsoft Windows 10 Pro

  • (PostNo.245129)

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

投稿記事by GluckLeute » 2015年8月29日(土) 12:45

Fireballを連続で発射するアイテムを作りたいのですがうまくできません
どうしたらいいでしょうか?
コード: 全て選択
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
    {
      EntitySmallFireball entitysmallfireball = new EntitySmallFireball(world);
      world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
      
      if (!world.isRemote)
        {
           Vec3 look = player.getLookVec();
           
           player.setPosition(
           player.posX + look.xCoord * 2,
           player.posY + look.yCoord * 2,
           player.posZ + look.zCoord * 2);
           entitysmallfireball.accelerationX = look.xCoord * 0.1;
           entitysmallfireball.accelerationY = look.yCoord * 0.1;
           entitysmallfireball.accelerationZ = look.zCoord * 0.1;
           world.spawnEntityInWorld(entitysmallfireball);
        }
   }

Fireballを発射の方法を調べたのですが、onPlayerStoppedUsingをつかって弓のように引き絞って撃つといったものばかりで
連続で発射する方法がわからないので質問させていただきました
forge-1.7.10-10.13.2.1291
MOD開発したり居眠りしたりしています。
よろしくお願いします。
[1.7.10]AlchimiaCraft[錬金術MOD]

Twitterで開発状況をつぶやいていたりいなかったり。
GluckLeute
ID:ab4cd5e4
木を殴ってる
 
記事: 36
登録日時: 2015年3月12日(木) 19:40

1つ前へ次へ

Return to 質問:開発・制作関連

x