mirror of
https://github.com/TheDeus-Group/TFM-4.3-Reloaded.git
synced 2024-09-12 13:38:38 +00:00
Finish guest list.
This commit is contained in:
parent
6d0b8362b7
commit
bf7877addc
|
@ -10,7 +10,7 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
@CommandParameters(description = "Go to the AdminWorld.", usage = "/<command> [guest < list | add <player> | remove <player> > | time <worldtime>]")
|
@CommandParameters(description = "Go to the AdminWorld.", usage = "/<command> [guest < list | purge | add <player> | remove <player> > | time <morning | noon | evening | night> | weather <off | on | storm>]")
|
||||||
public class Command_adminworld extends TFM_Command
|
public class Command_adminworld extends TFM_Command
|
||||||
{
|
{
|
||||||
private enum CommandMode
|
private enum CommandMode
|
||||||
|
@ -48,105 +48,150 @@ public class Command_adminworld extends TFM_Command
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (commandMode)
|
try
|
||||||
{
|
{
|
||||||
case TELEPORT:
|
switch (commandMode)
|
||||||
{
|
{
|
||||||
// /adminworld
|
case TELEPORT:
|
||||||
World adminWorld = null;
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
adminWorld = TFM_AdminWorld.getInstance().getWorld();
|
World adminWorld = null;
|
||||||
}
|
try
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
if (adminWorld == null || sender_p.getWorld() == adminWorld)
|
|
||||||
{
|
|
||||||
playerMsg("Going to the main world.");
|
|
||||||
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
playerMsg("Going to the AdminWorld.");
|
|
||||||
TFM_AdminWorld.getInstance().sendToWorld(sender_p);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case GUEST:
|
|
||||||
{
|
|
||||||
// /adminworld guest list
|
|
||||||
// /adminworld guest add <player>
|
|
||||||
// /adminworld guest remove <player>
|
|
||||||
if (args.length == 2)
|
|
||||||
{
|
|
||||||
if ("list".equalsIgnoreCase(args[1]))
|
|
||||||
{
|
{
|
||||||
//list
|
adminWorld = TFM_AdminWorld.getInstance().getWorld();
|
||||||
}
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
else if (args.length == 3)
|
|
||||||
{
|
|
||||||
if (!(sender instanceof Player) || sender_p == null || !TFM_SuperadminList.isUserSuperadmin(sender))
|
|
||||||
{
|
{
|
||||||
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("add".equalsIgnoreCase(args[1]))
|
if (adminWorld == null || sender_p.getWorld() == adminWorld)
|
||||||
{
|
{
|
||||||
//add args[2]
|
playerMsg("Going to the main world.");
|
||||||
|
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
|
||||||
}
|
}
|
||||||
else if (TFM_Util.isRemoveCommand(args[1]))
|
else
|
||||||
{
|
{
|
||||||
//remove args[2]
|
playerMsg("Going to the AdminWorld.");
|
||||||
|
TFM_AdminWorld.getInstance().sendToWorld(sender_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
case GUEST:
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TIME:
|
|
||||||
{
|
|
||||||
// /adminworld time <morning|noon|evening|night>
|
|
||||||
|
|
||||||
if (!(sender instanceof Player) || sender_p == null || !TFM_SuperadminList.isUserSuperadmin(sender))
|
|
||||||
{
|
{
|
||||||
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
|
if (args.length == 2)
|
||||||
return true;
|
{
|
||||||
}
|
if ("list".equalsIgnoreCase(args[1]))
|
||||||
|
{
|
||||||
|
playerMsg("AdminWorld Guest List: " + TFM_AdminWorld.getInstance().guestListToString());
|
||||||
|
}
|
||||||
|
else if ("purge".equalsIgnoreCase(args[1]))
|
||||||
|
{
|
||||||
|
assertCommandPerms(sender, sender_p);
|
||||||
|
TFM_AdminWorld.getInstance().purgeGuestList();
|
||||||
|
playerMsg("AdminWorld guest list purged.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (args.length == 3)
|
||||||
|
{
|
||||||
|
assertCommandPerms(sender, sender_p);
|
||||||
|
|
||||||
if (args.length == 2)
|
if ("add".equalsIgnoreCase(args[1]))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TFM_AdminWorld.getInstance().addGuest(getPlayer(args[2]), sender_p);
|
||||||
|
}
|
||||||
|
catch (PlayerNotFoundException ex)
|
||||||
|
{
|
||||||
|
sender.sendMessage(ex.getMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (TFM_Util.isRemoveCommand(args[1]))
|
||||||
|
{
|
||||||
|
Player player = TFM_AdminWorld.getInstance().removeGuest(args[2]);
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
playerMsg("Guest removed: " + player.getName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
playerMsg("Can't find guest entry for: " + args[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TIME:
|
||||||
{
|
{
|
||||||
//set time = args[1]
|
assertCommandPerms(sender, sender_p);
|
||||||
|
|
||||||
|
if (args.length == 2)
|
||||||
|
{
|
||||||
|
//set time = args[1] : <morning|noon|evening|night>
|
||||||
|
|
||||||
|
playerMsg("Feature not implemented.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
case WEATHER:
|
||||||
break;
|
|
||||||
}
|
|
||||||
case WEATHER:
|
|
||||||
{
|
|
||||||
// /adminworld weather <off|on|storm>
|
|
||||||
|
|
||||||
if (!(sender instanceof Player) || sender_p == null || !TFM_SuperadminList.isUserSuperadmin(sender))
|
|
||||||
{
|
{
|
||||||
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
|
assertCommandPerms(sender, sender_p);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length == 2)
|
if (args.length == 2)
|
||||||
|
{
|
||||||
|
//set weather = args[1] : <off|on|storm>
|
||||||
|
|
||||||
|
playerMsg("Feature not implemented.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
//set weather = args[1]
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (PermissionDeniedException ex)
|
||||||
|
{
|
||||||
|
sender.sendMessage(ex.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void assertCommandPerms(CommandSender sender, Player sender_p) throws PermissionDeniedException
|
||||||
|
{
|
||||||
|
if (!(sender instanceof Player) || sender_p == null || !TFM_SuperadminList.isUserSuperadmin(sender))
|
||||||
|
{
|
||||||
|
throw new PermissionDeniedException(TotalFreedomMod.MSG_NO_PERMS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PermissionDeniedException extends Exception
|
||||||
|
{
|
||||||
|
public PermissionDeniedException(String string)
|
||||||
|
{
|
||||||
|
super(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package me.StevenLawson.TotalFreedomMod;
|
package me.StevenLawson.TotalFreedomMod;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
|
@ -75,12 +79,50 @@ public final class TFM_AdminWorld extends TFM_CustomWorld
|
||||||
if (TFM_SuperadminList.isUserSuperadmin(supervisor))
|
if (TFM_SuperadminList.isUserSuperadmin(supervisor))
|
||||||
{
|
{
|
||||||
guestList.put(guest, supervisor);
|
guestList.put(guest, supervisor);
|
||||||
|
wipeAccessCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeGuest(Player guest)
|
public Player removeGuest(Player guest)
|
||||||
{
|
{
|
||||||
guestList.remove(guest);
|
Player player = guestList.remove(guest);
|
||||||
|
wipeAccessCache();
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player removeGuest(String partialName)
|
||||||
|
{
|
||||||
|
partialName = partialName.toLowerCase().trim();
|
||||||
|
Iterator<Player> it = guestList.values().iterator();
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
Player player = it.next();
|
||||||
|
if (player.getName().toLowerCase().trim().contains(partialName))
|
||||||
|
{
|
||||||
|
return removeGuest(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String guestListToString()
|
||||||
|
{
|
||||||
|
List<String> output = new ArrayList<String>();
|
||||||
|
Iterator<Map.Entry<Player, Player>> it = guestList.entrySet().iterator();
|
||||||
|
while (it.hasNext())
|
||||||
|
{
|
||||||
|
Map.Entry<Player, Player> entry = it.next();
|
||||||
|
Player player = entry.getKey();
|
||||||
|
Player supervisor = entry.getValue();
|
||||||
|
output.add(player.getName() + " (Supervisor: " + supervisor.getName() + ")");
|
||||||
|
}
|
||||||
|
return StringUtils.join(output, ", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void purgeGuestList()
|
||||||
|
{
|
||||||
|
guestList.clear();
|
||||||
|
wipeAccessCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean validateMovement(PlayerMoveEvent event)
|
public boolean validateMovement(PlayerMoveEvent event)
|
||||||
|
@ -129,7 +171,7 @@ public final class TFM_AdminWorld extends TFM_CustomWorld
|
||||||
accessCache.clear();
|
accessCache.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canAccessWorld(Player player)
|
public boolean canAccessWorld(final Player player)
|
||||||
{
|
{
|
||||||
long currentTimeMillis = System.currentTimeMillis();
|
long currentTimeMillis = System.currentTimeMillis();
|
||||||
if (cacheLastCleared == null || cacheLastCleared.longValue() + CACHE_CLEAR_FREQUENCY <= currentTimeMillis)
|
if (cacheLastCleared == null || cacheLastCleared.longValue() + CACHE_CLEAR_FREQUENCY <= currentTimeMillis)
|
||||||
|
@ -146,6 +188,10 @@ public final class TFM_AdminWorld extends TFM_CustomWorld
|
||||||
{
|
{
|
||||||
Player supervisor = guestList.get(player);
|
Player supervisor = guestList.get(player);
|
||||||
canAccess = supervisor != null && supervisor.isOnline() && TFM_SuperadminList.isUserSuperadmin(supervisor);
|
canAccess = supervisor != null && supervisor.isOnline() && TFM_SuperadminList.isUserSuperadmin(supervisor);
|
||||||
|
if (!canAccess)
|
||||||
|
{
|
||||||
|
guestList.remove(player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cached = canAccess;
|
cached = canAccess;
|
||||||
accessCache.put(player, cached);
|
accessCache.put(player, cached);
|
||||||
|
|
Loading…
Reference in a new issue