diff --git a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java index 89b77ff33..382b037cd 100644 --- a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java +++ b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java @@ -7,20 +7,26 @@ import mcp.mobius.waila.api.IComponentProvider; import mcp.mobius.waila.api.IDataAccessor; import mcp.mobius.waila.api.IPluginConfig; +import mcp.mobius.waila.api.IServerDataProvider; import mcp.mobius.waila.api.ITaggableList; import mcp.mobius.waila.utils.ModIdentification; import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.state.property.BooleanProperty; import net.minecraft.text.LiteralText; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; +import net.minecraft.util.Nameable; import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; -public class HUDHandlerBlocks implements IComponentProvider { +public class HUDHandlerBlocks implements IComponentProvider, IServerDataProvider { - static final IComponentProvider INSTANCE = new HUDHandlerBlocks(); + static final HUDHandlerBlocks INSTANCE = new HUDHandlerBlocks(); static final Identifier OBJECT_NAME_TAG = new Identifier(Waila.MODID, "object_name"); static final Identifier REGISTRY_NAME_TAG = new Identifier(Waila.MODID, "registry_name"); static final Identifier MOD_NAME_TAG = new Identifier(Waila.MODID, "mod_name"); @@ -30,7 +36,12 @@ public void appendHead(List tooltip, IDataAccessor accessor, IPluginConfig if (accessor.getBlockState().getMaterial().isLiquid()) return; - ((ITaggableList) tooltip).setTag(OBJECT_NAME_TAG, new LiteralText(String.format(Waila.CONFIG.get().getFormatting().getBlockName(), accessor.getBlock().getName().getString()))); + String name = accessor.getBlockEntity() != null ? accessor.getServerData().getString("customName") : ""; + if (name.isEmpty()) { + name = accessor.getBlock().getName().getString(); + } + + ((ITaggableList) tooltip).setTag(OBJECT_NAME_TAG, new LiteralText(String.format(Waila.CONFIG.get().getFormatting().getBlockName(), name))); if (config.get(PluginCore.CONFIG_SHOW_REGISTRY)) ((ITaggableList) tooltip).setTag(REGISTRY_NAME_TAG, new LiteralText(Registry.BLOCK.getId(accessor.getBlock()).toString()).setStyle(Style.EMPTY.withColor(Formatting.GRAY))); } @@ -59,4 +70,14 @@ public void appendTail(List tooltip, IDataAccessor accessor, IPluginConfig } } + @Override + public void appendServerData(CompoundTag data, ServerPlayerEntity player, World world, BlockEntity blockEntity) { + if (blockEntity instanceof Nameable) { + Text name = ((Nameable) blockEntity).getCustomName(); + if (name != null) { + data.putString("customName", name.getString()); + } + } + } + } diff --git a/src/main/java/mcp/mobius/waila/addons/core/PluginCore.java b/src/main/java/mcp/mobius/waila/addons/core/PluginCore.java index d1dc6d657..97ade1810 100644 --- a/src/main/java/mcp/mobius/waila/addons/core/PluginCore.java +++ b/src/main/java/mcp/mobius/waila/addons/core/PluginCore.java @@ -7,6 +7,7 @@ import mcp.mobius.waila.overlay.tooltiprenderers.TooltipRendererHealth; import net.minecraft.block.Block; import net.minecraft.block.FluidBlock; +import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.decoration.AbstractDecorationEntity; import net.minecraft.entity.vehicle.AbstractMinecartEntity; @@ -28,6 +29,8 @@ public void register(IRegistrar registrar) { registrar.registerComponentProvider(HUDHandlerBlocks.INSTANCE, TooltipPosition.BODY, Block.class); registrar.registerComponentProvider(HUDHandlerBlocks.INSTANCE, TooltipPosition.TAIL, Block.class); + registrar.registerBlockDataProvider(HUDHandlerBlocks.INSTANCE, BlockEntity.class); + registrar.registerStackProvider(HUDHandlerFluids.INSTANCE, FluidBlock.class); registrar.registerComponentProvider(HUDHandlerFluids.INSTANCE, TooltipPosition.HEAD, FluidBlock.class);