Signed-off-by: Lixfel <agga-games@gmx.de>
Dieser Commit ist enthalten in:
Ursprung
3b5be809dd
Commit
a188ce2c6f
@ -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);
|
||||
}
|
||||
});
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
|
@ -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) {
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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 ",
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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)){
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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(", ")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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){
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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(){
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
@ -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> {}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
61
src/de/steamwar/messages/PlayerChatter.java
Normale Datei
61
src/de/steamwar/messages/PlayerChatter.java
Normale Datei
@ -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;
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren