Skip to content

Commit 9e8c599

Browse files
author
games647
committed
Checked cast for JsonObject (Fixes #18)
1 parent 765df41 commit 9e8c599

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<packaging>jar</packaging>
99

1010
<name>mcMMOAction</name>
11-
<version>2.1.1</version>
11+
<version>2.1.2</version>
1212
<inceptionYear>2016</inceptionYear>
1313
<url>https://dev.bukkit.org/bukkit-plugins/mcmmoaction/</url>
1414
<description>

src/main/java/com/github/games647/mcmmoaction/listener/MessageListener.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@
66
import com.comphenix.protocol.wrappers.EnumWrappers.ChatType;
77
import com.comphenix.protocol.wrappers.WrappedChatComponent;
88
import com.github.games647.mcmmoaction.mcMMOAction;
9+
import com.google.common.base.Enums;
910
import com.google.common.collect.ImmutableSet;
1011
import com.google.gson.Gson;
1112
import com.google.gson.JsonArray;
13+
import com.google.gson.JsonElement;
1214
import com.google.gson.JsonObject;
1315

1416
import java.util.Collection;
1517
import java.util.regex.Pattern;
1618
import java.util.stream.Collectors;
1719

1820
import net.md_5.bungee.api.chat.BaseComponent;
21+
import net.md_5.bungee.api.chat.HoverEvent;
1922
import net.md_5.bungee.chat.ComponentSerializer;
2023

2124
import org.bukkit.entity.Player;
@@ -28,6 +31,8 @@ public class MessageListener extends PacketAdapter {
2831
private final Pattern pluginTagPattern = Pattern.compile(Pattern.quote("[mcMMO] "));
2932
private final Gson gson = new Gson();
3033

34+
private final boolean shouldRemoveHover;
35+
3136
//compile the pattern just once - remove the comma so it also detect numbers like (10,000)
3237
private final Pattern numberRemover = Pattern.compile("[,0-9]");
3338

@@ -37,6 +42,8 @@ public class MessageListener extends PacketAdapter {
3742
public MessageListener(mcMMOAction plugin, Collection<String> messages) {
3843
super(params().plugin(plugin).types(CHAT));
3944

45+
shouldRemoveHover = !Enums.getIfPresent(HoverEvent.Action.class, "SHOW_ENTITY").isPresent();
46+
4047
this.plugin = plugin;
4148
this.localizedMessages = ImmutableSet.copyOf(messages
4249
.stream()
@@ -65,12 +72,15 @@ public void onPacketSending(PacketEvent packetEvent) {
6572
}
6673

6774
String json = message.getJson();
68-
String cleanedJson = gson.toJson(cleanJsonFromHover(json));
69-
if (cleanedJson == null) {
75+
if (shouldRemoveHover) {
76+
json = gson.toJson(cleanJsonFromHover(json));
77+
}
78+
79+
if (json == null) {
7080
return;
7181
}
7282

73-
BaseComponent chatComponent = ComponentSerializer.parse(cleanedJson)[0];
83+
BaseComponent chatComponent = ComponentSerializer.parse(json)[0];
7484
if (chatComponent != null && isMcMMOMessage(chatComponent.toPlainText())) {
7585
writeChatPosition(packet);
7686

@@ -104,9 +114,13 @@ private void writeChatPosition(PacketContainer packet) {
104114
}
105115
}
106116

107-
private JsonObject cleanJsonFromHover(String json) {
108-
JsonObject jsonComponent = gson.fromJson(json, JsonObject.class);
109-
return cleanJsonFromHover(jsonComponent);
117+
private JsonElement cleanJsonFromHover(String json) {
118+
JsonElement jsonComponent = gson.fromJson(json, JsonElement.class);
119+
if (jsonComponent instanceof JsonObject) {
120+
return cleanJsonFromHover((JsonObject) jsonComponent);
121+
}
122+
123+
return jsonComponent;
110124
}
111125

112126
private JsonObject cleanJsonFromHover(JsonObject jsonComponent) {

src/main/java/com/github/games647/mcmmoaction/listener/PlayerListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.bukkit.ChatColor;
99
import org.bukkit.entity.Player;
1010
import org.bukkit.event.EventHandler;
11+
import org.bukkit.event.EventPriority;
1112
import org.bukkit.event.Listener;
1213
import org.bukkit.event.player.PlayerQuitEvent;
1314

@@ -25,7 +26,7 @@ public void onPlayerQuit(PlayerQuitEvent quitEvent) {
2526
plugin.getActionBarDisabled().remove(player.getUniqueId());
2627
}
2728

28-
@EventHandler
29+
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
2930
public void onExperienceGain(McMMOPlayerXpGainEvent experienceEvent) {
3031
Player player = experienceEvent.getPlayer();
3132
if (plugin.isProgressEnabled(player.getUniqueId())) {

0 commit comments

Comments
 (0)