Solved Respawn with last used kit?

Discussion in 'Plugin Development' started by danablend, Jan 31, 2016.

Thread Status:
Not open for further replies.
  1. Hey i need help in making it so when a player uses a kit, and dies afterwards, he will respawn with that same kit. Im guessing i will need to make a hashmap, but how should i do it?

    This is the code for kit loading:
    Code:
        private void LoadKit(Player player, String kitName) {
            if (!player.hasPermission("echoplexkits.use." + kitName)) {
                player.sendMessage(ChatColor.RED + "You dont have access to use that kit!");
            } else {
                ArrayList items = (ArrayList)this.config.get("kits." + kitName + ".items");
                ArrayList armor = (ArrayList)this.config.get("kits." + kitName + ".armor");
                ItemStack[] armors = new ItemStack[armor.size()];
                ItemStack[] inv = new ItemStack[items.size()];
                String path = "Players." + player.getName() + ".credits";
                int cost = config.getInt("kits." + kitName + ".cost");
                if(config.getInt(path) < cost){
                    player.sendMessage(ChatColor.RED + "You can't afford that kit!");
                    return;
                }
               
                int i = 0;
                while (i < items.size()) {
                    if (items.toArray()[i] != null) {
                        inv[i] = ItemStackSerializer.deserialize((String)items.get(i));
                    }
                    ++i;
                }
                i = 0;
                while (i < armor.size()) {
                    if (items.toArray()[i] != null) {
                        armors[i] = ItemStackSerializer.deserialize((String)armor.get(i));
                    }
                    ++i;
                }
                player.getInventory().addItem(inv);
                for (Map.Entry<String, Object> entry : this.kits) {
                    if (!entry.getKey().contains(".")) continue;
                }
               
                player.getInventory().setArmorContents(armors);
                config.set(path, config.getInt(path) - cost);
                saveConfig();
                player.sendMessage(ChatColor.GREEN + "You have purchased " + kitName + " for " +  cost + " credits");
                this.delays.put(String.valueOf(player.getName()) + "_" + kitName, Date.from(Instant.now()));
                return;
            }
        }
    And this is the code that executes the loading on click:
    Code:
        public void InventoryClickEvent(InventoryClickEvent event) {
            String kitName;
            if (event.getCurrentItem() == null) {
                return;
            }
            Player player = this.getServer().getPlayerExact(event.getWhoClicked().getName());
            if (event.getInventory().getTitle() == this.kitMenu) {
                if (event.getCurrentItem().getType() == Material.IRON_SWORD) {
                    this.standardGUI(player);
                    player.playSound(player.getLocation(), Sound.NOTE_PLING, 2.0f, 1.0f);
                    event.setCancelled(true);
                }
                if (event.getCurrentItem().getType() == Material.DIAMOND_SWORD) {
                    this.premiumGUI(player);
                    player.playSound(player.getLocation(), Sound.NOTE_PLING, 2.0f, 1.0f);
                    event.setCancelled(true);
                }
                if (event.getCurrentItem().getType() == Material.STAINED_GLASS_PANE) {
                    event.setCancelled(true);
                }
                if (event.getCurrentItem().getType() == Material.WATCH){
                    event.setCancelled(true);
                }
            }
            if (event.getInventory().getTitle() == this.standardMenu || event.getInventory().getTitle() == this.premiumMenu) {
                if (event.getCurrentItem().getType() == Material.REDSTONE_TORCH_ON) {
                    this.openGUI(player);
                    event.setCancelled(true);
                } else if (event.getCurrentItem().getType() == Material.STAINED_GLASS_PANE) {
                    event.setCancelled(true);
                } else {
                    if (event.getCurrentItem().getItemMeta() == null) {
                        return;
                    }
                    kitName = event.getCurrentItem().getItemMeta().getDisplayName();
                    event.setCancelled(true);
                    kitName = kitName.substring(4);
                    this.LoadKit(player, kitName);
                    player.closeInventory();
                }
            }
        }
     
  2. Offline

    Coopah

    @danablend
    If you're just wanting to give them the kit they were previously in, just create a HashMap which contains the player name and their previous kit name. Then just use your load kit method and enter them as a player (obviously) and then get the name which was stored in the hashmap for the kit name :)
     
  3. So i should do it like this right? In the loadkit method?
    Code:
    HashMap<Player, String> kitRespawn = new HashMap<Player, String>();
                kitRespawn.put(player, kitName);
    EDIT: I figured it out thanks to your help. Problem is solved thank you.
     
    Last edited: Jan 31, 2016
Thread Status:
Not open for further replies.

Share This Page