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
This commit is contained in:
KHobbits 2012-08-21 20:02:20 +01:00
parent b9cfd44588
commit e324a21b60
5 changed files with 67 additions and 6 deletions

View File

@ -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);
}
}
}
}

View File

@ -27,6 +27,7 @@ public class User extends UserData implements Comparable<User>, 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<User>, 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()

View File

@ -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);
}
}
}

View File

@ -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());
}
}

View File

@ -87,6 +87,10 @@ commands:
description: Enchants the item the user is holding.
usage: /<command> <enchantmentname> [level]
aliases: [enchantment,eenchant,eenchantment]
enderchest:
description: Lets you see inside an enderchest.
usage: /<command> [player]
aliases: [endersee,echest,eenderchest,eendersee,eechest]
essentials:
description: Reloads essentials.
usage: /<command>