提供: Minecraft Modding Wiki
移動先: 案内検索

この記事は"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);
    }
}