Add VIEW-PERMISSION

This commit is contained in:
filoghost 2014-11-15 17:15:42 +01:00
parent f1708de4c2
commit 7b32b16cb5
5 changed files with 37 additions and 4 deletions

View File

@ -21,8 +21,8 @@ import com.gmail.filoghost.chestcommands.util.Validate;
*/
public class IconMenu {
private String title;
private Icon[] icons;
protected final String title;
protected final Icon[] icons;
public IconMenu(String title, int rows) {

View File

@ -2,12 +2,15 @@ package com.gmail.filoghost.chestcommands.internal;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import com.gmail.filoghost.chestcommands.ChestCommands;
import com.gmail.filoghost.chestcommands.Permissions;
import com.gmail.filoghost.chestcommands.api.IconMenu;
import com.gmail.filoghost.chestcommands.internal.icon.ExtendedIcon;
import com.gmail.filoghost.chestcommands.internal.icon.IconCommand;
public class ExtendedIconMenu extends IconMenu {
@ -46,7 +49,25 @@ public class ExtendedIconMenu extends IconMenu {
}
}
super.open(player);
Inventory inventory = Bukkit.createInventory(new MenuInventoryHolder(this), icons.length, title);
for (int i = 0; i < icons.length; i++) {
if (icons[i] != null) {
if (icons[i] instanceof ExtendedIcon) {
ExtendedIcon extIcon = (ExtendedIcon) icons[i];
if (extIcon.getViewPermission() != null && !player.hasPermission(extIcon.getViewPermission())) {
continue;
}
}
inventory.setItem(i, ChestCommands.getAttributeRemover().removeAttributes(icons[i].createItemstack()));
}
}
player.openInventory(inventory);
}
public void sendNoPermissionMessage(CommandSender sender) {

View File

@ -15,6 +15,7 @@ public class ExtendedIcon extends Icon {
private String permission;
private String permissionMessage;
private String viewPermission;
private double moneyPrice;
private int playerPointsPrice;
private RequiredItem requiredItem;
@ -39,6 +40,14 @@ public class ExtendedIcon extends Icon {
this.permissionMessage = permissionMessage;
}
public String getViewPermission() {
return viewPermission;
}
public void setViewPermission(String viewPermission) {
this.viewPermission = viewPermission;
}
public double getMoneyPrice() {
return moneyPrice;
}

View File

@ -41,9 +41,10 @@ public class InventoryListener implements Listener {
int slot = event.getRawSlot();
if (slot >= 0 && slot < menu.getSize()) {
Icon icon = menu.getIconRaw(slot);
if (icon != null) {
if (icon != null && event.getInventory().getItem(slot) != null) {
boolean close = icon.onClick((Player) event.getWhoClicked());
if (close) {

View File

@ -35,6 +35,7 @@ public class IconSerializer {
REQUIRED_ITEM = "REQUIRED-ITEM",
PERMISSION = "PERMISSION",
PERMISSION_MESSAGE = "PERMISSION-MESSAGE",
VIEW_PERMISSION = "VIEW-PERMISSION",
KEEP_OPEN = "KEEP-OPEN",
POSITION_X = "POSITION-X",
POSITION_Y = "POSITION-Y";
@ -108,6 +109,7 @@ public class IconSerializer {
icon.setPermission(section.getString(Nodes.PERMISSION));
icon.setPermissionMessage(Utils.addColors(section.getString(Nodes.PERMISSION_MESSAGE)));
icon.setViewPermission(section.getString(Nodes.VIEW_PERMISSION));
boolean closeOnClick = !section.getBoolean(Nodes.KEEP_OPEN);
icon.setCloseOnClick(closeOnClick);