Column - Clayium-Isotope/clayium GitHub Wiki

Tooltip

Tooltipとは、基本的にInventory内の当該アイテムにカーソルを乗せた際、表示される情報です。
長かったり、より専門的な情報が書かれている場合、ワンクッションおかれるべきです。
オリジナルでは、Tooltipを言語ファイルに記述し、L10nしやすくされており、リメイクでも倣っています。

  1. .tooltip.line1, .tooltip.line2 ... と言語ファイルを読み進め、
  2. 値が__DETAIL__と書かれていれば、Shift押下判定を行い、 2-1. Shiftが押されていれば続行 2-2. 押されていなければ終わり
  3. .tooltip.lineN が言語ファイルに記述されていないNがあれば、Tooltipへの書き込みを終えます。

mods.clayium.item.common.ClayiumItem$addInformation()およびmods.clayium.util.UtilLocale$localizeTooltip()より

@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, @Nullable World player, List<String> tooltip, ITooltipFlag advanced) {
    for (int i = 1; i < maxLineTooltip; i++) {
        String key = this.getUnlocalizedName() + ".tooltip.line" + i;
        String loc = I18n.format(key);

        if (loc.equals(key) || loc.equals("")) return;

        if (loc.equals("__DETAIL__")) {
            if (!GuiScreen.isShiftKeyDown()) {
                tooltip.add(I18n.format("tooltip.HoldShiftForDetails"));
                return;
            }
        } else {
            tooltip.add(loc);
        }
    }
}

Registry Name

Registry Name Meta値を廃止しようという考えの下、その役割をRegistry Nameに担わせます。
その理由は、MC1.13になるとMeta値の機能が無くなるためです。MC1.12.2においてはMeta値の利用は可能ですが。

例えば、 mymod:example というRegistry Nameがあり、Meta値の 0, 1, 2 を用いるとします。
Meta値を用いる方法:

@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event){
    event.getRegistry().register(
            new Item()
                .setRegistryName("mymod", "example")
                .setHasSubtypes(true)
                .setMaxDamage(3)
    );
}

Meta値を用いない方法:

@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event){
    for (int i = 0; i < 3; i++) {
        event.getRegistry().register(
                new Item()
                    .setRegistryName("mymod", "example_" + i)
        );
    }
}

また、clay_dense_clay_等のPrefixと組み合わせて、
clayium:clay_latheclayium:dense_clay_lathe等々を登録しています。

⚠️ **GitHub.com Fallback** ⚠️