mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-06-11 13:33:54 +00:00
Master Builder world
This commit is contained in:
@ -18,8 +18,7 @@ public class Command_adminworld extends FreedomCommand
|
||||
|
||||
private enum CommandMode
|
||||
{
|
||||
|
||||
TELEPORT, GUEST, TIME, WEATHER;
|
||||
TELEPORT, GUEST, TIME, WEATHER
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,174 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.world.WorldTime;
|
||||
import me.totalfreedom.totalfreedommod.world.WorldWeather;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Go to the MasterBuilderWorld.",
|
||||
usage = "/<command> [time <morning | noon | evening | night> | weather <off | on | storm>]",
|
||||
aliases = "mbw")
|
||||
public class Command_masterbuilderworld extends FreedomCommand
|
||||
{
|
||||
|
||||
private enum CommandMode
|
||||
{
|
||||
TELEPORT, TIME, WEATHER
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
CommandMode commandMode = null;
|
||||
|
||||
if (args.length == 0)
|
||||
{
|
||||
commandMode = CommandMode.TELEPORT;
|
||||
}
|
||||
else if (args.length >= 2)
|
||||
{
|
||||
if ("time".equalsIgnoreCase(args[0]))
|
||||
{
|
||||
commandMode = CommandMode.TIME;
|
||||
}
|
||||
else if ("weather".equalsIgnoreCase(args[0]))
|
||||
{
|
||||
commandMode = CommandMode.WEATHER;
|
||||
}
|
||||
}
|
||||
|
||||
if (commandMode == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
switch (commandMode)
|
||||
{
|
||||
case TELEPORT:
|
||||
{
|
||||
if (!(sender instanceof Player) || playerSender == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
World masterBuilderWorld = null;
|
||||
try
|
||||
{
|
||||
masterBuilderWorld = plugin.wm.masterBuilderWorld.getWorld();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
|
||||
if (masterBuilderWorld == null || playerSender.getWorld() == masterBuilderWorld)
|
||||
{
|
||||
msg("Going to the main world.");
|
||||
playerSender.teleport(server.getWorlds().get(0).getSpawnLocation());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Going to the Master Builder world");
|
||||
plugin.wm.masterBuilderWorld.sendToWorld(playerSender);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case TIME:
|
||||
{
|
||||
assertCommandPerms(sender, playerSender);
|
||||
|
||||
if (args.length == 2)
|
||||
{
|
||||
WorldTime timeOfDay = WorldTime.getByAlias(args[1]);
|
||||
if (timeOfDay != null)
|
||||
{
|
||||
plugin.wm.masterBuilderWorld.setTimeOfDay(timeOfDay);
|
||||
msg("MasterBuilder world time set to: " + timeOfDay.name());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case WEATHER:
|
||||
{
|
||||
assertCommandPerms(sender, playerSender);
|
||||
|
||||
if (args.length == 2)
|
||||
{
|
||||
WorldWeather weatherMode = WorldWeather.getByAlias(args[1]);
|
||||
if (weatherMode != null)
|
||||
{
|
||||
plugin.wm.masterBuilderWorld.setWeatherMode(weatherMode);
|
||||
msg("MasterBuilder world weather set to: " + weatherMode.name());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Invalid weather mode. Can be: off, rain, storm");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (PermissionDeniedException ex)
|
||||
{
|
||||
if (ex.getMessage().isEmpty())
|
||||
{
|
||||
return noPerms();
|
||||
}
|
||||
sender.sendMessage(ex.getMessage());
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO: Redo this properly
|
||||
private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException
|
||||
{
|
||||
if (!(sender instanceof Player) || playerSender == null || !plugin.al.isSeniorAdmin(playerSender))
|
||||
{
|
||||
throw new PermissionDeniedException();
|
||||
}
|
||||
}
|
||||
|
||||
private class PermissionDeniedException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private PermissionDeniedException()
|
||||
{
|
||||
super("");
|
||||
}
|
||||
|
||||
private PermissionDeniedException(String string)
|
||||
{
|
||||
super(string);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,207 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.masterbuilder.MasterBuilder;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.pravian.aero.util.Ips;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH, blockHostConsole = true)
|
||||
@CommandParameters(description = "Manage master builders.", usage = "/<command> <list | reload | | <add | remove | info> <username>>")
|
||||
public class Command_mbconfig extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (args.length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (args[0])
|
||||
{
|
||||
case "list":
|
||||
{
|
||||
msg("Master Builders: " + StringUtils.join(plugin.mbl.getMasterBuilderNames(), ", "), ChatColor.GOLD);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
case "reload":
|
||||
{
|
||||
checkRank(Rank.SENIOR_ADMIN);
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Reloading the Master Builder list", true);
|
||||
plugin.mbl.load();
|
||||
msg("Master Builder list reloaded!");
|
||||
return true;
|
||||
}
|
||||
|
||||
case "info":
|
||||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
checkRank(Rank.SUPER_ADMIN);
|
||||
|
||||
MasterBuilder masterBuilder = plugin.mbl.getEntryByName(args[1]);
|
||||
|
||||
if (masterBuilder == null)
|
||||
{
|
||||
final Player player = getPlayer(args[1]);
|
||||
if (player != null)
|
||||
{
|
||||
masterBuilder = plugin.mbl.getMasterBuilder(player);
|
||||
}
|
||||
}
|
||||
|
||||
if (masterBuilder == null)
|
||||
{
|
||||
msg("Master Builder not found: " + args[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg(masterBuilder.toString());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
case "add":
|
||||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
checkConsole();
|
||||
checkRank(Rank.SENIOR_ADMIN);
|
||||
if (!FUtil.isExecutive(sender.getName()))
|
||||
{
|
||||
noPerms();
|
||||
}
|
||||
|
||||
// Player already on the list?
|
||||
final Player player = getPlayer(args[1]);
|
||||
if (player != null && plugin.mbl.isMasterBuilder(player))
|
||||
{
|
||||
msg("That player is already on the Master Builder list.");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Find the entry
|
||||
String name = player != null ? player.getName() : args[1];
|
||||
MasterBuilder masterBuilder = null;
|
||||
for (MasterBuilder loopMasterBuilder : plugin.mbl.getAllMasterBuilders().values())
|
||||
{
|
||||
if (loopMasterBuilder.getName().equalsIgnoreCase(name))
|
||||
{
|
||||
masterBuilder = loopMasterBuilder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (masterBuilder == null) // New entry
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
msg(FreedomCommand.PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Adding " + player.getName() + " to the Master Builder list", true);
|
||||
plugin.mbl.addMasterBuilder(new MasterBuilder(player));
|
||||
if (player != null)
|
||||
{
|
||||
plugin.rm.updateDisplay(player);
|
||||
}
|
||||
}
|
||||
else // Existing admin
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Readding " + masterBuilder.getName() + " to the Master Builder list", true);
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
masterBuilder.setName(player.getName());
|
||||
masterBuilder.addIp(Ips.getIp(player));
|
||||
}
|
||||
|
||||
masterBuilder.setLastLogin(new Date());
|
||||
|
||||
plugin.mbl.save();
|
||||
plugin.mbl.updateTables();
|
||||
if (player != null)
|
||||
{
|
||||
plugin.rm.updateDisplay(player);
|
||||
}
|
||||
}
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||
if (fPlayer.getFreezeData().isFrozen())
|
||||
{
|
||||
fPlayer.getFreezeData().setFrozen(false);
|
||||
msg(player.getPlayer(), "You have been unfrozen.");
|
||||
}
|
||||
|
||||
if (!player.isOp())
|
||||
{
|
||||
player.setOp(true);
|
||||
player.sendMessage(YOU_ARE_OP);
|
||||
}
|
||||
plugin.pv.removeEntry(player.getName()); // master builders can't have player verification entries
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
case "remove":
|
||||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
checkConsole();
|
||||
checkRank(Rank.SENIOR_ADMIN);
|
||||
if (!FUtil.isExecutive(sender.getName()))
|
||||
{
|
||||
noPerms();
|
||||
}
|
||||
|
||||
Player player = getPlayer(args[1]);
|
||||
MasterBuilder masterBuilder = player != null ? plugin.mbl.getMasterBuilder(player) : plugin.mbl.getEntryByName(args[1]);
|
||||
|
||||
if (masterBuilder == null)
|
||||
{
|
||||
msg("Matser Builder not found: " + args[1]);
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Removing " + masterBuilder.getName() + " from the Master Builder list", true);
|
||||
plugin.mbl.removeMasterBuilder(masterBuilder);
|
||||
if (player != null)
|
||||
{
|
||||
plugin.rm.updateDisplay(player);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.masterbuilder.MasterBuilder;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
@ -173,6 +174,11 @@ public class Command_saconfig extends FreedomCommand
|
||||
|
||||
if (admin == null) // New admin
|
||||
{
|
||||
if (plugin.mbl.isMasterBuilderImpostor(player))
|
||||
{
|
||||
msg("This player was labeled as a Master Builder imposter and is not an admin, therefore they can not be added to the admin list.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
if (player == null)
|
||||
{
|
||||
msg(FreedomCommand.PLAYER_NOT_FOUND);
|
||||
@ -196,6 +202,34 @@ public class Command_saconfig extends FreedomCommand
|
||||
admin.addIp(Ips.getIp(player));
|
||||
}
|
||||
|
||||
// Handle master builders
|
||||
if (!plugin.mbl.isMasterBuilder(player))
|
||||
{
|
||||
MasterBuilder masterBuilder = null;
|
||||
for (MasterBuilder loopMasterBuilder : plugin.mbl.getAllMasterBuilders().values())
|
||||
{
|
||||
if (loopMasterBuilder.getName().equalsIgnoreCase(name))
|
||||
{
|
||||
masterBuilder = loopMasterBuilder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (masterBuilder != null)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
masterBuilder.setName(player.getName());
|
||||
masterBuilder.addIp(Ips.getIp(player));
|
||||
}
|
||||
|
||||
masterBuilder.setLastLogin(new Date());
|
||||
|
||||
plugin.mbl.save();
|
||||
plugin.mbl.updateTables();
|
||||
}
|
||||
}
|
||||
|
||||
admin.setActive(true);
|
||||
admin.setLastLogin(new Date());
|
||||
|
||||
|
Reference in New Issue
Block a user