Skip to content

Commit

Permalink
1.15.2 - fix arenaclass command restrictions
Browse files Browse the repository at this point in the history
  • Loading branch information
Eredrim committed Feb 25, 2021
1 parent 677d5c9 commit d19c8bb
Showing 1 changed file with 25 additions and 19 deletions.
44 changes: 25 additions & 19 deletions src/net/slipcor/pvparena/commands/PAG_Arenaclass.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import java.util.Set;
import java.util.TreeSet;

import static java.util.Arrays.asList;
import static net.slipcor.pvparena.arena.ArenaPlayer.Status.FIGHT;
import static net.slipcor.pvparena.arena.ArenaPlayer.Status.LOUNGE;

/**
Expand All @@ -48,27 +50,30 @@ public void commit(final Arena arena, final CommandSender sender, final String[]
return;
}

if (args.length < 1) {
Set<String> classes = new TreeSet<>();
for (ArenaClass ac : arena.getClasses()) {
if (ac.getName().equals("custom")) {
continue;
}
classes.add(ChatColor.GREEN + ac.getName() + ChatColor.WHITE);
}
arena.msg(sender, Language.parse(arena, MSG.CLASS_LIST, StringParser.joinSet(classes, ", ")));
return;
}

if (!(sender instanceof Player)) {
Arena.pmsg(sender, Language.parse(arena, MSG.ERROR_ONLY_PLAYERS));
return;
}

final ArenaPlayer aPlayer = ArenaPlayer.parsePlayer(sender.getName());

// Player can change arena class only in lounge or with ingameClassSwith parameter set to true
if(aPlayer.getStatus() != LOUNGE && !arena.getArenaConfig().getBoolean(CFG.USES_INGAMECLASSSWITCH)) {
ArenaPlayer.Status pStatus = aPlayer.getStatus();

// Player can change arena class only in lounge or in fight with ingameClassSwith parameter set to true
if(!arena.equals(aPlayer.getArena()) || !asList(LOUNGE, FIGHT).contains(pStatus) ||
(pStatus == FIGHT && !arena.getArenaConfig().getBoolean(CFG.USES_INGAMECLASSSWITCH))) {
return;
}

if (args.length < 1 || "custom".equalsIgnoreCase(args[0])) {
Set<String> classes = new TreeSet<>();
for (ArenaClass ac : arena.getClasses()) {
if ("custom".equalsIgnoreCase(ac.getName())) {
continue;
}
classes.add(ChatColor.GREEN + ac.getName() + ChatColor.WHITE);
}
arena.msg(sender, Language.parse(arena, MSG.CLASS_LIST, StringParser.joinSet(classes, ", ")));
return;
}

Expand Down Expand Up @@ -158,12 +163,13 @@ public List<String> getShort() {
@Override
public CommandTree<String> getSubs(final Arena arena) {
final CommandTree<String> result = new CommandTree<>(null);
if (arena == null) {
return result;
}
for (final ArenaClass aClass : arena.getClasses()) {
result.define(new String[]{aClass.getName()});

if (arena != null) {
arena.getClasses().stream()
.filter(aClass -> !"custom".equalsIgnoreCase(aClass.getName()))
.forEach(aClass -> result.define(new String[]{aClass.getName()}));
}

return result;
}
}

0 comments on commit d19c8bb

Please sign in to comment.