From 209f1ba88aa94114caaf4cebfc0a30741079ca83 Mon Sep 17 00:00:00 2001 From: Yaruma3341 Date: Mon, 8 Apr 2019 19:30:23 +0200 Subject: [PATCH] fixed some bugs; added kit to fightplayer; reworked schematic list; updated KitManager Signed-off-by: Yaruma3341 --- .../fightsystem/commands/AkCommand.java | 27 ++++--- .../yaruma/fightsystem/fight/FightPlayer.java | 8 ++ src/me/yaruma/fightsystem/kit/KitManager.java | 8 +- .../yaruma/fightsystem/utils/WorldEdit.java | 81 +++++++++++++++++++ src/plugin.yml | 2 +- 5 files changed, 109 insertions(+), 17 deletions(-) diff --git a/src/me/yaruma/fightsystem/commands/AkCommand.java b/src/me/yaruma/fightsystem/commands/AkCommand.java index e9af636..1a444a9 100644 --- a/src/me/yaruma/fightsystem/commands/AkCommand.java +++ b/src/me/yaruma/fightsystem/commands/AkCommand.java @@ -109,19 +109,19 @@ public class AkCommand implements CommandExecutor { } }else if(args[0].equalsIgnoreCase("kit")) { if(FightSystem.getPlugin().getFightState() != FightState.SETUP) { - player.sendMessage(FightSystem.PREFIX + "§cDu kannst dein Kit nicht mehr wechseln"); + player.sendMessage(FightSystem.PREFIX + "§cDu kannst dein Kit nicht mehr wechseln!"); return false; } FightTeam fightTeam = Fight.getPlayerTeam(player); if(fightTeam == null){ - player.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team"); + player.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team!"); return false; } Kit kit = KitManager.getKitByName(args[1]); if(kit == null){ - player.sendMessage(FightSystem.PREFIX + "§cDieses Kit existiert nicht"); + player.sendMessage(FightSystem.PREFIX + "§cDieses Kit existiert nicht!"); return false; } @@ -130,34 +130,35 @@ public class AkCommand implements CommandExecutor { (fightPlayer.isLeader() && !kit.isLeaderAllowed()) || (!fightPlayer.isLeader() && !kit.isMemberAllowed()) ){ - player.sendMessage(FightSystem.PREFIX + "§cDu darfst dieses Kit nicht verwenden"); + player.sendMessage(FightSystem.PREFIX + "§cDu darfst dieses Kit nicht verwenden!"); return false; } //TODO: Owns Kit - kit.loadToPlayer(player); + Fight.getFightPlayer(player).setKit(kit); - }else if(args[0].equalsIgnoreCase("schem")){ + } else if(args[0].equalsIgnoreCase("schem")) { FightTeam fightTeam = Fight.getPlayerTeam(player); - if(fightTeam == null){ - player.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team"); + if(fightTeam == null) { + player.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team!"); return false; - }else if(fightTeam.hasSchematic()){ - player.sendMessage(FightSystem.PREFIX + "§cDie Schematic ist bereits gewählt"); + }else if(fightTeam.hasSchematic()) { + player.sendMessage(FightSystem.PREFIX + "§cDie Schematic ist bereits gewählt!"); return false; } Schematic schem = Schematic.getSchemFromDB(args[1], player.getUniqueId()); - if(schem == null){ - player.sendMessage(FightSystem.PREFIX + "§cDiese Schematic gibt es nicht"); + if(schem == null) { + player.sendMessage(FightSystem.PREFIX + "§cDiese Schematic gibt es nicht!"); return false; - }else if(schem.getSchemType() != Config.SchematicType){ + }else if(schem.getSchemType() != Config.SchematicType) { player.sendMessage(FightSystem.PREFIX + "§cDiese Schematic ist kein " + Config.GameName); return false; } fightTeam.setSchematic(schem); + Fight.getPlayerTeam(player).broadcast(FightSystem.PREFIX + "Schematic §6" + args[1] + " §8wird für den Kampf verwendet!"); } }else{ sendHelp(player); diff --git a/src/me/yaruma/fightsystem/fight/FightPlayer.java b/src/me/yaruma/fightsystem/fight/FightPlayer.java index 75f40b4..5d695df 100644 --- a/src/me/yaruma/fightsystem/fight/FightPlayer.java +++ b/src/me/yaruma/fightsystem/fight/FightPlayer.java @@ -1,11 +1,13 @@ package me.yaruma.fightsystem.fight; +import me.yaruma.fightsystem.kit.Kit; import org.bukkit.entity.Player; public class FightPlayer { private final Player player; private boolean isOut; + private Kit kit; public boolean equals(Object obj) { if (!(obj instanceof Player)) @@ -40,5 +42,11 @@ public class FightPlayer { return Fight.getPlayerTeam(player).getLeader().getPlayer() == player; } + public Kit getKit() { + return kit; + } + public void setKit(Kit kit) { + this.kit = kit; + } } diff --git a/src/me/yaruma/fightsystem/kit/KitManager.java b/src/me/yaruma/fightsystem/kit/KitManager.java index 1691051..6b757c7 100644 --- a/src/me/yaruma/fightsystem/kit/KitManager.java +++ b/src/me/yaruma/fightsystem/kit/KitManager.java @@ -96,9 +96,11 @@ public class KitManager { } public static void loadAllKits() { - //for(String key : instance.getKitData().getConfigurationSection("Kits").getKeys(false)) { - // loadedKits.add(loadKitFromConfig(key)); - //} + if(instance.getKitData().getConfigurationSection("Kits") != null) { + for(String key : instance.getKitData().getConfigurationSection("Kits").getKeys(false)) { + loadedKits.add(loadKitFromConfig(key)); + } + } } public static Kit getKitByName(String kitName) { diff --git a/src/me/yaruma/fightsystem/utils/WorldEdit.java b/src/me/yaruma/fightsystem/utils/WorldEdit.java index 5332af9..693e402 100644 --- a/src/me/yaruma/fightsystem/utils/WorldEdit.java +++ b/src/me/yaruma/fightsystem/utils/WorldEdit.java @@ -10,6 +10,10 @@ import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.sk89q.worldedit.math.transform.AffineTransform; import com.sk89q.worldedit.world.World; +import de.warking.hunjy.MySQL.Schematic; +import de.warking.hunjy.MySQL.SchematicType; +import de.warking.hunjy.MySQL.WarkingUser; +import me.yaruma.fightsystem.FightSystem; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; @@ -20,7 +24,9 @@ import org.bukkit.entity.Player; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; public class WorldEdit { @@ -100,5 +106,80 @@ public class WorldEdit { } } + public static void sendPlayerSchematicList(int currentPage, int filesPerPage, Player player, SchematicType schematicType) { + List preSchematicList = Schematic.getSchemsAccessibleByUser(player.getUniqueId()); + List schematicList = new ArrayList<>(); + for(Schematic s : preSchematicList) { + if(s.getSchemType() == schematicType) + schematicList.add(s); + } + + if(schematicList.isEmpty()) { + player.sendMessage(FightSystem.PREFIX + "§cDu hast noch keine Schematic(s)!"); + return; + } + + int pages; + + double doublePages = (Double.valueOf(schematicList.size()) / Double.valueOf(filesPerPage)); + int intPages = schematicList.size() / filesPerPage; + + if(schematicList.size() <= filesPerPage) { + pages = 1; + } else if(doublePages > intPages) { + pages = (intPages + 1); + } else + pages = intPages; + + int currPage = currentPage; + + if(currPage >= pages) return; + + player.sendMessage("§5======§8[§dSeite " + (currentPage + 1) + " §7/ §d" + pages + " §7| §d" + schematicList.size() + " Schematic(s)§8]§5======"); + + for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) { + if(schematicList.size() <= i) break; + + Schematic schematic = schematicList.get(i); + + TextComponent schematics = new TextComponent("§b" + schematic.getSchemName()); + schematics.setBold(true); + + schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic benutzen...").create())); + schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem info " + schematic.getSchemName())); + + player.spigot().sendMessage(schematics); + } + + if(pages <= 1) return; + + if(currPage == 0) { + TextComponent nextPage = new TextComponent("Nächste Seite >>"); + nextPage.setColor(ChatColor.RED); + nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); + nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list 1")); + player.spigot().sendMessage(nextPage); + } else if((currPage + 1) == pages) { + TextComponent beforePage = new TextComponent("<< Vorherige Seite"); + beforePage.setColor(ChatColor.RED); + beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); + beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); + player.spigot().sendMessage(beforePage); + } else { + TextComponent beforePage = new TextComponent("<< Seite "); + beforePage.setColor(ChatColor.RED); + beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); + beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); + + TextComponent nextPage = new TextComponent(">>"); + nextPage.setColor(ChatColor.RED); + nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); + nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage + 1))); + + beforePage.addExtra(nextPage); + player.spigot().sendMessage(beforePage); + } + } + } diff --git a/src/plugin.yml b/src/plugin.yml index 7d71a4a..06aa185 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: FightSystem version: 1.0 -author: Yaruma3341 +author: [Yaruma3341, Lixfel] main: me.yaruma.fightsystem.FightSystem depend: [CoreSystem, WorldEdit, FastAsyncWorldEdit]