From da7924881ab14e4580ae6c56dbdf8346dbf2a267 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sat, 12 Nov 2022 13:39:07 -0500 Subject: first commit for new version --- .../benjidial/nswp/commands/WaypointCommand.java | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/main/java/net/benjidial/nswp/commands/WaypointCommand.java (limited to 'src/main/java/net/benjidial/nswp/commands/WaypointCommand.java') diff --git a/src/main/java/net/benjidial/nswp/commands/WaypointCommand.java b/src/main/java/net/benjidial/nswp/commands/WaypointCommand.java new file mode 100644 index 0000000..618ab74 --- /dev/null +++ b/src/main/java/net/benjidial/nswp/commands/WaypointCommand.java @@ -0,0 +1,71 @@ +package net.benjidial.nswp.commands; + +import net.benjidial.nswp.Database; +import net.benjidial.nswp.Waypoint; +import net.benjidial.nswp.Plugin; + +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.command.Command; +import org.bukkit.entity.Player; + +import java.util.logging.Level; +import java.sql.SQLException; +import java.util.ArrayList; + +public abstract class WaypointCommand implements TabExecutor { + enum CompletionType { + None, Waypoint + } + + public abstract CompletionType getCompletionType(); + + public ArrayList onTabComplete(CommandSender sender, Command command, String label, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage("Only players may use waypoints."); + return new ArrayList<>(); + } + Player player = (Player)sender; + + switch (getCompletionType()) { + case Waypoint: + if (args.length > 1) + return new ArrayList<>(); + try { + Database.createWaypointTable(player); + ArrayList results = new ArrayList<>(); + for (Waypoint waypoint : Database.searchWaypoints(player, args.length == 0 ? "" : args[0])) + results.add(waypoint.name); + return results; + } + catch (SQLException ex) { + Plugin.logger.log(Level.SEVERE, "Database error:"); + ex.printStackTrace(); + sender.sendMessage("Database error."); + return new ArrayList<>(); + } + default: + return new ArrayList<>(); + } + } + + public abstract boolean body(Player player, String[] args) throws SQLException; + + public boolean onCommand(CommandSender sender, Command command, String name, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage("Only players may use waypoints."); + return true; + } + try { + Player player = (Player)sender; + Database.createWaypointTable(player); + return body(player, args); + } + catch (SQLException ex) { + Plugin.logger.log(Level.SEVERE, "Database error:"); + ex.printStackTrace(); + sender.sendMessage("Database error."); + return true; + } + } +} -- cgit v1.2.3