SteamWar/BungeeCore
Archiviert
13
2

WIP message deprecation
Einige Prüfungen sind fehlgeschlagen
SteamWarCI Build failed

Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Lixfel 2024-05-13 17:23:42 +02:00
Ursprung 3b5be809dd
Commit a188ce2c6f
43 geänderte Dateien mit 574 neuen und 616 gelöschten Zeilen

Datei anzeigen

@ -27,10 +27,8 @@ import de.steamwar.bungeecore.mods.ServerListPing;
import de.steamwar.bungeecore.mods.*;
import de.steamwar.bungeecore.network.BungeeNetworkHandler;
import de.steamwar.bungeecore.tablist.TablistManager;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.SWTypeMapperCreator;
import de.steamwar.command.TabCompletionCache;
import de.steamwar.command.TypeMapper;
import de.steamwar.command.*;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.Punishment;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.Team;
@ -80,14 +78,14 @@ public class BungeeCore extends Plugin {
errorLogger = new ErrorLogger();
SWCommandUtils.init((SWTypeMapperCreator<TypeMapper<Object>, CommandSender, Object>) (mapper, tabCompleter) -> new TypeMapper<Object>() {
SWCommandUtils.init((SWTypeMapperCreator<TypeMapper<Object>, Chatter, Object>) (mapper, tabCompleter) -> new TypeMapper<Object>() {
@Override
public Object map(CommandSender commandSender, String[] previousArguments, String s) {
public Object map(Chatter sender, PreviousArguments previousArguments, String s) {
return mapper.apply(s);
}
@Override
public Collection<String> tabCompletes(CommandSender sender, String[] previousArguments, String s) {
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
return tabCompleter.apply(sender, s);
}
});

Datei anzeigen

@ -24,7 +24,6 @@ import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
public class AlertCommand extends SWCommand {
@ -33,9 +32,9 @@ public class AlertCommand extends SWCommand {
}
@Register(description = "USAGE_ALERT")
public void broadcast(CommandSender sender, @OptionalValue("") @StaticValue("-discord") String sendToDiscord, String... message) {
public void broadcast(Chatter sender, @OptionalValue("") @StaticValue("-discord") String sendToDiscord, String... message) {
if (message.length == 0) {
Chatter.of(sender).system("USAGE_ALERT");
sender.system("USAGE_ALERT");
return;
}

Datei anzeigen

@ -24,9 +24,9 @@ import de.steamwar.bungeecore.Subserver;
import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import net.md_5.bungee.api.CommandSender;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.Collection;
import java.util.List;
@ -39,29 +39,29 @@ public class ArenaCommand extends SWCommand {
}
@Register
public void arenaJoin(ProxiedPlayer player, Subserver server) {
TpCommand.teleport(player, server.getServer());
public void arenaJoin(PlayerChatter sender, Subserver server) {
TpCommand.teleport(sender.getPlayer(), server.getServer());
}
@ClassMapper(value = Subserver.class, local = true)
public TypeMapper<Subserver> serverInfoTypeMapper() {
return new TypeMapper<Subserver>() {
@Override
public Subserver map(CommandSender commandSender, String[] previousArguments, String s) {
public Subserver map(Chatter sender, PreviousArguments previousArguments, String s) {
return Subserver.getSubserver(ProxyServer.getInstance().getServerInfo(s));
}
@Override
public boolean validate(CommandSender sender, Subserver value, MessageSender messageSender) {
public boolean validate(Chatter sender, Subserver value, MessageSender messageSender) {
if (value == null || value.getType() != Servertype.ARENA) {
messageSender.send("ARENA_NOT_FOUND");
sender.system("ARENA_NOT_FOUND");
return false;
}
return true;
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
List<Subserver> subserverList = Subserver.getServerList();
synchronized (subserverList) {
return subserverList.stream().filter(subserver -> subserver.getType() == Servertype.ARENA).map(subserver -> subserver.getServer().getName()).collect(Collectors.toList());

Datei anzeigen

@ -31,12 +31,11 @@ import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.network.packets.server.BaumemberUpdatePacket;
import de.steamwar.sql.BauweltMember;
import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.Collection;
import java.util.function.Consumer;
@ -46,26 +45,26 @@ public class BauCommand extends SWCommand {
private final HelpCommand command;
public BauCommand(HelpCommand command){
public BauCommand(HelpCommand command) {
super("bau", null, "b", "build", "gs");
this.command = command;
}
@Register(noTabComplete = true)
public void genericHelp(ProxiedPlayer p, String... args) {
this.command.sendBauHelp(p);
public void genericHelp(Chatter sender, String... args) {
this.command.sendBauHelp(sender);
}
@Register
public void toBau(ProxiedPlayer p, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
new ServerStarter().build(version, p.getUniqueId()).send(p).start();
public void toBau(PlayerChatter sender, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
new ServerStarter().build(version, sender.user().getUUID()).send(sender.getPlayer()).start();
}
@Register(value = "addmember", description = "BAU_ADDMEMBER_USAGE")
public void addmember(ProxiedPlayer p, @Validator("addMemberTarget") SteamwarUser target) {
BauweltMember.addMember(p.getUniqueId(), target.getUUID());
Chatter.of(p).system("BAU_ADDMEMBER_ADDED");
Chatter.of(target.getUUID()).system("BAU_ADDMEMBER_ADDED_TARGET", p);
public void addmember(Chatter sender, @Validator("addMemberTarget") SteamwarUser target) {
BauweltMember.addMember(sender.user().getUUID(), target.getUUID());
sender.system("BAU_ADDMEMBER_ADDED");
Chatter.of(target.getUUID()).system("BAU_ADDMEMBER_ADDED_TARGET", sender);
}
@Validator(value = "addMemberTarget", local = true)
@ -75,11 +74,11 @@ public class BauCommand extends SWCommand {
messageSender.send("UNKNOWN_PLAYER");
return false;
}
if (((ProxiedPlayer) sender).getUniqueId().equals(value.getUUID())) {
if (sender.user().getUUID().equals(value.getUUID())) {
messageSender.send("BAU_ADDMEMBER_SELFADD");
return false;
}
if (BauweltMember.getBauMember(((ProxiedPlayer) sender).getUniqueId(), value.getUUID()) != null) {
if (BauweltMember.getBauMember(sender.user().getId(), value.getId()) != null) {
messageSender.send("BAU_ADDMEMBER_ISADDED");
return false;
}
@ -89,8 +88,8 @@ public class BauCommand extends SWCommand {
@Register(value = "tp", description = "BAU_TP_USAGE")
@Register("teleport")
public void teleport(ProxiedPlayer p, @Validator("teleportTarget") SteamwarUser worldOwner, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
new ServerStarter().build(version, worldOwner.getUUID()).send(p).start();
public void teleport(PlayerChatter sender, @Validator("teleportTarget") SteamwarUser worldOwner, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
new ServerStarter().build(version, worldOwner.getUUID()).send(sender.getPlayer()).start();
}
@Validator(value = "teleportTarget", local = true)
@ -100,47 +99,45 @@ public class BauCommand extends SWCommand {
messageSender.send("UNKNOWN_PLAYER");
return false;
}
ProxiedPlayer p = (ProxiedPlayer) sender;
if (!p.getUniqueId().equals(value.getUUID()) && BauweltMember.getBauMember(value.getUUID(), p.getUniqueId()) == null) {
SubserverSystem.sendDeniedMessage(Chatter.of(p), value.getUUID());
if (sender.user().getId() != value.getId() && BauweltMember.getBauMember(value.getId(), sender.user().getId()) == null) {
SubserverSystem.sendDeniedMessage(sender, value.getUUID());
messageSender.send("BAU_TP_NOALLOWED");
return false;
}
return !BauLock.checkNotifyLocked(value, p);
return !BauLock.checkNotifyLocked(value, sender);
};
}
@Register("info")
public void info(ProxiedPlayer p) {
Chat19.chat(p, "/bauinfo");
public void info(PlayerChatter sender) {
Chat19.chat(sender.getPlayer(), "/bauinfo");
}
@Register("setspectator")
public void setSpectator(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(p, user, "setspectator", "BAU_MEMBER_SET_SPECTATOR", member -> {
public void setSpectator(Chatter sender, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(sender, user, "setspectator", "BAU_MEMBER_SET_SPECTATOR", member -> {
member.setBuild(false);
member.setSupervisor(false);
});
}
@Register("setbuild")
public void setBuild(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(p, user, "setbuild", "BAU_MEMBER_SET_BUILDER", member -> {
public void setBuild(Chatter sender, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(sender, user, "setbuild", "BAU_MEMBER_SET_BUILDER", member -> {
member.setBuild(true);
member.setSupervisor(false);
});
}
@Register("setsupervisor")
public void setSupervisor(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(p, user, "setsupervisor", "BAU_MEMBER_SET_SUPERVISOR", member -> {
public void setSupervisor(Chatter sender, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
setPerms(sender, user, "setsupervisor", "BAU_MEMBER_SET_SUPERVISOR", member -> {
member.setBuild(true);
member.setSupervisor(true);
});
}
private void setPerms(ProxiedPlayer p, SteamwarUser user, String name, String permName, Consumer<BauweltMember> setter) {
Chatter owner = Chatter.of(p);
private void setPerms(Chatter owner, SteamwarUser user, String name, String permName, Consumer<BauweltMember> setter) {
if (user == null) {
owner.system("BAU_MEMBER_SET_USAGE", name);
return;
@ -149,28 +146,25 @@ public class BauCommand extends SWCommand {
withMember(owner, user, target -> {
setter.accept(target);
Bauserver bauserver = Bauserver.get(p.getUniqueId());
Bauserver bauserver = Bauserver.get(owner.user().getUUID());
if(bauserver != null)
bauserver.getServer().getPlayers().stream().findAny().ifPresent(player -> NetworkSender.send(player, new BaumemberUpdatePacket()));
Chatter.of(user.getUUID()).system("BAU_MEMBER_SET_TARGET", p.getName(), new Message(permName));
Chatter.of(user.getUUID()).system("BAU_MEMBER_SET_TARGET", owner, new Message(permName));
owner.system("BAU_MEMBER_SET", new Message(permName));
});
}
@Register(value = "delmember", description = "BAU_DELMEMBER_USAGE")
public void delmember(ProxiedPlayer p, @Mapper("addedUsers") SteamwarUser user) {
Chatter owner = Chatter.of(p);
public void delmember(Chatter owner, @Mapper("addedUsers") SteamwarUser user) {
withMember(owner, user, target -> {
target.remove();
Chatter member = Chatter.of(user.getUUID());
member.system("BAU_DELMEMBER_DELETED_TARGET", p);
member.withPlayer(toRemove -> {
Subserver currentServer = Subserver.getSubserver(toRemove.getServer().getInfo());
if (currentServer != null && currentServer.getType() == Servertype.BAUSERVER && ((Bauserver) currentServer).getOwner().equals(p.getUniqueId())) {
toRemove.connect(ProxyServer.getInstance().getServerInfo(BungeeCore.LOBBY_SERVER));
}
member.system("BAU_DELMEMBER_DELETED_TARGET", owner);
member.withPlayer(player -> {
if (Bauserver.get(owner.user().getUUID()).getServer().getPlayers().contains(player))
player.connect(ProxyServer.getInstance().getServerInfo(BungeeCore.LOBBY_SERVER));
});
owner.system("BAU_DELMEMBER_DELETED");
@ -181,13 +175,13 @@ public class BauCommand extends SWCommand {
public TypeMapper<SteamwarUser> addedUsers() {
return new TypeMapper<SteamwarUser>() {
@Override
public SteamwarUser map(CommandSender commandSender, String[] previousArguments, String s) {
return SteamwarUser.get(s);
public SteamwarUser map(Chatter sender, PreviousArguments previousArguments, String s) {
return sender.user();
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
return BauweltMember.getMembers(Chatter.of(sender).user().getId()).stream()
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
return BauweltMember.getMembers(sender.user().getId()).stream()
.map(bauweltMember -> SteamwarUser.get(bauweltMember.getMemberID()).getUserName())
.collect(Collectors.toList());
}
@ -196,20 +190,18 @@ public class BauCommand extends SWCommand {
@Register("resetall")
@Register("delete")
public void delete(ProxiedPlayer p, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
Chatter player = Chatter.of(p);
SWInventory inventory = new SWInventory(player, 9, new Message("BAU_DELETE_GUI_NAME"));
public void delete(Chatter sender, @OptionalValue(value = "", onlyUINIG = true) ServerVersion version) {
SWInventory inventory = new SWInventory(sender, 9, new Message("BAU_DELETE_GUI_NAME"));
inventory.addItem(0, new SWItem(new Message("BAU_DELETE_GUI_DELETE"), 10), click -> {
String world = version.getWorldFolder(ServerStarter.WORLDS_BASE_PATH) + (version != ServerVersion.SPIGOT_12 ? player.user().getId() : p.getUniqueId().toString());
String world = version.getWorldFolder(ServerStarter.WORLDS_BASE_PATH) + (version != ServerVersion.SPIGOT_12 ? sender.user().getId() : sender.user().getUUID().toString());
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> {
Bauserver subserver = Bauserver.get(p.getUniqueId());
Bauserver subserver = Bauserver.get(sender.user().getUUID());
if(subserver != null)
subserver.stop();
SubserverSystem.deleteFolder(BungeeCore.local, world);
player.system("BAU_DELETE_DELETED");
sender.system("BAU_DELETE_DELETED");
});
inventory.close();
@ -220,20 +212,20 @@ public class BauCommand extends SWCommand {
@Register("test")
@Register("testarena")
public void testarena(ProxiedPlayer p, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(p, "/bau testarena ", false, arenaMode, map, false, (player, mode, m) ->
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> new ServerStarter().test(mode, m, p).start())
public void testarena(PlayerChatter sender, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(sender.getPlayer(), "/bau testarena ", false, arenaMode, map, false, (player, mode, m) ->
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> new ServerStarter().test(mode, m, sender.getPlayer()).start())
);
}
@Register(value = "lock", description = "BAU_LOCKED_OPTIONS")
public void lock(ProxiedPlayer p, BauLockState bauLockState) {
BauLock.setLocked(p, bauLockState);
public void lock(Chatter sender, BauLockState bauLockState) {
BauLock.setLocked(sender, bauLockState);
}
@Register("unlock")
public void unlock(ProxiedPlayer p) {
BauLock.setLocked(p, BauLockState.OPEN);
public void unlock(Chatter sender) {
BauLock.setLocked(sender, BauLockState.OPEN);
}
private static void withMember(Chatter owner, SteamwarUser member, Consumer<BauweltMember> function) {

Datei anzeigen

@ -20,10 +20,8 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.sql.SWException;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BugCommand extends SWCommand {
public BugCommand() {
@ -31,10 +29,11 @@ public class BugCommand extends SWCommand {
}
@Register
public void bugMessage(ProxiedPlayer player, String... message) {
String server = player.getServer().getInfo().getName();
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
SWException.log(String.join(" ", message), server + " " + player.getName() + " " + user.getId());
Chatter.of(player).system("BUG_MESSAGE");
public void bugMessage(Chatter sender, String... message) {
SWException.log(
String.join(" ", message),
sender.withPlayerOrOffline(player -> player.getServer().getInfo().getName(), () -> "offline") + " " + sender.user().getUserName() + " " + sender.user().getId()
);
sender.system("BUG_MESSAGE");
}
}

Datei anzeigen

@ -9,14 +9,15 @@ import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.CommandSender;
import de.steamwar.messages.PlayerChatter;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
public class BuilderCloudCommand extends SWCommand {
@ -26,32 +27,32 @@ public class BuilderCloudCommand extends SWCommand {
}
@Register(value = "create", description = "BUILDERCLOUD_CREATE_USAGE")
public void create(ProxiedPlayer player, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map, @OptionalValue("") @Mapper("generator") @AllowNull File generator) {
public void create(Chatter sender, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map, @OptionalValue("") @Mapper("generator") @AllowNull File generator) {
mapFile(version, map).mkdir();
new ServerStarter().builder(version, map, generator).send(player).start();
sender.withPlayer(p -> new ServerStarter().builder(version, map, generator).send(p).start());
}
@Register(description = "BUILDERCLOUD_USAGE")
public void start(ProxiedPlayer player, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map) {
public void start(PlayerChatter sender, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map) {
if(!mapFile(version, map).exists()) {
Chatter.of(player).system("BUILDERCLOUD_UNKNOWN_MAP");
sender.system("BUILDERCLOUD_UNKNOWN_MAP");
return;
}
new ServerStarter().builder(version, map, null).send(player).start();
new ServerStarter().builder(version, map, null).send(sender.getPlayer()).start();
}
@Register(value = "rename", description = "BUILDERCLOUD_RENAME_USAGE")
public void rename(ProxiedPlayer player, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String oldName, String newName) {
public void rename(Chatter sender, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String oldName, String newName) {
File oldMap = mapFile(version, oldName);
if(!oldMap.exists()) {
Chatter.of(player).system("BUILDERCLOUD_UNKNOWN_MAP");
sender.system("BUILDERCLOUD_UNKNOWN_MAP");
return;
}
File newMap = mapFile(version, newName);
if(newMap.exists()) {
Chatter.of(player).system("BUILDERCLOUD_EXISTING_MAP");
sender.system("BUILDERCLOUD_EXISTING_MAP");
return;
}
@ -61,20 +62,20 @@ public class BuilderCloudCommand extends SWCommand {
throw new SecurityException(e);
}
Chatter.of(player).system("BUILDERCLOUD_RENAMED");
sender.system("BUILDERCLOUD_RENAMED");
}
@Register(value = "deploy", description = "BUILDERCLOUD_DEPLOY_USAGE")
public void deploy(ProxiedPlayer player, @Mapper("nonHistoricArenaMode") ArenaMode arenaMode, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map) {
public void deploy(Chatter sender, @Mapper("nonHistoricArenaMode") ArenaMode arenaMode, @ErrorMessage("BUILDERCLOUD_VERSION") ServerVersion version, @Mapper("map") String map) {
if(!mapFile(version, map).exists()) {
Chatter.of(player).system("BUILDERCLOUD_UNKNOWN_MAP");
sender.system("BUILDERCLOUD_UNKNOWN_MAP");
return;
}
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> {
BungeeCore.local.execute("/binarys/deployarena.py", arenaMode.getConfig(), Integer.toString(version.getVersionSuffix()), map);
ArenaMode.init();
Chatter.of(player).system("BUILDERCLOUD_DEPLOY_FINISHED");
sender.system("BUILDERCLOUD_DEPLOY_FINISHED");
});
}
@ -84,13 +85,13 @@ public class BuilderCloudCommand extends SWCommand {
return new TypeMapper<String>() {
@Override
public String map(CommandSender commandSender, String[] previousArguments, String s) {
public String map(Chatter sender, PreviousArguments previousArguments, String s) {
return s;
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
File folder = getWorldFolder(previousArguments.userArgs, 1);
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
File folder = getWorldFolder(previousArguments, 1);
String[] files;
if(folder == null || (files = folder.list()) == null)
@ -107,7 +108,7 @@ public class BuilderCloudCommand extends SWCommand {
return new TypeMapper<File>() {
@Override
public File map(CommandSender commandSender, String[] previousArguments, String s) {
public File map(Chatter sender, PreviousArguments previousArguments, String s) {
if(s.isEmpty())
return null;
@ -124,8 +125,8 @@ public class BuilderCloudCommand extends SWCommand {
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
File folder = getWorldFolder(previousArguments.userArgs, 2);
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
File folder = getWorldFolder(previousArguments, 2);
String[] files;
if(folder == null || (files = folder.list()) == null)
@ -140,8 +141,8 @@ public class BuilderCloudCommand extends SWCommand {
return new File(version.getWorldFolder(ServerStarter.BUILDER_BASE_PATH), map);
}
private File getWorldFolder(String[] previousArguments, int offset) {
ServerVersion v = ServerVersion.get(previousArguments[previousArguments.length - offset]);
private File getWorldFolder(PreviousArguments previousArguments, int offset) {
ServerVersion v = ServerVersion.get(previousArguments.userArgs[previousArguments.userArgs.length - offset]);
if(v == null)
return null;
return new File(v.getWorldFolder(ServerStarter.BUILDER_BASE_PATH));

Datei anzeigen

@ -21,6 +21,7 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.*;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.IgnoreSystem;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeValidator;
@ -38,13 +39,14 @@ public class ChallengeCommand extends SWCommand {
}
@Register(description = "CHALLENGE_USAGE")
public void challenge(@Validator("arenaPlayer") ProxiedPlayer player, @Validator("target") ProxiedPlayer target, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(player, "/challenge " + target.getName() + " ", false, arenaMode, map, false, (p, mode, m) -> {
public void challenge(@Validator("arenaPlayer") PlayerChatter sender, @Validator("target") ProxiedPlayer target, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(sender, "/challenge " + target.getName() + " ", false, arenaMode, map, false, (chatter, mode, m) -> {
ProxiedPlayer p = sender.getPlayer();
if(challenges.containsKey(target) && challenges.get(target).contains(p)){
challenges.remove(target);
challenges.remove(p);
new ServerStarter().arena(mode, map).blueLeader(player).redLeader(target).callback(
new ServerStarter().arena(mode, map).blueLeader(sender.getPlayer()).redLeader(target).callback(
arena -> Chatter.broadcast().system("CHALLENGE_BROADCAST", "CHALLENGE_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), p.getName(), target.getName())
).start();
}else{
@ -54,7 +56,7 @@ public class ChallengeCommand extends SWCommand {
challenges.get(p).add(target);
Chatter.of(p).system("CHALLENGE_CHALLENGED", target.getName(), mode.getDisplayName());
sender.system("CHALLENGE_CHALLENGED", target.getName(), mode.getDisplayName());
Chatter.of(target).system("CHALLENGE_CHALLENGED_TARGET", p.getName(), mode.getDisplayName(), mode.getMaps().size() != 1 ? new Message("CHALLENGE_CHALLENGED_MAP", m) : "");
Chatter.of(target).system("CHALLENGE_ACCEPT", new Message("CHALLENGE_ACCEPT_HOVER"), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/challenge " + p.getName() + " " + mode.getChatName() + " " + m));
@ -66,21 +68,21 @@ public class ChallengeCommand extends SWCommand {
public TypeValidator<ProxiedPlayer> targetValidator() {
return (sender, value, messageSender) -> {
if (value == null) {
messageSender.send("CHALLENGE_OFFLINE");
sender.system("CHALLENGE_OFFLINE");
return false;
}
if (sender == value) {
messageSender.send("CHALLENGE_SELF");
sender.system("CHALLENGE_SELF");
return false;
}
if (IgnoreSystem.isIgnored(value.getUniqueId(), ((ProxiedPlayer) sender).getUniqueId())) {
messageSender.send("CHALLENGE_IGNORED");
if (IgnoreSystem.isIgnored(value.getUniqueId(), sender.user().getUUID())) {
sender.system("CHALLENGE_IGNORED");
return false;
}
Subserver subserver = Subserver.getSubserver(value);
if (subserver != null && subserver.getType() == Servertype.ARENA) {
messageSender.send("CHALLENGE_INARENA");
sender.system("CHALLENGE_INARENA");
return false;
}
return true;

Datei anzeigen

@ -24,6 +24,7 @@ import de.steamwar.bungeecore.bot.util.DiscordAlert;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.*;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.ChatMessageType;
@ -79,11 +80,10 @@ public class CheckCommand extends SWCommand {
}
@Register(value = "list", description = "CHECK_HELP_LIST")
public void list(ProxiedPlayer player) {
Chatter chatter = Chatter.of(player);
public void list(Chatter sender) {
List<SchematicNode> schematicList = getSchemsToCheck();
chatter.prefixless("CHECK_LIST_HEADER", schematicList.size());
sender.system("CHECK_LIST_HEADER", schematicList.size());
for (SchematicNode schematic : schematicList) {
CheckSession current = currentSchems.get(schematic.getId());
@ -91,15 +91,15 @@ public class CheckCommand extends SWCommand {
String color = waitedMillis > 14400000 ? (waitedMillis > 86400000 ? "c" : "e") : "a";
long hours = waitedMillis / 3600000;
long minutes = (waitedMillis - hours * 3600000) / 60000;
Message waitTime = new Message("CHECK_LIST_WAIT", player, color, hours, (minutes < 10) ? "0" + minutes : minutes);
Message waitTime = new Message("CHECK_LIST_WAIT", color, hours, (minutes < 10) ? "0" + minutes : minutes);
if (current == null) {
chatter.prefixless("CHECK_LIST_TO_CHECK",
sender.prefixless("CHECK_LIST_TO_CHECK",
new Message("CHECK_LIST_TO_CHECK_HOVER"),
new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check schematic " + schematic.getId()),
waitTime,
schematic.getSchemtype().getKuerzel(), SteamwarUser.get(schematic.getOwner()).getUserName(), schematic.getName());
} else {
chatter.prefixless("CHECK_LIST_CHECKING",
sender.prefixless("CHECK_LIST_CHECKING",
new Message("CHECK_LIST_CHECKING_HOVER"),
new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + current.checker.user().getUserName()),
waitTime,
@ -109,35 +109,33 @@ public class CheckCommand extends SWCommand {
}
@Register(value = "schematic", noTabComplete = true)
public void schematic(ProxiedPlayer player, String schemID) {
Chatter chatter = Chatter.of(player);
if(isChecking(player)){
chatter.system("CHECK_SCHEMATIC_ALREADY_CHECKING");
public void schematic(PlayerChatter sender, String schemID) {
if(isChecking(sender.getPlayer())){
sender.system("CHECK_SCHEMATIC_ALREADY_CHECKING");
return;
}
SteamwarUser checkingUser = SteamwarUser.get(player.getUniqueId());
SchematicNode schem = SchematicNode.getSchematicNode(Integer.parseInt(schemID));
if(!schem.getSchemtype().check()){
ProxyServer.getInstance().getLogger().log(Level.SEVERE, () -> player.getName() + " tried to check an uncheckable schematic!");
ProxyServer.getInstance().getLogger().log(Level.SEVERE, () -> sender.user().getUserName() + " tried to check an uncheckable schematic!");
return;
}else if(schem.getOwner() == checkingUser.getId()) {
chatter.system("CHECK_SCHEMATIC_OWN");
}else if(schem.getOwner() == sender.user().getId()) {
sender.system("CHECK_SCHEMATIC_OWN");
return;
}
int playerTeam = checkingUser.hasPerm(UserPerm.MODERATION) ? 0 : checkingUser.getTeam();
int playerTeam = sender.user().hasPerm(UserPerm.MODERATION) ? 0 : sender.user().getTeam();
if (playerTeam != 0 && SteamwarUser.get(schem.getOwner()).getTeam() == playerTeam) {
chatter.system("CHECK_SCHEMATIC_OWN_TEAM");
sender.system("CHECK_SCHEMATIC_OWN_TEAM");
return;
}
new CheckSession(chatter, schem);
new CheckSession(sender, schem);
}
@Register(value = "cancel", description = "CHECK_HELP_CANCEL")
@Register("abort")
public void abortCommand(ProxiedPlayer player) {
abort(player);
public void abortCommand(PlayerChatter sender) {
abort(sender.getPlayer());
}
public static void abort(ProxiedPlayer player) {
@ -149,24 +147,24 @@ public class CheckCommand extends SWCommand {
}
@Register(value = "next", description = "CHECK_HELP_NEXT")
public void next(ProxiedPlayer player) {
if(notChecking(player))
public void next(PlayerChatter sender) {
if(notChecking(sender.getPlayer()))
return;
currentCheckers.get(player.getUniqueId()).next();
currentCheckers.get(sender.getPlayer().getUniqueId()).next();
}
@Register(value = "accept")
public void accept(ProxiedPlayer player, @OptionalValue("") String rank) {
next(player);
public void accept(PlayerChatter sender) {
next(sender);
}
@Register(value = "decline", description = "CHECK_HELP_DECLINE")
public void decline(ProxiedPlayer player, String... message) {
if(notChecking(player))
public void decline(PlayerChatter sender, String... message) {
if(notChecking(sender.getPlayer()))
return;
currentCheckers.get(player.getUniqueId()).decline(String.join(" ", message));
currentCheckers.get(sender.getPlayer().getUniqueId()).decline(String.join(" ", message));
}
public static List<SchematicNode> getSchemsToCheck(){
@ -193,20 +191,20 @@ public class CheckCommand extends SWCommand {
}
private static class CheckSession{
private final Chatter checker;
private final PlayerChatter checker;
private final SchematicNode schematic;
private final Timestamp startTime;
private final ListIterator<String> checkList;
private CheckSession(Chatter checker, SchematicNode schematic){
private CheckSession(PlayerChatter checker, SchematicNode schematic){
this.checker = checker;
this.schematic = schematic;
this.startTime = Timestamp.from(Instant.now());
this.checkList = checkQuestions.get(schematic.getSchemtype()).listIterator();
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> checker.withPlayer(player -> {
ProxyServer.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> {
ArenaMode mode = ArenaMode.getBySchemType(fightTypes.get(schematic.getSchemtype()));
if(!new ServerStarter().test(mode, mode.getRandomMap(), player).check(schematic.getId()).start()) {
if(!new ServerStarter().test(mode, mode.getRandomMap(), checker.getPlayer()).check(schematic.getId()).start()) {
remove();
return;
}
@ -216,7 +214,7 @@ public class CheckCommand extends SWCommand {
for(CheckedSchematic previous : CheckedSchematic.previousChecks(schematic))
checker.prefixless("CHECK_SCHEMATIC_PREVIOUS", previous.getEndTime(), SteamwarUser.get(previous.getValidator()).getUserName(), previous.getDeclineReason());
next();
}));
});
}
private void next() {
@ -248,9 +246,9 @@ public class CheckCommand extends SWCommand {
private void accept(){
if(concludeCheckSession("freigegeben", fightTypes.get(schematic.getSchemtype()))) {
Chatter owner = Chatter.of(SteamwarUser.get(schematic.getOwner()).getUUID());
owner.withPlayerOrDiscord(
owner.withPlayerOrOffline(
player -> owner.system("CHECK_ACCEPTED", schematic.getSchemtype().name(), schematic.getName()),
user -> DiscordAlert.send(owner, Color.GREEN, new Message("DC_TITLE_SCHEMINFO"), new Message("DC_SCHEM_ACCEPT", schematic.getName()), true)
() -> DiscordAlert.send(owner, Color.GREEN, new Message("DC_TITLE_SCHEMINFO"), new Message("DC_SCHEM_ACCEPT", schematic.getName()), true)
);
Chatter.serverteam().system("CHECK_ACCEPTED_TEAM", schematic.getName(), owner.user().getUserName());
}
@ -259,9 +257,9 @@ public class CheckCommand extends SWCommand {
private void decline(String reason){
if(concludeCheckSession(reason, SchematicType.Normal)) {
Chatter owner = Chatter.of(SteamwarUser.get(schematic.getOwner()).getUUID());
owner.withPlayerOrDiscord(
owner.withPlayerOrOffline(
player -> owner.system("CHECK_DECLINED", schematic.getSchemtype().name(), schematic.getName(), reason),
user -> DiscordAlert.send(owner, Color.RED, new Message("DC_TITLE_SCHEMINFO"), new Message("DC_SCHEM_DECLINE", schematic.getName(), reason), false)
() -> DiscordAlert.send(owner, Color.RED, new Message("DC_TITLE_SCHEMINFO"), new Message("DC_SCHEM_DECLINE", schematic.getName(), reason), false)
);
Chatter.serverteam().system("CHECK_DECLINED_TEAM", schematic.getName(), owner.user().getUserName(), reason);
}

Datei anzeigen

@ -19,14 +19,15 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.Message;
import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.Punishment;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.command.*;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.io.File;
import java.net.InetSocketAddress;
@ -43,46 +44,42 @@ public class DevCommand extends SWCommand {
}
@Register
public void simpleCommand(@Validator ProxiedPlayer player) {
public void simpleCommand(@Validator PlayerChatter sender) {
updateDevServers();
Chatter sender = Chatter.of(player);
if (devServers.isEmpty()) {
sender.system("DEV_NO_SERVER");
return;
} else if (devServers.size() == 1) {
player.connect(devServers.values().stream().findAny().get());
sender.getPlayer().connect(devServers.values().stream().findAny().get());
return;
}
ServerInfo info = devServers.get(player.getName().toLowerCase());
ServerInfo info = devServers.get(sender.getPlayer().getName().toLowerCase());
if (info == null) {
sender.system("DEV_UNKNOWN_SERVER");
return;
}
player.connect(info);
sender.getPlayer().connect(info);
}
@Register
public void selectedCommand(@Validator ProxiedPlayer player, @Mapper("dev") String name) {
public void selectedCommand(@Validator PlayerChatter sender, @Mapper("dev") String name) {
updateDevServers();
Chatter sender = Chatter.of(player);
ServerInfo info = devServers.get(name.toLowerCase());
if (info == null) {
sender.system("DEV_NO_SERVER");
return;
}
player.connect(info);
sender.getPlayer().connect(info);
}
@ClassValidator(value = ProxiedPlayer.class, local = true)
public TypeValidator<ProxiedPlayer> punishmentGuardChecker() {
@ClassValidator(value = PlayerChatter.class, local = true)
public TypeValidator<PlayerChatter> punishmentGuardChecker() {
return (sender, value, messageSender) -> {
SteamwarUser user = SteamwarUser.get(value.getUniqueId());
if (user.isPunished(Punishment.PunishmentType.NoDevServer)) {
Message message = PunishmentCommand.punishmentMessage(user, Punishment.PunishmentType.NoDevServer);
messageSender.send(message.getFormat(), message.getParams());
if (sender.user().isPunished(Punishment.PunishmentType.NoDevServer)) {
sender.system(PunishmentCommand.punishmentMessage(sender.user(), Punishment.PunishmentType.NoDevServer));
return false;
}
return true;

Datei anzeigen

@ -25,9 +25,8 @@ import de.steamwar.bungeecore.SubserverSystem;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.*;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
@ -42,80 +41,77 @@ public class EventCommand extends SWCommand {
}
@Validator("noEvent")
public TypeValidator<ProxiedPlayer> noEventValidator() {
public TypeValidator<Chatter> noEventValidator() {
return (sender, value, messageSender) -> Event.get() == null;
}
@Register
public void noCurrentEvent(@Validator("noEvent") CommandSender sender) {
Chatter player = Chatter.of(sender);
player.system("EVENT_NO_CURRENT");
public void noCurrentEvent(@Validator("noEvent") Chatter sender) {
sender.system("EVENT_NO_CURRENT");
List<Event> coming = Event.getComing();
if(coming.isEmpty())
return;
player.system("EVENT_COMING");
sender.system("EVENT_COMING");
Instant now = Instant.now();
DateTimeFormatter format = DateTimeFormatter.ofPattern(player.parseToPlain("EVENT_DATE_FORMAT"));
DateTimeFormatter format = DateTimeFormatter.ofPattern(sender.parseToPlain("EVENT_DATE_FORMAT"));
for(Event e : coming){
player.prefixless("EVENT_COMING_EVENT", e.getStart().toLocalDateTime().format(format), e.getEnd().toLocalDateTime().format(format), e.getEventName());
sender.prefixless("EVENT_COMING_EVENT", e.getStart().toLocalDateTime().format(format), e.getEnd().toLocalDateTime().format(format), e.getEventName());
if(now.isBefore(e.getDeadline().toInstant()))
player.prefixless("EVENT_COMING_DEADLINE", e.getDeadline());
sender.prefixless("EVENT_COMING_DEADLINE", e.getDeadline());
SchematicType schemType = e.getSchematicType();
if (schemType != null && schemType.getDeadline() != null && now.isBefore(schemType.getDeadline().toInstant()))
player.prefixless("EVENT_COMING_SCHEM_DEADLINE", schemType.getDeadline());
sender.prefixless("EVENT_COMING_SCHEM_DEADLINE", schemType.getDeadline());
Set<Team> teams = TeamTeilnahme.getTeams(e.getEventID());
if(!teams.isEmpty())
player.prefixless("EVENT_COMING_TEAMS", teams.stream().map(team -> player.parseToLegacy("EVENT_COMING_TEAM", team.getTeamColor(), team.getTeamKuerzel())).collect(Collectors.joining(" ")));
sender.prefixless("EVENT_COMING_TEAMS", teams.stream().map(team -> sender.parseToLegacy("EVENT_COMING_TEAM", team.getTeamColor(), team.getTeamKuerzel())).collect(Collectors.joining(" ")));
}
}
@Register
public void eventOverview(@Validator(value = "noEvent", invert = true) CommandSender sender) {
Chatter player = Chatter.of(sender);
player.system("EVENT_USAGE");
public void eventOverview(@Validator(value = "noEvent", invert = true) Chatter sender) {
sender.system("EVENT_USAGE");
Event currentEvent = Event.get();
player.system("EVENT_CURRENT_EVENT", currentEvent.getEventName());
sender.system("EVENT_CURRENT_EVENT", currentEvent.getEventName());
DateTimeFormatter format = DateTimeFormatter.ofPattern(player.parseToPlain("EVENT_TIME_FORMAT"));
DateTimeFormatter format = DateTimeFormatter.ofPattern(sender.parseToPlain("EVENT_TIME_FORMAT"));
for(EventFight fight : EventFight.getEvent(currentEvent.getEventID())){
Team blue = Team.get(fight.getTeamBlue());
Team red = Team.get(fight.getTeamRed());
StringBuilder fline = new StringBuilder(player.parseToLegacy("EVENT_CURRENT_FIGHT", fight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel(), red.getTeamColor(), red.getTeamKuerzel()));
StringBuilder fline = new StringBuilder(sender.parseToLegacy("EVENT_CURRENT_FIGHT", fight.getStartTime().toLocalDateTime().format(format), blue.getTeamColor(), blue.getTeamKuerzel(), red.getTeamColor(), red.getTeamKuerzel()));
if(fight.hasFinished()){
switch(fight.getErgebnis()){
case 1:
fline.append(player.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", blue.getTeamColor(), blue.getTeamKuerzel()));
fline.append(sender.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", blue.getTeamColor(), blue.getTeamKuerzel()));
break;
case 2:
fline.append(player.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", red.getTeamColor(), red.getTeamKuerzel()));
fline.append(sender.parseToLegacy("EVENT_CURRENT_FIGHT_WIN", red.getTeamColor(), red.getTeamKuerzel()));
break;
default:
fline.append(player.parseToLegacy("EVENT_CURRENT_FIGHT_DRAW"));
fline.append(sender.parseToLegacy("EVENT_CURRENT_FIGHT_DRAW"));
}
}
player.prefixless("PLAIN_STRING", fline.toString());
sender.prefixless("PLAIN_STRING", fline.toString());
}
}
@Register
public void eventWithTeam(@Validator(value = "noEvent", invert = true) ProxiedPlayer player, @ErrorMessage("EVENT_NO_TEAM") Team team) {
Chatter sender = Chatter.of(player);
public void eventWithTeam(@Validator(value = "noEvent", invert = true) PlayerChatter sender, @ErrorMessage("EVENT_NO_TEAM") Team team) {
Subserver eventArena = EventStarter.getEventServer().get(team.getTeamId());
if(eventArena == null || !Subserver.getServerList().contains(eventArena)){
sender.system("EVENT_NO_FIGHT_TEAM");
return;
}
if (!PunishmentCommand.isPunishedWithMessage(sender, Punishment.PunishmentType.NoFightServer)) {
SubserverSystem.sendPlayer(eventArena, player);
SubserverSystem.sendPlayer(eventArena, sender.getPlayer());
}
}
}

Datei anzeigen

@ -25,7 +25,6 @@ import de.steamwar.messages.Chatter;
import de.steamwar.sql.Event;
import de.steamwar.sql.EventFight;
import de.steamwar.sql.Team;
import net.md_5.bungee.api.CommandSender;
import java.sql.Timestamp;
import java.util.Date;
@ -39,12 +38,10 @@ public class EventRescheduleCommand extends SWCommand {
}
@Register
public void reschedule(CommandSender sender, Team teamBlue, Team teamRed) {
Chatter player = Chatter.of(sender);
public void reschedule(Chatter sender, Team teamBlue, Team teamRed) {
Event event = Event.get();
if(event == null){
player.system("EVENTRESCHEDULE_UNKNOWN_TEAM");
sender.system("EVENTRESCHEDULE_UNKNOWN_TEAM");
return;
}
@ -57,13 +54,13 @@ public class EventRescheduleCommand extends SWCommand {
continue;
if(fight.getTeamBlue() == teamBlue.getTeamId() && fight.getTeamRed() == teamRed.getTeamId()){
player.system("EVENTRESCHEDULE_STARTING");
sender.system("EVENTRESCHEDULE_STARTING");
fight.reschedule();
EventFight.loadAllComingFights();
return;
}
}
player.system("EVENTRESCHEDULE_NO_FIGHT");
sender.system("EVENTRESCHEDULE_NO_FIGHT");
}
}

Datei anzeigen

@ -20,9 +20,9 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.sql.EventFight;
import de.steamwar.command.SWCommand;
import net.md_5.bungee.api.CommandSender;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.EventFight;
public class EventreloadCommand extends SWCommand {
public EventreloadCommand() {
@ -30,7 +30,7 @@ public class EventreloadCommand extends SWCommand {
}
@Register
public void execute(CommandSender sender) {
public void execute(Chatter sender) {
EventFight.loadAllComingFights();
}
}

Datei anzeigen

@ -24,6 +24,7 @@ import de.steamwar.bungeecore.inventory.SWInventory;
import de.steamwar.bungeecore.inventory.SWItem;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.ClickEvent;
@ -58,20 +59,18 @@ public class FightCommand extends SWCommand {
sender.sendMessage(ChatMessageType.SYSTEM, start);
}
private static boolean alreadyInArena(ProxiedPlayer player){
Subserver subserver = Subserver.getSubserver(player);
private static boolean alreadyInArena(PlayerChatter sender){
Subserver subserver = Subserver.getSubserver(sender.getPlayer());
if(subserver != null && subserver.getType() == Servertype.ARENA){
Chatter.of(player).system("FIGHT_IN_ARENA");
sender.system("FIGHT_IN_ARENA");
return true;
}
return false;
}
static void createArena(ProxiedPlayer player, String precommand, boolean allowMerging, ArenaMode arenaMode, String map, boolean historic, FightCallback callback) {
Chatter sender = Chatter.of(player);
if(alreadyInArena(player))
static void createArena(PlayerChatter sender, String precommand, boolean allowMerging, ArenaMode arenaMode, String map, boolean historic, FightCallback callback) {
if(alreadyInArena(sender))
return;
if (arenaMode == null) {
@ -83,13 +82,13 @@ public class FightCommand extends SWCommand {
map = arenaMode.getRandomMap();
if (!allowMerging) {
callback.run(player, arenaMode, map);
callback.run(sender, arenaMode, map);
} else {
suggestMerging(player, arenaMode, map, callback);
suggestMerging(sender, arenaMode, map, callback);
}
}
public static void suggestMerging(ProxiedPlayer player, ArenaMode mode, String map, FightCallback declineMerge) {
private static void suggestMerging(PlayerChatter sender, ArenaMode mode, String map, FightCallback declineMerge) {
Arenaserver mergable = null;
synchronized (Subserver.getServerList()) {
for (Subserver subserver : Subserver.getServerList()) {
@ -104,15 +103,14 @@ public class FightCommand extends SWCommand {
}
if(mergable == null) {
declineMerge.run(player, mode, map);
declineMerge.run(sender, mode, map);
return;
}
Chatter chatter = Chatter.of(player);
SWInventory inventory = new SWInventory(chatter, 9, new Message("FIGHT_MERGE_TITLE"));
SWInventory inventory = new SWInventory(sender, 9, new Message("FIGHT_MERGE_TITLE"));
inventory.addItem(0, new SWItem(new Message("FIGHT_MERGE_DECLINE"), 1), click -> {
inventory.close();
declineMerge.run(player, mode, map);
declineMerge.run(sender, mode, map);
});
Arenaserver finalMergable = mergable;
SWItem item = new SWItem(new Message("FIGHT_MERGE_INFO", mode.getDisplayName(), finalMergable.getMap()), 11);
@ -120,25 +118,25 @@ public class FightCommand extends SWCommand {
inventory.addItem(4, item, click -> {});
inventory.addItem(8, new SWItem(new Message("FIGHT_MERGE_ACCEPT"), 10), click -> {
if(Subserver.getServerList().contains(finalMergable)) {
finalMergable.sendPlayer(player);
finalMergable.sendPlayer(sender.getPlayer());
} else {
chatter.system("FIGHT_MERGE_OFFLINE");
declineMerge.run(player, mode, map);
sender.system("FIGHT_MERGE_OFFLINE");
declineMerge.run(sender, mode, map);
}
});
inventory.open();
}
@Register
public void fight(@Validator("arenaPlayer") ProxiedPlayer player, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
createArena(player, "/fight ", true, arenaMode, map, false,
(p, mode, m) -> new ServerStarter().arena(mode, m).blueLeader(p).callback(
arena -> Chatter.broadcast().system("FIGHT_BROADCAST", "FIGHT_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), p.getName())
public void fight(@Validator("arenaPlayer") PlayerChatter sender, @Mapper("nonHistoricArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
createArena(sender, "/fight ", true, arenaMode, map, false,
(p, mode, m) -> new ServerStarter().arena(mode, m).blueLeader(p.getPlayer()).callback(
arena -> Chatter.broadcast().system("FIGHT_BROADCAST", "FIGHT_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), p.getPlayer().getName())
).start()
);
}
public interface FightCallback {
void run(ProxiedPlayer player, ArenaMode mode, String map);
void run(PlayerChatter player, ArenaMode mode, String map);
}
}

Datei anzeigen

@ -1,12 +1,13 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message;
import de.steamwar.sql.internal.Statement;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.internal.Statement;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.io.*;
import java.util.zip.ZipEntry;
@ -15,48 +16,42 @@ import java.util.zip.ZipOutputStream;
public class GDPRQuery extends SWCommand {
public GDPRQuery() {
super("gdprquery", "bungeecore.softreload");
super("gdprquery", ConnectionListener.SOFTRELOAD_PERMISSION);
}
@Register
public void generate(ProxiedPlayer player) {
generate(player, player);
public void generate(PlayerChatter sender) {
generate(sender, sender.user());
}
@Register
public void generate(ProxiedPlayer player, ProxiedPlayer forPlayer) {
SteamwarUser user = SteamwarUser.get(forPlayer.getUniqueId());
if(user == null) {
Message.send("UNKNOWN_PLAYER", player);
return;
}
public void generate(Chatter sender, SteamwarUser user) {
BungeeCord.getInstance().getScheduler().runAsync(BungeeCore.get(), () -> {
try {
createZip(player, user);
createZip(sender, user);
} catch (IOException e) {
throw new SecurityException("Could not create zip", e);
}
});
}
private void createZip(ProxiedPlayer player, SteamwarUser user) throws IOException {
printUpdate(player, "GDPR_STATUS_WEBSITE");
private void createZip(Chatter sender, SteamwarUser user) throws IOException {
sender.system("GDPR_STATUS_WEBSITE");
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(user.getUserName() + ".zip"));
copy(getClass().getClassLoader().getResourceAsStream("GDPRQueryREADME.md"), out, "README.md");
copy(getClass().getClassLoader().getResourceAsStream("GDPRQueryREADME.md"), out, "README.txt");
printUpdate(player, "GDPR_STATUS_WORLD");
sender.system("GDPR_STATUS_WORLD");
copyBauwelt(user, out, "/home/minecraft/userworlds/" + user.getUUID().toString(), "BuildWorld12");
copyBauwelt(user, out, "/home/minecraft/userworlds15/" + user.getId(), "BuildWorld15");
printUpdate(player, "GDPR_STATUS_INVENTORIES");
sender.system("GDPR_STATUS_INVENTORIES");
copyPlayerdata(user, out, "/home/minecraft/userworlds", "BuildInventories12");
copyPlayerdata(user, out, "/home/minecraft/userworlds15", "BuildInventories15");
printUpdate(player, "GDPR_STATUS_DATABASE");
sender.system("GDPR_STATUS_DATABASE");
sqlCSV(user, out, bannedIPs, "BannedIPs.csv");
sqlCSV(user, out, bauweltMember, "BuildMember.csv");
sqlCSV(user, out, bauweltMembers, "BuildMembers.csv");
@ -78,11 +73,11 @@ public class GDPRQuery extends SWCommand {
schematics(user, out);
userConfig(user, out);
printUpdate(player, "GDPR_STATUS_LOGS");
sender.system("GDPR_STATUS_LOGS");
copyLogs(user, out, new File("/logs"), "logs");
out.close();
printUpdate(player, "GDPR_STATUS_FINISHED");
sender.system("GDPR_STATUS_FINISHED");
}
private static final Statement bannedIPs = new Statement("SELECT Timestamp, IP FROM BannedUserIPs WHERE UserID = ?");
@ -233,11 +228,6 @@ public class GDPRQuery extends SWCommand {
}
}
private void printUpdate(ProxiedPlayer player, String message) {
if (player.isConnected())
Message.send(message, player);
}
private void copy(File file, ZipOutputStream out, String path) throws IOException {
try(FileInputStream in = new FileInputStream(file)) {
copy(in, out, path);

Datei anzeigen

@ -23,7 +23,6 @@ import de.steamwar.bungeecore.Message;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class HelpCommand extends SWCommand {
@ -32,9 +31,7 @@ public class HelpCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player) {
Chatter sender = Chatter.of(player);
public void genericCommand(Chatter sender) {
printPage(sender, ClickEvent.Action.RUN_COMMAND,
"HELP_LOBBY", "/l",
"HELP_BAU", "/build",
@ -48,33 +45,32 @@ public class HelpCommand extends SWCommand {
}
@Register({"build","world"})
public void buildWorld(ProxiedPlayer player) {
printPage(Chatter.of(player), "HELP_BAU_GROUP_WORLD_TITLE", "HELP_TNT", "HELP_FIRE", "HELP_FREEZE", "HELP_TPSLIMIT", "HELP_PROTECT", "HELP_RESET");
public void buildWorld(Chatter sender) {
printPage(sender, "HELP_BAU_GROUP_WORLD_TITLE", "HELP_TNT", "HELP_FIRE", "HELP_FREEZE", "HELP_TPSLIMIT", "HELP_PROTECT", "HELP_RESET");
}
@Register({"build","player"})
public void buildPlayer(ProxiedPlayer player) {
printPage(Chatter.of(player), "HELP_BAU_GROUP_PLAYER_TITLE", "HELP_SPEED", "HELP_NV", "HELP_WV", "HELP_DEBUGSTICK", "HELP_TRACE", "HELP_LOADER");
public void buildPlayer(Chatter sender) {
printPage(sender, "HELP_BAU_GROUP_PLAYER_TITLE", "HELP_SPEED", "HELP_NV", "HELP_WV", "HELP_DEBUGSTICK", "HELP_TRACE", "HELP_LOADER");
}
@Register({"build","worldedit"})
@Register({"build","we"})
@Register({"build","world-edit"})
@Register({"build","edit"})
public void buildWorldedit(ProxiedPlayer player) {
printPage(Chatter.of(player), "HELP_BAU_GROUP_WE_TITLE", "HELP_WE_POS1", "HELP_WE_POS2", "HELP_WE_COPY", "HELP_WE_PASTE", "HELP_WE_FLOPY", "HELP_WE_FLOPYP", "HELP_WE_ROTATE_90", "HELP_WE_ROTATE_180", "HELP_WE_ROTATE_N90");
public void buildWorldedit(Chatter sender) {
printPage(sender, "HELP_BAU_GROUP_WE_TITLE", "HELP_WE_POS1", "HELP_WE_POS2", "HELP_WE_COPY", "HELP_WE_PASTE", "HELP_WE_FLOPY", "HELP_WE_FLOPYP", "HELP_WE_ROTATE_90", "HELP_WE_ROTATE_180", "HELP_WE_ROTATE_N90");
}
@Register({"build","other"})
public void buildOther(ProxiedPlayer player) {
Chatter sender = Chatter.of(player);
public void buildOther(Chatter sender) {
printPage(sender, "HELP_BAU_GROUP_OTHER_TITLE", "HELP_TESTBLOCK", "HELP_SKULL", "HELP_BAUINFO");
sender.prefixless("HELP_SCHEMSUBMIT", new Message("HELP_SCHEMSUBMIT_HOVER"), new ClickEvent(ClickEvent.Action.OPEN_URL, "https://www.youtube.com/watch?v=9QrQ3UBWveE"));
}
@Register("build")
public void sendBauHelpGroup(ProxiedPlayer player) {
printPage(Chatter.of(player), ClickEvent.Action.RUN_COMMAND,
public void sendBauHelpGroup(Chatter sender) {
printPage(sender, ClickEvent.Action.RUN_COMMAND,
"HELP_BAU_GROUP_ADMIN", "/help build admin",
"HELP_BAU_GROUP_WORLD", "/help build world",
"HELP_BAU_GROUP_PLAYER", "/help build player",
@ -86,8 +82,8 @@ public class HelpCommand extends SWCommand {
@Register({"build","admin"})
@Register({"build","owner"})
@Register({"build","bauwelt"})
public void sendBauHelp(ProxiedPlayer player) {
printPage(Chatter.of(player), ClickEvent.Action.SUGGEST_COMMAND,
public void sendBauHelp(Chatter sender) {
printPage(sender, ClickEvent.Action.SUGGEST_COMMAND,
"HELP_BAU_TP", "/build tp ",
"HELP_BAU_ADDMEMBER", "/build addmember ",
"HELP_BAU_DELMEMBER", "/build delmember ",

Datei anzeigen

@ -23,8 +23,8 @@ import de.steamwar.bungeecore.ArenaMode;
import de.steamwar.bungeecore.ServerStarter;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class HistoricCommand extends SWCommand {
public HistoricCommand() {
@ -32,9 +32,9 @@ public class HistoricCommand extends SWCommand {
}
@Register
public void historic(@Validator("arenaPlayer") ProxiedPlayer player, @Mapper("historicArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(player, "/historic ", true, arenaMode, map, true, (p, mode, m) -> new ServerStarter().arena(mode, m).blueLeader(p).callback(
arena -> Chatter.broadcast().system("HISTORIC_BROADCAST", "HISTORIC_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), p.getName())
public void historic(@Validator("arenaPlayer") PlayerChatter player, @Mapper("historicArenaMode") @OptionalValue("") @AllowNull ArenaMode arenaMode, @Mapper("arenaMap") @OptionalValue("") @AllowNull String map) {
FightCommand.createArena(player, "/historic ", true, arenaMode, map, true, (p, mode, m) -> new ServerStarter().arena(mode, m).blueLeader(p.getPlayer()).callback(
arena -> Chatter.broadcast().system("HISTORIC_BROADCAST", "HISTORIC_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/arena " + arena.getServer().getName()), mode.getDisplayName(), p.getPlayer().getName())
).start());
}
}

Datei anzeigen

@ -23,7 +23,6 @@ import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.IgnoreSystem;
import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class IgnoreCommand extends SWCommand {
@ -32,8 +31,7 @@ public class IgnoreCommand extends SWCommand {
}
@Register(description = "USAGE_IGNORE")
public void genericCommand(ProxiedPlayer p, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
Chatter player = Chatter.of(p);
public void genericCommand(Chatter player, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
SteamwarUser user = player.user();
if(target.equals(user)){

Datei anzeigen

@ -22,8 +22,8 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class JoinmeCommand extends SWCommand {
@ -32,7 +32,7 @@ public class JoinmeCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player) {
Chatter.broadcast().system("JOINME_BROADCAST", "JOINME_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + player.getName()), player, player.getServer().getInfo().getName());
public void genericCommand(PlayerChatter sender) {
Chatter.broadcast().system("JOINME_BROADCAST", "JOINME_BROADCAST_HOVER", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + sender.getPlayer().getName()), sender, sender.getPlayer().getServer().getInfo().getName());
}
}

Datei anzeigen

@ -22,7 +22,6 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
public class KickCommand extends SWCommand {
@ -32,12 +31,12 @@ public class KickCommand extends SWCommand {
}
@Register(description = "KICK_USAGE")
public void genericCommand(CommandSender sender, @ErrorMessage("KICK_OFFLINE") ProxiedPlayer target, String... message) {
public void genericCommand(Chatter sender, @ErrorMessage("KICK_OFFLINE") ProxiedPlayer target, String... message) {
if (message.length == 0) {
Chatter.disconnect(target).system("KICK_NORMAL");
} else {
Chatter.disconnect(target).system("KICK_CUSTOM", String.join(" ", message));
}
Chatter.of(sender).system("KICK_CONFIRM", target);
sender.system("KICK_CONFIRM", target);
}
}

Datei anzeigen

@ -62,16 +62,14 @@ public class ListCommand extends SWCommand {
}
@Register
public void list(CommandSender sender) {
Chatter chatter = Chatter.of(sender);
public void list(Chatter sender) {
TreeMap<String, List<ProxiedPlayer>> playerMap = getCustomTablist();
for (String server : playerMap.navigableKeySet()) {
String serverName = server;
if (server.equals("Bau")) {
serverName = chatter.parseToLegacy("TABLIST_BAU");
serverName = sender.parseToLegacy("TABLIST_BAU");
}
chatter.prefixless("LIST_COMMAND", serverName, playerMap.get(server).stream().map(CommandSender::getName).collect(Collectors.joining(", ")));
sender.prefixless("LIST_COMMAND", serverName, playerMap.get(server).stream().map(CommandSender::getName).collect(Collectors.joining(", ")));
}
}
}

Datei anzeigen

@ -21,8 +21,7 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.listeners.ChatListener;
import de.steamwar.command.SWCommand;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import de.steamwar.messages.PlayerChatter;
public class LocalCommand extends SWCommand {
@ -31,7 +30,7 @@ public class LocalCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player, String... message) {
public void genericCommand(PlayerChatter player, String... message) {
ChatListener.localChat(player, String.join(" ", message));
}
}

Datei anzeigen

@ -27,8 +27,8 @@ import de.steamwar.bungeecore.inventory.SWStreamInv;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.Mod;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.HashMap;
import java.util.Map;
@ -45,12 +45,12 @@ public class ModCommand extends SWCommand {
public static final Map<UUID, Mod.ModType> playerFilterType = new HashMap<>();
@Register
public void mods(ProxiedPlayer p) {
playerFilterType.putIfAbsent(p.getUniqueId(), Mod.ModType.UNKLASSIFIED);
openGui(Chatter.of(p));
public void mods(PlayerChatter sender) {
playerFilterType.putIfAbsent(sender.getPlayer().getUniqueId(), Mod.ModType.UNKLASSIFIED);
openGui(sender);
}
private void openGui(Chatter player) {
private void openGui(PlayerChatter player) {
SWStreamInv<Mod> swStreamInv = new SWStreamInv<>(player, new Message("MOD_COMMAND_GUI_TITLE"), (click, mod) -> openTypeGUI(player, "MOD_COMMAND_CLASSICIATION_GUI", type -> {
mod.setModType(type);
SWInventory.close(player);
@ -68,7 +68,7 @@ public class ModCommand extends SWCommand {
swStreamInv.open();
}
private void openTypeGUI(Chatter player, String title, Consumer<Mod.ModType> function) {
private void openTypeGUI(PlayerChatter player, String title, Consumer<Mod.ModType> function) {
SWInventory inv = new SWInventory(player, 9, new Message(title));
inv.addItem(1, new SWItem(new Message("MOD_UNCLASSIFIED"), 8), click -> function.accept(Mod.ModType.UNKLASSIFIED));
@ -86,39 +86,36 @@ public class ModCommand extends SWCommand {
}
@Register(value = {"set"},description = "MOD_COMMAND_SET_USAGE")
public void set(ProxiedPlayer p, String modName, Mod.Platform platform, Mod.ModType newModType) {
Chatter player = Chatter.of(p);
public void set(Chatter sender, String modName, Mod.Platform platform, Mod.ModType newModType) {
Mod mod = Mod.get(modName, platform);
if(mod == null) {
player.system("MOD_COMMAND_NOT_FOUND_IN_DATABASE", modName, platform.name());
sender.system("MOD_COMMAND_NOT_FOUND_IN_DATABASE", modName, platform.name());
return;
}
mod.setModType(newModType);
player.system("MOD_CHANGED_TYPE", modName, platform.name(), newModType.name());
sender.system("MOD_CHANGED_TYPE", modName, platform.name(), newModType.name());
}
@Register(value = {"get"},description = "MOD_COMMAND_GET_USAGE")
public void get(ProxiedPlayer p, String modName, Mod.Platform platform) {
Chatter player = Chatter.of(p);
public void get(Chatter sender, String modName, Mod.Platform platform) {
Mod mod = Mod.get(modName, platform);
if(mod == null) {
player.system("MOD_COMMAND_NOT_FOUND_IN_DATABASE", modName, platform.name());
sender.system("MOD_COMMAND_NOT_FOUND_IN_DATABASE", modName, platform.name());
return;
}
player.system("MOD_COMMAND_INFO", modName, platform.name(), mod.getModType().name());
sender.system("MOD_COMMAND_INFO", modName, platform.name(), mod.getModType().name());
}
@Register(value = {"next"})
public void next(ProxiedPlayer p) {
Chatter player = Chatter.of(p);
public void next(Chatter sender) {
Mod mod = Mod.findFirstMod();
if(mod == null) {
player.system("MOD_NO_MORE_UNCLASSIFIED_MODS");
sender.system("MOD_NO_MORE_UNCLASSIFIED_MODS");
return;
}
player.system("MOD_FOUND_NEXT_MOD", mod.getModName(), mod.getPlatform().name());
sender.system("MOD_FOUND_NEXT_MOD", mod.getModName(), mod.getPlatform().name());
}
}

Datei anzeigen

@ -23,6 +23,7 @@ import de.steamwar.bungeecore.listeners.ChatListener;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.ChatterGroup;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.IgnoreSystem;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@ -35,26 +36,25 @@ public class MsgCommand extends SWCommand {
}
@Register(description = "MSG_USAGE")
public void genericCommand(ProxiedPlayer sender, @ErrorMessage(value = "MSG_OFFLINE") ProxiedPlayer target, @ErrorMessage(value = "MSG_USAGE", allowEAs = false) String... message) {
public void genericCommand(PlayerChatter sender, @ErrorMessage(value = "MSG_OFFLINE") ProxiedPlayer target, @ErrorMessage(value = "MSG_USAGE", allowEAs = false) String... message) {
msg(sender, target, message);
}
public static void msg(ProxiedPlayer player, ProxiedPlayer target, String[] args) {
Chatter sender = Chatter.of(player);
public static void msg(PlayerChatter sender, ProxiedPlayer target, String[] args) {
if(target == null || !target.isConnected()) {
sender.system("MSG_OFFLINE");
return;
}
if (IgnoreSystem.isIgnored(target.getUniqueId(), player.getUniqueId())) {
if (IgnoreSystem.isIgnored(target.getUniqueId(), sender.user().getUUID())) {
sender.system("MSG_IGNORED");
return;
}
Chatter receiver = Chatter.of(target);
ChatListener.sendChat(sender, new ChatterGroup(sender, receiver), "CHAT_MSG", receiver, String.join(" ", args));
lastChats.put(player, target);
lastChats.put(target, player);
lastChats.put(sender.getPlayer(), target);
lastChats.put(target, sender.getPlayer());
}
public static void remove(ProxiedPlayer player){

Datei anzeigen

@ -20,8 +20,7 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import de.steamwar.messages.PlayerChatter;
public class PingCommand extends SWCommand {
@ -30,7 +29,7 @@ public class PingCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player) {
Chatter.of(player).system("PING_RESPONSE", player.getPing());
public void genericCommand(PlayerChatter sender) {
sender.system("PING_RESPONSE", sender.getPlayer().getPing());
}
}

Datei anzeigen

@ -22,7 +22,6 @@ package de.steamwar.bungeecore.commands;
import de.steamwar.command.SWCommand;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.text.NumberFormat;
@ -33,12 +32,12 @@ public class PlaytimeCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
public void genericCommand(Chatter sender) {
SteamwarUser user = sender.user();
NumberFormat format = NumberFormat.getNumberInstance(user.getLocale());
format.setMaximumFractionDigits(2);
String formattedText = format.format((user.getOnlinetime() / (double) 3600));
Chatter.of(player).system("HOURS_PLAYED", formattedText);
sender.system("HOURS_PLAYED", formattedText);
}
}

Datei anzeigen

@ -19,13 +19,11 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.Message;
import de.steamwar.bungeecore.listeners.PollSystem;
import de.steamwar.sql.PollAnswer;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeValidator;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.PollAnswer;
public class PollCommand extends SWCommand {
@ -34,39 +32,33 @@ public class PollCommand extends SWCommand {
}
@Register
public void genericCommand(ProxiedPlayer player) {
PollSystem.sendPoll(player);
public void genericCommand(Chatter sender) {
PollSystem.sendPoll(sender);
}
@Register(noTabComplete = true)
public void answerPoll(@Validator ProxiedPlayer player, String answerString) {
public void answerPoll(@Validator Chatter sender, String answerString) {
int answer;
try {
answer = Integer.parseUnsignedInt(answerString);
if(answer < 1 || answer > PollSystem.answers())
throw new NumberFormatException();
}catch(NumberFormatException e){
Message.send("POLL_NO_ANSWER", player);
sender.system("POLL_NO_ANSWER");
return;
}
PollAnswer pollAnswer = PollAnswer.get(SteamwarUser.get(player.getUniqueId()).getId());
PollAnswer pollAnswer = PollAnswer.get(sender.user().getId());
if(pollAnswer.hasAnswered())
Message.send("POLL_ANSWER_REFRESH", player);
sender.system("POLL_ANSWER_REFRESH");
else
Message.send("POLL_ANSWER_NEW", player);
sender.system("POLL_ANSWER_NEW");
pollAnswer.setAnswer(answer);
}
@ClassValidator(value = ProxiedPlayer.class, local = true)
public TypeValidator<ProxiedPlayer> noPoll() {
return (sender, value, messageSender) -> {
if(PollSystem.noCurrentPoll()){
messageSender.send("POLL_NO_POLL");
return false;
}
return true;
};
@ClassValidator(value = Chatter.class, local = true)
public TypeValidator<Chatter> noPoll() {
return PollSystem.noPoll();
}
}

Datei anzeigen

@ -19,13 +19,12 @@
package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.Message;
import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.bungeecore.listeners.PollSystem;
import de.steamwar.sql.PollAnswer;
import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeValidator;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.PollAnswer;
import java.util.Map;
@ -36,22 +35,16 @@ public class PollresultCommand extends SWCommand {
}
@Register
public void genericCommand(@Validator ProxiedPlayer player) {
public void genericCommand(@Validator Chatter sender) {
Map<Integer, Integer> voted = PollAnswer.getCurrentResults();
Message.send("POLLRESULT_HEADER", player, voted.values().stream().reduce(Integer::sum).orElse(0), PollAnswer.getCurrentPoll());
sender.system("POLLRESULT_HEADER", voted.values().stream().reduce(Integer::sum).orElse(0), PollAnswer.getCurrentPoll());
for (Map.Entry<Integer, Integer> e: voted.entrySet()) {
Message.send("POLLRESULT_LIST", player, PollSystem.getAnswer(e.getKey()), e.getValue());
sender.prefixless("POLLRESULT_LIST", PollSystem.getAnswer(e.getKey()), e.getValue());
}
}
@ClassValidator(value = ProxiedPlayer.class, local = true)
public TypeValidator<ProxiedPlayer> noPoll() {
return (sender, value, messageSender) -> {
if (PollSystem.noCurrentPoll()) {
messageSender.send("POLL_NO_POLL");
return false;
}
return true;
};
@ClassValidator(value = Chatter.class, local = true)
public TypeValidator<Chatter> noPoll() {
return PollSystem.noPoll();
}
}

Datei anzeigen

@ -54,7 +54,6 @@ import java.util.stream.Collectors;
public class PunishmentCommand {
private static final String API_URL = "https://api.mojang.com/users/profiles/minecraft/";
private static final JsonParser jsonParser = new JsonParser();
public static SteamwarUser getOrCreateOfflinePlayer(String name) {
SteamwarUser user = SteamwarUser.get(name);
@ -73,7 +72,7 @@ public class PunishmentCommand {
private static UUID getUUIDofOfflinePlayer(String playerName) {
try {
final URL url = new URL(API_URL + playerName);
String uuid = jsonParser.parse(new Scanner(url.openConnection().getInputStream()).nextLine()).getAsJsonObject().get("id").getAsString();
String uuid = JsonParser.parseString(new Scanner(url.openConnection().getInputStream()).nextLine()).getAsJsonObject().get("id").getAsString();
return UUID.fromString(uuid.replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5"));
} catch (NoSuchElementException e) {
// ignore, player does not exist
@ -93,8 +92,6 @@ public class PunishmentCommand {
}
public static void ban(SteamwarUser user, Timestamp time, String banReason, SteamwarUser punisher, boolean perma) {
user.punish(Punishment.PunishmentType.Ban, time, banReason, punisher.getId(), perma);
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(user.getUUID());
if (player != null) {
String ip = IPSanitizer.getTrueAddress(player.getPendingConnection()).getHostAddress();
@ -119,94 +116,17 @@ public class PunishmentCommand {
}
public PunishmentCommand(String command, Punishment.PunishmentType punishmentType) {
new SWCommand(command, ConnectionListener.BAN_PERMISSION) {
new PunishCommand(command, punishmentType);
@Register
public void genericCommand(ProxiedPlayer player, @Mapper("toPunish") String toPunish, String date, @ErrorMessage(allowEAs = false, value = "PUNISHMENT_USAGE_REASON") String... message) {
SteamwarUser punisher = SteamwarUser.get(player.getUniqueId());
if (punishmentType.isNeedsAdmin() && !punisher.hasPerm(UserPerm.MODERATION)) {
return;
}
SteamwarUser target = unsafeUser(player, toPunish);
if (target == null)
if (punishmentType.getUnpunishmentMessage() == null)
return;
Timestamp banTime = parseTime(player, date);
if (banTime == null)
return;
boolean isPerma = date.equalsIgnoreCase("perma");
String msg = String.join(" ", message);
if(punishmentType == Punishment.PunishmentType.Ban)
ban(target, banTime, msg, punisher, isPerma);
else
target.punish(punishmentType, banTime, msg, punisher.getId(), isPerma);
Chatter.serverteam().system(punishmentType.getTeamMessage(), new Message("PREFIX"), target.getUserName(), player.getName(), new Message((isPerma ? "PUNISHMENT_PERMA" : "PUNISHMENT_UNTIL"), banTime), msg);
new UnpunishCommand("un" + command, punishmentType);
}
@Register
public void genericError(ProxiedPlayer player, String... args) {
Chatter.of(player).send(true, ChatMessageType.CHAT, null, null, new Message("PUNISHMENT_USAGE", command));
}
private static final Pattern RELATIVE_PATTERN = Pattern.compile("([1-9]\\d*[hdwmy])+");
@Mapper(value = "toPunish", local = true)
public TypeMapper<String> allUsers() {
return new TypeMapper<String>() {
@Override
public String map(CommandSender commandSender, String[] previousArguments, String s) {
return s;
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
List<String> players = BungeeCord.getInstance().getPlayers().stream()
.map(CommandSender::getName)
.collect(Collectors.toList());
players.add(s);
return players;
}
};
}
};
if (punishmentType.getUnpunishmentMessage() == null) return;
String antiCommand = "un" + command;
new SWCommand(antiCommand, ConnectionListener.BAN_PERMISSION) {
@Register
public void genericCommand(ProxiedPlayer player, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
if (punishmentType.isNeedsAdmin() && !SteamwarUser.get(player.getUniqueId()).hasPerm(UserPerm.MODERATION)) {
return;
}
if (!target.isPunished(punishmentType)) {
Message.send(punishmentType.getUsageNotPunished(), player);
return;
}
Message.send(punishmentType.getUnpunishmentMessage(), player, target.getUserName());
target.punish(punishmentType, Timestamp.from(new Date().toInstant()), antiCommand, SteamwarUser.get(player.getName()).getId(), false);
if(punishmentType == Punishment.PunishmentType.Ban)
BannedUserIPs.unbanIPs(target.getId());
}
@Register
public void genericError(ProxiedPlayer player, String... args) {
Chatter.of(player).send(true, ChatMessageType.CHAT, null, null, new Message("UNPUNISHMENT_USAGE", antiCommand));
}
};
}
protected SteamwarUser unsafeUser(CommandSender sender, String arg){
SteamwarUser target = getOrCreateOfflinePlayer(arg);
if(target == null)
Message.send("UNKNOWN_PLAYER", sender);
return target;
}
private static Pattern RELATIVE_PATTERN = Pattern.compile("([1-9]\\d*[hdwmy])+");
public static Timestamp parseTime(CommandSender sender, String arg) {
public static Timestamp parseTime(Chatter player, String arg) {
if (arg.equalsIgnoreCase("perma")) {
return Punishment.PERMA_TIME;
} else {
@ -251,12 +171,109 @@ public class PunishmentCommand {
Date parsedDate = dateFormat.parse(arg.split("_")[0]);
return new java.sql.Timestamp(parsedDate.getTime());
} catch (ParseException exception) {
if (sender != null) {
Message.send("INVALID_TIME", sender);
}
player.system("INVALID_TIME");
return null;
}
}
}
}
private static class PunishCommand extends SWCommand {
private final String command;
private final Punishment.PunishmentType punishmentType;
private PunishCommand(String command, Punishment.PunishmentType punishmentType) {
super(command, ConnectionListener.BAN_PERMISSION);
this.command = command;
this.punishmentType = punishmentType;
}
private SteamwarUser unsafeUser(Chatter sender, String arg) {
SteamwarUser target = getOrCreateOfflinePlayer(arg);
if(target == null)
sender.system("UNKNOWN_PLAYER");
return target;
}
@Register
public void genericCommand(Chatter sender, @Mapper("toPunish") String toPunish, String date, @ErrorMessage(allowEAs = false, value = "PUNISHMENT_USAGE_REASON") String... message) {
SteamwarUser punisher = sender.user();
if (punishmentType.isNeedsAdmin() && !punisher.hasPerm(UserPerm.MODERATION))
return;
SteamwarUser target = unsafeUser(sender, toPunish);
if (target == null)
return;
Timestamp banTime = parseTime(sender, date);
if (banTime == null)
return;
boolean isPerma = date.equalsIgnoreCase("perma");
String msg = String.join(" ", message);
target.punish(punishmentType, banTime, msg, punisher.getId(), isPerma);
if(punishmentType == Punishment.PunishmentType.Ban)
ban(target, banTime, msg, punisher, isPerma);
Chatter.serverteam().system(punishmentType.getTeamMessage(), new Message("PREFIX"), target, sender, new Message((isPerma ? "PUNISHMENT_PERMA" : "PUNISHMENT_UNTIL"), banTime), msg);
}
@Register
public void genericError(Chatter sender, String... args) {
sender.send(true, ChatMessageType.CHAT, null, null, new Message("PUNISHMENT_USAGE", command));
}
@Mapper(value = "toPunish", local = true)
public TypeMapper<String> allUsers() {
return new TypeMapper<String>() {
@Override
public String map(Chatter sender, PreviousArguments previousArguments, String s) {
return s;
}
@Override
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
List<String> players = BungeeCord.getInstance().getPlayers().stream()
.map(CommandSender::getName)
.collect(Collectors.toList());
players.add(s);
return players;
}
};
}
}
private static class UnpunishCommand extends SWCommand {
private final String command;
private final Punishment.PunishmentType punishmentType;
private UnpunishCommand(String command, Punishment.PunishmentType punishmentType) {
super(command, ConnectionListener.BAN_PERMISSION);
this.command = command;
this.punishmentType = punishmentType;
}
@Register
public void genericCommand(Chatter sender, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
if (punishmentType.isNeedsAdmin() && !sender.user().hasPerm(UserPerm.MODERATION))
return;
if (!target.isPunished(punishmentType)) {
sender.system(punishmentType.getUsageNotPunished());
return;
}
target.punish(punishmentType, Timestamp.from(new Date().toInstant()), command, sender.user().getId(), false);
if(punishmentType == Punishment.PunishmentType.Ban)
BannedUserIPs.unbanIPs(target.getId());
sender.system(punishmentType.getUnpunishmentMessage(), target.getUserName());
}
@Register
public void genericError(Chatter sender, String... args) {
sender.send(true, ChatMessageType.CHAT, null, null, new Message("UNPUNISHMENT_USAGE", command));
}
}
}

Datei anzeigen

@ -24,6 +24,7 @@ import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.Punishment;
import lombok.experimental.UtilityClass;
import net.md_5.bungee.api.CommandSender;
@ -41,15 +42,8 @@ public class TypeMappers {
SWCommandUtils.addMapper("arenaMap", arenaMapTypeMapper());
}
private static TypeValidator<ProxiedPlayer> arenaPlayer() {
return (sender, value, messageSender) -> {
Chatter player = Chatter.of(value);
if (PunishmentCommand.isPunishedWithMessage(player, Punishment.PunishmentType.NoFightServer)) {
return false;
}
return true;
};
private static TypeValidator<PlayerChatter> arenaPlayer() {
return (sender, player, messageSender) -> !PunishmentCommand.isPunishedWithMessage(player, Punishment.PunishmentType.NoFightServer);
}
private static TypeMapper<ArenaMode> arenaModeTypeMapper(boolean historic) {

Datei anzeigen

@ -66,6 +66,7 @@ public class SWInventory {
addItem(pos, item, new ArrayList<>(), callback);
}
@Deprecated
public void addItem(int pos, SWItem item, List<String> lore, InvCallback callback) {
item.setCallback(callback);
item.setLore(lore);

Datei anzeigen

@ -26,6 +26,7 @@ import de.steamwar.bungeecore.network.NetworkSender;
import de.steamwar.bungeecore.util.Chat19;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.ChatterGroup;
import de.steamwar.messages.PlayerChatter;
import de.steamwar.network.packets.server.PingPacket;
import de.steamwar.sql.*;
import net.md_5.bungee.api.ChatColor;
@ -122,20 +123,19 @@ public class ChatListener extends BasicListener {
}
}
public static void localChat(ProxiedPlayer player, String message) {
Chatter sender = Chatter.of(player);
public static void localChat(PlayerChatter sender, String message) {
if(message.length() == 0){
sender.system("CHAT_BC_USAGE");
return;
}
if(ChatListener.filteredCommand(player, message))
if(ChatListener.filteredCommand(sender.getPlayer(), message))
return;
if(!message.startsWith("/") && chatFilter(sender, message))
return;
Chat19.chat(player, message);
Chat19.chat(sender.getPlayer(), message);
}
private static boolean chatFilter(Chatter sender, String message) {

Datei anzeigen

@ -20,10 +20,10 @@
package de.steamwar.bungeecore.listeners;
import de.steamwar.bungeecore.Message;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.PollAnswer;
import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.event.EventHandler;
@ -47,29 +47,37 @@ public class PollSystem extends BasicListener {
@EventHandler
public void onPostLogin(PostLoginEvent event){
ProxiedPlayer player = event.getPlayer();
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Chatter player = Chatter.of(event.getPlayer());
PollAnswer answer = PollAnswer.get(user.getId());
PollAnswer answer = PollAnswer.get(player.user().getId());
if(answer.hasAnswered())
return;
sendPoll(player);
}
public static void sendPoll(ProxiedPlayer player){
Message.send("POLL_HEADER", player);
Message.sendPrefixless("POLL_HEADER2", player);
Message.sendPrefixless("POLL_QUESTION", player, question);
public static void sendPoll(Chatter player) {
player.system("POLL_HEADER");
player.prefixless("POLL_HEADER2");
player.prefixless("POLL_QUESTION", question);
for(int i = 1; i <= answers.size(); i++){
Message.send("POLL_ANWSER", player, Message.parse("POLL_ANWSER_HOVER", player, answers.get(i-1)),
new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/poll " + i), answers.get(i-1));
for(int i = 1; i <= answers.size(); i++) {
player.prefixless("POLL_ANSWER", new Message("POLL_ANSWER_HOVER", answers.get(i-1)), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/poll " + i), answers.get(i-1));
}
}
public static boolean noCurrentPoll(){
return question == null || question.equals("");
return question == null || question.isEmpty();
}
public static TypeValidator<Chatter> noPoll() {
return (sender, value, messageSender) -> {
if (PollSystem.noCurrentPoll()) {
sender.system("POLL_NO_POLL");
return false;
}
return true;
};
}
public static int answers(){

Datei anzeigen

@ -19,27 +19,22 @@
package de.steamwar.bungeecore.util;
import de.steamwar.bungeecore.Message;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserConfig;
import de.steamwar.sql.UserPerm;
import lombok.experimental.UtilityClass;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
@UtilityClass
public class BauLock {
private static final String BAU_LOCK_CONFIG_NAME = "baulockstate";
public static void setLocked(ProxiedPlayer p, BauLockState state) {
SteamwarUser owner = SteamwarUser.get(p.getUniqueId());
UserConfig.updatePlayerConfig(owner.getId(), BAU_LOCK_CONFIG_NAME, state == BauLockState.OPEN ? null : state.name());
Message.send("BAU_LOCKED_" + state.name(), p);
public static void setLocked(Chatter owner, BauLockState state) {
UserConfig.updatePlayerConfig(owner.user().getId(), BAU_LOCK_CONFIG_NAME, state == BauLockState.OPEN ? null : state.name());
owner.system("BAU_LOCKED_" + state.name());
}
public static boolean checkNotifyLocked(SteamwarUser owner, ProxiedPlayer player) {
Chatter sender = Chatter.of(player);
public static boolean checkNotifyLocked(SteamwarUser owner, Chatter sender) {
SteamwarUser target = sender.user();
if (owner.getId() == target.getId())
return false;
@ -69,10 +64,7 @@ public class BauLock {
if(locked) {
sender.system("BAU_LOCKED_NOALLOWED");
ProxiedPlayer ownerPlayer = ProxyServer.getInstance().getPlayer(owner.getUUID());
if(ownerPlayer != null)
Chatter.of(ownerPlayer).system("BAU_LOCK_BLOCKED", player.getName());
Chatter.of(owner.getUUID()).system("BAU_LOCK_BLOCKED", sender);
}
return locked;

Datei anzeigen

@ -1,37 +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.command;
import de.steamwar.bungeecore.BungeeCore;
import lombok.experimental.UtilityClass;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Command;
@UtilityClass
class CommandRegistering {
static void unregister(Command command) {
ProxyServer.getInstance().getPluginManager().unregisterCommand(command);
}
static void register(Command command) {
ProxyServer.getInstance().getPluginManager().registerCommand(BungeeCore.get(), command);
}
}

Datei anzeigen

@ -23,27 +23,28 @@ import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message;
import de.steamwar.messages.Chatter;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;
import java.util.logging.Level;
public class SWCommand extends AbstractSWCommand<CommandSender> {
public class SWCommand extends AbstractSWCommand<Chatter> {
static {
TypeUtils.init();
}
private String permission;
private final String permission;
private Command command;
private List<String> defaultHelpMessages = new ArrayList<>();
private final List<String> defaultHelpMessages = new ArrayList<>();
protected SWCommand(String command) {
this(command, null);
@ -54,7 +55,7 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
}
protected SWCommand(String command, String permission, String... aliases) {
super(CommandSender.class, command, aliases);
super(Chatter.class, command, aliases);
this.permission = permission;
create = true;
createAndSafeCommand(command, aliases);
@ -70,12 +71,12 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
this.command = new TabCompletableCommand(command, permission, aliases) {
@Override
public void execute(CommandSender commandSender, String[] strings) {
SWCommand.this.execute(commandSender, null, strings);
SWCommand.this.execute(Chatter.of(commandSender), null, strings);
}
@Override
public Iterable<String> onTabComplete(CommandSender commandSender, String[] strings) {
return SWCommand.this.tabComplete(commandSender, null, strings);
return SWCommand.this.tabComplete(Chatter.of(commandSender), null, strings);
}
};
}
@ -89,19 +90,19 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
@Override
public void unregister() {
if (command == null) return;
CommandRegistering.unregister(this.command);
ProxyServer.getInstance().getPluginManager().unregisterCommand(this.command);
}
@Override
public void register() {
if (command == null) return;
CommandRegistering.register(this.command);
ProxyServer.getInstance().getPluginManager().registerCommand(BungeeCore.get(), this.command);
}
@Override
protected void commandSystemError(CommandSender sender, CommandFrameworkException e) {
protected void commandSystemError(Chatter sender, CommandFrameworkException e) {
BungeeCore.get().getLogger().log(Level.SEVERE, e.getMessage(), e);
Chatter.of(sender).prefixless("COMMAND_SYSTEM_ERROR");
sender.prefixless("COMMAND_SYSTEM_ERROR");
}
@Override
@ -114,16 +115,15 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
}
@Override
protected void sendMessage(CommandSender sender, String message, Object[] args) {
Chatter.of(sender).system(message, args);
protected void sendMessage(Chatter sender, String message, Object[] args) {
sender.system(message, args);
}
@Register(noTabComplete = true)
public void internalHelp(ProxiedPlayer p, String... args) {
Chatter chatter = Chatter.of(p);
public void internalHelp(Chatter sender, String... args) {
try {
chatter.prefixless("COMMAND_HELP_HEAD", command.getName());
defaultHelpMessages.forEach(chatter::prefixless);
sender.prefixless("COMMAND_HELP_HEAD", command.getName());
defaultHelpMessages.forEach(sender::prefixless);
} catch (Exception e) {
BungeeCore.get().getLogger().log(Level.WARNING, "Failed to send help message", e);
return;
@ -131,7 +131,7 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
AtomicInteger atomicInteger = new AtomicInteger();
if (args.length != 0) {
commandList.forEach(subCommand -> {
List<String> tabCompletes = subCommand.tabComplete(p, args);
List<String> tabCompletes = subCommand.tabComplete(sender, args);
if (tabCompletes == null || tabCompletes.isEmpty()) {
atomicInteger.incrementAndGet();
return;
@ -139,7 +139,7 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
boolean hasTabCompletes = tabCompletes.stream()
.anyMatch(s -> s.toLowerCase().startsWith(args[args.length - 1].toLowerCase()));
if (hasTabCompletes) {
send(chatter, subCommand);
send(sender, subCommand);
} else {
atomicInteger.incrementAndGet();
}
@ -147,14 +147,14 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
}
if (args.length == 0 || atomicInteger.get() == commandList.size()) {
commandList.forEach(subCommand -> {
if (subCommand.validator == null || subCommand.validator.validate(p, p, (s, args1) -> {})) {
send(chatter, subCommand);
if (subCommand.validator == null || subCommand.validator.validate(sender, sender, (s, args1) -> {})) {
send(sender, subCommand);
}
});
}
}
private void send(Chatter chatter, SubCommand<CommandSender> subCommand) {
private void send(Chatter chatter, SubCommand<Chatter> subCommand) {
try {
for (String s : subCommand.description) {
String hover = "§8/§e" + command.getName() + " " + String.join(" ", subCommand.subCommand);
@ -162,7 +162,7 @@ public class SWCommand extends AbstractSWCommand<CommandSender> {
chatter.prefixless(s, new Message("PLAIN_STRING", hover), new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, suggest));
}
} catch (Exception e) {
BungeeCore.get().getLogger().log(Level.WARNING, "Failed to send description of registered method '" + subCommand.method + "' with description '" + subCommand.description + "'", e);
BungeeCore.get().getLogger().log(Level.WARNING, "Failed to send description of registered method '" + subCommand.method + "' with description '" + Arrays.toString(subCommand.description) + "'", e);
}
}
}

Datei anzeigen

@ -19,11 +19,11 @@
package de.steamwar.command;
import net.md_5.bungee.api.CommandSender;
import de.steamwar.messages.Chatter;
public interface TypeMapper<T> extends AbstractTypeMapper<CommandSender, T> {
public interface TypeMapper<T> extends AbstractTypeMapper<Chatter, T> {
/**
* The CommandSender can be null!
*/
T map(CommandSender commandSender, String[] previousArguments, String s);
T map(Chatter sender, PreviousArguments previousArguments, String s);
}

Datei anzeigen

@ -21,11 +21,11 @@ package de.steamwar.command;
import de.steamwar.bungeecore.ServerVersion;
import de.steamwar.bungeecore.commands.TypeMappers;
import de.steamwar.messages.Chatter;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.Team;
import lombok.experimental.UtilityClass;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.Collection;
@ -41,9 +41,10 @@ public class TypeUtils {
SWCommandUtils.addMapper(SteamwarUser.class, SWCommandUtils.createMapper(SteamwarUser::get, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList())));
SWCommandUtils.addMapper(ServerVersion.class, new TypeMapper<ServerVersion>() {
@Override
public ServerVersion map(CommandSender sender, String[] previousArguments, String s) {
if (sender instanceof ProxiedPlayer && s.isEmpty()) {
int version = ((ProxiedPlayer) sender).getPendingConnection().getVersion();
public ServerVersion map(Chatter sender, PreviousArguments previousArguments, String s) {
ProxiedPlayer player = sender.getPlayer();
if(player != null && s.isEmpty()) {
int version = player.getPendingConnection().getVersion();
if (version > 762) { // Version > 1.19.4
return ServerVersion.PAPER_20;
} else if (version > 578) { // Version > 1.15.2
@ -59,7 +60,7 @@ public class TypeUtils {
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
return ServerVersion.chatVersions();
}
});

Datei anzeigen

@ -19,7 +19,6 @@
package de.steamwar.command;
import net.md_5.bungee.api.CommandSender;
import de.steamwar.messages.Chatter;
public interface TypeValidator<T> extends AbstractValidator<CommandSender, T> {
}
public interface TypeValidator<T> extends AbstractValidator<Chatter, T> {}

Datei anzeigen

@ -569,8 +569,8 @@ EVENTMODE_KICK=§cYou are not an event participant.
POLL_HEADER=§e§lPoll
POLL_HEADER2=§7Click the answer you like!
POLL_QUESTION=§e{0}
POLL_ANWSER=§7{0}
POLL_ANWSER_HOVER=§eChoose {0}
POLL_ANSWER=§7{0}
POLL_ANSWER_HOVER=§eChoose {0}
#TablistManager
TABLIST_PHASE_WEBSITE=§8Website: https://§eSteam§8War.de

Datei anzeigen

@ -545,8 +545,8 @@ EVENTMODE_KICK=§cDu bist kein Eventteilnehmer.
POLL_HEADER=§e§lUmfrage
POLL_HEADER2=§7Klicke die Antwort an, die dir gefällt!
POLL_QUESTION=§e{0}
POLL_ANWSER=§7{0}
POLL_ANWSER_HOVER=§e{0} §ewählen
POLL_ANSWER=§7{0}
POLL_ANSWER_HOVER=§e{0} §ewählen
#TablistManager
TABLIST_PHASE_WEBSITE=§8Website: https://§eSteam§8War.de

Datei anzeigen

@ -44,8 +44,9 @@ import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.UUID;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.stream.Stream;
@ -78,11 +79,25 @@ public interface Chatter {
Locale getLocale();
boolean chatShown();
void sendMessage(ChatMessageType type, BaseComponent... msg);
void withPlayerOrDiscord(Consumer<ProxiedPlayer> withPlayer, Consumer<SteamwarUser> withDiscord);
void sendMessage(ChatMessageType type, BaseComponent msg);
ProxiedPlayer getPlayer();
default <T> T withPlayerOrOffline(Function<ProxiedPlayer, T> withPlayer, Supplier<T> withOffline) {
ProxiedPlayer player = getPlayer();
if(player == null)
return withOffline.get();
else
return withPlayer.apply(player);
}
default void withPlayerOrOffline(Consumer<ProxiedPlayer> withPlayer, Runnable withOffline) {
ProxiedPlayer player = getPlayer();
if(player == null)
withOffline.run();
else
withPlayer.accept(player);
}
default void withPlayer(Consumer<ProxiedPlayer> function) {
withPlayerOrDiscord(function, user -> {});
withPlayerOrOffline(function, () -> {});
}
default void chat(Message message) {
@ -164,41 +179,12 @@ public interface Chatter {
return TextComponent.fromLegacy(format.format(params));
}
static Chatter ofProxiedPlayer(ProxiedPlayer player, BiConsumer<ChatMessageType, BaseComponent[]> sendMessage) {
return new Chatter() {
@Override
public SteamwarUser user() {
return SteamwarUser.get(player.getUniqueId());
static PlayerChatter of(ProxiedPlayer player) {
return new PlayerChatter(player, player::sendMessage);
}
@Override
public Locale getLocale() {
return user().getLocale();
}
@Override
public boolean chatShown() {
return player.getChatMode() == ProxiedPlayer.ChatMode.SHOWN;
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
sendMessage.accept(type, msg);
}
@Override
public void withPlayerOrDiscord(Consumer<ProxiedPlayer> withPlayer, Consumer<SteamwarUser> withDiscord) {
withPlayer.accept(player);
}
};
}
static Chatter of(ProxiedPlayer player) {
return ofProxiedPlayer(player, player::sendMessage);
}
static Chatter disconnect(ProxiedPlayer player) {
return ofProxiedPlayer(player, (type, msg) -> player.disconnect(msg));
static PlayerChatter disconnect(ProxiedPlayer player) {
return new PlayerChatter(player, (type, msg) -> player.disconnect(msg));
}
static Chatter of(CommandSender sender) {
@ -218,12 +204,16 @@ public interface Chatter {
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
public void sendMessage(ChatMessageType type, BaseComponent msg) {
sender.sendMessage(msg);
}
};
}
static Chatter of(SteamwarUser user) {
return of(user.getUUID());
}
static Chatter of(UUID uuid) {
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid);
if(player != null)
@ -241,7 +231,7 @@ public interface Chatter {
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
public void sendMessage(ChatMessageType type, BaseComponent msg) {
// Nowhere to send
}
};
@ -264,8 +254,9 @@ public interface Chatter {
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
event.setCancelReason(msg);
public void sendMessage(ChatMessageType type, BaseComponent msg) {
event.setReason(msg);
event.setCancelled(true);
}
};
}
@ -283,9 +274,9 @@ public interface Chatter {
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
public void sendMessage(ChatMessageType type, BaseComponent msg) {
try {
channel.send("<t:" + (System.currentTimeMillis() / 1000) + "> " + new TextComponent(msg).toPlainText());
channel.send("<t:" + (System.currentTimeMillis() / 1000) + "> " + msg.toPlainText());
} catch (Exception e) {
BungeeCore.get().getLogger().log(Level.SEVERE, "Could not send chat message to discord", e);
}
@ -306,7 +297,7 @@ public interface Chatter {
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
public void sendMessage(ChatMessageType type, BaseComponent msg) {
try {
message.delete().queue();
} catch (Exception e) {
@ -319,12 +310,12 @@ public interface Chatter {
abstract class PlayerlessChatter implements Chatter {
@Override
public Locale getLocale() {
return Locale.getDefault();
return user().getLocale();
}
@Override
public void withPlayerOrDiscord(Consumer<ProxiedPlayer> withPlayer, Consumer<SteamwarUser> withDiscord) {
withDiscord.accept(user());
public ProxiedPlayer getPlayer() {
return ProxyServer.getInstance().getPlayer(user().getUUID());
}
}
}

Datei anzeigen

@ -27,11 +27,10 @@ import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent;
import java.util.Arrays;
import java.util.Locale;
import java.util.stream.Stream;
@Getter
public class ChatterGroup implements Chatter {
public class ChatterGroup extends Chatter.PlayerlessChatter {
final Chatter[] chatters;
@ -60,12 +59,7 @@ public class ChatterGroup implements Chatter {
}
@Override
public Locale getLocale() {
throw new UnsupportedOperationException();
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent... msg) {
public void sendMessage(ChatMessageType type, BaseComponent msg) {
throw new UnsupportedOperationException();
}
}

Datei anzeigen

@ -0,0 +1,61 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2024 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.messages;
import de.steamwar.sql.SteamwarUser;
import lombok.AllArgsConstructor;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.Locale;
import java.util.function.BiConsumer;
@AllArgsConstructor
public class PlayerChatter implements Chatter {
private final ProxiedPlayer player;
private final BiConsumer<ChatMessageType, BaseComponent> sendMessage;
@Override
public SteamwarUser user() {
return SteamwarUser.get(player.getUniqueId());
}
@Override
public Locale getLocale() {
return user().getLocale();
}
@Override
public boolean chatShown() {
return player.getChatMode() == ProxiedPlayer.ChatMode.SHOWN;
}
@Override
public void sendMessage(ChatMessageType type, BaseComponent msg) {
sendMessage.accept(type, msg);
}
@Override
public ProxiedPlayer getPlayer() {
return player;
}
}