Solved Having trouble with NMS in 1.12

Discussion in 'Plugin Development' started by SonyVegas_, Oct 16, 2017.

Thread Status:
Not open for further replies.
  1. Offline

    SonyVegas_

    Hello, I seem to be having some trouble using NMS in 1.12, I'm not the best with NMS reflections so i dont know whats wrong with my code, any help would be apreciated!

    Code:java
    1.  
    2. public static void sendMineAchievement(Player player) {
    3. try {
    4. Constructor<?> constructor = getNMSClass("PacketPlayOutChat")
    5. .getConstructor(getNMSClass("IChatBaseComponent"), boolean.class);
    6. Object icbc = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", String.class)
    7. .invoke(null, "{\"text\":\"[Mine Stone]\",\"color\":\"aqua\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Mine Stone\",\"color\":\"aqua\"}]}}}");
    8. Object packet = constructor.newInstance(icbc, true);
    9. Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player);
    10. Object playerConnection = entityPlayer.getClass().getField("playerConnection").get(entityPlayer);
    11.  
    12. playerConnection.getClass().getMethod("sendPacket", getNMSClass("Packet")).invoke(playerConnection, packet);
    13. } catch (Exception e) {
    14. e.printStackTrace();
    15. }
    16. }
    17.  


    and this is the eror i get in console:

    > [01:47:34 WARN]: java.lang.NoSuchMethodException: net.minecraft.server.v1_12_R1.PacketPlayOutChat.<init>(net.minecraft.server.v1_12_R1.IChatBaseComponent, boolean)
    > [01:47:34 WARN]: at java.lang.Class.getConstructor0(Class.java:3082)
    > [01:47:34 WARN]: at java.lang.Class.getConstructor(Class.java:1825)
    > [01:47:34 WARN]: at com.ArcRadon.Achievements.AchievementsMain.sendMineAchievement(AchievementsMain.java:61)
    > [01:47:34 WARN]: at com.ArcRadon.Achievements.AchievementsMain.onBlockBreak(AchievementsMain.java:111)
    > [01:47:34 WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    > [01:47:34 WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    > [01:47:34 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    > [01:47:34 WARN]: at java.lang.reflect.Method.invoke(Method.java:498)
    > [01:47:34 WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302)
    > [01:47:34 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    > [01:47:34 WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499)
    > [01:47:34 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PlayerInteractManager.breakBlock(PlayerInteractManager.java:290)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PlayerInteractManager.a(PlayerInteractManager.java:123)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:875)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PacketPlayInBlockDig.a(SourceFile:40)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PacketPlayInBlockDig.a(SourceFile:10)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13)
    > [01:47:34 WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    > [01:47:34 WARN]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679)
    > [01:47:34 WARN]: at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577)
    > [01:47:34 WARN]: at java.lang.Thread.run(Thread.java:748)
     
  2. Offline

    Side8StarLite

    @SonyVegas_
    It looks like as of 1.12, there is no longer a constructor with a boolean parameter for the PacketPlayOutChat
    ichat.jpg
     
  3. Offline

    Caderape2

    @SonyVegas_

    Put your object 'icbc' alone as parameter in the packetPlayOutchat
     
  4. Offline

    SonyVegas_

    Worked, thanks a lot both of you :)
     
Thread Status:
Not open for further replies.

Share This Page