forked from SteamWar/SteamWar
Remove /leader command, allow for Leader promotion
This commit is contained in:
@@ -153,7 +153,6 @@ public class FightSystem extends JavaPlugin {
|
||||
new GamemodeCommand();
|
||||
new ReadyCommand();
|
||||
new AkCommand();
|
||||
new LeaderCommand();
|
||||
new LockschemCommand();
|
||||
new StateCommand();
|
||||
new SkipCommand();
|
||||
|
||||
@@ -34,9 +34,6 @@ GAMEMODE_NOT_ALLOWED=§cChanging gamemode is not permitted
|
||||
GAMEMODE_UNKNOWN=§cUnknown gamemode {0}
|
||||
GAMEMODE_HELP=§8/§7gm §8[§egamemode§8]
|
||||
|
||||
LEADER_FULL=§cAll teams already have a leader
|
||||
ALREADY_IN_TEAM=§cYou are already in a team
|
||||
|
||||
LOCKSCHEM_HELP=§8/§7lockschem §8[§eteam§8]
|
||||
UNKNOWN_TEAM=§cThis team does not exist
|
||||
LOCKSCHEM_LOCKED=§7Schematic locked
|
||||
@@ -65,7 +62,9 @@ STATE_RUNNING=§eFighting phase
|
||||
STATE_SPECTATE_WIN=§7Victory {0}
|
||||
STATE_SPECTATE_TIE=§7Draw
|
||||
|
||||
REMOVE_TITLE=Kick player
|
||||
MANAGE_TITLE=Manage players
|
||||
MANAGE_LORE1=§eLeft §7click§8: §ekick
|
||||
MANAGE_LORE2=§eRight §7click§8: §epromote
|
||||
|
||||
KIT_SELECTION_TITLE=Kit selection
|
||||
KIT_NO_KITS=§cNo kits found
|
||||
@@ -113,7 +112,7 @@ SKIP_NOT_READY=§c§mSkipping to next event
|
||||
TEAM_CHAT={0}{1}§8» {0}{2}
|
||||
CHOOSE_KIT=§eChoose kit
|
||||
RESPAWN=§eRespawn
|
||||
REMOVE_PLAYERS=§cKick player
|
||||
MANAGE_PLAYERS=§cManage players
|
||||
CHOOSE_SCHEMATIC=§eChoose {0}
|
||||
SCHEMATIC_REQUIRED=§cChoose a schematic first
|
||||
ADD_AI=§eAdd AI
|
||||
@@ -141,7 +140,6 @@ NO_TELEPORT=§cYou are not allowed to use this teleport function
|
||||
OPEN_INVENTORY_TO_CUSTOMIZE=§eOpen inventory to customize your kit
|
||||
NO_ENTERN=§cYou may not board
|
||||
NO_TEAMAREA=§cYou are not allowed in the team area
|
||||
TEST_BECOME_LEADER=§7Become a team leader with §8/§eleader
|
||||
PREPARE_SCHEM_DELETED=§cApparently the schematic to be submitted was deleted. submission aborted.
|
||||
PREPARE_SCHEM_EXISTS=§cThere is already a schematic with the suffix -prepared, please rename or delete it, submission aborted.
|
||||
PREPARE_ACTIVE_PISTON=§cMoving pistons were found in the team area, submission aborted.
|
||||
|
||||
@@ -32,9 +32,6 @@ GAMEMODE_NOT_ALLOWED=§cSpielmodusänderung verboten
|
||||
GAMEMODE_UNKNOWN=§cUnbekannter Spielmodus {0}
|
||||
GAMEMODE_HELP=§8/§7gm §8[§eSpielmodus§8]
|
||||
|
||||
LEADER_FULL=§cAlle Teams haben bereits einen Leader
|
||||
ALREADY_IN_TEAM=§cDu bist bereits in einem Team
|
||||
|
||||
LOCKSCHEM_HELP=§8/§7lockschem §8[§eTeam§8]
|
||||
UNKNOWN_TEAM=§cDieses Team existiert nicht
|
||||
LOCKSCHEM_LOCKED=§7Schematic gesperrt
|
||||
@@ -59,7 +56,9 @@ STATE_RUNNING=§eKampfphase
|
||||
STATE_SPECTATE_WIN=§7Sieg {0}
|
||||
STATE_SPECTATE_TIE=§7Unentschieden
|
||||
|
||||
REMOVE_TITLE=Spieler rauswerfen
|
||||
MANAGE_TITLE=Mitspieler verwalten
|
||||
MANAGE_LORE1=§eLinksklick§8: §eRauswurf
|
||||
MANAGE_LORE2=§eRechtsklick§8: §eBefördern
|
||||
|
||||
KIT_SELECTION_TITLE=Kitauswahl
|
||||
KIT_NO_KITS=§cKeine Kits gefunden
|
||||
@@ -106,7 +105,7 @@ SKIP_READY=§aBeschleunigung zum nächsten Event
|
||||
SKIP_NOT_READY=§c§mBeschleunigung zum nächsten Event
|
||||
CHOOSE_KIT=§eKit wählen
|
||||
RESPAWN=§eRespawn
|
||||
REMOVE_PLAYERS=§cSpieler rauswerfen
|
||||
MANAGE_PLAYERS=§cMitspieler verwalten
|
||||
CHOOSE_SCHEMATIC=§e{0} wählen
|
||||
SCHEMATIC_REQUIRED=§cZuerst muss eine Schematic gewählt sein
|
||||
ADD_AI=§eKI hinzufügen
|
||||
@@ -134,7 +133,6 @@ NO_TELEPORT=§cDu darfst diese Teleportfunktion nicht benutzen
|
||||
OPEN_INVENTORY_TO_CUSTOMIZE=§eInventar zum Anpassen des Kits öffnen
|
||||
NO_ENTERN=§cDu darfst nicht entern
|
||||
NO_TEAMAREA=§cDu darfst nicht zu den Teams
|
||||
TEST_BECOME_LEADER=§7Werde zum Teamleader mit §8/§eleader
|
||||
PREPARE_SCHEM_DELETED=§cAnscheinend wurde die auszufahrende Schematic gelöscht, Einsenden wird abgebrochen.
|
||||
PREPARE_SCHEM_EXISTS=§cEs existiert bereits eine Schem mit Namenszusatz -prepared, diese bitte umbenennen oder löschen, Einsenden wird abgebrochen.
|
||||
PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen.
|
||||
|
||||
@@ -36,6 +36,7 @@ import de.steamwar.sql.SteamwarUser;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
@@ -53,7 +54,11 @@ public class GUI {
|
||||
String name = team.getLeader() != null ? team.getLeader().getEntity().getName() : team.getName();
|
||||
inv.setItem(pos, SWItem.getDye(colorCode), colorCode, msg.parse("JOIN_REQUEST_TEAM", p, team.getColor() + name), click -> {
|
||||
p.closeInventory();
|
||||
JoinRequest.forPlayer(p, team);
|
||||
|
||||
if(ArenaMode.ManualTeams.contains(Config.mode) && team.canbeLeader(p))
|
||||
team.addMember(p);
|
||||
else
|
||||
JoinRequest.forPlayer(p, team);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -117,14 +122,21 @@ public class GUI {
|
||||
inv.open();
|
||||
}
|
||||
|
||||
public static void chooseRemove(Player p){
|
||||
public static void managePlayers(Player p){
|
||||
List<SWListInv.SWListEntry<UUID>> players = SWListInv.createPlayerList(p.getUniqueId());
|
||||
FightTeam team = Fight.getPlayerTeam(p);
|
||||
if(team == null)
|
||||
return;
|
||||
players.removeIf(swItemUUIDPair -> !team.equals(Fight.getPlayerTeam(Bukkit.getPlayer(swItemUUIDPair.getObject()))));
|
||||
SWListInv<UUID> inv = new SWListInv<>(p, msg.parse("REMOVE_TITLE", p), players, (ClickType click, UUID player) -> {
|
||||
Commands.kick(p, SteamwarUser.get(player).getUserName());
|
||||
players.removeIf(listEntry -> !team.equals(Fight.getPlayerTeam(Bukkit.getPlayer(listEntry.getObject()))));
|
||||
players.forEach(listEntry -> listEntry.getItem().setLore(msg.parse("MANAGE_LORE1", p), msg.parse("MANAGE_LORE2", p)));
|
||||
SWListInv<UUID> inv = new SWListInv<>(p, msg.parse("MANAGE_TITLE", p), players, (ClickType click, UUID player) -> {
|
||||
if(click.isLeftClick()) {
|
||||
Commands.kick(p, SteamwarUser.get(player).getUserName());
|
||||
} else if(click.isRightClick()) {
|
||||
LivingEntity target = (LivingEntity) Bukkit.getEntity(player);
|
||||
if(target != null)
|
||||
team.setLeader(team.getFightPlayer(target), false);
|
||||
}
|
||||
p.closeInventory();
|
||||
});
|
||||
inv.setCallback(-999, (ClickType click) -> p.closeInventory());
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.fightsystem.commands;
|
||||
|
||||
import de.steamwar.fightsystem.ArenaMode;
|
||||
import de.steamwar.fightsystem.FightSystem;
|
||||
import de.steamwar.fightsystem.fight.Fight;
|
||||
import de.steamwar.fightsystem.fight.FightTeam;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.StateDependentCommand;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class LeaderCommand implements CommandExecutor {
|
||||
|
||||
public LeaderCommand() {
|
||||
new StateDependentCommand(ArenaMode.ManualTeams, FightState.Setup, "leader", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(!(sender instanceof Player))
|
||||
return false;
|
||||
Player player = (Player) sender;
|
||||
|
||||
if(Fight.getFightPlayer(player) != null) {
|
||||
FightSystem.getMessage().sendPrefixless("ALREADY_IN_TEAM", player, ChatMessageType.ACTION_BAR);
|
||||
return false;
|
||||
}
|
||||
|
||||
for(FightTeam team : Fight.teams()) {
|
||||
if(team.canbeLeader(player)) {
|
||||
team.addMember(player);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
FightSystem.getMessage().sendPrefixless("LEADER_FULL", player, ChatMessageType.ACTION_BAR);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class FightTeam {
|
||||
|
||||
if(ArenaMode.VariableTeams.contains(Config.mode)){
|
||||
notReadyKit.setItem(2, "REQUESTS", new ItemBuilder(Material.PAPER).build(), GUI::chooseJoinRequests);
|
||||
notReadyKit.setItem(3, "REMOVE_PLAYERS", new ItemBuilder(SWItem.getMaterial("FIREWORK_CHARGE")).build(), GUI::chooseRemove);
|
||||
notReadyKit.setItem(3, "MANAGE_PLAYERS", SWItem.getPlayerSkull("AdmiralSeekrank").getItemStack(), GUI::managePlayers);
|
||||
if(!AIManager.availableAIs().isEmpty())
|
||||
notReadyKit.setItem(6, "ADD_AI", new ItemBuilder(Material.REDSTONE).build(), GUI::addAI);
|
||||
}
|
||||
@@ -343,7 +343,10 @@ public class FightTeam {
|
||||
}
|
||||
}
|
||||
|
||||
private void setLeader(FightPlayer leader, boolean silent) {
|
||||
public void setLeader(FightPlayer leader, boolean silent) {
|
||||
if(this.leader != null)
|
||||
this.leader.ifPlayer(memberKit::loadToPlayer);
|
||||
|
||||
leader.ifPlayer(PersonalKitCreator::closeIfInKitCreator);
|
||||
|
||||
this.leader = leader;
|
||||
|
||||
@@ -22,8 +22,6 @@ package de.steamwar.fightsystem.listener;
|
||||
import de.steamwar.fightsystem.ArenaMode;
|
||||
import de.steamwar.fightsystem.Config;
|
||||
import de.steamwar.fightsystem.FightSystem;
|
||||
import de.steamwar.fightsystem.fight.Fight;
|
||||
import de.steamwar.fightsystem.fight.FightTeam;
|
||||
import de.steamwar.fightsystem.states.FightState;
|
||||
import de.steamwar.fightsystem.states.StateDependentListener;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
@@ -42,7 +40,6 @@ public class TestJoin implements Listener {
|
||||
@EventHandler
|
||||
public void handlePlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
FightTeam fightTeam = Fight.getPlayerTeam(player);
|
||||
|
||||
if(Config.ReplayID != 0 && !SteamwarUser.get(player.getUniqueId()).hasPerm(UserPerm.MODERATION)) {
|
||||
FightSystem.getMessage().send("CHECK_JOIN_DENIED", player);
|
||||
@@ -50,10 +47,6 @@ public class TestJoin implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fightTeam == null && Fight.teams().stream().anyMatch(team -> team.canbeLeader(player))) {
|
||||
FightSystem.getMessage().send("TEST_BECOME_LEADER", player);
|
||||
}
|
||||
|
||||
player.setOp(true);
|
||||
|
||||
if(FightState.getFightState() == FightState.PRE_LEADER_SETUP){
|
||||
|
||||
@@ -40,10 +40,6 @@ public class BungeeFightInfo {
|
||||
}
|
||||
|
||||
private void send() {
|
||||
Player player = Bukkit.getOnlinePlayers().stream().findAny().orElse(null);
|
||||
if(player == null)
|
||||
return;
|
||||
|
||||
NetworkSender.send(new FightInfoPacket(
|
||||
Config.world.getName(),
|
||||
Config.SchematicType.toDB(),
|
||||
|
||||
@@ -19,7 +19,6 @@ commands:
|
||||
ready:
|
||||
kit:
|
||||
remove:
|
||||
leader:
|
||||
lockschem:
|
||||
state:
|
||||
skip:
|
||||
|
||||
@@ -21,21 +21,19 @@ package de.steamwar.inventory;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import de.steamwar.core.Core;
|
||||
import de.steamwar.core.FlatteningWrapper;
|
||||
import de.steamwar.core.TrickyTrialsWrapper;
|
||||
import de.steamwar.core.VersionDependent;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class SWItem {
|
||||
|
||||
@@ -192,6 +190,11 @@ public class SWItem {
|
||||
itemStack.setItemMeta(itemMeta);
|
||||
}
|
||||
|
||||
public void setLore(String... lore) {
|
||||
itemMeta.setLore(Arrays.stream(lore).collect(Collectors.toList()));
|
||||
itemStack.setItemMeta(itemMeta);
|
||||
}
|
||||
|
||||
public void setEnchanted(boolean enchanted) {
|
||||
if (enchanted){
|
||||
itemMeta.addEnchant(TrickyTrialsWrapper.impl.getUnbreakingEnchantment() , 10, true);
|
||||
|
||||
Reference in New Issue
Block a user