Skip to content

Commit

Permalink
Merge pull request #64 from AlpsBTE/59-improve-plot-world-handling
Browse files Browse the repository at this point in the history
Improve plot world handling & basic plot structure
  • Loading branch information
Cinnazeyy authored Jan 9, 2022
2 parents dff1579 + 220d1fe commit 2da15a5
Show file tree
Hide file tree
Showing 20 changed files with 864 additions and 337 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,13 @@ public boolean onCommand(CommandSender sender, Command cmd, String s, String[] a
if(sender.hasPermission(getPermission())) {
if(args.length > 0 && Utils.TryParseInt(args[0]) != null) {
int plotID = Integer.parseInt(args[0]);
if(PlotManager.plotExists(plotID, true)) {
if(PlotManager.plotExists(plotID)) {
try {
sender.sendMessage(Utils.getInfoMessageFormat("Deleting plot..."));
PlotHandler.deletePlot(new Plot(plotID));
sender.sendMessage(Utils.getInfoMessageFormat("Successfully deleted plot with the ID §6#" + plotID + "§a!"));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.Done, 1f, 1f);
if (PlotHandler.deletePlot(new Plot(plotID))) {
sender.sendMessage(Utils.getInfoMessageFormat("Successfully deleted plot with the ID §6#" + plotID + "§a!"));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.Done, 1f, 1f);
} else sender.sendMessage(Utils.getErrorMessageFormat("An unexpected error has occurred!"));
} catch (SQLException ex) {
sender.sendMessage(Utils.getErrorMessageFormat("An error occurred while executing command!"));
Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ public void onCommand(CommandSender sender, String[] args) {

if (plot.getStatus() == Status.unfinished) {
if (sender.hasPermission("plotsystem.review") || plot.getPlotOwner().getUUID().equals(getPlayer(sender).getUniqueId())) {
PlotHandler.abandonPlot(plot);

sender.sendMessage(Utils.getInfoMessageFormat("Abandoned plot with the ID §6#" + plot.getID()));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.AbandonPlotSound, 1, 1);
if (PlotHandler.abandonPlot(plot)) {
sender.sendMessage(Utils.getInfoMessageFormat("Abandoned plot with the ID §6#" + plot.getID()));
if (getPlayer(sender) != null) getPlayer(sender).playSound(getPlayer(sender).getLocation(), Utils.AbandonPlotSound, 1, 1);
} else sender.sendMessage(Utils.getErrorMessageFormat("An unexpected error has occurred!"));
} else {
sender.sendMessage(Utils.getErrorMessageFormat("You are not allowed to abandon this plot!"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@
import com.alpsbte.plotsystem.commands.SubCommand;
import com.alpsbte.plotsystem.core.system.Builder;
import com.alpsbte.plotsystem.core.system.plot.Plot;
import com.alpsbte.plotsystem.core.system.plot.PlotHandler;
import com.alpsbte.plotsystem.core.system.plot.PlotManager;
import com.alpsbte.plotsystem.core.system.plot.generator.DefaultPlotGenerator;
import com.alpsbte.plotsystem.utils.Utils;
import com.alpsbte.plotsystem.utils.enums.Status;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
Expand All @@ -52,10 +52,11 @@ public void onCommand(CommandSender sender, String[] args) {
if (getPlayer(sender) != null) {
if (args.length > 0 && Utils.TryParseInt(args[0]) != null) {
int plotID = Integer.parseInt(args[0]);
if (PlotManager.plotExists(plotID)) {
PlotHandler.teleportPlayer(new Plot(plotID), getPlayer(sender));
Plot plot;
if (PlotManager.plotExists(plotID) && (plot = new Plot(plotID)).getStatus() != Status.unclaimed) {
plot.getWorld().teleportPlayer(getPlayer(sender));
} else {
if (sender.hasPermission("plotsystem.admin") && PlotManager.plotExists(plotID, true)) {
if (sender.hasPermission("plotsystem.admin") && PlotManager.plotExists(plotID)) {
new DefaultPlotGenerator(new Plot(plotID), new Builder(getPlayer(sender).getUniqueId()));
} else
sender.sendMessage(Utils.getErrorMessageFormat("This plot does not exist!"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ public boolean onCommand(CommandSender sender, Command cmd, String s, String[] a
return true;
}

if(plot.hasReviewerPerms()) {
plot.removeReviewerPerms().save();
if(plot.getPermissions().hasReviewerPerms()) {
plot.getPermissions().removeReviewerPerms().save();
sender.sendMessage(Utils.getInfoMessageFormat("§6Disabled §abuild permissions for Reviewers on Plot §6#" + plot.getID()));
} else {
plot.addReviewerPerms().save();
plot.getPermissions().addReviewerPerms().save();
sender.sendMessage(Utils.getInfoMessageFormat("§6Enabled §abuild permissions for Reviewers on Plot §6#" + plot.getID()));
}
} catch (SQLException ex) {
Expand Down
22 changes: 15 additions & 7 deletions src/main/java/com/alpsbte/plotsystem/core/EventListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import me.arcaniax.hdb.api.HeadDatabaseAPI;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.BlockState;
import org.bukkit.entity.EntityType;
import org.bukkit.event.EventHandler;
Expand Down Expand Up @@ -204,24 +205,31 @@ public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) throws S
}

@EventHandler
public void onPlayerQuitEvent(PlayerQuitEvent event) throws SQLException {
if(PlotManager.isPlotWorld(event.getPlayer().getWorld())) {
PlotHandler.unloadPlot(PlotManager.getPlotByWorld(event.getPlayer().getWorld()));
}
DefaultPlotGenerator.playerPlotGenerationHistory.remove(event.getPlayer().getUniqueId());
public void onPlayerQuitEvent(PlayerQuitEvent event) {
final World w = event.getPlayer().getWorld();
Bukkit.getScheduler().scheduleSyncDelayedTask(PlotSystem.getPlugin(), () -> {
if(PlotManager.isPlotWorld(w)) {
try {
PlotManager.getPlotByWorld(w).getWorld().unloadWorld(false);
} catch (SQLException ex) {
Bukkit.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
}
DefaultPlotGenerator.playerPlotGenerationHistory.remove(event.getPlayer().getUniqueId());
}
}, 60L);
}

@EventHandler
public void onPlayerTeleportEvent(PlayerTeleportEvent event) throws SQLException {
if(PlotManager.isPlotWorld(event.getPlayer().getWorld()) && !event.getFrom().getWorld().equals(event.getTo().getWorld())) {
PlotHandler.unloadPlot(PlotManager.getPlotByWorld(event.getFrom().getWorld()));
PlotManager.getPlotByWorld(event.getFrom().getWorld()).getWorld().unloadWorld(false);
}
}

@EventHandler
public void onPlayerChangedWorldEvent(PlayerChangedWorldEvent event) throws SQLException {
if (PlotManager.isPlotWorld(event.getFrom())) {
PlotHandler.unloadPlot(PlotManager.getPlotByWorld(event.getFrom()));
PlotManager.getPlotByWorld(event.getFrom()).getWorld().unloadWorld(false);
}

if (PlotManager.isPlotWorld(event.getPlayer().getWorld())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ private List<String> getDescription(Plot plot) throws SQLException {
}
}
lines.add("");
if (plot.isRejected()) lines.add("§c§lRejected");
if (plot.isReviewed() && plot.isRejected()) lines.add("§c§lRejected");
lines.add("§6§lStatus: §7§l" + plot.getStatus().name().substring(0, 1).toUpperCase() + plot.getStatus().name().substring(1));
return lines;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,7 @@ protected void setItemClickEventsAsync() {
// Set click event for teleport to plot item
getMenu().getSlot(hasFeedback ? 12 : 13).setClickHandler((clickPlayer, clickInformation) -> {
clickPlayer.closeInventory();
try {
PlotHandler.teleportPlayer(plot, clickPlayer);
} catch (SQLException ex) {
Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", ex);
}
plot.getWorld().teleportPlayer(clickPlayer);
});

// Set click event for abandon plot item
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ protected void setItemClickEventsAsync() {
if(plot.getStatus() == Status.unreviewed) {
if (!plot.getPlotOwner().getUUID().toString().equals(getMenuPlayer().getUniqueId().toString())){
getMenuPlayer().closeInventory();
PlotHandler.teleportPlayer(plot, getMenuPlayer());
plot.getWorld().teleportPlayer(getMenuPlayer());
} else {
getMenuPlayer().sendMessage(Utils.getErrorMessageFormat("You cannot review your own builds!"));
}
Expand Down
23 changes: 13 additions & 10 deletions src/main/java/com/alpsbte/plotsystem/core/menus/ReviewPlotMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -292,25 +292,25 @@ protected void setItemClickEventsAsync() {

double totalRatingWithMultiplier = totalRating * PlotManager.getMultiplierByDifficulty(plot.getDifficulty());
totalRating = (int) Math.floor(totalRatingWithMultiplier);
plot.setScore(totalRating);
plot.setTotalScore(totalRating);

String reviewerConfirmationMessage;
clickPlayer.closeInventory();
if (!isRejected) {
clickPlayer.sendMessage(Utils.getInfoMessageFormat("Saving plot..."));
if (CompletableFuture.supplyAsync(() -> {
try {
return PlotManager.savePlotAsSchematic(plot);
} catch (IOException | SQLException | WorldEditException ex) {
try {
if (!PlotManager.savePlotAsSchematic(plot)) {
clickPlayer.sendMessage(Utils.getErrorMessageFormat("Could not save plot. Please try again!"));
Bukkit.getLogger().log(Level.WARNING, "Could not save finished plot schematic (ID: " + plot.getID() + ")!");
clickPlayer.sendMessage(Utils.getErrorMessageFormat("An error occurred while saving plot schematic!"));
return;
}
return null;
}).join() == null) return;
} catch (IOException | SQLException | WorldEditException ex) {
Bukkit.getLogger().log(Level.WARNING, "Could not save finished plot schematic (ID: " + plot.getID() + ")!", ex);
}

plot.setStatus(Status.completed);
plot.getReview().setFeedbackSent(false);
plot.getReview().setFeedback("No Feedback");
plot.setStatus(Status.completed);
plot.getPlotOwner().addCompletedBuild(1);

// Remove Plot from Owner
Expand Down Expand Up @@ -364,10 +364,13 @@ protected void setItemClickEventsAsync() {
}

Bukkit.getScheduler().runTask(PlotSystem.getPlugin(), () -> {
for(Player player : clickPlayer.getWorld().getPlayers()) {
for(Player player : plot.getWorld().getBukkitWorld().getPlayers()) {
player.teleport(Utils.getSpawnLocation());
}

// Delete plot world after reviewing
plot.getWorld().deleteWorld();

clickPlayer.sendMessage(reviewerConfirmationMessage);
clickPlayer.playSound(clickPlayer.getLocation(), Utils.FinishPlotSound, 1f, 1f);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public static void undoReview(Review review) throws SQLException {

plot.getPlotOwner().addScore(-plot.getSharedScore());
plot.getPlotOwner().addCompletedBuild(-1);
plot.setScore(-1);
plot.setTotalScore(-1);
plot.setStatus(Status.unreviewed);
plot.setPasted(false);

Expand Down
Loading

0 comments on commit 2da15a5

Please sign in to comment.