Search in sources :

Example 1 with Plot

use of com.alpsbte.plotsystem.core.system.plot.Plot in project Plot-System by AlpsBTE.

the class EventListener method onPlayerJoinEvent.

@EventHandler
public void onPlayerJoinEvent(PlayerJoinEvent event) {
    // Teleport Player to the spawn
    event.getPlayer().teleport(Utils.getSpawnLocation());
    // User has joined for the first time
    // Adding user to the database
    Bukkit.getScheduler().runTaskAsynchronously(PlotSystem.getPlugin(), () -> {
        // Add Items
        if (!event.getPlayer().getInventory().contains(CompanionMenu.getMenuItem(event.getPlayer()))) {
            event.getPlayer().getInventory().setItem(8, CompanionMenu.getMenuItem(event.getPlayer()));
        }
        if (event.getPlayer().hasPermission("plotsystem.review") && !event.getPlayer().getInventory().contains(ReviewMenu.getMenuItem(event.getPlayer()))) {
            event.getPlayer().getInventory().setItem(7, ReviewMenu.getMenuItem(event.getPlayer()));
        }
        // Check if player even exists in database.
        try (ResultSet rs = DatabaseConnection.createStatement("SELECT * FROM plotsystem_builders WHERE uuid = ?").setValue(event.getPlayer().getUniqueId().toString()).executeQuery()) {
            if (!rs.first()) {
                DatabaseConnection.createStatement("INSERT INTO plotsystem_builders (uuid, name) VALUES (?, ?)").setValue(event.getPlayer().getUniqueId().toString()).setValue(event.getPlayer().getName()).executeUpdate();
            }
            DatabaseConnection.closeResultSet(rs);
        } catch (SQLException ex) {
            Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
        }
        // Inform player about update
        if (event.getPlayer().hasPermission("plotsystem.admin") && PlotSystem.UpdateChecker.updateAvailable() && PlotSystem.getPlugin().getConfigManager().getConfig().getBoolean(ConfigPaths.CHECK_FOR_UPDATES)) {
            event.getPlayer().sendMessage(Utils.getInfoMessageFormat("There is a new update for the Plot-System available. Check your console for more information!"));
            event.getPlayer().playSound(event.getPlayer().getLocation(), Utils.CreatePlotSound, 1f, 1f);
        }
        // Check if player has changed his name
        try {
            Builder builder = new Builder(event.getPlayer().getUniqueId());
            if (!builder.getName().equals(event.getPlayer().getName())) {
                DatabaseConnection.createStatement("UPDATE plotsystem_builders SET name = ? WHERE uuid = ?").setValue(event.getPlayer().getName()).setValue(event.getPlayer().getUniqueId().toString()).executeUpdate();
            }
        } catch (SQLException ex) {
            Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
        }
        // Informing player about new feedback
        try {
            List<Plot> plots = PlotManager.getPlots(new Builder(event.getPlayer().getUniqueId()), Status.completed, Status.unfinished);
            List<Plot> reviewedPlots = new ArrayList<>();
            for (Plot plot : plots) {
                if (plot.isReviewed() && !plot.getReview().isFeedbackSent() && plot.getPlotOwner().getPlayer().equals(event.getPlayer())) {
                    reviewedPlots.add(plot);
                    plot.getReview().setFeedbackSent(true);
                }
            }
            if (reviewedPlots.size() >= 1) {
                PlotHandler.sendFeedbackMessage(reviewedPlots, event.getPlayer());
                event.getPlayer().sendTitle("", "§6§l" + reviewedPlots.size() + " §a§lPlot" + (reviewedPlots.size() == 1 ? " " : "s ") + (reviewedPlots.size() == 1 ? "has" : "have") + " been reviewed!", 20, 150, 20);
            }
        } catch (Exception ex) {
            Bukkit.getLogger().log(Level.SEVERE, "An error occurred while trying to inform the player about his plot feedback!", ex);
        }
        // Informing player about unfinished plots
        try {
            List<Plot> plots = PlotManager.getPlots(new Builder(event.getPlayer().getUniqueId()), Status.unfinished);
            if (plots.size() >= 1) {
                PlotHandler.sendUnfinishedPlotReminderMessage(plots, event.getPlayer());
                event.getPlayer().sendMessage("");
            }
        } catch (Exception ex) {
            Bukkit.getLogger().log(Level.SEVERE, "An error occurred while trying to inform the player about his unfinished plots!", ex);
        }
        // Informing reviewer about new reviews
        if (event.getPlayer().hasPermission("plotsystem.review")) {
            try {
                List<Plot> unreviewedPlots = PlotManager.getPlots(Status.unreviewed);
                if (unreviewedPlots.size() != 0) {
                    PlotHandler.sendUnreviewedPlotsReminderMessage(unreviewedPlots, event.getPlayer());
                }
            } catch (Exception ex) {
                Bukkit.getLogger().log(Level.SEVERE, "An error occurred while trying to inform the player about unreviewed plots!", ex);
            }
        }
    });
}
Also used : SQLException(java.sql.SQLException) Builder(com.alpsbte.plotsystem.core.system.Builder) Plot(com.alpsbte.plotsystem.core.system.plot.Plot) ResultSet(java.sql.ResultSet) ArrayList(java.util.ArrayList) SQLException(java.sql.SQLException) EventHandler(org.bukkit.event.EventHandler)

Example 2 with Plot

use of com.alpsbte.plotsystem.core.system.plot.Plot in project Plot-System by AlpsBTE.

the class CMD_Plot_Submit method onCommand.

@Override
public void onCommand(CommandSender sender, String[] args) {
    try {
        Plot plot;
        if (args.length > 0 && Utils.TryParseInt(args[0]) != null) {
            int plotID = Integer.parseInt(args[0]);
            if (PlotManager.plotExists(plotID)) {
                plot = new Plot(plotID);
            } else {
                sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLOT_DOES_NOT_EXIST)));
                return;
            }
        } else if (getPlayer(sender) != null && PlotManager.isPlotWorld(getPlayer(sender).getWorld())) {
            plot = PlotManager.getPlotByWorld(getPlayer(sender).getWorld());
        } else {
            sendInfo(sender);
            return;
        }
        if (sender.hasPermission("plotsystem.review") || plot.getPlotOwner().getUUID().equals(getPlayer(sender).getUniqueId())) {
            if (plot.getStatus() == Status.unfinished) {
                PlotHandler.submitPlot(plot);
                if (plot.getPlotMembers().isEmpty()) {
                    // Plot was made alone
                    LangUtil.broadcast(LangPaths.Message.Info.FINISHED_PLOT, String.valueOf(plot.getID()), plot.getPlotOwner().getName());
                } else {
                    // Plot was made in a group
                    StringBuilder sb = new StringBuilder(plot.getPlotOwner().getName() + ", ");
                    for (int i = 0; i < plot.getPlotMembers().size(); i++) {
                        sb.append(i == plot.getPlotMembers().size() - 1 ? plot.getPlotMembers().get(i).getName() : plot.getPlotMembers().get(i).getName() + ", ");
                    }
                    LangUtil.broadcast(LangPaths.Message.Info.FINISHED_PLOT, String.valueOf(plot.getID()), sb.toString());
                }
                if (getPlayer(sender) != null)
                    getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.FinishPlotSound, 1, 1);
            } else {
                sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.CAN_ONLY_SUBMIT_UNFINISHED_PLOTS)));
            }
        } else {
            sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLAYER_IS_NOT_ALLOWED)));
        }
    } catch (SQLException ex) {
        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.ERROR_OCCURRED)));
        Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
    }
}
Also used : SQLException(java.sql.SQLException) Plot(com.alpsbte.plotsystem.core.system.plot.Plot)

Example 3 with Plot

use of com.alpsbte.plotsystem.core.system.plot.Plot in project Plot-System by AlpsBTE.

the class CMD_Plot_UndoSubmit method onCommand.

@Override
public void onCommand(CommandSender sender, String[] args) {
    try {
        Plot plot;
        if (args.length > 0 && Utils.TryParseInt(args[0]) != null) {
            int plotID = Integer.parseInt(args[0]);
            if (PlotManager.plotExists(plotID)) {
                plot = new Plot(plotID);
            } else {
                sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLOT_DOES_NOT_EXIST)));
                return;
            }
        } else if (getPlayer(sender) != null && PlotManager.isPlotWorld(getPlayer(sender).getWorld())) {
            plot = PlotManager.getPlotByWorld(getPlayer(sender).getWorld());
        } else {
            sendInfo(sender);
            return;
        }
        if (plot.getStatus() == Status.unreviewed) {
            PlotHandler.undoSubmit(plot);
            sender.sendMessage(Utils.getInfoMessageFormat(LangUtil.get(sender, LangPaths.Message.Info.UNDID_SUBMISSION, plot.getID() + "")));
            if (getPlayer(sender) != null)
                getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.FinishPlotSound, 1, 1);
        } else {
            sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.CAN_ONLY_UNDO_SUBMISSIONS_UNREVIEWED_PLOTS)));
        }
    } catch (SQLException ex) {
        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.ERROR_OCCURRED)));
        Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
    }
}
Also used : SQLException(java.sql.SQLException) Plot(com.alpsbte.plotsystem.core.system.plot.Plot)

Example 4 with Plot

use of com.alpsbte.plotsystem.core.system.plot.Plot in project Plot-System by AlpsBTE.

the class CMD_EditPlot method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
    if (PlotSystem.getPlugin().getConfigManager().getCommandsConfig().getBoolean(ConfigPaths.EDITPLOT_ENABLED)) {
        if (sender.hasPermission(getPermission())) {
            try {
                Plot plot;
                if (args.length > 0 && Utils.TryParseInt(args[0]) != null) {
                    int plotID = Integer.parseInt(args[0]);
                    if (PlotManager.plotExists(plotID)) {
                        plot = new Plot(plotID);
                    } else {
                        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLOT_DOES_NOT_EXIST)));
                        return true;
                    }
                } else if (getPlayer(sender) != null && PlotManager.isPlotWorld(getPlayer(sender).getWorld())) {
                    plot = PlotManager.getPlotByWorld(getPlayer(sender).getWorld());
                } else {
                    sendInfo(sender);
                    return true;
                }
                if (plot.getPermissions().hasReviewerPerms()) {
                    plot.getPermissions().removeReviewerPerms().save();
                    sender.sendMessage(Utils.getInfoMessageFormat(LangUtil.get(sender, LangPaths.Message.Info.DISABLED_PLOT_PERMISSIONS, plot.getID() + "")));
                } else {
                    plot.getPermissions().addReviewerPerms().save();
                    sender.sendMessage(Utils.getInfoMessageFormat(LangUtil.get(sender, LangPaths.Message.Info.ENABLED_PLOT_PERMISSIONS, plot.getID() + "")));
                }
            } catch (SQLException ex) {
                sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.ERROR_OCCURRED)));
                Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
            }
        } else {
            sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLAYER_HAS_NO_PERMISSIONS)));
        }
    } else {
        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.COMMAND_DISABLED)));
    }
    return true;
}
Also used : SQLException(java.sql.SQLException) Plot(com.alpsbte.plotsystem.core.system.plot.Plot)

Example 5 with Plot

use of com.alpsbte.plotsystem.core.system.plot.Plot in project Plot-System by AlpsBTE.

the class CMD_SendFeedback method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
    if (sender.hasPermission(getPermission())) {
        try {
            if (args.length > 1 && Utils.TryParseInt(args[0]) != null) {
                int plotID = Integer.parseInt(args[0]);
                if (PlotManager.plotExists(plotID)) {
                    Plot plot = new Plot(Integer.parseInt(args[0]));
                    if (plot.isReviewed() || plot.isRejected()) {
                        if (getPlayer(sender) == null || sender.hasPermission("plotsystem.admin") || plot.getReview().getReviewer().getUUID().equals(((Player) sender).getUniqueId())) {
                            StringBuilder feedback = new StringBuilder();
                            for (int i = 2; i <= args.length; i++) {
                                feedback.append(args.length == 2 ? "" : " ").append(args[i - 1]);
                            }
                            plot.getReview().setFeedback(feedback.toString());
                            sender.sendMessage(Utils.getInfoMessageFormat(LangUtil.get(sender, LangPaths.Message.Info.UPDATED_PLOT_FEEDBACK, plot.getID() + "")));
                        } else {
                            sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.CANNOT_SEND_FEEDBACK)));
                        }
                    } else {
                        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLOT_EITHER_UNCLAIMED_OR_UNREVIEWED)));
                    }
                } else {
                    sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLOT_DOES_NOT_EXIST)));
                }
            } else {
                sendInfo(sender);
            }
        } catch (SQLException ex) {
            sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.ERROR_OCCURRED)));
            Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
        }
    } else {
        sender.sendMessage(Utils.getErrorMessageFormat(LangUtil.get(sender, LangPaths.Message.Error.PLAYER_HAS_NO_PERMISSIONS)));
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) SQLException(java.sql.SQLException) Plot(com.alpsbte.plotsystem.core.system.plot.Plot)

Aggregations

Plot (com.alpsbte.plotsystem.core.system.plot.Plot)17 SQLException (java.sql.SQLException)15 Player (org.bukkit.entity.Player)8 ItemBuilder (com.alpsbte.plotsystem.utils.items.builder.ItemBuilder)6 Builder (com.alpsbte.plotsystem.core.system.Builder)5 Utils (com.alpsbte.plotsystem.utils.Utils)5 Status (com.alpsbte.plotsystem.utils.enums.Status)5 LangPaths (com.alpsbte.plotsystem.utils.io.language.LangPaths)5 LangUtil (com.alpsbte.plotsystem.utils.io.language.LangUtil)5 MenuItems (com.alpsbte.plotsystem.utils.items.MenuItems)5 Level (java.util.logging.Level)5 Bukkit (org.bukkit.Bukkit)5 Material (org.bukkit.Material)5 BinaryMask (org.ipvp.canvas.mask.BinaryMask)5 Mask (org.ipvp.canvas.mask.Mask)5 LoreBuilder (com.alpsbte.plotsystem.utils.items.builder.LoreBuilder)4 ArrayList (java.util.ArrayList)4 ItemStack (org.bukkit.inventory.ItemStack)4 PlotSystem (com.alpsbte.plotsystem.PlotSystem)3 PlotManager (com.alpsbte.plotsystem.core.system.plot.PlotManager)3