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

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

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

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

Forge1.10.2でアイテム追加modの作成中です。

Modで追加したアイテムをメインハンドに持った時にポーション効果付与、さらに別のModアイテムをオフハンドに所持したときに
別のポーション効果が追加されるという使用にしたいのですが、どうにもアイテムをインベントリに入れようとすると停止してしまいます。
アイテムをメインハンドに所持している場合に行われるものを参考に手を加えたのですが間違いを指摘していただけると幸いです。

コード: 全て選択
     @Override
   public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean inHand) {
      super.onUpdate(itemStack, world, entity, slot, inHand);

      if(entity instanceof EntityPlayer && inHand) {
         EntityPlayer player = (EntityPlayer) entity;
         player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 0, 0));
        if(player.getHeldItemOffhand().getItem() == ModTools.nikkari || player.getHeldItemOffhand().getItem() == ModTools.okurikara) {
         player.addPotionEffect(new PotionEffect(MobEffects.STRENGTH, 0, 1));
         }
      }
   }



クラッシュレポートです
[17:30:46] [Client thread/INFO]: Setting user: Player469
[17:30:49] [Client thread/WARN]: Skipping bad option: lastServer:
[17:30:49] [Client thread/INFO]: LWJGL Version: 2.9.4
[17:30:52] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Touken Mod, FMLFileResourcePack:EBLib, FMLFileResourcePack:LittleMaidReengaged, FMLFileResourcePack:Waila, FMLFileResourcePack:Waila Harvestability
[17:30:56] [Sound Library Loader/INFO]: Starting up SoundSystem...
[17:30:56] [Thread-8/INFO]: Initializing LWJGL OpenAL
[17:30:56] [Thread-8/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[17:30:56] [Thread-8/INFO]: OpenAL initialized.
[17:30:56] [Sound Library Loader/INFO]: Sound engine started
[17:31:00] [Client thread/INFO]: Created: 16x16 textures-atlas
[17:31:02] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Touken Mod, FMLFileResourcePack:EBLib, FMLFileResourcePack:LittleMaidReengaged, FMLFileResourcePack:Waila, FMLFileResourcePack:Waila Harvestability, SoundPackLMR, OldTexturesLoader
[17:31:05] [Client thread/INFO]: SoundSystem shutting down...
[17:31:05] [Client thread/WARN]: Author: Paul Lamb, http://www.paulscode.com
[17:31:05] [Sound Library Loader/INFO]: Starting up SoundSystem...
[17:31:05] [Thread-12/INFO]: Initializing LWJGL OpenAL
[17:31:05] [Thread-12/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[17:31:05] [Thread-12/INFO]: OpenAL initialized.
[17:31:06] [Sound Library Loader/INFO]: Sound engine started
[17:31:09] [Client thread/INFO]: Created: 512x512 textures-atlas
[17:31:10] [Client thread/WARN]: Skipping bad option: lastServer:
[17:31:13] [Realms Notification Availability checker #1/INFO]: Could not authorize you against Realms server: Invalid session id
[17:31:19] [Client thread/INFO]: Deleting level New World-
[17:31:19] [Client thread/INFO]: Attempt 1...
[17:31:22] [Client thread/INFO]: Deleting level New World2
[17:31:22] [Client thread/INFO]: Attempt 1...
[17:31:26] [Server thread/INFO]: Starting integrated minecraft server version 1.10.2
[17:31:26] [Server thread/INFO]: Generating keypair
[17:31:27] [Server thread/INFO]: Preparing start region for level 0
[17:31:28] [Server thread/INFO]: Preparing spawn area: 10%
[17:31:29] [Server thread/INFO]: Preparing spawn area: 24%
[17:31:30] [Server thread/INFO]: Preparing spawn area: 40%
[17:31:31] [Server thread/INFO]: Preparing spawn area: 56%
[17:31:32] [Server thread/INFO]: Preparing spawn area: 73%
[17:31:33] [Server thread/INFO]: Preparing spawn area: 89%
[17:31:34] [Server thread/INFO]: Changing view distance to 12, from 10
[17:31:35] [Server thread/INFO]: Player469[local:E:ab46a4f9] logged in with entity id 2181 at (212.5, 72.0, 230.5)
[17:31:35] [Server thread/INFO]: Player469 joined the game
[17:31:37] [pool-2-thread-1/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@73556abd[id=11e12ca9-fda1-31b6-8f92-6e251e7a18f2,name=Player469,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:65) ~[YggdrasilAuthenticationService.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:175) [YggdrasilMinecraftSessionService.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:59) [YggdrasilMinecraftSessionService$1.class:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:56) [YggdrasilMinecraftSessionService$1.class:?]
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache.get(LocalCache.java:3934) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) [guava-17.0.jar:?]
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) [guava-17.0.jar:?]
at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:165) [YggdrasilMinecraftSessionService.class:?]
at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3060) [Minecraft.class:?]
at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:131) [SkinManager$3.class:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[17:31:40] [Server thread/INFO]: Saving and pausing game...
[17:31:40] [Server thread/INFO]: Saving chunks for level 'New World2'/Overworld
[17:31:41] [Server thread/INFO]: Saving chunks for level 'New World2'/Nether
[17:31:41] [Server thread/INFO]: Saving chunks for level 'New World2'/The End
[17:32:00] [Server thread/INFO]: Player469 has just earned the achievement [Taking Inventory]
[17:32:00] [Client thread/INFO]: [CHAT] Player469 has just earned the achievement [Taking Inventory]
[17:32:08] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Ticking player
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:212) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:807) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:688) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:537) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.lang.NullPointerException
at toukenmod.items.wakizashi.ItemHonebami.onUpdate(ItemHonebami.java:28) ~[ItemHonebami.class:?]
at net.minecraft.item.ItemStack.updateAnimation(ItemStack.java:524) ~[ItemStack.class:?]
at net.minecraft.entity.player.InventoryPlayer.decrementAnimations(InventoryPlayer.java:389) ~[InventoryPlayer.class:?]
at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:560) ~[EntityPlayer.class:?]
at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2225) ~[EntityLivingBase.class:?]
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:260) ~[EntityPlayer.class:?]
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:345) ~[EntityPlayerMP.class:?]
at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:174) ~[NetHandlerPlayServer.class:?]
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:216) ~[NetworkDispatcher$1.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:309) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:197) ~[NetworkSystem.class:?]
... 5 more
zacco320
ID:6eece3ec
水から上がったとこ
 
記事: 6
登録日時: 2017年9月16日(土) 02:25

  • (PostNo.308536)

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チェックが必要です.
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:0f87040f
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.308543)

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

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

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


返信ありがとうございます、無事作動しました!
zacco320
ID:6eece3ec
水から上がったとこ
 
記事: 6
登録日時: 2017年9月16日(土) 02:25

  • (PostNo.308578)

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

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

technedeで作ったものを防具の見た目にしたいです。あとチェストプレートを付けたらクリエイティブ飛行ができるようにしたいです。バカ(私)でもわかるように説明をお願いします。1.7.10です。
どうも皆さん。コロンです。主にYouTubeやLine活動しております。
ここでURLを貼っていいのかよくわかりませんが
https://www.youtube.com/channel/UCqfkOG ... wKwN9WnWAw
アバター
黒の剣士 コロン
ID:60ddc07a
水から上がったとこ
 
記事: 4
登録日時: 2017年9月24日(日) 00:17

  • (PostNo.308753)

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

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

1.12.2 Forge14.23.0.249でPickaxeにデフォルトでエンチャントを付ける方法を教えてください。
suteppi
ID:b2c1c851
水から上がったとこ
 
記事: 9
登録日時: 2014年2月22日(土) 00:48

  • (PostNo.309270)

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);
   }

}
Javaすら学んでなければ教えてくれる人もいない中Modding始めてみた。ファイアーエムブレムを再現するMODを作りたいけどもリリースできる気がしませんなこれは・・・。
アバター
ユメミノウツツ
ID:878a78c8
石掘り
 
記事: 112
登録日時: 2014年3月29日(土) 20:13

  • (PostNo.309464)

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

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

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

1.7.10しかわからないから正しいかどうかはわかりませんが、NBTタグとaddEnchantmentあたりでいけるんじゃないですかね・・・?自分もやったことないので詳しくはわかりませんが。
Javaすら学んでなければ教えてくれる人もいない中Modding始めてみた。ファイアーエムブレムを再現するMODを作りたいけどもリリースできる気がしませんなこれは・・・。
アバター
ユメミノウツツ
ID:878a78c8
石掘り
 
記事: 112
登録日時: 2014年3月29日(土) 20:13

  • (PostNo.309468)

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内で付与するかどちらかですね
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:0f87040f
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.309616)

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

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

防具で落下ダメージを無効化したいのですがどのように書けばよいかわかりません。
バージョンは1.7.10です。誰かよろしくお願いします。
秋葉の大妖精
ID:8ac996f9
水から上がったとこ
 
記事: 2
登録日時: 2016年11月23日(水) 11:45

  • (PostNo.309709)

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);
         }
      }
   }
}
コマンダーを目指すクラフター
twitterID @sample_game6
特に意味はありませんが、ちょっとしたリソパ公開しています
アバター
game6の人
ID:0461b0b7
木を殴ってる
 
記事: 13
登録日時: 2015年11月03日(火) 21:48
お住まい: 石炭鉱脈を掘った後の空洞

  • (PostNo.309715)

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のインスタンスを全員で使いまわすことになります
着用者が複数いた場合とか、モンスターに着られた場合の場合分けも要ると思いますよ~
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:7e692061
ラピスラズリ収集家
 
記事: 948
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東

  • (PostNo.309738)

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の方でやってみてうまくいきました!
コマンダーを目指すクラフター
twitterID @sample_game6
特に意味はありませんが、ちょっとしたリソパ公開しています
アバター
game6の人
ID:0461b0b7
木を殴ってる
 
記事: 13
登録日時: 2015年11月03日(火) 21:48
お住まい: 石炭鉱脈を掘った後の空洞

  • (PostNo.310052)

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"
}


よろしくお願いします。
mpslayer
ID:4e317e20
水から上がったとこ
 
記事: 3
登録日時: 2017年11月02日(木) 17:54

  • (PostNo.310054)

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

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

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

複数MODを同一workspaceで開発するには,マルチプロジェクト構成が必要です.modding wiki参照.
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:add6479a
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

  • (PostNo.310137)

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

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

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

wikiに乗っていなかったので
どなたか教えていただけると光栄です
初歩的なことですいません
kirito3002
ID:e5d3c649
水から上がったとこ
 
記事: 7
登録日時: 2017年7月20日(木) 04:49

  • (PostNo.311097)

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

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

1.7.10のMod制作で、ダンジョン生成(構造物)について学べるサイト、ページなどはありますでしょうか。海外サイトでも構いません。
Modding Wikiに1.6.xのページはありましたが1.7.xはありませんでしたので質問させていただきました。
よろしくお願いします。
mpslayer
ID:4e317e20
水から上がったとこ
 
記事: 3
登録日時: 2017年11月02日(木) 17:54

  • (PostNo.311105)

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";
}


{
}

}

ちなみに僕は厨二病です。
sin5804
ID:2d17f3d2
 

  • (PostNo.311168)

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プロジェクトでする方法は可能なのでしょうか。
ゲスト
ID:b61ac392
 

  • (PostNo.311171)

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
メイドつくってたりします.http://6docvc.net/
アバター
elise_blacklab
ID:0f87040f
掘り廃人
 
記事: 2448
登録日時: 2014年6月25日(水) 18:30

1つ前へ

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

x