From 65df249510a779a546c8958d3e4445e271502a2f Mon Sep 17 00:00:00 2001 From: okamosy Date: Thu, 11 Aug 2011 15:52:34 +0100 Subject: [PATCH 1/2] Added support for teleporting to hidden players Permission: essentials.teleport.hidden --- .../essentials/commands/Commandtpo.java | 23 ++++++++++++++---- .../essentials/commands/Commandtpohere.java | 24 +++++++++++++++---- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java index 2a9e34da8..18d818ea1 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpo.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.OfflinePlayer; import org.bukkit.Server; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; @@ -21,9 +22,23 @@ public class Commandtpo extends EssentialsCommand } //Just basically the old tp command - User p = getPlayer(server, args, 0); - charge(user); - user.getTeleport().now(p, false); - user.sendMessage(Util.i18n("teleporting")); + User p = getPlayer(server, args, 0, true); + // Check if user is offline + if (p.getBase() instanceof OfflinePlayer) + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } + + // Verify permission + if (!p.isHidden() || user.isAuthorized("essentials.teleport.hidden")) + { + charge(user); + user.getTeleport().now(p, false); + user.sendMessage(Util.i18n("teleporting")); + } + else + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java index 593d17b59..186476a50 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtpohere.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.commands; +import com.earth2me.essentials.OfflinePlayer; import org.bukkit.Server; import com.earth2me.essentials.User; import com.earth2me.essentials.Util; @@ -21,9 +22,24 @@ public class Commandtpohere extends EssentialsCommand } //Just basically the old tphere command - User p = getPlayer(server, args, 0); - charge(user); - p.getTeleport().now(user, false); - user.sendMessage(Util.i18n("teleporting")); + User p = getPlayer(server, args, 0, true); + + // Check if user is offline + if (p.getBase() instanceof OfflinePlayer) + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } + + // Verify permission + if (!p.isHidden() || user.isAuthorized("essentials.teleport.hidden")) + { + charge(user); + p.getTeleport().now(user, false); + user.sendMessage(Util.i18n("teleporting")); + } + else + { + throw new NoSuchFieldException(Util.i18n("playerNotFound")); + } } } From b776362be7751785607caee78c5510e6470d82eb Mon Sep 17 00:00:00 2001 From: okamosy Date: Thu, 11 Aug 2011 20:47:51 +0100 Subject: [PATCH 2/2] Added ability to clear entire list of of unlimited items Fixed permission bug with per item spawning General unlimited cleanup --- .../essentials/commands/Commandunlimited.java | 103 +++++++++++------- 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java b/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java index 3c79df4cb..122891e02 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandunlimited.java @@ -33,63 +33,90 @@ public class Commandunlimited extends EssentialsCommand if (args[0].equalsIgnoreCase("list")) { - StringBuilder sb = new StringBuilder(); - sb.append(Util.i18n("unlimitedItems")).append(" "); - boolean first = true; - List items = target.getUnlimited(); - if (items.isEmpty()) + String list = getList(target); + user.sendMessage(list); + } + else if (args[0].equalsIgnoreCase("clear")) + { + List itemList = target.getUnlimited(); + + int index = 0; + while (itemList.size() > index) { - sb.append(Util.i18n("none")); - } - for (Integer integer : items) - { - if (!first) + Integer item = itemList.get(index); + if (toggleUnlimited(user, target, item.toString()) == false) { - sb.append(", "); + index++; } - first = false; - String matname = Material.getMaterial(integer).toString().toLowerCase().replace("_", ""); - sb.append(matname); } - user.sendMessage(sb.toString()); - return; + } + else + { + toggleUnlimited(user, target, args[0]); + } + } + + private String getList(User target) + { + StringBuilder sb = new StringBuilder(); + sb.append(Util.i18n("unlimitedItems")).append(" "); + boolean first = true; + List items = target.getUnlimited(); + if (items.isEmpty()) + { + sb.append(Util.i18n("none")); + } + for (Integer integer : items) + { + if (!first) + { + sb.append(", "); + } + first = false; + String matname = Material.getMaterial(integer).toString().toLowerCase().replace("_", ""); + sb.append(matname); } - final ItemStack stack = ess.getItemDb().get(args[0], 1); + return sb.toString(); + } + + private Boolean toggleUnlimited(User user, User target, String item) throws Exception + { + ItemStack stack = ess.getItemDb().get(item, 1); stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2)); String itemname = stack.getType().toString().toLowerCase().replace("_", ""); - if (!user.isAuthorized("essentials.unlimited.item-all") - && !user.isAuthorized("essentials.unlimited.item-" + itemname) - && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) - && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) - && user.isAuthorized("essentials.unlimited.item-bucket"))) + if (ess.getSettings().permissionBasedItemSpawn() + && (!user.isAuthorized("essentials.unlimited.item-all") + && !user.isAuthorized("essentials.unlimited.item-" + itemname) + && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) + && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) + && user.isAuthorized("essentials.unlimited.item-bucket")))) { user.sendMessage(Util.format("unlimitedItemPermission", itemname)); - return; + return false; } - - if (target.hasUnlimited(stack)) + String message = "disableUnlimited"; + Boolean enableUnlimited = false; + if (!target.hasUnlimited(stack)) { - if (user != target) + message = "enableUnlimited"; + enableUnlimited = true; + charge(user); + if (!InventoryWorkaround.containsItem(target.getInventory(), true, stack)) { - user.sendMessage(Util.format("disableUnlimited", itemname, target.getDisplayName())); + target.getInventory().addItem(stack); } - target.sendMessage(Util.format("disableUnlimited", itemname, target.getDisplayName())); - target.setUnlimited(stack, false); - return; } - charge(user); + if (user != target) { - user.sendMessage(Util.format("enableUnlimited", itemname, target.getDisplayName())); + user.sendMessage(Util.format(message, itemname, target.getDisplayName())); } - target.sendMessage(Util.format("enableUnlimited", itemname, target.getDisplayName())); - if (!InventoryWorkaround.containsItem(target.getInventory(), true, stack)) - { - target.getInventory().addItem(stack); - } - target.setUnlimited(stack, true); + target.sendMessage(Util.format(message, itemname, target.getDisplayName())); + target.setUnlimited(stack, enableUnlimited); + + return true; } }