ページ 11

moddding1.7.10 エンチャなど

投稿記事Posted: 2015年3月30日(月) 10:39
by ライトN2
modding初心者でこのソースで追加される武器にエンチャントや持つと効果を得るようにしたいのですがどのように記入作成したらよいのでしょうか?


コード: 全て選択
package com.example.examplemod;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
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.registry.GameRegistry;

@Mod(modid = test2.MODID, version = test2.VERSION)
public class test2
{
    public static final String MODID = "test mod";
    public static final String VERSION = "1.7.10-1";

    @EventHandler
    public void init(FMLInitializationEvent event) {



    {


       Item 弧月 =new Item();
       Item.ToolMaterial 弧月Material = EnumHelper.addToolMaterial("弧月", -1,5000, 0.0F, 6.0F,10);
      弧月Material.customCraftingMaterial =弧月;
      Item 弧月_sword = new ItemSword (弧月Material);
      弧月_sword.setUnlocalizedName("弧月_sword");
      弧月.setUnlocalizedName("トリオン");
      弧月.setCreativeTab(CreativeTabs.tabCombat);
        弧月_sword.setCreativeTab(CreativeTabs.tabCombat);/*クリエイティブのタブ*/
      弧月_sword.setUnlocalizedName("弧月");/*システム名の登録*/
      弧月_sword.setTextureName("testmod:弧月");
      //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。
      
          
   
      GameRegistry.registerItem(弧月_sword, "弧月");
      GameRegistry.addRecipe(new ItemStack(弧月_sword,1),
               "X  ",
               " X ",
               "  Y",
               'X', Blocks.gold_block,
               'Y', Items.stick);


      Item スコーピオン =new Item ();
       Item.ToolMaterial スコーピオンMaterial = EnumHelper.addToolMaterial("スコーピオン", -1,2500, 0.0F, 6.0F,10);
       スコーピオンMaterial.customCraftingMaterial = スコーピオン;
      Item スコーピオン_sword = new ItemSword (スコーピオンMaterial);
      スコーピオン_sword.setUnlocalizedName("スコーピオン_sword");

      スコーピオン_sword.setCreativeTab(CreativeTabs.tabCombat);/*クリエイティブのタブ*/
      スコーピオン_sword.setUnlocalizedName("スコーピオン");/*システム名の登録*/
      スコーピオン_sword.setTextureName("testmod:スコーピオン");/*テクスチャの指定*/
      //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。
   
      GameRegistry.registerItem(スコーピオン_sword, "スコーピオン");
      GameRegistry.addRecipe(new ItemStack(スコーピオン_sword,1),
               " X ",
               " X ",
               " Y ",
               'X', Blocks.gold_block,
               'Y', Items.stick);
      Item レイガスト =new Item ();
       Item.ToolMaterial レイガストMaterial = EnumHelper.addToolMaterial("レイガスト", -1,6000, 0.0F, 10.0F,10);
       レイガストMaterial.customCraftingMaterial = レイガスト;
      Item レイガスト_sword = new ItemSword (レイガストMaterial);
      レイガスト_sword.setUnlocalizedName("レイガスト_sword");
      レイガスト_sword.setCreativeTab(CreativeTabs.tabCombat);/*クリエイティブのタブ*/
      レイガスト_sword.setUnlocalizedName("レイガスト");/*システム名の登録*/
      レイガスト_sword.setTextureName("testmod:レイガスト");/*テクスチャの指定*/
      //アイテムの登録。登録文字列はMOD内で被らなければ何でも良い。
      GameRegistry.registerItem(レイガスト_sword, "レイガスト");
      GameRegistry.addRecipe(new ItemStack(レイガスト_sword,1),
               "XX ",
               "XX ",
               " Y ",
               'X', Blocks.gold_block,
               'Y', Items.stick);
      Item 突撃銃 = new ItemBow();

      突撃銃.setMaxDamage(1200);
      突撃銃.setUnlocalizedName("突撃銃");
      突撃銃.setCreativeTab(CreativeTabs.tabCombat);
      突撃銃.setTextureName("testmod:突撃銃");
      GameRegistry.registerItem(突撃銃, "突撃銃");}

      // TODO 自動生成されたメソッド・スタブ

   }



      public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_,
            EntityPlayer p_77615_3_, int p_77615_4_) {





         int j = getMaxItemUseDuration(p_77615_1_) - p_77615_4_;

         ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j);
         MinecraftForge.EVENT_BUS.post(event);
         if (event.isCanceled()) {
            return;
         }
         j = event.charge;



      }




      private int getMaxItemUseDuration(ItemStack p_77615_1_) {
         // TODO 自動生成されたメソッド・スタブ
         return 0
      }
    } 

運営チーム[運営宛のメッセージ(PM)を作成] カテゴリを質問:Mod/プラグイン制作関連へ移動しました。

Re: moddding1.7.10 エンチャなど

投稿記事Posted: 2015年3月31日(火) 12:05
by miyabi
投稿する場所が違います。
質問は質問フォーラムへ.png
質問は質問フォーラムへ.png (6.34 KiB) 表示数: 3216 回


移動依頼を出すか、削除依頼を出してから再投稿してください。
また、ソースをベタに張り付けるとインデントが無くなりますので、
Codeタグを併用するなど工夫した方が、見る人が読みやすいです。

Re: moddding1.7.10 エンチャなど

投稿記事Posted: 2015年4月11日(土) 16:29
by defeatedcrow
若干遅い気もしますが…

・アイテムにエンチャントを持たせる

ItemStackのインスタンスをとれる場所があれば、.addEnchantment(Enchantment.blastProtection, 1);のように付与できます。
例えば各ItemクラスのonCreatedメソッドで行えばクラフト製作時、getSubItemsで行えばクリエイティブタブのアイテムにエンチャントをもたせられる…と思います

・持っている間の効果

Forgeにプレイヤーのupdateイベントがあるので、これを使って毎Tickインベントリを走査し、
該当アイテムを持っているかどうかで判定するのが安易ですかねぇ。