11package com .mcmoddev .mmdlogger ;
22
3+ import java .lang .reflect .Field ;
34import java .util .List ;
5+ import net .minecraft .block .Block ;
6+ import net .minecraft .block .state .IBlockState ;
7+ import net .minecraft .init .Blocks ;
48import net .minecraft .item .Item ;
9+ import net .minecraft .item .ItemBlock ;
510import net .minecraft .item .ItemStack ;
611import net .minecraft .nbt .NBTTagCompound ;
712import net .minecraft .util .text .TextFormatting ;
@@ -15,15 +20,21 @@ public class MMDLoggerEventBusSubscriber {
1520 public static void onToolTip (ItemTooltipEvent event )
1621 {
1722 List <String > tooltips = event .getToolTip ();
23+ ItemStack stack = event .getItemStack ();
24+ //noinspection ConstantConditions
25+ if ((stack == null ) || stack .isEmpty ()) {
26+ return ;
27+ }
28+
29+ // TODO: consider testing for advanced tooltips being turned on also
30+ // if (!event.getFlags().isAdvanced()) return;
1831
1932 if (MMDLoggerConfig .options .oreDictTooltipsOn ) {
20- ItemStack stack = event .getItemStack ();
2133 Item item = stack .getItem ();
22-
34+ //noinspection ConstantConditions
2335 if (item == null )
2436 return ;
2537
26- // ore dictionary
2738 String blockName = item .getRegistryName ().getResourceDomain () + ":" + item .getRegistryName ().getResourcePath ();
2839 int meta = item .getMetadata (stack );
2940
@@ -35,11 +46,34 @@ public static void onToolTip(ItemTooltipEvent event)
3546 }
3647
3748 if (MMDLoggerConfig .options .nbtTooltipsOn ) {
38- // nbt
3949 NBTTagCompound stackNbt = event .getItemStack ().getTagCompound ();
4050 if ((stackNbt != null ) && !stackNbt .hasNoTags ()) {
4151 tooltips .add (TextFormatting .GRAY + "NBT: " + stackNbt .toString ());
4252 }
4353 }
54+
55+ if (MMDLoggerConfig .options .blockTooltipsOn && (stack .getItem () instanceof ItemBlock )) {
56+ Block block = ((ItemBlock )stack .getItem ()).getBlock ();
57+ IBlockState state = block .getDefaultState ();
58+
59+ tooltips .add (TextFormatting .GRAY + "Occlusion: " + state .getAmbientOcclusionLightValue ());
60+ tooltips .add (TextFormatting .DARK_GRAY + "Light: " + state .getLightValue ());
61+
62+ try {
63+ Field hardness = Block .class .getDeclaredField ("blockHardness" );
64+ hardness .setAccessible (true );
65+ tooltips .add (TextFormatting .GRAY + "Hardness: " + hardness .get (block ));
66+ } catch (NoSuchFieldException | IllegalAccessException ignored ) {}
67+
68+ try {
69+ Field resistance = Block .class .getDeclaredField ("blockResistance" );
70+ resistance .setAccessible (true );
71+ tooltips .add (TextFormatting .GRAY + "Resistance: " + resistance .get (block ));
72+ } catch (NoSuchFieldException | IllegalAccessException ignored ) {}
73+
74+ tooltips .add (TextFormatting .DARK_GRAY + "Flammability: " + Blocks .FIRE .getFlammability (block ));
75+
76+ tooltips .add (TextFormatting .GRAY + "Max stack size: " + stack .getMaxStackSize ());
77+ }
4478 }
4579}
0 commit comments