Solved Help! Plugin Internal Error!

Discussion in 'Plugin Development' started by S1ant, Feb 2, 2017.

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

    S1ant

    Ok So I am making a plugin and everything seemed to be fine until I got that Internal Error Message that we all know and love... Here was the console error message:

    ---------------------------------------------------------------------------------------------------------------------------------
    S1ant issued server command: /info
    [18:06:52 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'info' in plugin InfoPlugin v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:646) ~[Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1115) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:950) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:53) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]
    Caused by: java.lang.Error: Unresolved compilation problems:
    void is an invalid type for the variable onClick
    Syntax error on token "(", ; expected
    Syntax error on token ")", ; expected
    at me.s1ant.infoplugin.InfoPlugin.onCommand(InfoPlugin.java:68) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Spigot-1.8.jar:git-Spigot-c3c767f-33d5de3]
    ... 14 more
    ---------------------------------------------------------------------------------------------------------------------------------
    Then here is the plugin code!
    Code:
    package me.s1ant.infoplugin;
    import java.util.ArrayList;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    public class InfoPlugin extends JavaPlugin{
    @Override
    public void onEnable() {
    System.out.println("InfoPlugin Has Been Enabled!");
    reloadConfig();
    saveConfig();
    }
    
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(cmd.getName().equalsIgnoreCase("info")){
    if(args.length == 0){
    Player p = (Player) sender;
    
    String website = getConfig().getString("website");
    String ts = getConfig().getString("teamspeak");
    
    ItemStack TS = new ItemStack(Material.PAPER);
    ItemMeta TSMeta = TS.getItemMeta();
    ArrayList<String> tslore = new ArrayList<String>();
    tslore.add(ts);
    TSMeta.setDisplayName(ChatColor.BLUE + "TEAMSPEAK");
    TSMeta.setLore(tslore);
    TS.setItemMeta(TSMeta);
    
    
    ItemStack SITE = new ItemStack(Material.PAPER);
    ItemMeta SITEMeta = TS.getItemMeta();
    ArrayList<String> sitelore = new ArrayList<String>();
    sitelore.add(website);
    SITEMeta.setDisplayName(getConfig().getString(website));
    SITEMeta.setLore(sitelore);
    SITE.setItemMeta(SITEMeta);
    
    
    Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED + "TeamSpeak/Website");
    p.openInventory(inv);
    inv.setItem(2, TS);
    inv.setItem(6, SITE);
    
    }else if(args.length == 1){
    if(args[0].equalsIgnoreCase("reload")){
    reloadConfig();
    saveConfig();
    sender.sendMessage(ChatColor.DARK_BLUE + "Configuration has been reloaded!");
    }else {
    sender.sendMessage(ChatColor.RED + "Invalid SubCommand! Did you mean /info? Did you mean /info reload?");
    }
    @EventHandler
    public void onClick(InventoryClickEvent e){
    if(e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")){
    e.setCancelled(true);
    }
    return true;
    }
    }
    }
    return true;
    }
    }
    Please Help as Much as You Can Thank You!

    P.S. Also could you tell me how I can make it like one of those picture code things that you see everywhere? Thanks!
     
    Last edited: Feb 2, 2017
  2. Offline

    mehboss

    @S1ant
    Before we help you, please click the news letter looking thing on the top when you goto reply and click "Code", then paste your code in there, thanks.

    UPDATE #1:
    Woah those brackets...

    Change it to:
    Code:
    package me.s1ant.infoplugin;
    
    import java.util.ArrayList;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class InfoPlugin extends JavaPlugin {
        @Override
        public void onEnable() {
            System.out.println("InfoPlugin Has Been Enabled!");
            reloadConfig();
            saveConfig();
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equalsIgnoreCase("info")) {
                if (args.length == 0) {
                    Player p = (Player) sender;
    
                    String website = getConfig().getString("website");
                    String ts = getConfig().getString("teamspeak");
    
                    ItemStack TS = new ItemStack(Material.PAPER);
                    ItemMeta TSMeta = TS.getItemMeta();
                    ArrayList<String> tslore = new ArrayList<String>();
                    tslore.add(ts);
                    TSMeta.setDisplayName(ChatColor.BLUE + "TEAMSPEAK");
                    TSMeta.setLore(tslore);
                    TS.setItemMeta(TSMeta);
    
                    ItemStack SITE = new ItemStack(Material.PAPER);
                    ItemMeta SITEMeta = TS.getItemMeta();
                    ArrayList<String> sitelore = new ArrayList<String>();
                    sitelore.add(website);
                    SITEMeta.setDisplayName(getConfig().getString(website));
                    SITEMeta.setLore(sitelore);
                    SITE.setItemMeta(SITEMeta);
    
                    Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED + "TeamSpeak/Website");
                    p.openInventory(inv);
                    inv.setItem(2, TS);
                    inv.setItem(6, SITE);
    
                } else if (args.length == 1) {
                    if (args[0].equalsIgnoreCase("reload")) {
                        reloadConfig();
                        saveConfig();
                        sender.sendMessage(ChatColor.DARK_BLUE + "Configuration has been reloaded!");
                    } else {
                        sender.sendMessage(
                                ChatColor.RED + "Invalid SubCommand! Did you mean /info? Did you mean /info reload?");
                    }
                }
            }
        }
    
        @EventHandler
        public void onClick(InventoryClickEvent e) {
            if (e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")) {
                e.setCancelled(true);
            }
        }
    }
    
     
    Last edited: Feb 2, 2017
  3. Offline

    S1ant

    Code:
    package me.s1ant.infoplugin;
    import java.util.ArrayList;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    public class InfoPlugin extends JavaPlugin{
    @Override
    public void onEnable() {
    System.out.println("InfoPlugin Has Been Enabled!");
    reloadConfig();
    saveConfig();
    }
    
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(cmd.getName().equalsIgnoreCase("info")){
    if(args.length == 0){
    Player p = (Player) sender;
    
    String website = getConfig().getString("website");
    String ts = getConfig().getString("teamspeak");
    
    ItemStack TS = new ItemStack(Material.PAPER);
    ItemMeta TSMeta = TS.getItemMeta();
    ArrayList<String> tslore = new ArrayList<String>();
    tslore.add(ts);
    TSMeta.setDisplayName(ChatColor.BLUE + "TEAMSPEAK");
    TSMeta.setLore(tslore);
    TS.setItemMeta(TSMeta);
    
    
    ItemStack SITE = new ItemStack(Material.PAPER);
    ItemMeta SITEMeta = TS.getItemMeta();
    ArrayList<String> sitelore = new ArrayList<String>();
    sitelore.add(website);
    SITEMeta.setDisplayName(getConfig().getString(website));
    SITEMeta.setLore(sitelore);
    SITE.setItemMeta(SITEMeta);
    
    
    Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED + "TeamSpeak/Website");
    p.openInventory(inv);
    inv.setItem(2, TS);
    inv.setItem(6, SITE);
    
    }else if(args.length == 1){
    if(args[0].equalsIgnoreCase("reload")){
    reloadConfig();
    saveConfig();
    sender.sendMessage(ChatColor.DARK_BLUE + "Configuration has been reloaded!");
    }else {
    sender.sendMessage(ChatColor.RED + "Invalid SubCommand! Did you mean /info? Did you mean /info reload?");
    }
    @EventHandler
    public void onClick(InventoryClickEvent e){
    if(e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")){
    e.setCancelled(true);
    }
    return true;
    }
    }
    }
    return true;
    }
    }
    Ok Here is the Plugin.yml:
    name: InfoPlugin
    version: 1.0
    main: me.s1ant.infoplugin.InfoPlugin
    author: S1ant
    description: InfoPlugin
    commands:
    info:
    usage: /<command>
    description: See the TeamSpeak and Website!

    And Those brackets where spaced out then put together so they didn't make the post longer than it already was, but now I know how to make the code thing (THANKS!)!
     
    Last edited by a moderator: Feb 2, 2017
  4. Offline

    Drkmaster83

    @S1ant Also, make sure you're checking the type of the player before casting it
    Code:
    public boolean onCommand(CommandSender sender.....) {
        if(sender instanceof Player) {
            Player p = (Player) sender;
        ...
    }
    
     
  5. Offline

    mehboss

    Yeah ahaha didn't even look there.. you don't want console doing that command.. it is impossible to have console open GUIs
     
  6. Offline

    S1ant

    Yeah I just forgot but The solution?
     
  7. Offline

    Zombie_Striker

    @S1ant
    If your problem has been solved, mark this thread as solved.

    Also, why are you using 1.8? That came out over three years ago. Update your server to 1.11. (If you are staying on 1.8 because of PVP, there are tons of plugins out there that revert the combat to pre 1.9) You should update because a lot of plugins are no longer planning on supporting older versions of MC, so you will be forced to use less plugins/ older versions of plugins.

    [edit]
    https://bukkit.org/threads/marking-threads-as-solved-filled.350059/
     
  8. Offline

    S1ant

    Oh Well I like 1.8 because lots of people don't play on 1.11 and I don't feel like using the PvP converters but I may take this into consideration half heartedly and make it 1.8-1.11!
     
  9. Offline

    mehboss

    @S1ant
    We told you the solution.
    1. Do an instance check..
    2. Change/add the correct brackets.

    If your problem is not solved after this show us your updated CODE and if the error in console changed, show us the ERROR..

    If your problem is solved:
     
  10. Offline

    S1ant

    Ok Guys I know what the problem is... it is this Method...
    Code:
    @EventHandler
    public void onClick(InventoryClickEvent e){
    if(e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")){
    e.setCancelled(true);
    }
    
    Theis method, if you put into eclipse you'll see doesn't work! I need to know another alternative for making sure they don't edit the Inventory, Someone Please Help!
     
  11. Offline

    mehboss

    Try
    Code:
    if(e.getInventory().getName().equals(ChatColor.RED + "TeamSpeak/Website")) {

    Sent from my iPhone using Tapatalk
     
  12. Offline

    S1ant

    It is the method that is the problem not the if statement the public void onClick(InventoryClickEvent e){} is the Problem not the If statement I don't know Why the onlick method is wrong
     
  13. Offline

    mehboss

    It's not but whatever :p


    Sent from my iPhone using Tapatalk
     
Thread Status:
Not open for further replies.

Share This Page