[solved]adding sub id support?

Discussion in 'Plugin Development' started by TopGear93, May 14, 2012.

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

    TopGear93

    How would i add sub id support to a plugin? i tried directly adding 383:0 to my config and i got this error.The server also kicked me out when i got the error.

    Code:
    2012-05-14 11:49:40 [WARNING] Failed to handle packet: java.lang.NullPointerException
    java.lang.NullPointerException
        at net.minecraft.server.ItemStack.a(ItemStack.java:263)
        at net.minecraft.server.PlayerInventory.i(PlayerInventory.java:169)
        at net.minecraft.server.EntityHuman.e(EntityHuman.java:310)
        at net.minecraft.server.EntityLiving.F_(EntityLiving.java:447)
        at net.minecraft.server.EntityHuman.F_(EntityHuman.java:159)
        at net.minecraft.server.EntityPlayer.a(EntityPlayer.java:228)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:341)
        at net.minecraft.server.Packet10Flying.handle(SourceFile:126)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113)
        at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:551)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:449)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    
    right now my material system looks like this.

    PHP:
     item1 = new ItemStack(Material.getMaterial(plugin.getConfig().getString("***.***")), plugin.getConfig().getInt("***.***"));
     
    target.getInventory().addItem(new ItemStack[] { item1 });

    Still looking for some help.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 25, 2016
  2. Offline

    Njol

    383:0 isn't an integer, thus plugin.getConfig().getInt("***.***") will return null. You should instead use getString, split it at ":" and parse both resulting parts as integers, where the first should be the id of the item an the secon the durability.
     
    TopGear93 likes this.
  3. Offline

    TopGear93

    sorry for the necro. I decided to work on the sub-id and sadly i ran into an error.

    The error i receive while using /notreferred.

    Show Spoiler
    Code:
    org.bukkit.command.CommandException: Unhandled exception executing command 'notreferred' in plugin ReferGift v1.0.3
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:166)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:479)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:821)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:781)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:764)
        at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:34)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113)
        at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:558)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:450)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
        at us.topgear93.refergift.Commands.notreferred.onCommand(notreferred.java:56)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
        ... 12 more
    


    Line 56
    PHP:
                        short dura Short.valueOf(splitstring[1]);

    PHP:
    package us.topgear93.refergift.Commands;

    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;

    import us.topgear93.refergift.ReferGift;

    public class 
    notreferred implements CommandExecutor {
        private static 
    ItemStack item1;
        public 
    ReferGift plugin;
        public 
    notreferred(ReferGift plugin){
            
    this.plugin plugin;
        }
        @
    Override
        
    public boolean onCommand(CommandSender senderCommand cmdString labelString[] args) {
            
    Player player null;
            if (
    sender instanceof Player) {
                
    player = (Playersender;
                if(
    label.equalsIgnoreCase("notreferred")) {
                    if(
    ReferGift.permission.has(sender"refergift.notreferred") || sender.isOp()){
                    }else{
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.DARK_RED plugin.getConfig().getString("refergift.notreferrednoperms"));
                        return 
    false;
                    }
                    if(
    ReferGift.thereferred.contains(player.getName().toLowerCase())) {//CHECKS IF PLAYER WAS NOT REFERRED
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.RED plugin.getConfig().getString("refergift.alreadyreferred"));
                        return 
    false;
                    }
                    if(
    ReferGift.notreferred.contains(player.getName().toLowerCase())) {//CHECKS IF PLAYER WAS NOT REFERRED
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.RED plugin.getConfig().getString("refergift.notreferredmsg2"));
                        return 
    false;
                    }
                    if (
    plugin.getConfig().getBoolean("refergift.money.switch") == true) {
                        
    ReferGift.economy.depositPlayer(player.getName(), plugin.getConfig().getInt("refergift.notreferredmoneyamount"));
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.WHITE plugin.getConfig().getString("refergift.YouWereRewarded") + ChatColor.GREEN " $" ChatColor.GRAY plugin.getConfig().getInt("refergift.notreferredmoneyamount"));
                        
    ReferGift.notreferred.add(player.getName().toLowerCase());//ADDS PLAYER TO NOT REFERRED LIST
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.WHITE plugin.getConfig().getString("refergift.notreferredmsg"));
                        if(
    plugin.getConfig().getBoolean("refergift.chat.switch") == true){
                            
    player.performCommand("chat on");
                            return 
    true;
                        }else{
                            
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.WHITE plugin.getConfig().getString("refergift.typetochat"));
                            return 
    true;
                        }
                    }else{
                        
    String giftsplit String.valueOf(plugin.getConfig().getInt("refergift.gift."));
                        
    String[] splitstring giftsplit.split(":");
                        
    short dura Short.valueOf(splitstring[1]);
                        
    item1 = new ItemStack(plugin.getConfig().getInt("refergift.notreferred.gift.gift"), plugin.getConfig().getInt("refergift.notreferred.gift.amount"), dura);
                        
    player.getInventory().addItem(new ItemStack[] { item1});
                        
    ReferGift.notreferred.add(player.getName().toLowerCase());//ADDS PLAYER TO NOT REFERRED LIST
                        
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.WHITE plugin.getConfig().getString("refergift.notreferredmsg"));
                        if(
    plugin.getConfig().getBoolean("refergift.chat.switch") == true){
                            
    player.performCommand("chat on");
                            return 
    true;
                        }else{
                            
    player.sendMessage(ChatColor.DARK_RED "[" ChatColor.GRAY plugin.getConfig().getString("refergift.title") + ChatColor.DARK_RED "]-" ChatColor.WHITE plugin.getConfig().getString("refergift.typetochat"));
                            return 
    true;
                        }
                    }
                }
            }
            return 
    false;
        }
    }
     
  4. Offline

    Njol

    If the string doesn't contain a colon string.split(":") will return an array with only one element. You have to check whether there actally is a second element in the array before actually using it:
    Code:
    short dura = 0;
    if (splitstring.length == 2) {
        dura = Short.parseShort(splitstring[1]);
    }
     
  5. Offline

    TopGear93

    i added this to my code but when i use the command my config is being force changed from 383:50 to 23030. Im not receiving errors.
     
  6. Offline

    Njol

    That's because YAML interprets <number>:<number> as a time in minutes:seconds and converts it into seconds on save. You have to either put quotes around it ('383:50') or use another character to separate the id from the durability.
     
  7. Offline

    TopGear93

    Very nice! Everything is working fine. Thanks for the help! :D
     
Thread Status:
Not open for further replies.

Share This Page