code refactoring
This commit is contained in:
parent
cff22c8f18
commit
abd733fd09
2 changed files with 121 additions and 88 deletions
|
@ -1,5 +1,8 @@
|
||||||
package me.unurled.sacredrealms.sr.commands.admin;
|
package me.unurled.sacredrealms.sr.commands.admin;
|
||||||
|
|
||||||
|
import static me.unurled.sacredrealms.sr.utils.Component.NOT_PLAYER;
|
||||||
|
import static me.unurled.sacredrealms.sr.utils.Component.comp;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.unurled.sacredrealms.sr.components.entity.EntityManager;
|
import me.unurled.sacredrealms.sr.components.entity.EntityManager;
|
||||||
|
@ -16,6 +19,97 @@ import xyz.xenondevs.invui.window.Window;
|
||||||
|
|
||||||
public class EntityTypeCommand implements TabExecutor {
|
public class EntityTypeCommand implements TabExecutor {
|
||||||
|
|
||||||
|
private static boolean list(@NotNull CommandSender sender, @NotNull String @NotNull [] args) {
|
||||||
|
if (!(sender instanceof Player p)) {
|
||||||
|
sender.sendMessage(comp(NOT_PLAYER));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Window window =
|
||||||
|
Window.single().setViewer(p).setTitle(args[1]).setGui(EntityTypeGUI.listGui()).build();
|
||||||
|
window.open();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean edit(@NotNull CommandSender sender, @NotNull String @NotNull [] args) {
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage("Usage: /entitytype edit <ID>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(sender instanceof Player p)) {
|
||||||
|
sender.sendMessage(comp(NOT_PLAYER));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length < 3) {
|
||||||
|
EntityManager em = EntityManager.getInstance(EntityManager.class);
|
||||||
|
if (!em.getTypes().stream().map(SREntityType::getID).toList().contains(args[1])) {
|
||||||
|
sender.sendMessage("Invalid entity type.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
SREntityType type = em.getType(args[1]);
|
||||||
|
Window window =
|
||||||
|
Window.single()
|
||||||
|
.setViewer(p)
|
||||||
|
.setTitle(args[1])
|
||||||
|
.setGui(EntityTypeGUI.createGui(type))
|
||||||
|
.build();
|
||||||
|
window.open();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args.length < 4) {
|
||||||
|
sender.sendMessage("Usage: /entitytype edit <ID> <type|behavior|loot|item|stats|name|level>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (args[2].equalsIgnoreCase("type")) {
|
||||||
|
if (args.length < 5) {
|
||||||
|
sender.sendMessage("Usage: /entitytype edit <ID> type <type>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
EntityType type = EntityType.valueOf(args[4]);
|
||||||
|
EntityManager em = EntityManager.getInstance(EntityManager.class);
|
||||||
|
if (setType(sender, args, em, type)) return true;
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
sender.sendMessage("Invalid entity type.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean delete(@NotNull CommandSender sender, @NotNull String @NotNull [] args) {
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage("Usage: /entitytype delete <ID>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean create(@NotNull CommandSender sender, @NotNull String @NotNull [] args) {
|
||||||
|
if (args.length < 2) {
|
||||||
|
sender.sendMessage("Usage: /entitytype create <ID>");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
sender.sendMessage(comp(NOT_PLAYER));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean setType(
|
||||||
|
@NotNull CommandSender sender,
|
||||||
|
@NotNull String @NotNull [] args,
|
||||||
|
EntityManager em,
|
||||||
|
EntityType type) {
|
||||||
|
try {
|
||||||
|
em.getType(args[1]).setType(type);
|
||||||
|
} catch (Exception e) {
|
||||||
|
sender.sendMessage("An error occurred while setting the entity type.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the given command, returning its success. <br>
|
* Executes the given command, returning its success. <br>
|
||||||
* If false is returned, then the "usage" plugin.yml entry for this command (if defined) will be
|
* If false is returned, then the "usage" plugin.yml entry for this command (if defined) will be
|
||||||
|
@ -44,80 +138,20 @@ public class EntityTypeCommand implements TabExecutor {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (args[0].toLowerCase()) {
|
switch (args[0].toLowerCase()) {
|
||||||
case "create":
|
case "create" -> {
|
||||||
if (args.length < 2) {
|
if (create(sender, args)) return true;
|
||||||
sender.sendMessage("Usage: /entitytype create <ID>");
|
}
|
||||||
return true;
|
case "delete" -> {
|
||||||
}
|
if (delete(sender, args)) return true;
|
||||||
if (!(sender instanceof Player p)) {
|
}
|
||||||
sender.sendMessage("You must be a player to use this command.");
|
|
||||||
return true;
|
case "edit" -> {
|
||||||
}
|
if (edit(sender, args)) return true;
|
||||||
break;
|
}
|
||||||
case "delete":
|
case "list" -> {
|
||||||
if (args.length < 2) {
|
if (list(sender, args)) return true;
|
||||||
sender.sendMessage("Usage: /entitytype delete <ID>");
|
}
|
||||||
return true;
|
default -> sender.sendMessage("Usage: /entitytype <create|delete|edit|list>");
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "edit":
|
|
||||||
if (args.length < 2) {
|
|
||||||
sender.sendMessage("Usage: /entitytype edit <ID>");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!(sender instanceof Player p)) {
|
|
||||||
sender.sendMessage("You must be a player to use this command.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args.length < 3) {
|
|
||||||
EntityManager em = EntityManager.getInstance(EntityManager.class);
|
|
||||||
if (!em.getTypes().stream().map(SREntityType::getID).toList().contains(args[1])) {
|
|
||||||
sender.sendMessage("Invalid entity type.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
SREntityType type = em.getType(args[1]);
|
|
||||||
Window window =
|
|
||||||
Window.single()
|
|
||||||
.setViewer(p)
|
|
||||||
.setTitle(args[1])
|
|
||||||
.setGui(EntityTypeGUI.createGui(type))
|
|
||||||
.build();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args.length < 4) {
|
|
||||||
sender.sendMessage(
|
|
||||||
"Usage: /entitytype edit <ID> <type|behavior|loot|item|stats|name|level>");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (args[2].equalsIgnoreCase("type")) {
|
|
||||||
if (args.length < 5) {
|
|
||||||
sender.sendMessage("Usage: /entitytype edit <ID> type <type>");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
EntityType type = EntityType.valueOf(args[4]);
|
|
||||||
EntityManager em = EntityManager.getInstance(EntityManager.class);
|
|
||||||
try {
|
|
||||||
em.getType(args[1]).setType(type);
|
|
||||||
} catch (Exception e) {
|
|
||||||
sender.sendMessage("An error occurred while setting the entity type.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
sender.sendMessage("Invalid entity type.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "list":
|
|
||||||
if (!(sender instanceof Player p)) {
|
|
||||||
sender.sendMessage("You must be a player to use this command.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Window window =
|
|
||||||
Window.single().setViewer(p).setTitle(args[1]).setGui(EntityTypeGUI.listGui()).build();
|
|
||||||
window.open();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -149,21 +183,15 @@ public class EntityTypeCommand implements TabExecutor {
|
||||||
.map(SREntityType::getID)
|
.map(SREntityType::getID)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
if (args.length == 3) {
|
if (args.length == 3 && (args[0].equalsIgnoreCase("edit"))) {
|
||||||
if (args[0].equalsIgnoreCase("edit")) {
|
|
||||||
return List.of("type", "behavior", "loot", "item", "stats", "name", "level");
|
return List.of("type", "behavior", "loot", "item", "stats", "name", "level");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (args.length == 4) {
|
if (args.length == 4
|
||||||
if (args[0].equalsIgnoreCase("edit")) {
|
&& (args[0].equalsIgnoreCase("edit") && (args[2].equalsIgnoreCase("type")))) {
|
||||||
if (args[2].equalsIgnoreCase("type")) {
|
return Arrays.stream(EntityType.values())
|
||||||
return List.of(
|
.filter(EntityType::isAlive)
|
||||||
Arrays.stream(EntityType.values())
|
.map(EntityType::name)
|
||||||
.filter(EntityType::isAlive)
|
.toList();
|
||||||
.map(EntityType::name)
|
|
||||||
.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
package me.unurled.sacredrealms.sr.utils;
|
package me.unurled.sacredrealms.sr.utils;
|
||||||
|
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class Component {
|
public class Component {
|
||||||
|
|
||||||
public static net.kyori.adventure.text.Component comp(String msg) {
|
public static final String NOT_PLAYER = "<red>You must be a player to use this command.";
|
||||||
|
|
||||||
|
private Component() {}
|
||||||
|
|
||||||
|
public static net.kyori.adventure.text.@NotNull Component comp(String msg) {
|
||||||
MiniMessage mm = MiniMessage.miniMessage();
|
MiniMessage mm = MiniMessage.miniMessage();
|
||||||
return mm.deserialize(msg);
|
return mm.deserialize(msg);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue