package com.mengcraft.team; import org.bukkit.ChatColor; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; import java.util.HashMap; import java.util.Map; import java.util.Set; public class TeamChest extends JavaPlugin implements Listener { private static Plugin teamChest; public static Map<String, Inventory> inventoryMap; private Plugin teamPlugin; @Override public void onEnable() { if (getServer().getPluginManager().getPlugin("TeamPlugin") == null) { setEnabled(false); } else { teamPlugin = getServer().getPluginManager().getPlugin("TeamPlugin"); teamChest = this; getServer().getPluginManager().registerEvents(this, this); inventoryMap = new HashMap<>(); new ChestThread().runTaskTimer(this, 6000, 6000); } } @EventHandler public void command(PlayerCommandPreprocessEvent event) { boolean b = event.getMessage().equals("/team chest"); if (b) { event.setCancelled(true); getChest(event.getPlayer()); } } private void getChest(Player player) { String playerName = player.getName(); String leaderName = TeamUtils.getPlayerLeader(playerName); if (leaderName != null) { Inventory inventory = TeamChest.inventoryMap.get(leaderName); if (inventory != null) player.openInventory(inventory); else { int teamLevel = TeamUtils.getTeamLevel(leaderName); String prefix = teamPlugin.getConfig().getString("teams." + leaderName + ".prefix", "") + ChatColor.RESET; inventory = TeamChest.teamChest.getServer().createInventory(null, teamLevel * 9, "队伍 " + prefix + " 公共箱子"); ConfigurationSection section = TeamChest.teamChest.getConfig().getConfigurationSection(leaderName); if (section != null) { Set<String> itemStacks = section.getKeys(false); int i = 0; ItemStack stack; for (String itemStack : itemStacks) { stack = section.getItemStack(itemStack); inventory.setItem(i, stack); i = i + 1; } } TeamChest.inventoryMap.put(leaderName, inventory); getChest(player); } } } private void getChestSave() { Inventory inventory; int i; ItemStack[] stacks; Set<String> keySet = TeamChest.inventoryMap.keySet(); for (String key : keySet) { TeamChest.teamChest.getConfig().set(key, null); inventory = TeamChest.inventoryMap.get(key); stacks = inventory.getContents(); i = 0; for (ItemStack stack : stacks) { if (stack != null) TeamChest.teamChest.getConfig().set(key + "." + i, stack); i = i + 1; } } TeamChest.teamChest.saveConfig(); TeamChest.inventoryMap = new HashMap<>(); } private class ChestThread extends BukkitRunnable { @Override public void run() { getChestSave(); } } }