// ❌ 수리 태그 자리에 빈 태그를 넘기거나, 태그 JSON 파일을 만들지 않음public static final ToolMaterial INSTANCE = new ToolMaterial( BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 1024, 8.0f, 3.5f, 18, REPAIR_TAG // ← data/.../tags/item/repairs_ruby_tools.json 이 비어 있으면 무효);
ToolMaterial의 마지막 인자(repairItems) 태그에 어떤 아이템도 들어 있지 않으면, Anvil에서
도구 + 재료를 조합해도 수리가 전혀 이루어지지 않습니다 (슬롯이 그대로 유지됨).
항상 수리 태그를 지정하고, data/<ns>/tags/item/<tag>.json에 실제 수리 아이템을 채워 넣으세요.
package com.example.master.tools;import com.mojang.logging.LogUtils;import net.minecraft.tags.BlockTags;import net.minecraft.world.item.AxeItem;import net.minecraft.world.item.Item;import net.minecraft.world.item.ShovelItem;import net.neoforged.bus.api.IEventBus;import net.neoforged.fml.ModContainer;import net.neoforged.fml.common.Mod;import net.neoforged.neoforge.registries.DeferredRegister;import org.slf4j.Logger;import java.util.function.Supplier;@Mod(MasterToolsMod.MOD_ID)public class MasterToolsMod { public static final String MOD_ID = "master_tools"; public static final Logger LOGGER = LogUtils.getLogger(); /** 아이템 레지스트리 */ public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MOD_ID); // 수리 재료 아이템 public static final Supplier<Item> RUBY = ITEMS.registerItem("ruby", props -> new Item(props)); // 루비 도구 4종 // MC 26.1.2: PickaxeItem 삭제 → ToolMaterial.applyToolProperties() 사용. // MINEABLE_WITH_PICKAXE 태그로 곡괭이 채굴 동작 부여. public static final Supplier<Item> RUBY_PICKAXE = ITEMS.registerItem("ruby_pickaxe", props -> new Item(RubyTier.INSTANCE.applyToolProperties( props, BlockTags.MINEABLE_WITH_PICKAXE, 1.0f, // 공격력 추가치 -2.8f, // 공격 속도 0.0f // 공격 범위 보너스 ))); // MC 26.1.2: SwordItem 삭제 → ToolMaterial.applySwordProperties() 사용. public static final Supplier<Item> RUBY_SWORD = ITEMS.registerItem("ruby_sword", props -> new Item(RubyTier.INSTANCE.applySwordProperties( props, 3.0f, // 기본 공격력 -2.4f // 공격 속도 ))); // AxeItem / ShovelItem 은 존속 — 생성자에 ToolMaterial + 속성 전달. public static final Supplier<Item> RUBY_AXE = ITEMS.registerItem("ruby_axe", props -> new AxeItem(RubyTier.INSTANCE, 5.0f, -3.1f, props)); public static final Supplier<Item> RUBY_SHOVEL = ITEMS.registerItem("ruby_shovel", props -> new ShovelItem(RubyTier.INSTANCE, 1.5f, -3.0f, props)); public MasterToolsMod(IEventBus modEventBus, ModContainer container) { LOGGER.info("Master Tools Mod 로드 완료"); ITEMS.register(modEventBus); }}
MC 26.1.2 도구 등록 포인트:
곡괭이·검은 더 이상 PickaxeItem/SwordItem이 없으므로 new Item(...) + ToolMaterial.applyToolProperties() / applySwordProperties()로 채굴/전투 속성을 부여합니다.
밸런스 팁: 내구도가 Diamond보다 낮아야 게임 진행의 의미가 유지됩니다.
durability 값이 1561을 넘으면 Diamond 도구를 사용할 이유가 없어집니다.
커스텀 ToolMaterial은 기존 재질 사이의 틈을 채우거나 특수한 트레이드오프를 주는 방향으로 설계하세요.