Ir para conteúdo
  • 0

[Resolvido] (Ajuda) Backpack


WebMaker

Pergunta

Eu to fazendo um plugin de chest só que estou com um problema, quando o player remove o item ele não esta removendo da config ai fica meio que multiplicando o item, e também quando o player move o item de lugar, ele não remove a posição anterior do item! ai fica quando eu movo de lugar ele continua no local anterior e no novo local.

 

BackpackCommand

package Comandos;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import Main.Main;

public class BackpackCommand implements CommandExecutor {

	// MENSAGEMNS DA CONFIG
	String permission = Main.getInstance().message.getString("Server.Permission").replace("&", "§");
	YamlConfiguration chest = Main.getInstance().chest;

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if (cmd.getName().equalsIgnoreCase("chest")) {
			if (!(sender instanceof Player)) {
				return true;
			}
			if (!(sender.hasPermission("skypvp.virtualchest.level.1"))) {
				sender.sendMessage(permission);
				return true;
			}
			
			/*
			 *
			 * <ID>
			 *   1.
			 *   2. 
			 *   3.
			 *   
			 */
			
			Player p = (Player) sender;
			Inventory inv = Bukkit.createInventory(p, 36, "§8Chest " + p.getName());
			if (chest.contains(p.getUniqueId().toString())) {
				for (String i : chest.getConfigurationSection(p.getUniqueId().toString()).getKeys(false)) {
					ItemStack item = chest.getItemStack(p.getUniqueId().toString() + "." + i);
					inv.addItem(item);
				}
			}
			p.openInventory(inv);
			return true;
		}
		return false;
	}

}

PlayerClosedInventory

package Listernes;

import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import Main.Main;

public class PlayerCloseInvetory implements Listener {
	
	YamlConfiguration chest = Main.getInstance().chest;
	
	@EventHandler
	public void onInClose(InventoryCloseEvent e) {
		String title = e.getInventory().getTitle();
		Player p = (Player) e.getPlayer();
		if (title.equalsIgnoreCase("§8Chest " + p.getName()) == false)
			return;
		
		Inventory inv = e.getInventory();
		for (int i = 0; i <= 35; i++) {
			ItemStack item = inv.getItem(i);
			if (item == null) continue;
			if (item.getType() == Material.AIR) continue;
			chest.set(p.getUniqueId().toString() + "." + i, item);
		}
		Main.getInstance().save();
	}
}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

Guest gkovalechyn

Você pode deletar o inventário do player antes de salvar, daí ele vai limpar todos os itens: 

chest.set("p.getUniqueId().toString", null);
Link para o comentário
Compartilhar em outros sites

 

Você pode deletar o inventário do player antes de salvar, daí ele vai limpar todos os itens: 

chest.set("p.getUniqueId().toString", null);

 

Obrigado! eu tinha esquecido de colocar pra limpar antes do loop!

Pode fechar o tópico duvida resolvida!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...