提供: Minecraft Modding Wiki
移動先: 案内検索
(ページの作成:「{{前提MOD|reqmod="Fabric API 0.3.2 build 230~"}} {{チュートリアル難易度|difficulty=1|clear=none}} {{チュートリアルカテゴリー|difficulty=1|type=I…」)
 
(ソースコード)
 
(同じ利用者による、間の1版が非表示)
35行目: 35行目:
  
 
         //ツール作成
 
         //ツール作成
public static ToolItem EMERALD_SWORD = new SwordItem(RubyToolMaterial.INSTANCE, 3, -2F, new Item.Settings().group(ItemGroup.TOOLS));
+
public static ToolItem EMERALD_SWORD = new SwordItem(CustomToolMaterial.INSTANCE, 3, -2F, new Item.Settings().group(ItemGroup.TOOLS));//剣を作成
public static ToolItem EMERALD_PICKAXE = new CustomPickaxeItem(RubyToolMaterial.INSTANCE, 1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));
+
public static ToolItem EMERALD_PICKAXE = new CustomPickaxeItem(CustomToolMaterial.INSTANCE, 1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//ツルハシを作成
public static ToolItem EMERALD_AXE = new CustomAxeItem(RubyToolMaterial.INSTANCE, 2, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));
+
public static ToolItem EMERALD_AXE = new CustomAxeItem(CustomToolMaterial.INSTANCE, 2, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//オノを作成
public static ToolItem EMERALD_SHOVEL = new ShovelItem(RubyToolMaterial.INSTANCE, 1.5F, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));
+
public static ToolItem EMERALD_SHOVEL = new ShovelItem(CustomToolMaterial.INSTANCE, 1.5F, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//シャベルを作成
public static ToolItem EMERALD_HOE = new CustomHoeItem(RubyToolMaterial.INSTANCE, -1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));
+
public static ToolItem EMERALD_HOE = new CustomHoeItem(CustomToolMaterial.INSTANCE, -1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//クワを作成
  
 
         @Override
 
         @Override
 
         public void onInitialize()
 
         public void onInitialize()
 
         {
 
         {
 +
                //ツールを登録
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_sword"), EMERALD_SWORD);
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_sword"), EMERALD_SWORD);
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_shovel"), EMERALD_SHOVEL);
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_shovel"), EMERALD_SHOVEL);
50行目: 51行目:
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_hoe"), EMERALD_HOE);
 
Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_hoe"), EMERALD_HOE);
 
         }
 
         }
 +
    }
 +
}
 +
</source>
 +
*CustomToolMaterial.java
 +
<source lang = "java">
 +
package com.example.tool;
 +
 +
import net.minecraft.item.Items;
 +
import net.minecraft.item.ToolMaterial;
 +
import net.minecraft.recipe.Ingredient;
 +
 +
public class CustomToolMaterial implements ToolMaterial {
 +
 +
    public static final CustomToolMaterial INSTANCE = new CustomToolMaterial(); //インスタンス化
 +
 +
    @Override
 +
    public int getDurability() {
 +
        return 2000; //耐久値の設定
 +
    }
 +
 +
    @Override
 +
    public float getMiningSpeedMultiplier() {
 +
        return 9F; //破壊速度
 +
    }
 +
 +
    @Override
 +
    public float getAttackDamage() {
 +
        return 5F; //攻撃速度
 +
    }
 +
 +
    @Override
 +
    public int getMiningLevel() {
 +
        return 3; //採掘レベル(ダイヤモンドの採掘レベルは3です。黒曜石を採掘するには3以上にしてください。)
 +
    }
 +
 +
    @Override
 +
    public int getEnchantability() {
 +
        return 15; //エンチャント性
 +
    }
 +
 +
    @Override
 +
    //金床の修理
 +
    public Ingredient getRepairIngredient() {
 +
        return Ingredient.ofItems(Items.EMERALD);//エメラルドを指定(modid.アイテム) 使わない場合はnull
 +
    }
 +
}
 +
 +
</source>
 +
「PickaxeItem」と「HoeItem」、「AxeItem」はプライベートコンストラクターなので新しくパブリックコンストラクターを作成してください。<br>
 +
下記のソースコードをコピペしてください。
 +
*CustomAxeItem.java
 +
<source lang = "java">
 +
package com.example.tool;
 +
 +
import net.minecraft.item.AxeItem;
 +
import net.minecraft.item.ToolMaterial;
 +
 +
public class CustomAxeItem extends AxeItem {
 +
    public CustomAxeItem(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
 +
        super(material, attackDamage, attackSpeed, settings);
 +
    }
 +
}
 +
</source>
 +
*CustomHoeItem.java
 +
<source lang = "java">
 +
package com.example.tool;
 +
 +
import net.minecraft.item.HoeItem;
 +
import net.minecraft.item.ToolMaterial;
 +
 +
public class CustomHoeItem extends HoeItem {
 +
    public CustomHoeItem(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
 +
        super(material, attackDamage, attackSpeed, settings);
 +
    }
 +
}
 +
</source>
 +
*CustomPickaxeItem.java
 +
<source lang = "java">
 +
package com.example.tool;
 +
 +
import net.minecraft.item.PickaxeItem;
 +
import net.minecraft.item.ToolMaterial;
 +
 +
public class CustomPickaxeItem extends PickaxeItem {
 +
    public CustomPickaxeItem (ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
 +
        super(material, attackDamage, attackSpeed, settings);
 
     }
 
     }
 
}
 
}
 
</source>
 
</source>

2020年10月12日 (月) 22:32時点における最新版

この記事は"Fabric API 0.3.2 build 230~"を前提MODとしています。

Stone pickaxe.png
中級者向けのチュートリアルです。
C item.png
Itemに関係のあるチュートリアルです。

ツール(道具)の追加[編集]

ここでのページは1.6のツール類追加を参考にして書いてます。
ツール(剣、ツルハシ、オノ、シャベル、クワ)を作成します。
金床での修復にはエメラルドを使用します。

動作確認済みのバージョン:1.16.3

ソースコード[編集]

  • SampleMod.java
package com.example.tool;

import com.example.tool.CustomAxeItem;
import com.example.tool.CustomHoeItem;
import com.example.tool.CustomPickaxeItem;
import com.example.tool.CustomToolMaterial;

import net.fabricmc.api.ModInitializer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ShovelItem;
import net.minecraft.item.SwordItem;
import net.minecraft.item.ToolItem;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class SampleMod implements ModInitializer
    {
        /**
         * ModID文字列
         */
        public static final String MOD_ID = "samplemod";

        //ツール作成
	public static ToolItem EMERALD_SWORD = new SwordItem(CustomToolMaterial.INSTANCE, 3, -2F, new Item.Settings().group(ItemGroup.TOOLS));//剣を作成
	public static ToolItem EMERALD_PICKAXE = new CustomPickaxeItem(CustomToolMaterial.INSTANCE, 1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//ツルハシを作成
	public static ToolItem EMERALD_AXE = new CustomAxeItem(CustomToolMaterial.INSTANCE, 2, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//オノを作成
	public static ToolItem EMERALD_SHOVEL = new ShovelItem(CustomToolMaterial.INSTANCE, 1.5F, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//シャベルを作成
	public static ToolItem EMERALD_HOE = new CustomHoeItem(CustomToolMaterial.INSTANCE, -1, -3.0F, new Item.Settings().group(ItemGroup.TOOLS));//クワを作成

        @Override
        public void onInitialize()
        {
                //ツールを登録
		Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_sword"), EMERALD_SWORD);
		Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_shovel"), EMERALD_SHOVEL);
		Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_axe"), EMERALD_AXE);
		Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_pickaxe"), EMERALD_PICKAXE);
		Registry.register(Registry.ITEM, new Identifier(MOD_ID, "emerald_hoe"), EMERALD_HOE);
        }
    }
}
  • CustomToolMaterial.java
package com.example.tool;

import net.minecraft.item.Items;
import net.minecraft.item.ToolMaterial;
import net.minecraft.recipe.Ingredient;

public class CustomToolMaterial implements ToolMaterial {

    public static final CustomToolMaterial INSTANCE = new CustomToolMaterial(); //インスタンス化

    @Override
    public int getDurability() {
        return 2000; //耐久値の設定
    }

    @Override
    public float getMiningSpeedMultiplier() {
        return 9F; //破壊速度
    }

    @Override
    public float getAttackDamage() {
        return 5F; //攻撃速度
    }

    @Override
    public int getMiningLevel() {
        return 3; //採掘レベル(ダイヤモンドの採掘レベルは3です。黒曜石を採掘するには3以上にしてください。)
    }

    @Override
    public int getEnchantability() {
        return 15; //エンチャント性
    }

    @Override
    //金床の修理
    public Ingredient getRepairIngredient() {
        return Ingredient.ofItems(Items.EMERALD);//エメラルドを指定(modid.アイテム) 使わない場合はnull
    }
}

「PickaxeItem」と「HoeItem」、「AxeItem」はプライベートコンストラクターなので新しくパブリックコンストラクターを作成してください。
下記のソースコードをコピペしてください。

  • CustomAxeItem.java
package com.example.tool;

import net.minecraft.item.AxeItem;
import net.minecraft.item.ToolMaterial;

public class CustomAxeItem extends AxeItem {
    public CustomAxeItem(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
        super(material, attackDamage, attackSpeed, settings);
    }
}
  • CustomHoeItem.java
package com.example.tool;

import net.minecraft.item.HoeItem;
import net.minecraft.item.ToolMaterial;

public class CustomHoeItem extends HoeItem {
    public CustomHoeItem(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
        super(material, attackDamage, attackSpeed, settings);
    }
}
  • CustomPickaxeItem.java
package com.example.tool;

import net.minecraft.item.PickaxeItem;
import net.minecraft.item.ToolMaterial;

public class CustomPickaxeItem extends PickaxeItem {
    public CustomPickaxeItem (ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) {
        super(material, attackDamage, attackSpeed, settings);
    }
}