mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2024-11-22 20:28:00 +00:00
add messages config, change some jedis/redis depercated apis, bump to 0.9.0, new logging from another locations handling.
This commit is contained in:
parent
748bc13568
commit
e5f0075a58
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>RedisBungee</artifactId>
|
<artifactId>RedisBungee</artifactId>
|
||||||
<groupId>com.imaginarycode.minecraft</groupId>
|
<groupId>com.imaginarycode.minecraft</groupId>
|
||||||
<version>0.8.1-SNAPSHOT</version>
|
<version>0.9.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -23,10 +23,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
public abstract class AbstractRedisBungeeListener<LE, PLE, PD, SC, PP, PM, PS> {
|
public abstract class AbstractRedisBungeeListener<LE, PLE, PD, SC, PP, PM, PS> {
|
||||||
|
|
||||||
protected static final String ALREADY_LOGGED_IN = "§cYou are already logged on to this server. \n\nIt may help to try logging in again in a few minutes.\nIf this does not resolve your issue, please contact staff.";
|
|
||||||
|
|
||||||
protected static final String ONLINE_MODE_RECONNECT = "§cWhoops! You need to reconnect\n\nWe found someone online using your username. They were kicked and you may reconnect.\nIf this does not work, please contact staff.";
|
|
||||||
|
|
||||||
protected final RedisBungeePlugin<?> plugin;
|
protected final RedisBungeePlugin<?> plugin;
|
||||||
protected final List<InetAddress> exemptAddresses;
|
protected final List<InetAddress> exemptAddresses;
|
||||||
protected final Gson gson = new Gson();
|
protected final Gson gson = new Gson();
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
package com.imaginarycode.minecraft.redisbungee.api.config;
|
package com.imaginarycode.minecraft.redisbungee.api.config;
|
||||||
|
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeeMode;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
||||||
@ -82,7 +84,7 @@ public interface ConfigLoader {
|
|||||||
} else {
|
} else {
|
||||||
plugin.logInfo("Loaded proxy id " + proxyId);
|
plugin.logInfo("Loaded proxy id " + proxyId);
|
||||||
}
|
}
|
||||||
RedisBungeeConfiguration configuration = new RedisBungeeConfiguration(proxyId, exemptAddresses, registerLegacyCommands, overrideBungeeCommands);
|
RedisBungeeConfiguration configuration = new RedisBungeeConfiguration(proxyId, exemptAddresses, registerLegacyCommands, overrideBungeeCommands, getMessagesFromPath(createMessagesFile(dataFolder)));
|
||||||
Summoner<?> summoner;
|
Summoner<?> summoner;
|
||||||
RedisBungeeMode redisBungeeMode;
|
RedisBungeeMode redisBungeeMode;
|
||||||
if (node.getNode("cluster-mode-enabled").getBoolean(false)) {
|
if (node.getNode("cluster-mode-enabled").getBoolean(false)) {
|
||||||
@ -130,6 +132,29 @@ public interface ConfigLoader {
|
|||||||
|
|
||||||
void onConfigLoad(RedisBungeeConfiguration configuration, Summoner<?> summoner, RedisBungeeMode mode);
|
void onConfigLoad(RedisBungeeConfiguration configuration, Summoner<?> summoner, RedisBungeeMode mode);
|
||||||
|
|
||||||
|
default ImmutableMap<RedisBungeeConfiguration.MessageType, String> getMessagesFromPath(Path path) throws IOException {
|
||||||
|
final YAMLConfigurationLoader yamlConfigurationFileLoader = YAMLConfigurationLoader.builder().setPath(path).build();
|
||||||
|
ConfigurationNode node = yamlConfigurationFileLoader.load();
|
||||||
|
HashMap<RedisBungeeConfiguration.MessageType, String> messages = new HashMap<>();
|
||||||
|
messages.put(RedisBungeeConfiguration.MessageType.LOGGED_IN_OTHER_LOCATION, node.getNode("logged-in-other-location").getString("§cLogged in from another location."));
|
||||||
|
return ImmutableMap.copyOf(messages);
|
||||||
|
}
|
||||||
|
|
||||||
|
default Path createMessagesFile(Path dataFolder) throws IOException {
|
||||||
|
if (Files.notExists(dataFolder)) {
|
||||||
|
Files.createDirectory(dataFolder);
|
||||||
|
}
|
||||||
|
Path file = dataFolder.resolve("messages.yml");
|
||||||
|
if (Files.notExists(file)) {
|
||||||
|
try (InputStream in = getClass().getClassLoader().getResourceAsStream("messages.yml")) {
|
||||||
|
Files.createFile(file);
|
||||||
|
assert in != null;
|
||||||
|
Files.copy(in, file, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
default Path createConfigFile(Path dataFolder) throws IOException {
|
default Path createConfigFile(Path dataFolder) throws IOException {
|
||||||
if (Files.notExists(dataFolder)) {
|
if (Files.notExists(dataFolder)) {
|
||||||
Files.createDirectory(dataFolder);
|
Files.createDirectory(dataFolder);
|
||||||
|
@ -11,12 +11,21 @@
|
|||||||
package com.imaginarycode.minecraft.redisbungee.api.config;
|
package com.imaginarycode.minecraft.redisbungee.api.config;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
import com.google.common.net.InetAddresses;
|
import com.google.common.net.InetAddresses;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RedisBungeeConfiguration {
|
public class RedisBungeeConfiguration {
|
||||||
|
|
||||||
|
public enum MessageType {
|
||||||
|
LOGGED_IN_OTHER_LOCATION
|
||||||
|
}
|
||||||
|
|
||||||
|
private final ImmutableMap<MessageType, String> messages;
|
||||||
public static final int CONFIG_VERSION = 1;
|
public static final int CONFIG_VERSION = 1;
|
||||||
private final String proxyId;
|
private final String proxyId;
|
||||||
private final List<InetAddress> exemptAddresses;
|
private final List<InetAddress> exemptAddresses;
|
||||||
@ -25,9 +34,9 @@ public class RedisBungeeConfiguration {
|
|||||||
|
|
||||||
private final boolean overrideBungeeCommands;
|
private final boolean overrideBungeeCommands;
|
||||||
|
|
||||||
public RedisBungeeConfiguration(String proxyId, List<String> exemptAddresses, boolean registerLegacyCommands, boolean overrideBungeeCommands) {
|
public RedisBungeeConfiguration(String proxyId, List<String> exemptAddresses, boolean registerLegacyCommands, boolean overrideBungeeCommands, ImmutableMap<MessageType, String> messages) {
|
||||||
this.proxyId = proxyId;
|
this.proxyId = proxyId;
|
||||||
|
this.messages = messages;
|
||||||
ImmutableList.Builder<InetAddress> addressBuilder = ImmutableList.builder();
|
ImmutableList.Builder<InetAddress> addressBuilder = ImmutableList.builder();
|
||||||
for (String s : exemptAddresses) {
|
for (String s : exemptAddresses) {
|
||||||
addressBuilder.add(InetAddresses.forString(s));
|
addressBuilder.add(InetAddresses.forString(s));
|
||||||
@ -52,4 +61,8 @@ public class RedisBungeeConfiguration {
|
|||||||
public boolean doOverrideBungeeCommands() {
|
public boolean doOverrideBungeeCommands() {
|
||||||
return overrideBungeeCommands;
|
return overrideBungeeCommands;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ImmutableMap<MessageType, String> getMessages() {
|
||||||
|
return messages;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,30 +14,46 @@ import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUt
|
|||||||
public class PlayerUtils {
|
public class PlayerUtils {
|
||||||
|
|
||||||
public static void cleanUpPlayer(String uuid, UnifiedJedis rsc, boolean firePayload) {
|
public static void cleanUpPlayer(String uuid, UnifiedJedis rsc, boolean firePayload) {
|
||||||
|
final long timestamp = System.currentTimeMillis();
|
||||||
|
final boolean isKickedFromOtherLocation = isKickedOtherLocation(uuid, rsc);
|
||||||
rsc.srem("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", uuid);
|
rsc.srem("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", uuid);
|
||||||
rsc.hdel("player:" + uuid, "server", "ip", "proxy");
|
if (!isKickedFromOtherLocation) {
|
||||||
long timestamp = System.currentTimeMillis();
|
rsc.hdel("player:" + uuid, "server", "ip", "proxy");
|
||||||
rsc.hset("player:" + uuid, "online", String.valueOf(timestamp));
|
rsc.hset("player:" + uuid, "online", String.valueOf(timestamp));
|
||||||
if (firePayload) {
|
}
|
||||||
|
if (firePayload && !isKickedFromOtherLocation) {
|
||||||
playerQuitPayload(uuid, rsc, timestamp);
|
playerQuitPayload(uuid, rsc, timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setKickedOtherLocation(String uuid, UnifiedJedis unifiedJedis) {
|
||||||
|
// set anything for sake of exists check. then expire it after 2 seconds in case proxy fails to unset it.
|
||||||
|
unifiedJedis.set("kicked-other-location::" + uuid, "0");
|
||||||
|
unifiedJedis.expire("kicked-other-location::" + uuid, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isKickedOtherLocation(String uuid, UnifiedJedis unifiedJedis) {
|
||||||
|
return unifiedJedis.exists("kicked-other-location::" + uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void createPlayer(UUID uuid, UnifiedJedis unifiedJedis, String currentServer, InetAddress hostname, boolean fireEvent) {
|
public static void createPlayer(UUID uuid, UnifiedJedis unifiedJedis, String currentServer, InetAddress hostname, boolean fireEvent) {
|
||||||
if (currentServer != null) {
|
if (currentServer != null) {
|
||||||
unifiedJedis.hset("player:" + uuid, "server", currentServer);
|
unifiedJedis.hset("player:" + uuid, "server", currentServer);
|
||||||
}
|
}
|
||||||
|
final boolean isKickedFromOtherLocation = isKickedOtherLocation(uuid.toString(), unifiedJedis);
|
||||||
Map<String, String> playerData = new HashMap<>(4);
|
Map<String, String> playerData = new HashMap<>(4);
|
||||||
playerData.put("online", "0");
|
playerData.put("online", "0");
|
||||||
playerData.put("ip", hostname.getHostName());
|
playerData.put("ip", hostname.getHostName());
|
||||||
playerData.put("proxy", AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId());
|
playerData.put("proxy", AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId());
|
||||||
|
|
||||||
unifiedJedis.sadd("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", uuid.toString());
|
unifiedJedis.sadd("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", uuid.toString());
|
||||||
unifiedJedis.hmset("player:" + uuid, playerData);
|
unifiedJedis.hset("player:" + uuid, playerData);
|
||||||
|
|
||||||
if (fireEvent) {
|
if (fireEvent && !isKickedFromOtherLocation) {
|
||||||
playerJoinPayload(uuid, unifiedJedis, hostname);
|
playerJoinPayload(uuid, unifiedJedis, hostname);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ public final class UUIDTranslator {
|
|||||||
public void persistInfo(String name, UUID uuid, UnifiedJedis unifiedJedis) {
|
public void persistInfo(String name, UUID uuid, UnifiedJedis unifiedJedis) {
|
||||||
addToMaps(name, uuid);
|
addToMaps(name, uuid);
|
||||||
String json = gson.toJson(uuidToNameMap.get(uuid));
|
String json = gson.toJson(uuidToNameMap.get(uuid));
|
||||||
unifiedJedis.hmset("uuid-cache", ImmutableMap.of(name.toLowerCase(), json, uuid.toString(), json));
|
unifiedJedis.hset("uuid-cache", ImmutableMap.of(name.toLowerCase(), json, uuid.toString(), json));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class CachedUUIDEntry {
|
private static class CachedUUIDEntry {
|
||||||
|
1
RedisBungee-API/src/main/resources/messages.yml
Normal file
1
RedisBungee-API/src/main/resources/messages.yml
Normal file
@ -0,0 +1 @@
|
|||||||
|
logged-in-other-location: "§cYou logged in from another location!"
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>RedisBungee</artifactId>
|
<artifactId>RedisBungee</artifactId>
|
||||||
<groupId>com.imaginarycode.minecraft</groupId>
|
<groupId>com.imaginarycode.minecraft</groupId>
|
||||||
<version>0.8.1-SNAPSHOT</version>
|
<version>0.9.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import com.google.common.io.ByteArrayDataInput;
|
|||||||
import com.google.common.io.ByteArrayDataOutput;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.AbstractRedisBungeeListener;
|
import com.imaginarycode.minecraft.redisbungee.api.AbstractRedisBungeeListener;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.api.config.RedisBungeeConfiguration;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils;
|
import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask;
|
import com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask;
|
||||||
@ -47,7 +48,7 @@ public class RedisBungeeBungeeListener extends AbstractRedisBungeeListener<Login
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@EventHandler (priority = HIGHEST)
|
@EventHandler(priority = HIGHEST)
|
||||||
public void onLogin(LoginEvent event) {
|
public void onLogin(LoginEvent event) {
|
||||||
event.registerIntent((Plugin) plugin);
|
event.registerIntent((Plugin) plugin);
|
||||||
plugin.executeAsync(new RedisTask<Void>(plugin) {
|
plugin.executeAsync(new RedisTask<Void>(plugin) {
|
||||||
@ -57,27 +58,9 @@ public class RedisBungeeBungeeListener extends AbstractRedisBungeeListener<Login
|
|||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (api.isPlayerOnline(event.getConnection().getUniqueId())) {
|
||||||
// We make sure they aren't trying to use an existing player's name.
|
PlayerUtils.setKickedOtherLocation(event.getConnection().getUniqueId().toString(), unifiedJedis);
|
||||||
// This is problematic for online-mode servers as they always disconnect old clients.
|
api.kickPlayer(event.getConnection().getUniqueId(), plugin.getConfiguration().getMessages().get(RedisBungeeConfiguration.MessageType.LOGGED_IN_OTHER_LOCATION));
|
||||||
if (plugin.isOnlineMode()) {
|
|
||||||
ProxiedPlayer player = (ProxiedPlayer) plugin.getPlayer(event.getConnection().getName());
|
|
||||||
|
|
||||||
if (player != null) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
// TODO: Make it accept a BaseComponent[] like everything else.
|
|
||||||
event.setCancelReason(ONLINE_MODE_RECONNECT);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String s : plugin.getProxiesIds()) {
|
|
||||||
if (unifiedJedis.sismember("proxy:" + s + ":usersOnline", event.getConnection().getUniqueId().toString())) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
// TODO: Make it accept a BaseComponent[] like everything else.
|
|
||||||
event.setCancelReason(ALREADY_LOGGED_IN);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>RedisBungee</artifactId>
|
<artifactId>RedisBungee</artifactId>
|
||||||
<groupId>com.imaginarycode.minecraft</groupId>
|
<groupId>com.imaginarycode.minecraft</groupId>
|
||||||
<version>0.8.1-SNAPSHOT</version>
|
<version>0.9.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import com.google.common.io.ByteArrayDataInput;
|
|||||||
import com.google.common.io.ByteArrayDataOutput;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.AbstractRedisBungeeListener;
|
import com.imaginarycode.minecraft.redisbungee.api.AbstractRedisBungeeListener;
|
||||||
|
import com.imaginarycode.minecraft.redisbungee.api.config.RedisBungeeConfiguration;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils;
|
import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin;
|
||||||
import com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask;
|
import com.imaginarycode.minecraft.redisbungee.api.tasks.RedisTask;
|
||||||
@ -36,6 +37,7 @@ import com.velocitypowered.api.event.proxy.ProxyPingEvent;
|
|||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import com.velocitypowered.api.proxy.ServerConnection;
|
import com.velocitypowered.api.proxy.ServerConnection;
|
||||||
import com.velocitypowered.api.proxy.server.ServerPing;
|
import com.velocitypowered.api.proxy.server.ServerPing;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
import redis.clients.jedis.UnifiedJedis;
|
import redis.clients.jedis.UnifiedJedis;
|
||||||
|
|
||||||
@ -54,7 +56,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
|||||||
super(plugin, exemptAddresses);
|
super(plugin, exemptAddresses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe (order = PostOrder.LAST)
|
@Subscribe(order = PostOrder.LAST)
|
||||||
public void onLogin(LoginEvent event, Continuation continuation) {
|
public void onLogin(LoginEvent event, Continuation continuation) {
|
||||||
plugin.executeAsync(new RedisTask<Void>(plugin) {
|
plugin.executeAsync(new RedisTask<Void>(plugin) {
|
||||||
@Override
|
@Override
|
||||||
@ -63,23 +65,9 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
|||||||
if (!event.getResult().isAllowed()) {
|
if (!event.getResult().isAllowed()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (api.isPlayerOnline(event.getPlayer().getUniqueId())) {
|
||||||
// We make sure they aren't trying to use an existing player's name.
|
PlayerUtils.setKickedOtherLocation(event.getPlayer().getUniqueId().toString(), unifiedJedis);
|
||||||
// This is problematic for online-mode servers as they always disconnect old clients.
|
api.kickPlayer(event.getPlayer().getUniqueId(), plugin.getConfiguration().getMessages().get(RedisBungeeConfiguration.MessageType.LOGGED_IN_OTHER_LOCATION));
|
||||||
if (plugin.isOnlineMode()) {
|
|
||||||
Player player = (Player) plugin.getPlayer(event.getPlayer().getUsername());
|
|
||||||
|
|
||||||
if (player != null) {
|
|
||||||
event.setResult(ResultedEvent.ComponentResult.denied(serializer.deserialize(ONLINE_MODE_RECONNECT)));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String s : plugin.getProxiesIds()) {
|
|
||||||
if (unifiedJedis.sismember("proxy:" + s + ":usersOnline", event.getPlayer().getUniqueId().toString())) {
|
|
||||||
event.setResult(ResultedEvent.ComponentResult.denied(serializer.deserialize(ALREADY_LOGGED_IN)));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
@ -146,7 +134,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
|||||||
@Override
|
@Override
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onPluginMessage(PluginMessageEvent event) {
|
public void onPluginMessage(PluginMessageEvent event) {
|
||||||
if(!(event.getSource() instanceof ServerConnection) || !RedisBungeeVelocityPlugin.IDENTIFIERS.contains(event.getIdentifier())) {
|
if (!(event.getSource() instanceof ServerConnection) || !RedisBungeeVelocityPlugin.IDENTIFIERS.contains(event.getIdentifier())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,8 +162,8 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Set<String> players = original.stream()
|
Set<String> players = original.stream()
|
||||||
.map(uuid -> plugin.getUuidTranslator().getNameFromUuid(uuid, false))
|
.map(uuid -> plugin.getUuidTranslator().getNameFromUuid(uuid, false))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
out.writeUTF(Joiner.on(',').join(players));
|
out.writeUTF(Joiner.on(',').join(players));
|
||||||
break;
|
break;
|
||||||
case "PlayerCount":
|
case "PlayerCount":
|
||||||
@ -258,7 +246,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
|||||||
if (message.startsWith("/"))
|
if (message.startsWith("/"))
|
||||||
message = message.substring(1);
|
message = message.substring(1);
|
||||||
plugin.logInfo("Invoking command via PubSub: /" + message);
|
plugin.logInfo("Invoking command via PubSub: /" + message);
|
||||||
((RedisBungeeVelocityPlugin)plugin).getProxy().getCommandManager().executeAsync(RedisBungeeCommandSource.getSingleton(), message);
|
((RedisBungeeVelocityPlugin) plugin).getProxy().getCommandManager().executeAsync(RedisBungeeCommandSource.getSingleton(), message);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
pom.xml
2
pom.xml
@ -7,7 +7,7 @@
|
|||||||
<groupId>com.imaginarycode.minecraft</groupId>
|
<groupId>com.imaginarycode.minecraft</groupId>
|
||||||
<artifactId>RedisBungee</artifactId>
|
<artifactId>RedisBungee</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>0.8.1-SNAPSHOT</version>
|
<version>0.9.0-SNAPSHOT</version>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
Loading…
Reference in New Issue
Block a user