Add command to get map to view al coordinates
This commit is contained in:
@@ -6,7 +6,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import nl.interestingcorner.coordinates.commands.CoordinatesCommand;
|
||||
import nl.interestingcorner.coordinates.db.CoordinatesDatabaseManager;
|
||||
// import nl.interestingcorner.coordinates.gui.CoordinatesGUIListener;
|
||||
import nl.interestingcorner.coordinates.listeners.MapUseListener;
|
||||
|
||||
public class App extends JavaPlugin {
|
||||
|
||||
@@ -16,7 +16,7 @@ public class App extends JavaPlugin {
|
||||
CoordinatesDatabaseManager.INSTANCE.initialize(this);
|
||||
getLogger().info("Successfully initialized database");
|
||||
|
||||
// getServer().getPluginManager().registerEvents(new CoordinatesGUIListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new MapUseListener(), this);
|
||||
registerCommands();
|
||||
|
||||
}
|
||||
|
||||
@@ -41,11 +41,6 @@ public class AddCoordinateCommandHandler implements CoordinatesCommandHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
sender.sendMessage("Args after parsing:");
|
||||
sender.sendMessage("0:" + parsedArgs.get(0));
|
||||
sender.sendMessage("1:" + parsedArgs.get(1));
|
||||
sender.sendMessage("2:" + parsedArgs.get(2));
|
||||
|
||||
String name = parsedArgs.get(0);
|
||||
String description = parsedArgs.get(1);
|
||||
String color = parsedArgs.get(2);
|
||||
@@ -84,12 +79,10 @@ public class AddCoordinateCommandHandler implements CoordinatesCommandHandler {
|
||||
private List<String> removeFirstArg(String[] args) {
|
||||
List<String> onlyArgs = new ArrayList<>();
|
||||
|
||||
sender.sendMessage("removeFirstArg: size of args is " + String.valueOf(args.length));
|
||||
for (int i = 1; i < args.length; i++) {
|
||||
onlyArgs.add(args[i]);
|
||||
}
|
||||
|
||||
sender.sendMessage("removeFirstArg: size of onlyArgs is " + String.valueOf(onlyArgs.size()));
|
||||
return onlyArgs;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,14 +14,12 @@ public class CoordinatesCommand implements CommandExecutor{
|
||||
sb.append(string);
|
||||
sb.append(" ");
|
||||
}
|
||||
|
||||
sender.sendMessage("Args length: " + String.valueOf(args.length));
|
||||
sender.sendMessage(sb.toString());
|
||||
|
||||
// strategy design pattern
|
||||
return switch (args[0]) {
|
||||
case "get" -> new GetCoordinatesCommandHandler().handleCommand(sender, args);
|
||||
case "add" -> new AddCoordinateCommandHandler().handleCommand(sender, args);
|
||||
case "map" -> new GetMapCommandHandler().handleCommand(sender, args);
|
||||
default -> false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -30,12 +30,6 @@ public class GetCoordinatesCommandHandler implements CoordinatesCommandHandler {
|
||||
player.sendMessage("No coordinates found! Add some with the §3/ic-coords §5add §fcommand.");
|
||||
return true;
|
||||
}
|
||||
|
||||
StringBuilder res = new StringBuilder("Coordinates: ");
|
||||
for (Coordinate coordinate : coords) {
|
||||
res.append(coordinate.toString());
|
||||
}
|
||||
player.sendMessage(res.toString());
|
||||
|
||||
CoordinatesGUI.open(player, coords);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package nl.interestingcorner.coordinates.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import nl.interestingcorner.core.MinecraftColor;
|
||||
|
||||
public class GetMapCommandHandler implements CoordinatesCommandHandler {
|
||||
public static final String MAP_ITEM_NAME = MinecraftColor.LIGHT_PURPLE + "Map of Coordinates";
|
||||
public static final String MAP_ITEM_LORE = MinecraftColor.AQUA.toColorCode() + "This will take you anywhere!";
|
||||
|
||||
@Override
|
||||
public boolean handleCommand(CommandSender sender, String[] args) {
|
||||
if (!(sender instanceof Player player)) {
|
||||
sender.sendMessage("This command can only be used by a player.");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Create a custom map item
|
||||
ItemStack map = new ItemStack(Material.FILLED_MAP);
|
||||
ItemMeta meta = map.getItemMeta();
|
||||
if (meta != null) {
|
||||
meta.setDisplayName(MAP_ITEM_NAME);
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore.add(MAP_ITEM_LORE);
|
||||
meta.setLore(lore);
|
||||
map.setItemMeta(meta);
|
||||
}
|
||||
|
||||
// Give the item to the player
|
||||
player.getInventory().addItem(map);
|
||||
player.sendMessage(MinecraftColor.GREEN.toColorCode() + "You received the Coordinates map! Right-click to use it.");
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given item is the special map item.
|
||||
* @param item The item to check.
|
||||
* @return true if it is the special map, false otherwise.
|
||||
*/
|
||||
public static boolean isSpecialMap(ItemStack item) {
|
||||
if (item == null || item.getType() != Material.FILLED_MAP) return false;
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta == null) return false;
|
||||
return meta.hasDisplayName() && meta.getDisplayName().equals(MAP_ITEM_NAME) &&
|
||||
meta.hasLore() && meta.getLore() != null && meta.getLore().contains(MAP_ITEM_LORE);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,7 +33,7 @@ public class CoordinatesGUI {
|
||||
}
|
||||
|
||||
GUI gui = new GUI("Coordinates", GUI.DEFAULT_PAGE_SIZE);
|
||||
gui.setItemClickListener(new TeleportItemClickListener());
|
||||
gui.addItemClickListener(new TeleportItemClickListener());
|
||||
gui.setItems(items);
|
||||
gui.show(player);
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@ public class TeleportItemClickListener implements GUIItemClickListener {
|
||||
Logger.INSTANCE.info(TAG, "Teleporting player " + player.getName() + " to coordinate " + coordinate.name);
|
||||
player.sendMessage("Teleporting you to " + coordinate.name);
|
||||
player.teleport(loc);
|
||||
player.sendTitle(coordinate.name, coordinate.description, 10, 70, 20);
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package nl.interestingcorner.coordinates.listeners;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import nl.interestingcorner.coordinates.commands.GetMapCommandHandler;
|
||||
|
||||
public class MapUseListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerUseMap(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ItemStack item = event.getItem();
|
||||
|
||||
if (GetMapCommandHandler.isSpecialMap(item)) {
|
||||
event.setCancelled(true);
|
||||
|
||||
// execute command to show coordinates of this world
|
||||
player.performCommand("ic-coords get world");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,4 +7,4 @@ depend: [IC-core]
|
||||
commands:
|
||||
ic-coords:
|
||||
description: Main command for the coordinates
|
||||
usage: /ic-coords get | add
|
||||
usage: /ic-coords get | add | map
|
||||
Reference in New Issue
Block a user