From b42ffa26065d052c59d67eaad1cdbaa921cee0b7 Mon Sep 17 00:00:00 2001 From: Anna Date: Sat, 4 Nov 2023 09:48:18 +1300 Subject: [PATCH] Fix minor issues with show_entity hover in messages (#3908) * actually use show entity hover event type, instead of using name in the wrong place * don't attempt to getString of null resources when showing entity type in hover EntityList does not contain all possible entity types. It does not contain entries for: FishingHook, lightning, Weather, Player, or ComplexPart. Trying to use a hover show entity of one of these types would cause a null pointer exception. And before the previous commit the type was actually the name. Which caused showing entities with a name of "Player" or one of the other types mentioned above to cause this error. Preventing the message from being sent. --- .../common/mixin/core/util/text/event/HoverEventMixin.java | 2 +- .../spongepowered/common/text/action/SpongeHoverAction.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/spongepowered/common/mixin/core/util/text/event/HoverEventMixin.java b/src/main/java/org/spongepowered/common/mixin/core/util/text/event/HoverEventMixin.java index 62a989c9d96..ee244ba02d1 100644 --- a/src/main/java/org/spongepowered/common/mixin/core/util/text/event/HoverEventMixin.java +++ b/src/main/java/org/spongepowered/common/mixin/core/util/text/event/HoverEventMixin.java @@ -71,7 +71,7 @@ public abstract class HoverEventMixin implements HoverEventBridge { String name = nbt.getString("name"); EntityType type = null; if (nbt.hasKey("type", Constants.NBT.TAG_STRING)) { - type = SpongeImpl.getGame().getRegistry().getType(EntityType.class, name).orElse(null); + type = SpongeImpl.getGame().getRegistry().getType(EntityType.class, nbt.getString("type")).orElse(null); } UUID uniqueId = UUID.fromString(nbt.getString("id")); diff --git a/src/main/java/org/spongepowered/common/text/action/SpongeHoverAction.java b/src/main/java/org/spongepowered/common/text/action/SpongeHoverAction.java index fdcf25c3039..59dbc85ca08 100644 --- a/src/main/java/org/spongepowered/common/text/action/SpongeHoverAction.java +++ b/src/main/java/org/spongepowered/common/text/action/SpongeHoverAction.java @@ -27,6 +27,7 @@ import net.minecraft.entity.EntityList; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.event.HoverEvent; @@ -66,7 +67,10 @@ public static HoverEvent getHandle(HoverAction action) { nbt.setString("id", entity.getUniqueId().toString()); if (entity.getType().isPresent()) { - nbt.setString("type", EntityList.getKey(((SpongeEntityType) entity.getType().get()).entityClass).toString()); + ResourceLocation resource = EntityList.getKey(((SpongeEntityType) entity.getType().get()).entityClass); + if (resource != null) { + nbt.setString("type", resource.toString()); + } } nbt.setString("name", entity.getName());