Column - Clayium-Isotope/clayium GitHub Wiki
Tooltipとは、基本的にInventory内の当該アイテムにカーソルを乗せた際、表示される情報です。
長かったり、より専門的な情報が書かれている場合、ワンクッションおかれるべきです。
オリジナルでは、Tooltipを言語ファイルに記述し、L10nしやすくされており、リメイクでも倣っています。
-
.tooltip.line1,.tooltip.line2... と言語ファイルを読み進め、 - 値が
__DETAIL__と書かれていれば、Shift押下判定を行い、 2-1. Shiftが押されていれば続行 2-2. 押されていなければ終わり -
.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
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_lathe、clayium:dense_clay_lathe等々を登録しています。