Development Assistance Help with Fanciful Library

Discussion in 'Plugin Help/Development/Requests' started by Andavin, Nov 15, 2015.

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

    Andavin

    I've tried all I can and I just can't figure out this error that has to do with the Fanciful Library but I can't figure out what.

    This is the Error
    Code:
    [15:31:48 WARN]: java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/PacketPlayOutChat
    [15:31:48 WARN]:     at java.lang.Class.forName0(Native Method)
    [15:31:48 WARN]:     at java.lang.Class.forName(Class.java:264)
    [15:31:48 WARN]:     at net.amoebaman.util.Reflection.getNMSClass(Reflection.java:64)
    [15:31:48 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:89)
    [15:31:48 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:78)
    [15:31:48 WARN]:     at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:30)
    [15:31:48 WARN]:     at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:201)
    [15:31:48 WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [15:31:48 WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
    [15:31:48 WARN]:     at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
    [15:31:48 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325)
    [15:31:48 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107)
    [15:31:48 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
    [15:31:48 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
    [15:31:48 WARN]:     at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244)
    [15:31:48 WARN]:     at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980)
    [15:31:48 WARN]:     at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
    [15:31:48 WARN]:     at java.lang.Thread.run(Thread.java:745)
    [15:31:48 WARN]: java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/IChatBaseComponent
    [15:31:48 WARN]:     at java.lang.Class.forName0(Native Method)
    [15:31:48 WARN]:     at java.lang.Class.forName(Class.java:264)
    [15:31:48 WARN]:     at net.amoebaman.util.Reflection.getNMSClass(Reflection.java:64)
    [15:31:48 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:89)
    [15:31:48 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:78)
    [15:31:48 WARN]:     at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:30)
    [15:31:48 WARN]:     at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:201)
    [15:31:48 WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [15:31:48 WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
    [15:31:48 WARN]:     at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
    [15:31:48 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325)
    [15:31:48 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107)
    [15:31:48 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
    [15:31:48 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
    [15:31:48 WARN]:     at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244)
    [15:31:48 WARN]:     at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980)
    [15:31:48 WARN]:     at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
    [15:31:48 WARN]:     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
    [15:31:48 WARN]:     at java.lang.Thread.run(Thread.java:745)
    [15:31:48 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'vote' in plugin Vote v0.0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[PluginCommand.class:git-Cauldron-Reloaded-1.7.10-1.1291.01.0]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) ~[SimpleCommandMap.class:git-Cauldron-Reloaded-1.7.10-1.1291.01.0]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717) ~[CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1291.01.0]
        at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325) [nh.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107) [nh.class:?]
        at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38) [ir.class:?]
        at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53) [ir.class:?]
        at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
        at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430) [lt.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
    Caused by: java.lang.NullPointerException
        at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:89) ~[?:?]
        at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:78) ~[?:?]
        at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:30) ~[?:?]
        at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:201) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[PluginCommand.class:git-Cauldron-Reloaded-1.7.10-1.1291.01.0]
        ... 13 more
    And this is the Fanciful main class imports
    Code:
    import java.io.IOException;
    import java.io.StringWriter;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.logging.Level;
    import static mkremins.fanciful.TextualComponent.rawText;
    
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import com.google.gson.stream.JsonWriter;
    
    import net.amoebaman.util.ArrayWrapper;
    import net.amoebaman.util.Reflection;
    import org.bukkit.Achievement;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.Statistic;
    import org.bukkit.Statistic.Type;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.serialization.ConfigurationSerializable;
    import org.bukkit.configuration.serialization.ConfigurationSerialization;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
     
  2. Offline

    Scimiguy

    Are you running your server on Minecraft 1.7?
     
  3. Offline

    Andavin

    I am, Cauldron 1.7.10. Honestly the plugin works fine on Spigot 1.7.10, but when I switch to Cauldron I get this error. I posted here because there are no more Cauldron support pages. I would really appreciate any help I could get.
     
  4. Offline

    Scimiguy

    Well we don't support mods here
     
  5. Offline

    Andavin

    This has nothing to do with any mods. The plugins just can't find minecraft classes and I can't figure out why. I just need some help in figuring out how to get those classes

    I think I narrowed it down to this method in the Reflection Class
    Code:
    /**
         * Gets a {@link Class} object representing a type contained within the {@code net.minecraft.server} versioned package.
         * The class instances returned by this method are cached, such that no lookup will be done twice (unless multiple threads are accessing this method simultaneously).
         * @param className The name of the class, excluding the package, within NMS.
         * @return The class instance representing the specified NMS class, or {@code null} if it could not be loaded.
         */
        public synchronized static Class<?> getNMSClass(String className) {
            if(_loadedNMSClasses.containsKey(className)){
                return _loadedNMSClasses.get(className);
            }
       
            String fullName = "net.minecraft.server." + getVersion() + className;
            Class<?> clazz = null;
            try {
                clazz = Class.forName(fullName);
            } catch (Exception e) {
                e.printStackTrace();
                _loadedNMSClasses.put(className, null);
                return null;
            }
            _loadedNMSClasses.put(className, clazz);
            return clazz;
        }
    from this is the stack trace:
    Code:
    [19:40:01 WARN]: java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/PacketPlayOutChat
    [19:40:01 WARN]:     at java.lang.Class.forName0(Native Method)
    [19:40:01 WARN]:     at java.lang.Class.forName(Class.java:264)
    [19:40:01 WARN]:     at net.amoebaman.util.Reflection.getNMSClass(Reflection.java:64)
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:90)
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:79)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:35)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:209)
    [19:40:01 WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [19:40:01 WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
    [19:40:01 WARN]:     at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980)
    [19:40:01 WARN]:     at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
    [19:40:01 WARN]:     at java.lang.Thread.run(Thread.java:745)
    [19:40:01 WARN]: java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/IChatBaseComponent
    [19:40:01 WARN]:     at java.lang.Class.forName0(Native Method)
    [19:40:01 WARN]:     at java.lang.Class.forName(Class.java:264)
    [19:40:01 WARN]:     at net.amoebaman.util.Reflection.getNMSClass(Reflection.java:64)
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:90)
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:79)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:35)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:209)
    [19:40:01 WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [19:40:01 WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
    [19:40:01 WARN]:     at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980)
    [19:40:01 WARN]:     at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
    [19:40:01 WARN]:     at java.lang.Thread.run(Thread.java:745)
    [19:40:01 WARN]: java.lang.NullPointerException
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:90)
    [19:40:01 WARN]:     at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:79)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.voteHelp(VoteCore.java:35)
    [19:40:01 WARN]:     at me.andavin.Vote.VoteCore.onCommand(VoteCore.java:209)
    [19:40:01 WARN]:     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    [19:40:01 WARN]:     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181)
    [19:40:01 WARN]:     at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:717)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147361_d(NetHandlerPlayServer.java:1325)
    [19:40:01 WARN]:     at net.minecraft.network.NetHandlerPlayServer.func_147354_a(NetHandlerPlayServer.java:1107)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:38)
    [19:40:01 WARN]:     at net.minecraft.network.play.client.C01PacketChatMessage.func_148833_a(C01PacketChatMessage.java:53)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244)
    [19:40:01 WARN]:     at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980)
    [19:40:01 WARN]:     at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
    [19:40:01 WARN]:     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
    [19:40:01 WARN]:     at java.lang.Thread.run(Thread.java:745)
     
    Last edited: Nov 15, 2015
  6. Offline

    Scimiguy

    This has everything to do with mods

    You say it works on spigot? That's our job done
    If it then doesn't work on cauldron, that's forges problem
     
  7. Offline

    Zombie_Striker

    [19:40:01 WARN]: java.lang.NullPointerException
    [19:40:01 WARN]: at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:90)
    [19:40:01 WARN]: at mkremins.fanciful.FancyMessage.<init>(FancyMessage.java:79)
    ...
    java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/IChatBaseComponent[19:40:01 WARN]:
    ...
    java.lang.ClassNotFoundException: net/minecraft/server/v1_7_R4/PacketPlayOutChat[19:40:01 WARN]:

    These are a few important lines. Although this thread shouldn't be here, can you post your code here? Can you post any classes relative to FancyMessage.class
     
  8. Offline

    Andavin

    I ended up just switching to using a console command sender and using the tellraw command instead. The null error is was coming from Fanciful not being able to find the two Minecraft classes PacketPlayOutChat and IChatBaseComponent using reflection. The only reason I could think of that this was happening is that Forge and Cauldron use the Minecraft server as a separate file and so it doesn't have direct access to the jar file.

    Here's the NMS reflection method...
    Code:
    /**
         * Gets a {@link Class} object representing a type contained within the {@code net.minecraft.server} versioned package.
         * The class instances returned by this method are cached, such that no lookup will be done twice (unless multiple threads are accessing this method simultaneously).
         * @param className The name of the class, excluding the package, within NMS.
         * @return The class instance representing the specified NMS class, or {@code null} if it could not be loaded.
         */
        public synchronized static Class<?> getNMSClass(String className) {
            if(_loadedNMSClasses.containsKey(className)){
                return _loadedNMSClasses.get(className);
            }
           
            String fullName = "net.minecraft.server." + getVersion() + className;
            Class<?> clazz = null;
            try {
                clazz = Class.forName(fullName);
            } catch (Exception e) {
                e.printStackTrace();
                _loadedNMSClasses.put(className, null);
                return null;
            }
            _loadedNMSClasses.put(className, clazz);
            return clazz;
        }
    And here's the constructor method that calls the reflection method
    Code:
        public FancyMessage(final TextualComponent firstPartText) {
            messageParts = new ArrayList<MessagePart>();
            messageParts.add(new MessagePart(firstPartText));
            jsonString = null;
            dirty = false;
    
            if(nmsPacketPlayOutChatConstructor == null){
                try {
                    nmsPacketPlayOutChatConstructor = Reflection.getNMSClass("PacketPlayOutChat").getDeclaredConstructor(Reflection.getNMSClass("IChatBaseComponent"));
                    nmsPacketPlayOutChatConstructor.setAccessible(true);
                } catch (NoSuchMethodException e) {
                    Bukkit.getLogger().log(Level.SEVERE, "Could not find Minecraft method or constructor.", e);
                } catch (SecurityException e) {
                    Bukkit.getLogger().log(Level.WARNING, "Could not access constructor.", e);
                }
            }
        }
    Sorry for the late reply. I thought I wasn't gonna get any help here.
     
Thread Status:
Not open for further replies.

Share This Page