SteamWar/FightSystem
Archiviert
13
1

GUI + Refactoring Refactoring Refactoring

Dieser Commit ist enthalten in:
Lixfel 2019-06-05 22:14:27 +02:00
Ursprung 60edef1c80
Commit c2da2498f7
25 geänderte Dateien mit 360 neuen und 380 gelöschten Zeilen

Datei anzeigen

@ -26,17 +26,17 @@ import java.io.File;
public class FightSystem extends JavaPlugin { public class FightSystem extends JavaPlugin {
public static final String PREFIX = "§6Arena§8» "; public static final String PREFIX = "§eArena§8» ";
private static FightSystem plugin; private static FightSystem plugin;
private Scoreboard scoreboard; private static Scoreboard scoreboard;
private WaterRemover waterRemover; private static WaterRemover waterRemover;
private static FightState fightState; private static FightState fightState = FightState.SETUP;
public int fightTime = 0; private static int fightTime = 0;
public boolean entern = false; private static boolean entern = false;
private final File kits = new File("plugins/" + this.getName(), "kits.data"); private final File kits = new File("plugins/" + this.getName(), "kits.data");
private final FileConfiguration getKitData = YamlConfiguration.loadConfiguration(kits); private final FileConfiguration getKitData = YamlConfiguration.loadConfiguration(kits);
@ -49,32 +49,19 @@ public class FightSystem extends JavaPlugin {
return getKitData; return getKitData;
} }
@Override
public void onEnable() { public void onEnable() {
plugin = this; plugin = this;
Config.load(); Config.load();
this.scoreboard = new Scoreboard(plugin); scoreboard = new Scoreboard();
this.waterRemover = new WaterRemover(); waterRemover = new WaterRemover();
loadConfig(); loadConfig();
KitManager.loadAllKits(); KitManager.loadAllKits();
init();
fightState = FightState.SETUP;
Countdown countdown = new Countdown(Config.NoPlayerOnlineDuration, new FinishNoPlayersOnline());
countdown.startTimer(getPlugin());
TechHider.init();
}
public void onDisable() {
}
private void init() {
PluginManager pm = Bukkit.getPluginManager(); PluginManager pm = Bukkit.getPluginManager();
pm.registerEvents(new PlayerJoinListener(), plugin); pm.registerEvents(new PlayerJoinListener(), plugin);
pm.registerEvents(new PlayerQuitListener(), plugin); pm.registerEvents(new PlayerQuitListener(), plugin);
@ -103,8 +90,17 @@ public class FightSystem extends JavaPlugin {
getCommand("accept").setExecutor(new AcceptCommand()); getCommand("accept").setExecutor(new AcceptCommand());
getCommand("decline").setExecutor(new DeclineCommand()); getCommand("decline").setExecutor(new DeclineCommand());
getCommand("ready").setExecutor(new ReadyCommand()); getCommand("ready").setExecutor(new ReadyCommand());
getCommand("kit").setExecutor(new KitCommand());
Countdown countdown = new Countdown(Config.NoPlayerOnlineDuration, new FinishNoPlayersOnline());
countdown.startTimer(getPlugin());
TechHider.init();
} }
@Override
public void onDisable() {}
private void loadConfig() { private void loadConfig() {
if(!new File("plugins/" + this.getName() + "/kits.data").exists()) { if(!new File("plugins/" + this.getName() + "/kits.data").exists()) {
saveKitData(); saveKitData();
@ -193,7 +189,7 @@ public class FightSystem extends JavaPlugin {
return; return;
fightState = FightState.SPECTATE; fightState = FightState.SPECTATE;
Countdown.cancelAllTimers(); Countdown.cancelAllTimers();
Bukkit.getScheduler().cancelTask(WinconditionTechKO.taskID); Bukkit.getScheduler().cancelTask(WinconditionTechKO.getTaskID());
setAllPlayersGM(GameMode.SPECTATOR); setAllPlayersGM(GameMode.SPECTATOR);
for(Player p : Bukkit.getOnlinePlayers()){ for(Player p : Bukkit.getOnlinePlayers()){
@ -245,4 +241,12 @@ public class FightSystem extends JavaPlugin {
} }
} }
public static void setFightTime(int fightTime) {
FightSystem.fightTime = fightTime;
}
public static void setEntern(boolean entern) {
FightSystem.entern = entern;
}
} }

Datei anzeigen

@ -5,13 +5,15 @@ import de.warking.hunjy.MySQL.UserGroup;
import de.warking.hunjy.MySQL.WarkingUser; import de.warking.hunjy.MySQL.WarkingUser;
import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightPlayer;
import me.yaruma.fightsystem.fight.FightState; import me.yaruma.fightsystem.fight.FightState;
import me.yaruma.fightsystem.fight.FightTeam; import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.kit.Kit;
import me.yaruma.fightsystem.kit.KitManager; import me.yaruma.fightsystem.kit.KitManager;
import me.yaruma.fightsystem.utils.Config; import me.yaruma.fightsystem.utils.Config;
import org.bukkit.Bukkit; import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -37,20 +39,34 @@ public class AkCommand implements CommandExecutor {
Commands.declineInvitation(player); Commands.declineInvitation(player);
else if(args[0].equalsIgnoreCase("leave")) else if(args[0].equalsIgnoreCase("leave"))
Commands.leaveTeam(player); Commands.leaveTeam(player);
else if(args[0].equalsIgnoreCase("leader")){ else if(args[0].equalsIgnoreCase("leader")) {
if(!Fight.getBlueTeam().hasTeamLeader()){ if (!Fight.getBlueTeam().hasTeamLeader()) {
FightPlayer fightPlayer = new FightPlayer(player, false); Fight.getBlueTeam().setLeader(Fight.getBlueTeam().addMember(player));
Fight.getBlueTeam().setLeader(fightPlayer);
player.sendMessage(FightSystem.PREFIX + "§aDu bist nun Leader von " + Fight.getBlueTeam().getName()); player.sendMessage(FightSystem.PREFIX + "§aDu bist nun Leader von " + Fight.getBlueTeam().getName());
} else if (!Fight.getRedTeam().hasTeamLeader()) {
} else if(!Fight.getRedTeam().hasTeamLeader()){ Fight.getRedTeam().setLeader(Fight.getRedTeam().addMember(player));
FightPlayer fightPlayer = new FightPlayer(player, false);
Fight.getBlueTeam().setLeader(fightPlayer);
player.sendMessage(FightSystem.PREFIX + "§aDu bist nun Leader von " + Fight.getRedTeam().getName()); player.sendMessage(FightSystem.PREFIX + "§aDu bist nun Leader von " + Fight.getRedTeam().getName());
} else } else
player.sendMessage(FightSystem.PREFIX + "§cEs sind bereits zwei Leader vorhanden!"); player.sendMessage(FightSystem.PREFIX + "§cEs sind bereits zwei Leader vorhanden!");
}else if(args[0].equalsIgnoreCase("schem") || args[0].equalsIgnoreCase("schemlist")){
//TEXT COMPONENTS
TextComponent publicList = new TextComponent("PUBLIC");
publicList.setColor(ChatColor.YELLOW);
publicList.setBold(true);
publicList.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§ePublic Liste...").create()));
publicList.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ak schemlist public"));
TextComponent privateList = new TextComponent("PRIVATE");
privateList.setColor(ChatColor.YELLOW);
privateList.setBold(true);
privateList.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§ePrivate Liste...").create()));
privateList.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ak schemlist 0"));
//TEXT COMPONENTS
player.spigot().sendMessage(publicList);
player.spigot().sendMessage(privateList);
}else }else
Commands.sendHelp(player); Commands.sendHelp(player);
break; break;
@ -58,52 +74,9 @@ public class AkCommand implements CommandExecutor {
if(args[0].equalsIgnoreCase("invite")){ if(args[0].equalsIgnoreCase("invite")){
Commands.invite(player, args[1]); Commands.invite(player, args[1]);
}else if(args[0].equalsIgnoreCase("remove")){ }else if(args[0].equalsIgnoreCase("remove")){
if(FightSystem.getFightState() == FightState.SETUP) { Commands.kick(player, args[1]);
FightTeam fightTeam = Fight.getPlayerTeam(player);
if(fightTeam != null) {
Player target = Bukkit.getPlayer(args[1]);
if(target != null) {
FightPlayer fightPlayer = fightTeam.getFightPlayer(player);
if(fightPlayer.isLeader() && fightTeam.isPlayerInTeam(target)){
fightTeam.removePlayer(target);
player.sendMessage(FightSystem.PREFIX + "§aDu hast den Spieler §6" + target.getName() + " §aaus dem Team entfernt!");
target.sendMessage(FightSystem.PREFIX + "§cDu wurdest aus deinem Team entfernt!");
}
}
}
}
}else if(args[0].equalsIgnoreCase("kit")) { }else if(args[0].equalsIgnoreCase("kit")) {
if(FightSystem.getFightState() != FightState.SETUP) { Commands.kit(player, args[1]);
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!");
return false;
}
Kit kit = KitManager.getKitByName(args[1]);
if(kit == null){
player.sendMessage(FightSystem.PREFIX + "§cDieses Kit existiert nicht!");
return false;
}
FightPlayer fightPlayer = fightTeam.getFightPlayer(player);
if(
(fightPlayer.isLeader() && !kit.isLeaderAllowed()) ||
(!fightPlayer.isLeader() && !kit.isMemberAllowed())
){
player.sendMessage(FightSystem.PREFIX + "§cDu darfst dieses Kit nicht verwenden!");
return false;
}
//TODO: Owns Kit
Fight.getFightPlayer(player).setKit(kit);
player.sendMessage(FightSystem.PREFIX + "§aDu hast nun das Kit §6" + args[1] + "§a!");
} else if(args[0].equalsIgnoreCase("addkit")){ } else if(args[0].equalsIgnoreCase("addkit")){
if(WarkingUser.get(player.getUniqueId()).getUserGroup() != UserGroup.Developer){ if(WarkingUser.get(player.getUniqueId()).getUserGroup() != UserGroup.Developer){
Commands.sendHelp(player); Commands.sendHelp(player);
@ -167,7 +140,6 @@ public class AkCommand implements CommandExecutor {
} }
fightTeam.setSchematic(schem); fightTeam.setSchematic(schem);
Fight.getPlayerTeam(player).broadcast(FightSystem.PREFIX + "Schematic §6" + args[1] + " §8wird für den Kampf verwendet!");
}else }else
Commands.sendHelp(player); Commands.sendHelp(player);
break; break;

Datei anzeigen

@ -5,12 +5,14 @@ import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightPlayer; import me.yaruma.fightsystem.fight.FightPlayer;
import me.yaruma.fightsystem.fight.FightState; import me.yaruma.fightsystem.fight.FightState;
import me.yaruma.fightsystem.fight.FightTeam; import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.utils.Config; import me.yaruma.fightsystem.kit.Kit;
import me.yaruma.fightsystem.kit.KitManager;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Commands { class Commands {
private Commands(){}
private static void errNoTeam(Player p){ private static void errNoTeam(Player p){
p.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team!"); p.sendMessage(FightSystem.PREFIX + "§cDu bist in keinem Team!");
@ -60,7 +62,7 @@ public class Commands {
private static Player checkGetPlayer(Player p, String t){ private static Player checkGetPlayer(Player p, String t){
Player target = Bukkit.getPlayer(t); Player target = Bukkit.getPlayer(t);
if(target == null) { if(target == null) {
p.sendMessage(FightSystem.PREFIX + "§cDer Spieler ist nicht online!"); p.sendMessage(FightSystem.PREFIX + "§cDer Spieler ist nicht in der Arena!");
} }
return target; return target;
} }
@ -85,11 +87,9 @@ public class Commands {
return; return;
FightPlayer leader = team.getLeader(); FightPlayer leader = team.getLeader();
team.addMember(p);
p.setGameMode(GameMode.ADVENTURE);
p.teleport(team.getSpawn());
p.sendMessage(FightSystem.PREFIX + "§aDu bist Team " + team.getName() + " §abeigetreten!"); p.sendMessage(FightSystem.PREFIX + "§aDu bist Team " + team.getName() + " §abeigetreten!");
leader.sendMessage(FightSystem.PREFIX + "§aDer Spieler §6" + p.getName() + " §aist deinem Team beigetreten!"); leader.sendMessage(FightSystem.PREFIX + "§aDer Spieler §e" + p.getName() + " §aist deinem Team beigetreten!");
team.addMember(p);
} }
static void declineInvitation(Player p){ static void declineInvitation(Player p){
@ -101,9 +101,9 @@ public class Commands {
return; return;
FightPlayer leader = team.getLeader(); FightPlayer leader = team.getLeader();
team.getInvited().remove(p);
p.sendMessage(FightSystem.PREFIX + "§aDu hast die Einladung von " + team.getName() + " §aabgelehnt!"); p.sendMessage(FightSystem.PREFIX + "§aDu hast die Einladung von " + team.getName() + " §aabgelehnt!");
leader.sendMessage(FightSystem.PREFIX + "§cDer Spieler §6" + p.getName() + " §chat deine Einladung abgelehnt!"); leader.sendMessage(FightSystem.PREFIX + "§cDer Spieler §e" + p.getName() + " §chat deine Einladung abgelehnt!");
team.getInvited().remove(p);
} }
static void leaveTeam(Player p){ static void leaveTeam(Player p){
@ -114,10 +114,8 @@ public class Commands {
if(fightTeam == null) if(fightTeam == null)
return; return;
fightTeam.removePlayer(p);
p.setGameMode(GameMode.SPECTATOR);
p.teleport(Config.SpecSpawn);
p.sendMessage(FightSystem.PREFIX + "§aDu hast das Team " + fightTeam.getName() + " §averlassen!"); p.sendMessage(FightSystem.PREFIX + "§aDu hast das Team " + fightTeam.getName() + " §averlassen!");
fightTeam.removePlayer(p);
} }
static void invite(Player p, String invited){ static void invite(Player p, String invited){
@ -137,7 +135,7 @@ public class Commands {
return; return;
if(Fight.getPlayerTeam(target) != null) { if(Fight.getPlayerTeam(target) != null) {
p.sendMessage(FightSystem.PREFIX + "§cDer Spieler §6" + target.getName() + " §cist bereits in einem Team!"); p.sendMessage(FightSystem.PREFIX + "§cDer Spieler §e" + target.getName() + " §cist bereits in einem Team!");
return; return;
} }
@ -146,23 +144,78 @@ public class Commands {
return; return;
} }
target.sendMessage(FightSystem.PREFIX + "§aDu wurdest in das Team von §e" + p.getName() + " §aeingeladen!");
p.sendMessage(FightSystem.PREFIX + "§aDu hast den Spieler §e" + target.getName() + " §ain dein Team eingeladen!");
fightTeam.getInvited().add(target); fightTeam.getInvited().add(target);
target.sendMessage(FightSystem.PREFIX + "§aDu wurdest in das Team von §6" + p.getName() + " §aeingeladen!");
p.sendMessage(FightSystem.PREFIX + "§aDu hast den Spieler §6" + target.getName() + " §ain dein Team eingeladen!");
GUI.invitation(p, target); GUI.invitation(p, target);
} }
static void kick(Player p, String kicked){
if(!checkSetupOver(p))
return;
FightTeam fightTeam = checkGetTeam(p);
if(fightTeam == null)
return;
FightPlayer fightPlayer = checkGetLeader(p);
if(fightPlayer == null)
return;
Player target = checkGetPlayer(p, kicked);
if(target == null)
return;
if(!fightTeam.isPlayerInTeam(target)){
p.sendMessage(FightSystem.PREFIX + "§cDer Spieler " + target.getName() + " §cist nicht in deinem Team§c!");
return;
}
p.sendMessage(FightSystem.PREFIX + "§aDu hast den Spieler §e" + target.getName() + " §aaus dem Team entfernt!");
target.sendMessage(FightSystem.PREFIX + "§cDu wurdest aus dem Team entfernt!");
fightTeam.removePlayer(target);
}
static void kit(Player p, String kitName){
if(!checkSetupOver(p))
return;
FightPlayer fightPlayer = checkGetPlayer(p);
if(fightPlayer == null)
return;
Kit k = KitManager.getKitByName(kitName);
if(k == null){
p.sendMessage(FightSystem.PREFIX + "§cDieses Kit gibt es nicht!");
return;
}
if((fightPlayer.isLeader() && !k.isLeaderAllowed()) ||
(!fightPlayer.isLeader() && !k.isMemberAllowed())){
p.sendMessage(FightSystem.PREFIX + "§cDu darfst dieses Kit nicht verwenden!");
return;
}
p.sendMessage(FightSystem.PREFIX + "§aDu spielst nun mit dem Kit §e" + kitName + "§a!");
fightPlayer.setKit(k);
}
static void sendHelp(Player p) { static void sendHelp(Player p) {
p.sendMessage(FightSystem.PREFIX + "§7Hilfe für das Kampfsystem"); p.sendMessage(FightSystem.PREFIX + "§7Hilfe für das Kampfsystem");
p.sendMessage("§8/§6ak help §8- §7Zeigt diese Hilfeseite"); p.sendMessage("§8/§eak help §8- §7Zeigt diese Hilfeseite");
p.sendMessage("§8/§6ak leader §8- §7Tritt einem Team als Leader bei");
p.sendMessage("§8/§6ak kit <Kit> §8- §7Wähle ein Kit");
p.sendMessage("§8/§6ak schem <Schematic> §8- §7Setze deine Schematic");
p.sendMessage("§8/§6ready §8- §7Setzt das eigene Team auf bereit");
p.sendMessage("§8/§6invite [Spieler] §8- §7Lade den Spieler in dein Team bei");
p.sendMessage("§8/§6accept §8- §7Einladung annehmen");
p.sendMessage("§8/§6decline §8- §7Einladung ablehnen");
p.sendMessage("§8/§6leave §8- §7Team verlassen");
FightPlayer fightPlayer = Fight.getFightPlayer(p);
if(fightPlayer == null){
p.sendMessage("§8/§eaccept §8- §7Einladung annehmen");
p.sendMessage("§8/§edecline §8- §7Einladung ablehnen");
}else{
if(fightPlayer.isLeader()){
p.sendMessage("§8/§eak schem §8<§eSchematic§8> - §7Setze deine Schematic");
p.sendMessage("§8/§eready §8- §7Setzt das eigene Team auf bereit");
p.sendMessage("§8/§einvite §8<§eSpieler§8> - §7Lade einen Spieler in dein Team ein");
}
p.sendMessage("§8/§ekit §8<§eKit§8> - §7Wähle ein Kit");
p.sendMessage("§8/§eleave §8- §7Team verlassen");
}
} }
} }

Datei anzeigen

@ -1,30 +1,90 @@
package me.yaruma.fightsystem.commands; package me.yaruma.fightsystem.commands;
import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem;
import de.steamwar.inventory.SWListInv;
import de.warking.hunjy.MySQL.Schematic;
import de.warking.hunjy.MySQL.WarkingUser;
import javafx.util.Pair;
import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightPlayer;
import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.kit.Kit;
import me.yaruma.fightsystem.kit.KitManager;
import me.yaruma.fightsystem.utils.Config;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import java.util.ArrayList;
import java.util.List;
public class GUI { public class GUI {
public static void invitation(Player p, Player target){ private GUI(){}
static void invitation(Player p, Player target){
SWInventory inv = new SWInventory(target, 9, "Einladung von " + p.getName()); SWInventory inv = new SWInventory(target, 9, "Einladung von " + p.getName());
inv.setItem(0, Material.INK_SACK, (byte)10, "§aAnnehmen", () ->{ inv.setItem(0, Material.INK_SACK, (byte)10, "§aAnnehmen", (ClickType click) ->{
target.performCommand("ak accept"); target.performCommand("accept");
target.closeInventory(); target.closeInventory();
}); });
inv.setItem(8, Material.INK_SACK, (byte)1, "§cAblehnen", () ->{ inv.setItem(8, Material.INK_SACK, (byte)1, "§cAblehnen", (ClickType click) ->{
target.performCommand("ak decline"); target.performCommand("decline");
target.closeInventory(); target.closeInventory();
}); });
inv.addCloseCallback(() ->{ inv.addCloseCallback((ClickType click) ->{
if(Fight.getInvitedTeam(target) != null){ if(Fight.getInvitedTeam(target) != null){
target.sendMessage(FightSystem.PREFIX + "§7Tippe §8/§aaccept§7, um die Einladung §aanzunehmen"); target.sendMessage(FightSystem.PREFIX + "§7Tippe §8/§aaccept§7, um die Einladung §aanzunehmen");
target.sendMessage(FightSystem.PREFIX + "§7Tippe §8/§cdecline§7, um die Einladung §cabzulehnen"); target.sendMessage(FightSystem.PREFIX + "§7Tippe §8/§cdecline§7, um die Einladung §cabzulehnen");
} }
}); });
inv.setCallback(-999, target::closeInventory); inv.setCallback(-999, (ClickType click) -> target.closeInventory());
inv.open();
}
public static void kitSelection(Player p){
FightPlayer fightPlayer = Fight.getFightPlayer(p);
List<Pair<SWItem, Kit>> iconList = new ArrayList<>();
List<Kit> kitList = KitManager.getKits(fightPlayer.isLeader());
for(Kit k : kitList){
iconList.add(new Pair<>(new SWItem(Material.LEATHER_CHESTPLATE, k.getName(), null, !k.isMemberAllowed(), null), k));
}
SWListInv<Kit> inv = new SWListInv<>(p, "Kitauswahl", (ClickType click, Kit k) -> {
p.performCommand("kit " + k.getName());
p.closeInventory();
}, iconList);
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
inv.open();
}
public static void preSchemDialog(Player p){
SWInventory inv = new SWInventory(p, 9, Config.GameName + "-Auswahl");
inv.setItem(8, Material.REDSTONE, "§eÖffentliches " + Config.GameName, (ClickType click) -> schemDialog(p, true));
if(Schematic.getSchemsOfType(p.getUniqueId(), Config.SchematicType).isEmpty()){
inv.setItem(0, Material.INK_SACK, (byte)8, "§7Keine privaten " + Config.GameName + " vorhanden", (ClickType click)->{});
}else{
inv.setItem(8, Material.CAULDRON_ITEM, "§ePrivates " + Config.GameName, (ClickType click) -> schemDialog(p, false));
}
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
inv.open();
}
private static void schemDialog(Player p, boolean publicSchems){
List<Pair<SWItem, Schematic>> schems;
if(publicSchems)
schems = SWListInv.getSchemList(0, Config.SchematicType);
else
schems = SWListInv.getSchemList(WarkingUser.get(p.getUniqueId()).getId(), Config.SchematicType);
SWListInv<Schematic> inv = new SWListInv<>(p, Config.GameName + "-Auswahl", (ClickType click, Schematic s) -> {
FightTeam fightTeam = Fight.getPlayerTeam(p);
fightTeam.setSchematic(s);
p.closeInventory();
}, schems);
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
inv.open(); inv.open();
} }
} }

Datei anzeigen

@ -0,0 +1,23 @@
package me.yaruma.fightsystem.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class KitCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player)) {
return false;
}
Player player = (Player) sender;
if(args.length != 1)
GUI.kitSelection(player);
else{
Commands.kit(player, args[0]);
}
return false;
}
}

Datei anzeigen

@ -11,19 +11,12 @@ public class FightPlayer {
private boolean isOut; private boolean isOut;
private Kit kit; private Kit kit;
public boolean equals(Object obj) {
if (!(obj instanceof Player))
return false;
Player comp = (Player)obj;
return this.player.getUniqueId().equals(comp.getUniqueId());
}
public void sendMessage(String message) { public void sendMessage(String message) {
if (this.player != null && this.player.isOnline()) if (this.player != null && this.player.isOnline())
this.player.sendMessage(message); this.player.sendMessage(message);
} }
public FightPlayer(Player player, boolean isOut) { FightPlayer(Player player, boolean isOut) {
this.player = player; this.player = player;
this.isOut = isOut; this.isOut = isOut;
kit = KitManager.getKitByName(Config.MemberDefault); kit = KitManager.getKitByName(Config.MemberDefault);
@ -42,7 +35,8 @@ public class FightPlayer {
} }
public boolean isLeader() { public boolean isLeader() {
return Fight.getPlayerTeam(player).getLeader().getPlayer() == player; FightPlayer leader = Fight.getPlayerTeam(player).getLeader();
return leader != null && leader.getPlayer() == player;
} }
public Kit getKit() { public Kit getKit() {

Datei anzeigen

@ -19,10 +19,12 @@ import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -32,9 +34,9 @@ import java.util.List;
public class FightTeam { public class FightTeam {
private FightPlayer leader; private FightPlayer leader;
private final ArrayList<FightPlayer> players; private final List<FightPlayer> players = new ArrayList<>();
private boolean ready; private boolean ready;
private final ArrayList<Player> invited; private final List<Player> invited = new ArrayList<>();
private final String name; private final String name;
private final String prefix; private final String prefix;
private Schematic schematic; private Schematic schematic;
@ -44,8 +46,6 @@ public class FightTeam {
private final boolean rotate; private final boolean rotate;
public FightTeam(String Name, String Prefix, Location Spawn, Vector Paste, boolean Rotate) { public FightTeam(String Name, String Prefix, Location Spawn, Vector Paste, boolean Rotate) {
players = new ArrayList<>();
invited = new ArrayList<>();
spawn = Spawn; spawn = Spawn;
paste = Paste; paste = Paste;
name = Name; name = Name;
@ -69,7 +69,7 @@ public class FightTeam {
} }
public boolean allPlayersOut() { public boolean allPlayersOut() {
for(FightPlayer fightPlayer : this.players) { for(FightPlayer fightPlayer : players) {
if(!fightPlayer.isOut()) if(!fightPlayer.isOut())
return false; return false;
} }
@ -77,7 +77,7 @@ public class FightTeam {
} }
public boolean isPlayerInTeam(Player player) { public boolean isPlayerInTeam(Player player) {
for(FightPlayer fightPlayer : this.players) { for(FightPlayer fightPlayer : players) {
if(fightPlayer.getPlayer().equals(player)) if(fightPlayer.getPlayer().equals(player))
return true; return true;
} }
@ -97,21 +97,37 @@ public class FightTeam {
} }
} }
public void addMember(Player player) { public FightPlayer addMember(Player player) {
FightPlayer fightPlayer = new FightPlayer(player, false); FightPlayer fightPlayer = new FightPlayer(player, false);
players.add(fightPlayer); players.add(fightPlayer);
invited.remove(player); invited.remove(player);
player.setGameMode(GameMode.ADVENTURE);
player.teleport(spawn);
player.getInventory().setItem(1, new ItemBuilder(Material.LEATHER_CHESTPLATE).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§eKit wählen").build());
return fightPlayer;
} }
public void removePlayer(Player player) { public void removePlayer(Player player) {
FightPlayer fightPlayer = getFightPlayer(player); FightPlayer fightPlayer = getFightPlayer(player);
if(fightPlayer == null){ if(fightPlayer == null)
System.out.println("FightPlayer == null! : " + player.getName());
return; return;
}
players.remove(fightPlayer); players.remove(fightPlayer);
if(fightPlayer.isLeader()) fightPlayer.getPlayer().getInventory().clear();
if(fightPlayer.equals(leader) && FightSystem.getFightState() == FightState.SETUP){
this.leader = null; this.leader = null;
if(!players.isEmpty()) {
setLeader(players.get(0));
Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §e" + leader.getPlayer().getName() + " §aist nun Leader von Team " + getName() + "§a!");
}else{
Bukkit.broadcastMessage(FightSystem.PREFIX + "§cTeam " + getName() + " §chat keine Spieler mehr.\n Arena schließt...");
Bukkit.shutdown();
}
}
player.setGameMode(GameMode.SPECTATOR);
player.teleport(Config.SpecSpawn);
} }
public boolean hasTeamLeader() { public boolean hasTeamLeader() {
@ -125,12 +141,13 @@ public class FightTeam {
public void setLeader(FightPlayer leader) { public void setLeader(FightPlayer leader) {
this.leader = leader; this.leader = leader;
leader.setKit(KitManager.getKitByName(Config.LeaderDefault)); leader.setKit(KitManager.getKitByName(Config.LeaderDefault));
if(!this.players.contains(leader)){ Inventory inventory = leader.getPlayer().getInventory();
this.players.add(leader); inventory.setItem(3, new ItemBuilder(Material.INK_SACK, (short) 10).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§cNicht bereit").build());
} inventory.setItem(5, new ItemBuilder(Material.INK_SACK, (short) 1).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§4Abbrechen").build());
inventory.setItem(7, new ItemBuilder(Material.CAULDRON_ITEM).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§e" + Config.GameName + " wählen").build());
} }
public ArrayList<FightPlayer> getPlayers() { public List<FightPlayer> getPlayers() {
return players; return players;
} }
@ -164,6 +181,8 @@ public class FightTeam {
public void setSchematic(Schematic schematic){ public void setSchematic(Schematic schematic){
this.schematic = schematic; this.schematic = schematic;
broadcast(FightSystem.PREFIX + "§7Das §e" + Config.GameName + " " + schematic.getSchemName() + " §7wird für den Kampf verwendet!");
leader.getPlayer().getInventory().clear(7);
if(Fight.getOpposite(this).hasSchematic()){ if(Fight.getOpposite(this).hasSchematic()){
pasteSchematic(); pasteSchematic();
Fight.getOpposite(this).pasteSchematic(); Fight.getOpposite(this).pasteSchematic();
@ -196,7 +215,7 @@ public class FightTeam {
} }
} }
public ArrayList<Player> getInvited() { public List<Player> getInvited() {
return invited; return invited;
} }

Datei anzeigen

@ -12,13 +12,13 @@ public class Kit {
private ItemStack[] inventory; private ItemStack[] inventory;
private ItemStack[] armor; private ItemStack[] armor;
public Kit(String name, int price, boolean leaderAllowed, boolean memberAllowed, ItemStack[] Armor, ItemStack[] Inventory) { public Kit(String name, int price, boolean leaderAllowed, boolean memberAllowed, ItemStack[] armor, ItemStack[] inventory) {
this.name = name; this.name = name;
this.price = price; this.price = price;
this.leaderAllowed = leaderAllowed; this.leaderAllowed = leaderAllowed;
this.memberAllowed = memberAllowed; this.memberAllowed = memberAllowed;
inventory = Inventory; this.inventory = inventory;
armor = Armor; this.armor = armor;
} }
public String getName() { public String getName() {

Datei anzeigen

@ -86,4 +86,18 @@ public class KitManager {
} }
return null; return null;
} }
public static List<Kit> getKits(boolean leader){
List<Kit> kits = new ArrayList<>();
if(leader){
for (Kit k : loadedKits)
if (k.isLeaderAllowed())
kits.add(k);
}else{
for (Kit k : loadedKits)
if (k.isMemberAllowed())
kits.add(k);
}
return kits;
}
} }

Datei anzeigen

@ -1,12 +1,12 @@
package me.yaruma.fightsystem.listener; package me.yaruma.fightsystem.listener;
import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.commands.GUI;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightPlayer;
import me.yaruma.fightsystem.fight.FightState; import me.yaruma.fightsystem.fight.FightState;
import me.yaruma.fightsystem.fight.FightTeam; import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.utils.Config;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@ -23,29 +23,30 @@ public class PlayerInteractListener implements Listener {
if(instance.getFightState() == FightState.SETUP && if(instance.getFightState() == FightState.SETUP &&
event.getItem() != null && event.getItem() != null &&
Fight.getPlayerTeam(player) != null) { Fight.getPlayerTeam(player) != null) {
Material material = event.getItem().getType();
ItemMeta itemMeta = event.getItem().getItemMeta(); ItemMeta itemMeta = event.getItem().getItemMeta();
String displayName = itemMeta.getDisplayName(); String displayName = itemMeta.getDisplayName();
event.setCancelled(true);
FightPlayer fightPlayer = Fight.getPlayerTeam(player).getFightPlayer(player); FightTeam fightTeam = Fight.getPlayerTeam(player);
if(fightPlayer.isLeader() && material == Material.INK_SACK) { if(displayName.equals("§e" + Config.GameName + " wählen")){
FightTeam fightTeam = Fight.getPlayerTeam(player); GUI.preSchemDialog(player);
return;
}
switch (displayName) { switch (displayName) {
case "§cNicht bereit": case "§cNicht bereit":
fightTeam.setReady(true); fightTeam.setReady(true);
break; break;
case "§aBereit": case "§aBereit":
fightTeam.setReady(false); fightTeam.setReady(false);
break; break;
case "§4Abbrechen": case "§4Abbrechen":
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team von §a" + fightTeam.getLeader().getPlayer().getName() + " §6hat den Kampf abgebrochen! \n Server stoppt..."); Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team von §a" + fightTeam.getLeader().getPlayer().getName() + " §6hat den Kampf abgebrochen! \n Server stoppt...");
Bukkit.shutdown(); Bukkit.shutdown();
break; break;
default: case "§eKit wählen":
event.setCancelled(true); GUI.kitSelection(player);
break; break;
}
} }
} }
} }

Datei anzeigen

@ -2,20 +2,12 @@ package me.yaruma.fightsystem.listener;
import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightPlayer;
import me.yaruma.fightsystem.fight.FightState; import me.yaruma.fightsystem.fight.FightState;
import me.yaruma.fightsystem.fight.FightTeam; import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.utils.Config; import me.yaruma.fightsystem.utils.Config;
import me.yaruma.fightsystem.utils.countdown.Countdown; import me.yaruma.fightsystem.utils.countdown.Countdown;
import me.yaruma.fightsystem.utils.countdown.CountdownType; import me.yaruma.fightsystem.utils.countdown.CountdownType;
import me.yaruma.fightsystem.utils.countdown.FinishSetupOver; import me.yaruma.fightsystem.utils.countdown.FinishSetupOver;
import me.yaruma.fightsystem.utils.inventory.SetupItems;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -24,85 +16,38 @@ import org.bukkit.event.player.PlayerJoinEvent;
public class PlayerJoinListener implements Listener { public class PlayerJoinListener implements Listener {
private final FightSystem instance = FightSystem.getPlugin();
@EventHandler @EventHandler
public void handlePlayerJoin(PlayerJoinEvent event) { public void handlePlayerJoin(PlayerJoinEvent event) {
event.setJoinMessage(null); event.setJoinMessage(null);
Player player = event.getPlayer(); Player player = event.getPlayer();
player.setHealth(20); player.setHealth(20);
player.setFoodLevel(20); player.setFoodLevel(20);
player.getInventory().clear(); player.getInventory().clear();
FightTeam fightTeam = Fight.getPlayerTeam(player); FightTeam fightTeam = Fight.getPlayerTeam(player);
if (fightTeam == null) { if (fightTeam == null) {
if(!Fight.getRedTeam().hasTeamLeader() && FightSystem.getFightState() == FightState.SETUP) {
//TEXT COMPONENTS Fight.getRedTeam().setLeader(Fight.getRedTeam().addMember(player));
TextComponent publicList = new TextComponent("PUBLIC"); } else if(!Fight.getBlueTeam().hasTeamLeader() && FightSystem.getFightState() == FightState.SETUP) {
publicList.setColor(ChatColor.GOLD); Fight.getBlueTeam().setLeader(Fight.getBlueTeam().addMember(player));
publicList.setBold(true);
publicList.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§ePublic Liste...").create()));
publicList.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ak schemlist public"));
TextComponent privateList = new TextComponent("PRIVATE");
privateList.setColor(ChatColor.GOLD);
privateList.setBold(true);
privateList.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§ePrivate Liste...").create()));
privateList.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ak schemlist 0"));
//TEXT COMPONENTS
if(!Fight.getRedTeam().hasTeamLeader()) {
Fight.getRedTeam().setLeader(new FightPlayer(player, false));
player.setGameMode(GameMode.ADVENTURE);
player.spigot().sendMessage(publicList);
player.spigot().sendMessage(privateList);
player.teleport(Config.TeamRedSpawn);
SetupItems.giveSetupItems(player);
} else if(!Fight.getBlueTeam().hasTeamLeader()) {
Fight.getBlueTeam().setLeader(new FightPlayer(player, false));
player.setGameMode(GameMode.ADVENTURE);
player.spigot().sendMessage(publicList);
player.spigot().sendMessage(privateList);
player.teleport(Config.TeamBlueSpawn);
SetupItems.giveSetupItems(player);
} else { } else {
player.setGameMode(GameMode.SPECTATOR); player.setGameMode(GameMode.SPECTATOR);
player.teleport(Config.SpecSpawn); player.teleport(Config.SpecSpawn);
} }
} else { } else {
FightPlayer fightPlayer = fightTeam.getFightPlayer(player); player.teleport(fightTeam.getSpawn());
player.setGameMode(GameMode.SPECTATOR);
if(instance.getFightState() == FightState.SETUP) {
if(fightTeam == Fight.redTeam) {
player.teleport(Config.TeamRedSpawn);
} else
player.teleport(Config.TeamBlueSpawn);
player.setGameMode(GameMode.ADVENTURE);
Countdown.cancelTimerType(CountdownType.NO_PLAYERS_ONLINE);
Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §6" + fightPlayer.getPlayer().getName() + " §aist dem Kampf beigetreten!");
} else {
player.setGameMode(GameMode.SPECTATOR);
if(fightTeam == Fight.redTeam)
player.teleport(Config.TeamRedSpawn);
else
player.teleport(Config.TeamBlueSpawn);
}
} }
if(Fight.getRedTeam().hasTeamLeader() && Fight.getBlueTeam().hasTeamLeader() && instance.getFightState() == FightState.SETUP) { if(Fight.getRedTeam().hasTeamLeader() && Fight.getBlueTeam().hasTeamLeader() && FightSystem.getFightState() == FightState.SETUP
if(Fight.getRedTeam().getLeader().getPlayer() == player || Fight.getBlueTeam().getLeader().getPlayer() == player) { && (Fight.getRedTeam().getLeader().getPlayer() == player || Fight.getBlueTeam().getLeader().getPlayer() == player)) {
Countdown.cancelTimerType(CountdownType.NO_PLAYERS_ONLINE); Countdown.cancelTimerType(CountdownType.NO_PLAYERS_ONLINE);
Countdown countdown = new Countdown(Config.SetupDuration, new FinishSetupOver()); new Countdown(Config.SetupDuration, new FinishSetupOver()).startTimer(FightSystem.getPlugin());
countdown.startTimer(instance);
}
} }
instance.getScoreboard().setAutoScoreboard(20*10, player); FightSystem.getPlugin().getScoreboard().setAutoScoreboard(20*10, player);
} }

Datei anzeigen

@ -18,22 +18,13 @@ public class PlayerQuitListener implements Listener {
event.setQuitMessage(null); event.setQuitMessage(null);
Player player = event.getPlayer(); Player player = event.getPlayer();
if(Fight.getPlayerTeam(player) == null) return;
FightTeam fightTeam = Fight.getPlayerTeam(player); FightTeam fightTeam = Fight.getPlayerTeam(player);
if(fightTeam == null)
return;
FightState fightState = FightSystem.getPlugin().getFightState(); FightState fightState = FightSystem.getFightState();
if(fightState == FightState.SETUP){ if(fightState == FightState.SETUP){
fightTeam.removePlayer(player); fightTeam.removePlayer(player);
if(fightTeam.isPlayerLeader(player)){
if(!fightTeam.getPlayers().isEmpty()) {
fightTeam.setLeader(fightTeam.getPlayers().get(0));
Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §6" + fightTeam.getLeader().getPlayer().getName() + " §aist nun Leader von Team " + fightTeam.getName() + "§a!");
}else{
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Team " + fightTeam.getName() + " hat keine Spieler mehr.\n Server stoppt...");
Bukkit.shutdown();
}
}
}else if(fightState == FightState.PRE_RUNNING || fightState == FightState.RUNNING){ }else if(fightState == FightState.PRE_RUNNING || fightState == FightState.RUNNING){
fightTeam.getFightPlayer(player).setOut(true); fightTeam.getFightPlayer(player).setOut(true);
Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler §6" + player.getName() + " §chat den Kampf verlassen!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler §6" + player.getName() + " §chat den Kampf verlassen!");

Datei anzeigen

@ -1,7 +1,7 @@
package me.yaruma.fightsystem.listener; package me.yaruma.fightsystem.listener;
import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightTeam;
import me.yaruma.fightsystem.utils.Config; import me.yaruma.fightsystem.utils.Config;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -10,19 +10,13 @@ import org.bukkit.event.player.PlayerRespawnEvent;
public class PlayerRespawnListener implements Listener { public class PlayerRespawnListener implements Listener {
private final FightSystem instance = FightSystem.getPlugin();
@EventHandler @EventHandler
public void handlePlayerRespawn(PlayerRespawnEvent event) { public void handlePlayerRespawn(PlayerRespawnEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if(Fight.getPlayerTeam(player) != null) { FightTeam team = Fight.getPlayerTeam(player);
if(Fight.getPlayerTeam(player) == Fight.redTeam) { if(team == null)
event.setRespawnLocation(Config.TeamRedSpawn);
} else
event.setRespawnLocation(Config.TeamBlueSpawn);
} else
event.setRespawnLocation(Config.SpecSpawn); event.setRespawnLocation(Config.SpecSpawn);
else
event.setRespawnLocation(team.getSpawn());
} }
} }

Datei anzeigen

@ -9,11 +9,9 @@ import org.bukkit.event.entity.ProjectileLaunchEvent;
public class ProjectileLaunchListener implements Listener { public class ProjectileLaunchListener implements Listener {
FightSystem instance = FightSystem.getPlugin();
@EventHandler @EventHandler
public void handleProjectileLaunch(ProjectileLaunchEvent event) { public void handleProjectileLaunch(ProjectileLaunchEvent event) {
if(instance.getFightState() != FightState.RUNNING) { if(FightSystem.getFightState() != FightState.RUNNING) {
event.setCancelled(true); event.setCancelled(true);
if(event.getEntity().getShooter() instanceof Player){ if(event.getEntity().getShooter() instanceof Player){
Player player = (Player) event.getEntity().getShooter(); Player player = (Player) event.getEntity().getShooter();
@ -21,6 +19,4 @@ public class ProjectileLaunchListener implements Listener {
} }
} }
} }
} }

Datei anzeigen

@ -1,13 +1,13 @@
package me.yaruma.fightsystem.utils; package me.yaruma.fightsystem.utils;
import java.util.ArrayList;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.util.List;
public class ItemBuilder { public class ItemBuilder {
private final ItemStack item; private final ItemStack item;
@ -43,7 +43,7 @@ public class ItemBuilder {
return this; return this;
} }
public ItemBuilder addLore(ArrayList<String> lore) { public ItemBuilder addLore(List<String> lore) {
meta.setLore(lore); meta.setLore(lore);
return this; return this;
} }

Datei anzeigen

@ -16,6 +16,7 @@ import com.google.common.primitives.Bytes;
import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.FightSystem;
import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.Fight;
import me.yaruma.fightsystem.fight.FightTeam; import me.yaruma.fightsystem.fight.FightTeam;
import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -37,7 +38,8 @@ public class TechHider {
private static int redMaxX; private static int redMaxX;
private static int redMinZ; private static int redMinZ;
private static int redMaxZ; private static int redMaxZ;
private static int obfuscateShift4; private static short obfuscateShift4;
private static final short fullBitmask = 0x1FFF;
private static Material obfuscateMaterial; private static Material obfuscateMaterial;
public static void init(){ public static void init(){
@ -57,7 +59,7 @@ public class TechHider {
redMaxX = max / 16 + (max % 16 > 0 ? 1 : 0); redMaxX = max / 16 + (max % 16 > 0 ? 1 : 0);
max = Config.TeamRedCornerZ + Config.SchemsizeZ; max = Config.TeamRedCornerZ + Config.SchemsizeZ;
redMaxZ = max / 16 + (max % 16 > 0 ? 1 : 0); redMaxZ = max / 16 + (max % 16 > 0 ? 1 : 0);
obfuscateShift4 = Config.ObfuscateWith << 4; obfuscateShift4 = (short)(Config.ObfuscateWith << 4);
//noinspection deprecation //noinspection deprecation
obfuscateMaterial = Material.getMaterial(Config.ObfuscateWith); obfuscateMaterial = Material.getMaterial(Config.ObfuscateWith);
@ -128,18 +130,17 @@ public class TechHider {
i += readVarIntLength(Bytes.toArray(newData), i); i += readVarIntLength(Bytes.toArray(newData), i);
i += dataArrayLength * 8; i += dataArrayLength * 8;
}else{ }else{
System.out.println("Chunk with global palette!");
int dataArrayLength = readVarInt(Bytes.toArray(newData), i); int dataArrayLength = readVarInt(Bytes.toArray(newData), i);
i += readVarIntLength(Bytes.toArray(newData), i); i += readVarIntLength(Bytes.toArray(newData), i);
int arrayEnd = dataArrayLength * 8 + i; int arrayEnd = dataArrayLength * 8 + i;
int bitsOver = 8; //9 bits (id) + 4 bits (metadata) int bitsOver = 8; //9 bits (id) + 4 bits (metadata)
final int globalMask = 0x000001FF;
final byte replacement = 0x01;
while(i < arrayEnd){ while(i < arrayEnd){
int blockId = (newData.get(i++) & (globalMask >> 9 - bitsOver)) << 9-bitsOver; int blockId = (newData.get(i++) & (0x1FF >> 9 - bitsOver)) << 9-bitsOver;
blockId += newData.get(i) >> bitsOver-1; blockId += newData.get(i) >> bitsOver-1;
if(Config.HiddenBlocks.contains(blockId)){ if(Config.HiddenBlocks.contains(blockId)){
System.out.println("Hidden Block found!"); System.out.println("Hidden Block found!");
int bytei = newData.get(i);
} }
bitsOver -= 5; // 13-8 bitsOver -= 5; // 13-8
if(bitsOver < 1){ if(bitsOver < 1){
@ -255,6 +256,11 @@ public class TechHider {
} }
} }
private static void reloadChunks(){
Player p = Bukkit.getPlayer("Lixfel");
}
private static int readVarInt(byte[] array, int startPos) { private static int readVarInt(byte[] array, int startPos) {
int numRead = 0; int numRead = 0;
int result = 0; int result = 0;

Datei anzeigen

@ -1,36 +1,21 @@
package me.yaruma.fightsystem.utils; package me.yaruma.fightsystem.utils;
import com.boydti.fawe.FaweAPI;
import com.boydti.fawe.util.EditSessionBuilder; import com.boydti.fawe.util.EditSessionBuilder;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.bukkit.BukkitWorld;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.sk89q.worldedit.bukkit.selections.CuboidSelection;
import com.sk89q.worldedit.math.transform.AffineTransform;
import com.sk89q.worldedit.world.World; 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;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
public class WorldEdit { public class WorldEdit {
private WorldEdit(){}
public static void replace(Player player, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) { public static void replace(Player player, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) {
World weWorld = new BukkitWorld(player.getWorld()); World weWorld = new BukkitWorld(player.getWorld());
EditSession editSession = new EditSessionBuilder(weWorld).fastmode(true).build(); EditSession editSession = new EditSessionBuilder(weWorld).fastmode(true).build();
@ -43,68 +28,12 @@ public class WorldEdit {
targetBedrock.add(new BaseBlock(7)); targetBedrock.add(new BaseBlock(7));
try { try {
int tnt = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(46)); editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(46));
int slime = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetBedrock, new BaseBlock(165)); editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetBedrock, new BaseBlock(165));
editSession.flushQueue(); editSession.flushQueue();
} catch (Exception ex){ } catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
} }
} }
public static void pasteSchematic(File file, World world, Vector vector, boolean allowUndo, boolean pasteAir, AffineTransform affineTransform) {
try {
FaweAPI.load(file).paste(world, vector, allowUndo, pasteAir, affineTransform).flushQueue();
} catch (IOException e) {
e.printStackTrace();
}
}
public static int countBlocks(Player player, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, BaseBlock baseBlock) {
World weWorld = new BukkitWorld(player.getWorld());
EditSession editSession = new EditSessionBuilder(weWorld).fastmode(true).build();
CuboidSelection cuboidSelection = new CuboidSelection(player.getWorld(), new Location(player.getWorld(), minX, minY, minZ), new Location(player.getWorld(), maxX, maxY, maxZ));
Set<BaseBlock> target = new HashSet<>();
target.add(baseBlock);
try {
return editSession.countBlocks(cuboidSelection.getRegionSelector().getRegion(), target);
} catch (IncompleteRegionException e) {
e.printStackTrace();
}
return 0;
}
public static void sendPlayerScheamticList(File folder, int currentPage, int filesPerPage, Player player) {
File[] listOfFiles = folder.listFiles();
int pages = listOfFiles.length / filesPerPage;
int currPage = currentPage;
if(currPage > pages) {
currPage = 0;
}
for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) {
TextComponent schematics = new TextComponent(listOfFiles[i].toString());
schematics.setColor(ChatColor.AQUA);
schematics.setBold(true);
schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic benutzen...").create()));
schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "")); //COMMAND MISSING
player.spigot().sendMessage(schematics);
TextComponent nextPage = new TextComponent("Naechste Seite");
nextPage.setColor(ChatColor.RED);
nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Naechste Seite...").create()));
nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "")); //COMMAND MISSING
player.spigot().sendMessage(nextPage);
}
}
} }

Datei anzeigen

@ -41,7 +41,7 @@ public class Countdown {
break; break;
} }
time--; time--;
if(countdownCallback instanceof FinishTimeOver) FightSystem.getPlugin().fightTime = time; if(countdownCallback instanceof FinishTimeOver) FightSystem.setFightTime(time);
}, 0, 20); }, 0, 20);
} }

Datei anzeigen

@ -1,10 +1,7 @@
package me.yaruma.fightsystem.utils.countdown; package me.yaruma.fightsystem.utils.countdown;
interface CountdownCallback { interface CountdownCallback {
String countdownCounting(); String countdownCounting();
void countdownFinished(); void countdownFinished();
CountdownType getType(); CountdownType getType();
} }

Datei anzeigen

@ -12,7 +12,7 @@ public class FinishNoneEntern implements CountdownCallback {
@Override @Override
public void countdownFinished() { public void countdownFinished() {
FightSystem.getPlugin().entern = true; FightSystem.getPlugin().setEntern(true);
Bukkit.broadcastMessage(FightSystem.PREFIX + "§aEntern ist nun erlaubt!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§aEntern ist nun erlaubt!");
} }

Datei anzeigen

@ -1,18 +0,0 @@
package me.yaruma.fightsystem.utils.inventory;
import me.yaruma.fightsystem.utils.ItemBuilder;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public class SetupItems {
public static void giveSetupItems(Player player) {
Inventory inventory = player.getInventory();
inventory.setItem(3, new ItemBuilder(Material.INK_SACK, (short) 10).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§cNicht bereit").build());
inventory.setItem(5, new ItemBuilder(Material.INK_SACK, (short) 1).removeAllAtributs().addEnchantment(Enchantment.DURABILITY, 1).setDisplayName("§4Abbrechen").build());
}
}

Datei anzeigen

@ -17,14 +17,14 @@ public class Scoreboard {
private final org.bukkit.scoreboard.Scoreboard scoreboard; private final org.bukkit.scoreboard.Scoreboard scoreboard;
private final Objective objective; private final Objective objective;
public Scoreboard(FightSystem instance) { public Scoreboard() {
ScoreboardManager scoreboardManager = Bukkit.getScoreboardManager(); ScoreboardManager scoreboardManager = Bukkit.getScoreboardManager();
this.scoreboard = scoreboardManager.getNewScoreboard(); this.scoreboard = scoreboardManager.getNewScoreboard();
this.objective = scoreboard.registerNewObjective("AAA", "BBB"); this.objective = scoreboard.registerNewObjective("AAA", "BBB");
} }
public void setAutoScoreboard(int delay, Player player) { public void setAutoScoreboard(int delay, Player player) {
int taskID = Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), new Runnable() { Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), new Runnable() {
private int index = 0; private int index = 0;
@ -61,8 +61,8 @@ public class Scoreboard {
if (Config.Entern) if (Config.Entern)
objective.getScore("§7Entern: " + (FightSystem.getPlugin().isEntern() ? "§aja" : "§cnein")).setScore(2); objective.getScore("§7Entern: " + (FightSystem.getPlugin().isEntern() ? "§aja" : "§cnein")).setScore(2);
if (Config.PercentSystem){ if (Config.PercentSystem){
objective.getScore("§eSchaden ROT: §c" + (Math.round(100.0 * WinconditionPercentSystem.getRedPercent()) / 100) + "%").setScore(1); objective.getScore(Fight.getRedTeam().getPrefix() + "Schaden: §c" + (Math.round(100.0 * WinconditionPercentSystem.getRedPercent()) / 100.0) + "%").setScore(1);
objective.getScore("§eSchaden BLAU: §c" + (Math.round(100.0 * WinconditionPercentSystem.getBluePercent()) / 100) + "%").setScore(0); objective.getScore(Fight.getBlueTeam().getPrefix() + "Schaden: §c" + (Math.round(100.0 * WinconditionPercentSystem.getBluePercent()) / 100.0) + "%").setScore(0);
} }
index = 0; index = 0;
} }

Datei anzeigen

@ -39,11 +39,8 @@ public class WinconditionPercentSystem implements Listener {
if(destroyPercent >= Config.PercentWin) { if(destroyPercent >= Config.PercentWin) {
FightSystem.getPlugin().setSpectateState(Fight.blueTeam); FightSystem.getPlugin().setSpectateState(Fight.blueTeam);
} }
return;
}
//Team Red //Team Red
if(Region.isInRange(entity.getLocation(), Config.TeamRedCornerX, Config.TeamRedCornerY, Config.TeamRedCornerZ, Config.SchemsizeX, Config.SchemsizeY, Config.SchemsizeZ, Config.BorderFromSchematic)) { }else if(Region.isInRange(entity.getLocation(), Config.TeamRedCornerX, Config.TeamRedCornerY, Config.TeamRedCornerZ, Config.SchemsizeX, Config.SchemsizeY, Config.SchemsizeZ, Config.BorderFromSchematic)) {
redDestroyedBlocks = redDestroyedBlocks + event.blockList().size(); redDestroyedBlocks = redDestroyedBlocks + event.blockList().size();
double doubleRedDestroyedBlocks = redDestroyedBlocks; double doubleRedDestroyedBlocks = redDestroyedBlocks;
double destroyPercent = doubleRedDestroyedBlocks * 100 / schematicSize; double destroyPercent = doubleRedDestroyedBlocks * 100 / schematicSize;
@ -51,7 +48,6 @@ public class WinconditionPercentSystem implements Listener {
if(destroyPercent >= Config.PercentWin) { if(destroyPercent >= Config.PercentWin) {
FightSystem.getPlugin().setSpectateState(Fight.redTeam); FightSystem.getPlugin().setSpectateState(Fight.redTeam);
} }
return;
} }
} }

Datei anzeigen

@ -15,7 +15,7 @@ public class WinconditionTechKO {
private static HashSet<Location> teamRedWater = new HashSet<>(); private static HashSet<Location> teamRedWater = new HashSet<>();
private static HashSet<Location> teamBlueWater = new HashSet<>(); private static HashSet<Location> teamBlueWater = new HashSet<>();
public static int taskID; private static int taskID;
public static void addWater() { public static void addWater() {
if(!Config.TechKO) return; if(!Config.TechKO) return;
@ -63,12 +63,12 @@ public class WinconditionTechKO {
} }
if(teamRedWater.isEmpty()) { if(teamRedWater.isEmpty()) {
Bukkit.getScheduler().cancelTask(taskID); Bukkit.getScheduler().cancelTask(getTaskID());
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamRedPrefix + Config.TeamRedName + " §6ist Tech K.O.!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamRedPrefix + Config.TeamRedName + " §6ist Tech K.O.!");
FightSystem.getPlugin().setSpectateState(Fight.getBlueTeam()); FightSystem.getPlugin().setSpectateState(Fight.getBlueTeam());
FightSystem.getPlugin().getWaterRemover().stop(); FightSystem.getPlugin().getWaterRemover().stop();
} else if(teamBlueWater.isEmpty()) { } else if(teamBlueWater.isEmpty()) {
Bukkit.getScheduler().cancelTask(taskID); Bukkit.getScheduler().cancelTask(getTaskID());
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamBluePrefix + Config.TeamBlueName + " §6ist Tech K.O.!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamBluePrefix + Config.TeamBlueName + " §6ist Tech K.O.!");
FightSystem.getPlugin().setSpectateState(Fight.getRedTeam()); FightSystem.getPlugin().setSpectateState(Fight.getRedTeam());
FightSystem.getPlugin().getWaterRemover().stop(); FightSystem.getPlugin().getWaterRemover().stop();
@ -88,7 +88,7 @@ public class WinconditionTechKO {
} }
} }
if(teamRedWater.isEmpty()) { if(teamRedWater.isEmpty()) {
Bukkit.getScheduler().cancelTask(taskID); Bukkit.getScheduler().cancelTask(getTaskID());
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamRedPrefix + Config.TeamRedName + " §6ist Tech K.O.!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamRedPrefix + Config.TeamRedName + " §6ist Tech K.O.!");
FightSystem.getPlugin().setSpectateState(Fight.getBlueTeam()); FightSystem.getPlugin().setSpectateState(Fight.getBlueTeam());
FightSystem.getPlugin().getWaterRemover().stop(); FightSystem.getPlugin().getWaterRemover().stop();
@ -103,7 +103,7 @@ public class WinconditionTechKO {
} }
} }
if(teamBlueWater.isEmpty()) { if(teamBlueWater.isEmpty()) {
Bukkit.getScheduler().cancelTask(taskID); Bukkit.getScheduler().cancelTask(getTaskID());
Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamBluePrefix + Config.TeamBlueName + " §6ist Tech K.O.!"); Bukkit.broadcastMessage(FightSystem.PREFIX + "§6Das Team " + Config.TeamBluePrefix + Config.TeamBlueName + " §6ist Tech K.O.!");
FightSystem.getPlugin().setSpectateState(Fight.getRedTeam()); FightSystem.getPlugin().setSpectateState(Fight.getRedTeam());
FightSystem.getPlugin().getWaterRemover().stop(); FightSystem.getPlugin().getWaterRemover().stop();
@ -112,7 +112,10 @@ public class WinconditionTechKO {
public static void startAutoChecker() { public static void startAutoChecker() {
if(!Config.TechKO) return; if(!Config.TechKO) return;
taskID = Bukkit.getScheduler().scheduleAsyncRepeatingTask(FightSystem.getPlugin(), WinconditionTechKO::addWater, 0, 20*20); taskID = Bukkit.getScheduler().scheduleAsyncRepeatingTask(FightSystem.getPlugin(), WinconditionTechKO::addWater, 400, 400);
} }
public static int getTaskID() {
return taskID;
}
} }

Datei anzeigen

@ -11,3 +11,4 @@ commands:
leave: leave:
invite: invite:
ready: ready:
kit: