mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-02-10 09:21:25 +01:00
Invsee now shows a live player inventory in a window, rather than cloning players inventory.
New Permission: essentials.invsee.modify - Player with this permission will be able to add/remove items from the other players inventory.
This commit is contained in:
parent
160c3f428c
commit
b7221516dc
@ -20,6 +20,9 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||||
@ -107,11 +110,6 @@ public class EssentialsPlayerListener implements Listener
|
|||||||
{
|
{
|
||||||
user.toggleGodModeEnabled();
|
user.toggleGodModeEnabled();
|
||||||
}
|
}
|
||||||
if (user.getSavedInventory() != null)
|
|
||||||
{
|
|
||||||
user.getInventory().setContents(user.getSavedInventory());
|
|
||||||
user.setSavedInventory(null);
|
|
||||||
}
|
|
||||||
user.updateActivity(false);
|
user.updateActivity(false);
|
||||||
user.dispose();
|
user.dispose();
|
||||||
}
|
}
|
||||||
@ -388,4 +386,26 @@ public class EssentialsPlayerListener implements Listener
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
public void onInventoryClickEvent(final InventoryClickEvent event)
|
||||||
|
{
|
||||||
|
if (event.getView().getTopInventory().getType() == InventoryType.PLAYER)
|
||||||
|
{
|
||||||
|
final User user = ess.getUser(event.getWhoClicked());
|
||||||
|
if (user.isInvSee() && !user.isAuthorized("essentials.invsee.modify"))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onInventoryCloseEvent(final InventoryCloseEvent event)
|
||||||
|
{
|
||||||
|
if (event.getView().getTopInventory().getType() == InventoryType.PLAYER)
|
||||||
|
{
|
||||||
|
final User user = ess.getUser(event.getPlayer());
|
||||||
|
user.setInvSee(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,6 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
lastHealTimestamp = _getLastHealTimestamp();
|
lastHealTimestamp = _getLastHealTimestamp();
|
||||||
jail = _getJail();
|
jail = _getJail();
|
||||||
mails = _getMails();
|
mails = _getMails();
|
||||||
savedInventory = _getSavedInventory();
|
|
||||||
teleportEnabled = getTeleportEnabled();
|
teleportEnabled = getTeleportEnabled();
|
||||||
ignoredPlayers = getIgnoredPlayers();
|
ignoredPlayers = getIgnoredPlayers();
|
||||||
godmode = _getGodModeEnabled();
|
godmode = _getGodModeEnabled();
|
||||||
@ -407,50 +406,17 @@ public abstract class UserData extends PlayerExtension implements IConf
|
|||||||
mails.add(mail);
|
mails.add(mail);
|
||||||
setMails(mails);
|
setMails(mails);
|
||||||
}
|
}
|
||||||
private ItemStack[] savedInventory;
|
|
||||||
|
|
||||||
public ItemStack[] getSavedInventory()
|
private boolean invSee;
|
||||||
{
|
|
||||||
return savedInventory;
|
public boolean isInvSee() {
|
||||||
|
return invSee;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemStack[] _getSavedInventory()
|
public void setInvSee(boolean set) {
|
||||||
{
|
invSee = set;
|
||||||
int size = config.getInt("inventory.size", 0);
|
|
||||||
if (size < 1 || (getInventory() != null && size > getInventory().getSize()))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ItemStack[] is = new ItemStack[size];
|
|
||||||
for (int i = 0; i < size; i++)
|
|
||||||
{
|
|
||||||
is[i] = config.getItemStack("inventory." + i);
|
|
||||||
}
|
|
||||||
return is;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSavedInventory(ItemStack[] is)
|
|
||||||
{
|
|
||||||
if (is == null || is.length == 0)
|
|
||||||
{
|
|
||||||
savedInventory = null;
|
|
||||||
config.removeProperty("inventory");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
savedInventory = is;
|
|
||||||
config.setProperty("inventory.size", is.length);
|
|
||||||
for (int i = 0; i < is.length; i++)
|
|
||||||
{
|
|
||||||
if (is[i] == null || is[i].getType() == Material.AIR)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
config.setProperty("inventory." + i, is[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.save();
|
|
||||||
}
|
|
||||||
private boolean teleportEnabled;
|
private boolean teleportEnabled;
|
||||||
|
|
||||||
private boolean getTeleportEnabled()
|
private boolean getTeleportEnabled()
|
||||||
|
@ -17,41 +17,12 @@ public class Commandinvsee extends EssentialsCommand
|
|||||||
@Override
|
@Override
|
||||||
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
|
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
|
||||||
{
|
{
|
||||||
|
if (args.length < 1)
|
||||||
if (args.length < 1 && user.getSavedInventory() == null)
|
|
||||||
{
|
{
|
||||||
throw new NotEnoughArgumentsException();
|
throw new NotEnoughArgumentsException();
|
||||||
}
|
}
|
||||||
User invUser = user;
|
final User invUser = getPlayer(server, args, 0);
|
||||||
if (args.length == 1)
|
user.setInvSee(true);
|
||||||
{
|
user.openInventory(invUser.getInventory());
|
||||||
invUser = getPlayer(server, args, 0);
|
|
||||||
}
|
|
||||||
if (invUser == user && user.getSavedInventory() != null)
|
|
||||||
{
|
|
||||||
invUser.getInventory().setContents(user.getSavedInventory());
|
|
||||||
user.setSavedInventory(null);
|
|
||||||
user.sendMessage(_("invRestored"));
|
|
||||||
throw new NoChargeException();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.getSavedInventory() == null)
|
|
||||||
{
|
|
||||||
user.setSavedInventory(user.getInventory().getContents());
|
|
||||||
}
|
|
||||||
ItemStack[] invUserStack = invUser.getInventory().getContents();
|
|
||||||
final int userStackLength = user.getInventory().getContents().length;
|
|
||||||
if (invUserStack.length < userStackLength)
|
|
||||||
{
|
|
||||||
invUserStack = Arrays.copyOf(invUserStack, userStackLength);
|
|
||||||
}
|
|
||||||
if (invUserStack.length > userStackLength)
|
|
||||||
{
|
|
||||||
throw new Exception(_("invBigger"));
|
|
||||||
}
|
|
||||||
user.getInventory().setContents(invUserStack);
|
|
||||||
user.sendMessage(_("invSee", invUser.getDisplayName()));
|
|
||||||
user.sendMessage(_("invSeeHelp"));
|
|
||||||
throw new NoChargeException();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,7 +189,7 @@ commands:
|
|||||||
killall:
|
killall:
|
||||||
description: Kill all mobs in a world.
|
description: Kill all mobs in a world.
|
||||||
usage: /<command> [mobType] [radius]
|
usage: /<command> [mobType] [radius]
|
||||||
aliases: [ekillall,butcher,ebutcher]
|
aliases: [ekillall,butcher,ebutcher,mobkill,emobkill]
|
||||||
kittycannon:
|
kittycannon:
|
||||||
description: Throw an exploding kitten at your opponent
|
description: Throw an exploding kitten at your opponent
|
||||||
usage: /<command>
|
usage: /<command>
|
||||||
@ -308,11 +308,11 @@ commands:
|
|||||||
spawner:
|
spawner:
|
||||||
description: Change the mob type of a spawner
|
description: Change the mob type of a spawner
|
||||||
usage: /<command> <mob>
|
usage: /<command> <mob>
|
||||||
aliases: [espawner]
|
aliases: [espawner,changems,echangems]
|
||||||
spawnmob:
|
spawnmob:
|
||||||
description: Spawns a mob.
|
description: Spawns a mob.
|
||||||
usage: /<command> <mob>[:data][,<mount>[:data]] [amount] [player]
|
usage: /<command> <mob>[:data][,<mount>[:data]] [amount] [player]
|
||||||
aliases: [espawnmob]
|
aliases: [espawnmob,mob,emob]
|
||||||
sudo:
|
sudo:
|
||||||
description: Make another user perform a command.
|
description: Make another user perform a command.
|
||||||
usage: /<command> <player> <command [args]>
|
usage: /<command> <player> <command [args]>
|
||||||
|
Loading…
Reference in New Issue
Block a user