use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class UserTableManager method getEntries.
/**
* Gets all entries associated with an island
*
* @param island the specified island
*/
public List<User> getEntries(@NotNull Island island) {
int index = Collections.binarySearch(userIslandIndex, new User(island), Comparator.comparing(user -> user.getIsland().map(Island::getId).orElse(0)));
if (index < 0)
return Collections.emptyList();
int currentIndex = index - 1;
List<User> result = new ArrayList<>();
result.add(userIslandIndex.get(index));
while (true) {
if (currentIndex < 0)
break;
User user = userIslandIndex.get(currentIndex);
if (island.equals(user.getIsland().orElse(null))) {
result.add(userIslandIndex.get(currentIndex));
currentIndex--;
} else {
break;
}
}
currentIndex = index + 1;
while (true) {
if (currentIndex >= userIslandIndex.size())
break;
User user = userIslandIndex.get(currentIndex);
if (island.equals(user.getIsland().orElse(null))) {
result.add(userIslandIndex.get(currentIndex));
currentIndex++;
} else {
break;
}
}
return result;
}
use of com.iridium.iridiumskyblock.database.User in project CombatLogX by SirBlobman.
the class ListenerIridiumSkyblock method getIsland.
private Island getIsland(Player player) {
if (player == null)
return null;
IridiumSkyblockAPI api = IridiumSkyblockAPI.getInstance();
User user = api.getUser(player);
Optional<Island> optionalIsland = user.getIsland();
return optionalIsland.orElse(null);
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class CommandManager method onCommand.
/**
* Method which handles command execution for all sub-commands.
* Automatically checks if a User can execute the command.
* All parameters are provided by Bukkit.
*
* @param commandSender The sender which executes this command
* @param cmd The Bukkit {@link org.bukkit.command.Command} representation
* @param label The label of this command. Not used.
* @param args The arguments of this command
* @return true if this command was executed successfully
*/
@Override
public boolean onCommand(@NotNull CommandSender commandSender, org.bukkit.command.@NotNull Command cmd, @NotNull String label, String[] args) {
if (args.length == 0) {
if (commandSender instanceof Player) {
Player player = (Player) commandSender;
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = user.getIsland();
if (island.isPresent()) {
if (IridiumSkyblock.getInstance().getConfiguration().islandMenu) {
player.openInventory(new InventoryConfigGUI(IridiumSkyblock.getInstance().getInventories().islandMenu, player.getOpenInventory().getTopInventory()).getInventory());
} else {
IridiumSkyblock.getInstance().getCommands().helpCommand.execute(player, new String[] {});
}
} else {
IridiumSkyblock.getInstance().getCommands().createCommand.execute(player, new String[] {});
}
} else {
IridiumSkyblock.getInstance().getCommands().helpCommand.execute(commandSender, new String[] {});
}
return true;
}
for (Command command : commands) {
// We don't want to execute other commands or ones that are disabled
if (!(command.aliases.contains(args[0]))) {
continue;
}
Command executingCommand = findExecutingCommand(command, args);
if (executionBlocked(executingCommand, commandSender)) {
return false;
}
boolean success = executingCommand.execute(commandSender, args);
if (success)
executingCommand.getCooldownProvider().applyCooldown(commandSender);
return true;
}
// Unknown command message
commandSender.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().unknownCommand.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class DeleteCommand method execute.
/**
* Executes the command for the specified {@link CommandSender} with the provided arguments.
* Not called when the command execution was invalid (no permission, no player or command disabled).
* Deletes a User's Island.
*
* @param sender The CommandSender which executes this command
* @param args The arguments used with this command. They contain the sub-command
*/
@Override
public boolean execute(CommandSender sender, String[] args) {
if (args.length == 2 && sender.hasPermission("iridiumskyblock.delete.other")) {
Optional<Island> islandOptional = IridiumSkyblockAPI.getInstance().getUser(Bukkit.getOfflinePlayer(args[1])).getIsland();
if (!islandOptional.isPresent()) {
sender.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().userNoIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
} else {
IridiumSkyblock.getInstance().getIslandManager().deleteIsland(islandOptional.get(), null);
sender.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().otherIslandDeleted.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
}
return false;
}
if (!(sender instanceof Player)) {
sender.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().notAPlayer).replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix));
return false;
}
Player player = (Player) sender;
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = user.getIsland();
if (!island.isPresent()) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
if (!user.getIslandRank().equals(IslandRank.OWNER)) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotDeleteIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
player.openInventory(new ConfirmationGUI(() -> IridiumSkyblock.getInstance().getIslandManager().deleteIsland(island.get(), user), getCooldownProvider()).getInventory());
// Always return false because the cooldown is set by the ConfirmationGUI
return false;
}
use of com.iridium.iridiumskyblock.database.User in project IridiumSkyblock by Iridium-Development.
the class DeleteWarpCommand method execute.
/**
* Executes the command for the specified {@link CommandSender} with the provided arguments.
* Not called when the command execution was invalid (no permission, no player or command disabled).
* Shows an overview over the members of the Island and allows quick rank management.
*
* @param sender The CommandSender which executes this command
* @param args The arguments used with this command. They contain the sub-command
*/
@Override
public boolean execute(CommandSender sender, String[] args) {
if (args.length != 2) {
sender.sendMessage(StringUtils.color(syntax.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
Player player = (Player) sender;
User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
Optional<Island> island = user.getIsland();
if (!island.isPresent()) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), IridiumSkyblock.getInstance().getUserManager().getUser(player), PermissionType.MANAGE_WARPS)) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotManageWarps.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
List<IslandWarp> islandWarps = IridiumSkyblock.getInstance().getDatabaseManager().getIslandWarpTableManager().getEntries(island.get());
Optional<IslandWarp> islandWarp = islandWarps.stream().filter(warp -> warp.getName().equalsIgnoreCase(args[1])).findFirst();
if (!islandWarp.isPresent()) {
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().unknownWarp.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
return false;
}
player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().deletingWarp.replace("%name%", islandWarp.get().getName()).replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
IridiumSkyblock.getInstance().getDatabaseManager().getIslandWarpTableManager().delete(islandWarp.get());
return true;
}
Aggregations