Adding a gui for votifier

Discussion in 'Plugin Development' started by MajorSkillage, Oct 22, 2014.

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

    MajorSkillage

    I pretty much need to create an inventory where I add points per vote (already done) and create a gui to spend those points, i stored them in config.yml and i am thinking about adding a getConfig().addDefault(p.getName() + " total votes", count + 1);
    here is my code
    Code:
    package me.rockinroll99.BiomeCraftVotes;
     
    import java.util.ArrayList;
    import java.util.List;
     
    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.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    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;
     
    import com.vexsoftware.votifier.model.VotifierEvent;
     
    public class BiomeCraftVotes extends JavaPlugin implements Listener{
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this, this);
        }
        public static Inventory shop = Bukkit.createInventory(null, 9, "My custom Inventory!");
        ItemStack stack = new ItemStack(272, 0, (byte)0);
        ItemMeta im = stack.getItemMeta();
        public void addMeta(){
        List<String> lore = new ArrayList<String>();
        lore.add(ChatColor.RED + "50 Points required!");
        }
        static {
            shop.setItem(0, new ItemStack(Material.DIRT, 1));
            shop.setItem(8, new ItemStack(Material.GOLD_BLOCK, 1));
            }
        @EventHandler(priority=EventPriority.NORMAL)
        public void onVote(VotifierEvent e){
            String p = e.getVote().getUsername();
            if(getConfig().getInt(p) > 0){
                saveConfig();
                int count = getConfig().getInt(p);
                Player p1 =  Bukkit.getServer().getPlayer(p);
                getConfig().set(p, count + 1);
                p1.sendMessage("Thanks for voting and helping our community grow! your total votes is " + (getConfig().getInt(p)));
                Bukkit.broadcastMessage(ChatColor.RED + "" + ChatColor.RED + p1.getName() + " " + ChatColor.GOLD + "Has just voted @ " + e.getVote().getServiceName());
                saveConfig();
                reloadConfig();
            } else {
                Player p1 =  Bukkit.getServer().getPlayer(p);
                saveConfig();
                getConfig().addDefault(p, 0);
            getConfig().set(p, 1);
            getConfig().options().copyDefaults(true);
            saveConfig();
            reloadConfig();
            p1.sendMessage("Thanks for voting and helping our community grow! your total vote is " + getConfig().getInt(p));
            Bukkit.broadcastMessage(ChatColor.RED + "" + ChatColor.RED + p1.getName() + " " + ChatColor.GOLD + "Has just voted @ " + e.getVote().getServiceName());
            saveConfig();
            }
        }
        public boolean onCommand(CommandSender Sender, Command cmd, String commandLabel, String[] args){
            Player p = (Player)Sender;
            if(commandLabel.equalsIgnoreCase("vote")){
                p.sendMessage(ChatColor.GOLD + "[" + ChatColor.GREEN + "BiomeCraft + ChatColor.GOLD + ]" + ChatColor.RED + "Vote links:");
                p.sendMessage(ChatColor.RED + "Still got to put some in :I");
            }
            if(commandLabel.equalsIgnoreCase("points")){
                p.openInventory(shop);
            }
            return false;
           
        }
        @EventHandler
        public void onInvClick(InventoryClickEvent e){
           
        }
    }
    idk what to do with ItemMeta im = stack.getItemMeta(); the main problem i am having is
    Enchantment name;
    im.enchant(name, 1, false);

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

    mine-care

    Let me start by:
    Player p = (Player)Sender;
    read my sig :)
    then, stop abusing static, i dont think you need it more or less on the inventory.
    and why
    static {

    }

    then:
    Player p1 = Bukkit.getServer().getPlayer(p);
    saveConfig();
    getConfig().addDefault(p, 0);
    getConfig().set(p, 1);
    getConfig().options().copyDefaults(true);
    saveConfig();
    reloadConfig();
    p1.sendMessage("Thanks for voting and helping our community grow! your total vote is " + getConfig().getInt(p));
    Bukkit.broadcastMessage(ChatColor.RED + "" + ChatColor.RED + p1.getName() + " " + ChatColor.GOLD + "Has just voted @ " + e.getVote().getServiceName());
    saveConfig();

    you save the config, set something, copy defaults, save it again, reload it, broadcast some messages and then save it again. This is kind of a pain for the server to open a file edit it and save it so many times, just for efficiency purpose i would recomend you use a ArrayList or a HashMap and then you can serialise them to file.

    and what is your problem with enchantment?
    =) please tagh me to reply
     
Thread Status:
Not open for further replies.

Share This Page