From e324a21b60075a902e4262ed33735a47e346a773 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Tue, 21 Aug 2012 20:02:20 +0100 Subject: New command: /enderchest [player] (alias /endersee and /echest) This command lets you look inside your or another players enderchest New Permissions: essentials.enderchest - Access to the command essentials.enderchest.others - Lets you look at other enderchests essentials.enderchest.modify - Lets you modify other enderchests --- .../essentials/EssentialsPlayerListener.java | 20 ++++++++++++++- Essentials/src/com/earth2me/essentials/User.java | 12 +++++++++ .../essentials/commands/Commandenderchest.java | 30 ++++++++++++++++++++++ .../essentials/commands/Commandinvsee.java | 7 ++--- Essentials/src/plugin.yml | 4 +++ 5 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 2fe03ebce..7468f0771 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -12,6 +12,7 @@ import java.util.List; import java.util.Locale; import java.util.logging.Level; import java.util.logging.Logger; +import net.minecraft.server.InventoryEnderChest; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.HumanEntity; @@ -25,6 +26,7 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerLoginEvent.Result; import org.bukkit.event.player.*; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -433,12 +435,15 @@ public class EssentialsPlayerListener implements Listener @EventHandler(priority = EventPriority.LOWEST) public void onInventoryClickEvent(final InventoryClickEvent event) { + ess.getLogger().info("Detected invent click"); if (event.getView().getTopInventory().getType() == InventoryType.PLAYER) { + ess.getLogger().info("This is a player/player inventory click"); final User user = ess.getUser(event.getWhoClicked()); final InventoryHolder invHolder = event.getView().getTopInventory().getHolder(); if (invHolder != null && invHolder instanceof HumanEntity) { + ess.getLogger().info("Confirmed the top inventory belongs to a valid human."); final User invOwner = ess.getUser((HumanEntity)invHolder); if (user.isInvSee() && (!user.isAuthorized("essentials.invsee.modify") || invOwner.isAuthorized("essentials.invsee.preventmodify") @@ -448,6 +453,14 @@ public class EssentialsPlayerListener implements Listener } } } + else if (event.getView().getTopInventory().getType() == InventoryType.ENDER_CHEST) + { + final User user = ess.getUser(event.getWhoClicked()); + if (user.isEnderSee() && (!user.isAuthorized("essentials.enderchest.modify"))) + { + event.setCancelled(true); + } + } } @EventHandler(priority = EventPriority.MONITOR) @@ -458,5 +471,10 @@ public class EssentialsPlayerListener implements Listener final User user = ess.getUser(event.getPlayer()); user.setInvSee(false); } + else if (event.getView().getTopInventory().getType() == InventoryType.ENDER_CHEST) + { + final User user = ess.getUser(event.getPlayer()); + user.setEnderSee(false); + } } -} +} \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 5b6eff1fb..e4551f111 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -27,6 +27,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser private boolean hidden = false; private transient Location afkPosition = null; private boolean invSee = false; + private boolean enderSee = false; private static final Logger logger = Logger.getLogger("Minecraft"); User(final Player base, final IEssentials ess) @@ -612,6 +613,17 @@ public class User extends UserData implements Comparable, IReplyTo, IUser { invSee = set; } + + public boolean isEnderSee() + { + return enderSee; + } + + public void setEnderSee(final boolean set) + { + enderSee = set; + } + private transient long teleportInvulnerabilityTimestamp = 0; public void enableInvulnerabilityAfterTeleport() diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java b/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java new file mode 100644 index 000000000..bd707d392 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java @@ -0,0 +1,30 @@ +package com.earth2me.essentials.commands; + +import com.earth2me.essentials.User; +import org.bukkit.Server; + + +public class Commandenderchest extends EssentialsCommand +{ + public Commandenderchest() + { + super("enderchest"); + } + + @Override + protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception + { + if (args.length > 0 && user.isAuthorized("essentials.enderchest.others")) + { + final User invUser = getPlayer(server, args, 0); + user.openInventory(invUser.getEnderChest()); + user.setEnderSee(true); + } + else + { + user.openInventory(user.getEnderChest()); + user.setEnderSee(false); + } + + } +} diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java index a4a659e97..3964dbe67 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandinvsee.java @@ -1,10 +1,7 @@ package com.earth2me.essentials.commands; -import static com.earth2me.essentials.I18n._; import com.earth2me.essentials.User; -import java.util.Arrays; import org.bukkit.Server; -import org.bukkit.inventory.ItemStack; public class Commandinvsee extends EssentialsCommand @@ -21,8 +18,8 @@ public class Commandinvsee extends EssentialsCommand { throw new NotEnoughArgumentsException(); } - final User invUser = getPlayer(server, args, 0); + final User invUser = getPlayer(server, args, 0); user.setInvSee(true); - user.openInventory(invUser.getInventory()); + user.openInventory(invUser.getInventory()); } } diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 1ef0a0aee..aa16a80f1 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -87,6 +87,10 @@ commands: description: Enchants the item the user is holding. usage: / [level] aliases: [enchantment,eenchant,eenchantment] + enderchest: + description: Lets you see inside an enderchest. + usage: / [player] + aliases: [endersee,echest,eenderchest,eendersee,eechest] essentials: description: Reloads essentials. usage: / -- cgit v1.2.3