JSONMessage icon indicating copy to clipboard operation
JSONMessage copied to clipboard

1.19 break changes

Open corentingosselin opened this issue 3 years ago • 4 comments

Hello,

There is an error when using JSONMessage:

[22:26:54] [Server thread/WARN]: java.lang.ClassNotFoundException: net.minecraft.network.chat.ChatComponentText
[22:26:54] [Server thread/WARN]: 	at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:147)
[22:26:54] [Server thread/WARN]: 	at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:99)
[22:26:54] [Server thread/WARN]: 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
[22:26:54] [Server thread/WARN]: 	at java.base/java.lang.Class.forName0(Native Method)
[22:26:54] [Server thread/WARN]: 	at java.base/java.lang.Class.forName(Class.java:375)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.ReflectionHelper.getClass(ReflectionHelper.java:23)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.impl.ChatComponentImpl17ToFuture.<init>(ChatComponentImpl17ToFuture.java:16)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.ImplementationPicker.lambda$getImplementation$1(ImplementationPicker.java:29)
[22:26:54] [Server thread/WARN]: 	at java.base/java.util.Optional.map(Optional.java:260)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.ImplementationPicker.getImplementation(ImplementationPicker.java:27)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.CompatManager.<init>(CompatManager.java:20)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.CompatManager.get(CompatManager.java:54)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.compat.CompatManager.chatComponent(CompatManager.java:60)
[22:26:54] [Server thread/WARN]: 	at me.rayzr522.jsonmessage.JSONMessage.send(JSONMessage.java:159)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.prodigynightclub.commands.admin.NightclubCMD.lambda$onNightclubList$0(NightclubCMD.java:74)
[22:26:54] [Server thread/WARN]: 	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.prodigynightclub.commands.admin.NightclubCMD.onNightclubList(NightclubCMD.java:61)
[22:26:54] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[22:26:54] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[22:26:54] [Server thread/WARN]: 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[22:26:54] [Server thread/WARN]: 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.acf.RegisteredCommand.invoke(RegisteredCommand.java:152)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.acf.BaseCommand.executeCommand(BaseCommand.java:577)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.acf.BaseCommand.execute(BaseCommand.java:513)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.acf.RootCommand.execute(RootCommand.java:99)
[22:26:54] [Server thread/WARN]: 	at fr.cocoraid.acf.BukkitRootCommand.execute(BukkitRootCommand.java:84)
[22:26:54] [Server thread/WARN]: 	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149)
[22:26:54] [Server thread/WARN]: 	at org.bukkit.craftbukkit.v1_19_R1.CraftServer.dispatchCommand(CraftServer.java:828)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.network.PlayerConnection.handleCommand(PlayerConnection.java:2031)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1834)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.network.protocol.game.ServerboundChatCommandPacket.a(SourceFile:37)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.network.protocol.game.ServerboundChatCommandPacket.a(SourceFile:13)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:31)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.TickTask.run(SourceFile:18)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.d(SourceFile:157)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(SourceFile:23)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1150)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:1)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.x(SourceFile:131)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.bh(MinecraftServer.java:1129)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1122)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.c(SourceFile:140)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1106)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.v(MinecraftServer.java:1014)
[22:26:54] [Server thread/WARN]: 	at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:291)
[22:26:54] [Server thread/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:833)

Code:

JSONMessage.create("CLICK HERE")
                        .color(ChatColor.DARK_PURPLE)
                        .style(ChatColor.BOLD)
                        .runCommand("/test tp " + nc.getName())
                        .then(" to teleport")
                        .color(ChatColor.LIGHT_PURPLE)
                        .send((Player) sender);

Potential solution:

I had the same issue for one of my plugin,

new ChatComponentText(customName) must be changed into Component.literal(customName)

corentingosselin avatar Jul 06 '22 20:07 corentingosselin

Yep I'm having the exact same issue aswell

uhFinn avatar Aug 09 '22 17:08 uhFinn

Yep I'm having the exact same issue aswell

I made my own class with the same builder system if you need :)

import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

import java.util.LinkedList;

public class JSONMessage {

    LinkedList<TextComponent> textComponents = new LinkedList<>();

    public JSONMessage(String text) {
        then(text);
    }

    public JSONMessage then(String text) {
        TextComponent message = new TextComponent(text);
        textComponents.add(message);
        return this;
    }

    public JSONMessage color(ChatColor color) {
        textComponents.getLast().setColor(net.md_5.bungee.api.ChatColor.of(color.name()));
        return this;
    }

    public JSONMessage bold() {
        textComponents.getLast().setBold(true);
        return this;
    }

    public JSONMessage runCommand(String command) {
        textComponents.getLast().setClickEvent( new ClickEvent( ClickEvent.Action.RUN_COMMAND, "/" + command));
        return this;
    }

    public void send(Player player) {
        TextComponent[] array = textComponents.toArray(new TextComponent[textComponents.size()]);
        player.spigot().sendMessage(array);
    }
}

Example:

 new JSONMessage("Great !")
                        .color(ChatColor.DARK_PURPLE)
                        .then(" CLICK HERE TO SAVE ")
                        .color(ChatColor.LIGHT_PURPLE)
                        .bold()
                        .runCommand("pnc setup finish")
                        .then(" your nightclub")
                        .color(ChatColor.DARK_PURPLE)
                        .send(admin);

corentingosselin avatar Aug 10 '22 06:08 corentingosselin

Your incredible, thank you! :)

uhFinn avatar Aug 10 '22 10:08 uhFinn

I've started adding 1.19 support but it's getting progressively more difficult to support newer versions as Mojang makes pretty significant changes to their code. I may put this on hold for now and work on a compatibility module that instead utilizes TextComponent since it has a more stable API and at this point is pretty universally available...

anyway, here's the source as it stands: https://github.com/rayzr522/JSONMessage/tree/1.19-compat

only thing done so far is getting the ChatComponent implementation to not fail on load, haven't even tested if it works yet since everything else is still broken

foxfirecodes avatar Aug 22 '22 00:08 foxfirecodes