moddding1.7.10 エンチャなど

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

moddding1.7.10 エンチャなど

投稿記事by ライトN2 » 2015年3月30日(月) 10:39

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/プラグイン制作関連へ移動しました。
アバター
ライトN2
ID:041ac9c1
木を殴ってる
 
記事: 20
登録日時: 2013年4月20日(土) 08:28

  • (PostNo.224926)

Re: moddding1.7.10 エンチャなど

投稿記事by miyabi » 2015年3月31日(火) 12:05

投稿する場所が違います。
質問は質問フォーラムへ.png
質問は質問フォーラムへ.png (6.34 KiB) 表示数: 2086 回


移動依頼を出すか、削除依頼を出してから再投稿してください。
また、ソースをベタに張り付けるとインデントが無くなりますので、
Codeタグを併用するなど工夫した方が、見る人が読みやすいです。
マイクラサーバを立てる前に、PCの基礎知識を身につけましょう。
サーバ管理補助ツール MCSC(Windows専用) の開発をしたり、Minecraft Modding Wikiの管理したりしてます。
アバター
miyabi
ID:57da723e
ブタ飼い
 
記事: 6994
登録日時: 2011年8月07日(日) 14:35
お住まい: さいたまさいたまさいたま!

  • (PostNo.226982)

Re: moddding1.7.10 エンチャなど

投稿記事by defeatedcrow » 2015年4月11日(土) 16:29

若干遅い気もしますが…

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

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

・持っている間の効果

Forgeにプレイヤーのupdateイベントがあるので、これを使って毎Tickインベントリを走査し、
該当アイテムを持っているかどうかで判定するのが安易ですかねぇ。
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:88e47716
ラピスラズリ収集家
 
記事: 917
登録日時: 2014年1月08日(水) 13:48
お住まい: 北関東


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

x