diff --git a/src/main/java/moe/oko/opennaw/OpenNAW.java b/src/main/java/moe/oko/opennaw/OpenNAW.java index 347229e..334650b 100644 --- a/src/main/java/moe/oko/opennaw/OpenNAW.java +++ b/src/main/java/moe/oko/opennaw/OpenNAW.java @@ -2,6 +2,7 @@ package moe.oko.opennaw; import moe.oko.opennaw.command.NationCommand; import moe.oko.opennaw.util.ChatHandler; +import moe.oko.opennaw.util.CityHandler; import moe.oko.opennaw.util.GroupHandler; import moe.oko.opennaw.util.NationHandler; import net.luckperms.api.LuckPerms; @@ -13,6 +14,7 @@ public final class OpenNAW extends JavaPlugin { public static OpenNAW instance; public NationHandler nationHandler; + public CityHandler cityHandler; public GroupHandler groupHandler; private LuckPerms luckPerms; @@ -23,6 +25,7 @@ public final class OpenNAW extends JavaPlugin { public NationHandler getNationHandler() { return nationHandler; } + public CityHandler getCityHandler(){ return cityHandler; } public GroupHandler getGroupHandler() { return groupHandler; } @Override diff --git a/src/main/java/moe/oko/opennaw/command/CityCommand.java b/src/main/java/moe/oko/opennaw/command/CityCommand.java new file mode 100644 index 0000000..6869645 --- /dev/null +++ b/src/main/java/moe/oko/opennaw/command/CityCommand.java @@ -0,0 +1,54 @@ +package moe.oko.opennaw.command; + +import moe.oko.opennaw.OpenNAW; +import moe.oko.opennaw.util.CommandHelper; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; + +import java.util.List; + +public class CityCommand implements TabExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage(CommandHelper.NOT_PLAYER); + return true; + } + + if (args.length < 1) { return false; } + + var cityList = OpenNAW.getInstance().getCityHandler().getCityList(); + + switch (args[0]) { + case "add": { + var location = ((Player) sender).getLocation(); + OpenNAW.getInstance().getCityHandler().addCity(args[1], args[2], location); + sender.sendMessage("Created city " + args[1] + " at " + location.getBlockX() + " " + location.getBlockY() + " " + location.getBlockZ()); + } + case "remove": { + OpenNAW.getInstance().getCityHandler().removeCity(args[1]); + sender.sendMessage("Removed city " + args[1]); + } + case "list": { + final var msg = cityList.size() == 0 + ? "There are no cities" + : "There are " + cityList.size() + " cities: " + cityList; + sender.sendMessage(msg); + } + } + + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return switch (args.length) { + case 1 -> List.of("add", "list", "modify", "remove"); + case 2 -> OpenNAW.getInstance().getCityHandler().getCityList(); + default -> null; + }; + } +} diff --git a/src/main/java/moe/oko/opennaw/model/City.java b/src/main/java/moe/oko/opennaw/model/City.java index 6a6a4dd..c83a2fa 100644 --- a/src/main/java/moe/oko/opennaw/model/City.java +++ b/src/main/java/moe/oko/opennaw/model/City.java @@ -16,4 +16,32 @@ public class City { this.point = location; this.health = 500; } + + public String getName() { + return name; + } + + public String getResource() { + return resource; + } + + public Nation getOwner() { + return owner; + } + + public void setOwner(Nation nation) { + this.owner = nation; + } + + public Location getPoint() { + return point; + } + + public short getHealth() { + return health; + } + + public void damage(short damage) { + this.health -= damage; + } } \ No newline at end of file diff --git a/src/main/java/moe/oko/opennaw/util/CityHandler.java b/src/main/java/moe/oko/opennaw/util/CityHandler.java new file mode 100644 index 0000000..2fa1872 --- /dev/null +++ b/src/main/java/moe/oko/opennaw/util/CityHandler.java @@ -0,0 +1,31 @@ +package moe.oko.opennaw.util; + +import moe.oko.opennaw.model.City; +import moe.oko.opennaw.model.Nation; +import org.bukkit.Location; +import org.bukkit.Material; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class CityHandler { + private HashMap cities = new HashMap<>(); + + public void addCity(String name, String resource, Location location) { + cities.put(name, new City(name, resource, location)); + location.getBlock().setType(Material.SPONGE); + } + + public void removeCity(String name) { cities.remove(name);} + + public void setCityOwner(City city, Nation nation) { cities.get(city.getName()).setOwner(nation); } + + public List getCityList() { + List cityList = new ArrayList(); + for (City city : cities.values()) { + cityList.add(city.getName()); + } + return cityList; + } +} diff --git a/src/main/java/moe/oko/opennaw/util/NationHandler.java b/src/main/java/moe/oko/opennaw/util/NationHandler.java index 1a7415c..eb422b4 100644 --- a/src/main/java/moe/oko/opennaw/util/NationHandler.java +++ b/src/main/java/moe/oko/opennaw/util/NationHandler.java @@ -11,16 +11,16 @@ public class NationHandler { private HashMap nations = new HashMap<>(); - public void addNation(String nation, Group group) { - nations.put(nation, new Nation(nation, group)); + public void addNation(String name, Group group) { + nations.put(name, new Nation(name, group)); } - public Nation removeNation(String name) { - return nations.remove(name); + public void removeNation(String name) { + nations.remove(name); } - public Group getNationGroup(String nation) { - return nations.get(nation).getGroup(); + public Group getNationGroup(String name) { + return nations.get(name).getGroup(); } public List getNationList() {