170 lines
4.4 KiB
Java
170 lines
4.4 KiB
Java
package cn.citycraft.GuiShopManager;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.configuration.ConfigurationSection;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.block.Action;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import cn.citycraft.GuiShopManager.GuiShopManager;
|
|
|
|
public class GSMItems implements Reloadable {
|
|
private HashMap<ItemStack, String> items = new HashMap<ItemStack, String>();
|
|
private HashMap<String, ItemStack> item_names = new HashMap<String, ItemStack>();
|
|
private HashMap<Integer, ItemStack> joinItems = new HashMap<Integer, ItemStack>();
|
|
private GuiShopManager plugin;
|
|
|
|
public GSMItems(GuiShopManager plugin) {
|
|
this.plugin = plugin;
|
|
|
|
loadItems(plugin);
|
|
}
|
|
|
|
public ItemStack getItemByName(String name) {
|
|
ItemStack i = this.item_names.get(name);
|
|
if (i != null)
|
|
return i;
|
|
for (String s : this.item_names.keySet()) {
|
|
if (s.equalsIgnoreCase(name))
|
|
return this.item_names.get(s);
|
|
}
|
|
for (String s : this.item_names.keySet()) {
|
|
if (s.toLowerCase().startsWith(name.toLowerCase()))
|
|
return this.item_names.get(s);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public HashMap<String, ItemStack> getItemNames() {
|
|
return this.item_names;
|
|
}
|
|
|
|
public void giveJoinItems(Player p) {
|
|
if (!this.joinItems.isEmpty()) {
|
|
for (Integer integer : this.joinItems.keySet()) {
|
|
int loc = integer.intValue();
|
|
ItemStack i = this.joinItems.get(Integer.valueOf(loc));
|
|
|
|
if ((!p.getInventory().contains(i.getType()))
|
|
|| (!hasItem(i, p))) {
|
|
loc--;
|
|
|
|
boolean b = false;
|
|
|
|
if ((loc >= p.getInventory().getSize()) || (loc < 0)) {
|
|
loc = 0;
|
|
b = true;
|
|
}
|
|
|
|
if ((!b) || (p.getInventory().getItem(loc) == null)) {
|
|
p.getInventory().setItem(loc, i.clone());
|
|
} else {
|
|
p.getInventory().addItem(new ItemStack[] { i.clone() });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private boolean hasItem(ItemStack i, Player p) {
|
|
for (ItemStack s : p.getInventory().getContents()) {
|
|
if ((s != null)
|
|
&& (s.hasItemMeta())
|
|
&& (s.getItemMeta().hasDisplayName())
|
|
&& (s.getItemMeta().getDisplayName().equalsIgnoreCase(i
|
|
.getItemMeta().getDisplayName())))
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public boolean isShopItem(ItemStack s) {
|
|
if (s == null)
|
|
return false;
|
|
|
|
for (ItemStack i : this.items.keySet()) {
|
|
if (i != null) {
|
|
if (i.getType() == s.getType()) {
|
|
if (i.getItemMeta().getDisplayName()
|
|
.equalsIgnoreCase(s.getItemMeta().getDisplayName()))
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private void loadItems(GuiShopManager plugin) {
|
|
ConfigurationSection c = plugin.getConfig().getConfigurationSection(
|
|
"Items");
|
|
if (c == null) {
|
|
Bukkit.getLogger()
|
|
.severe("[GuiShopManager] No Items were found in the config :/ Delete your config and restart the server to generate a new config file.");
|
|
return;
|
|
}
|
|
|
|
for (String path_name : c.getKeys(false)) {
|
|
ConfigurationSection sec = c.getConfigurationSection(path_name);
|
|
|
|
String open_shop = sec.getString("OpenShop");
|
|
|
|
if (open_shop != null) {
|
|
boolean give_on_join = sec.getBoolean("GiveOnJoin");
|
|
int inventoryloc = sec.getInt("InventoryLocation");
|
|
|
|
List<String> list = sec.getStringList("Look");
|
|
if (list != null) {
|
|
ItemStack item = plugin.getBossShop().getClassManager()
|
|
.getItemStackCreator().createItemStack(list);
|
|
|
|
this.items.put(item, open_shop);
|
|
this.item_names.put(path_name, item);
|
|
|
|
if (give_on_join) {
|
|
this.joinItems.put(Integer.valueOf(inventoryloc), item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void playerClicked(PlayerInteractEvent e) {
|
|
if (((e.getAction() == Action.RIGHT_CLICK_AIR) || (e.getAction() == Action.RIGHT_CLICK_BLOCK))
|
|
&& (e.getItem() != null)) {
|
|
for (ItemStack i : this.items.keySet()) {
|
|
if (i != null && i.hasItemMeta()
|
|
&& i.getItemMeta().hasDisplayName()) {
|
|
if (e.getItem() != null && e.getItem().hasItemMeta()
|
|
&& e.getItem().getItemMeta().hasDisplayName()) {
|
|
if (i.getItemMeta()
|
|
.getDisplayName()
|
|
.equalsIgnoreCase(
|
|
e.getItem().getItemMeta()
|
|
.getDisplayName())) {
|
|
String n = this.items.get(i);
|
|
this.plugin.getBossShop().getAPI()
|
|
.openShop(e.getPlayer(), n);
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void reload(GuiShopManager plugin) {
|
|
this.items.clear();
|
|
this.item_names.clear();
|
|
this.joinItems.clear();
|
|
|
|
loadItems(plugin);
|
|
}
|
|
} |