Updated player data saving to always use Mojang online mode UUID's.

Updated /chwho command to show all players listening to BungeeCord
channels on every server in the network
This commit is contained in:
Aust1n46 2019-02-18 10:10:15 -05:00
parent de4ee833b4
commit 55186b4cae
11 changed files with 161 additions and 52 deletions

View File

@ -1,15 +1 @@
players: players: {}
5771a47a-74b4-35c1-aa03-6713ad69554e:
name: PhantomsCore
current: Global
ignores: ''
listen: Global,Noob,Local
mutes: ''
blockedcommands: ''
mail: ''
host: false
party: ''
filter: true
notifications: true
nickname: Phantom
date: 2014/Dec/02 17:12:40

View File

@ -1,4 +1,4 @@
name: VentureChat name: VentureChat
main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
version: 2.14.2 version: 2.14.3
author: Aust1n46 author: Aust1n46

View File

@ -283,6 +283,7 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
else { else {
for(Player p : this.getServer().getOnlinePlayers()) { for(Player p : this.getServer().getOnlinePlayers()) {
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(p); MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(p);
mcp.setName(p.getName());
mcp.setOnline(true); mcp.setOnline(true);
} }
} }
@ -785,6 +786,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
System.out.println(msgin.available() + " size on receiving end"); System.out.println(msgin.available() + " size on receiving end");
} }
String subchannel = msgin.readUTF(); String subchannel = msgin.readUTF();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(subchannel.equals("Chat")) { if(subchannel.equals("Chat")) {
String chatchannel = msgin.readUTF(); String chatchannel = msgin.readUTF();
String chat = msgin.readUTF(); String chat = msgin.readUTF();
@ -822,6 +825,50 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
} }
} }
} }
if(subchannel.equals("Chwho")) {
String identifier = msgin.readUTF();
if(identifier.equals("Get")) {
String sender = msgin.readUTF();
String chatchannel = msgin.readUTF();
List<String> listening = new ArrayList<String>();
if(ccInfo.isChannel(chatchannel)) {
for(MineverseChatPlayer mcp : onlinePlayers) {
if(mcp.getListening().contains(chatchannel)) {
String entry = "&f" + mcp.getName();
if(mcp.isMuted(chatchannel)) {
entry = "&c" + mcp.getName();
}
listening.add(entry);
}
}
}
out.writeUTF("Chwho");
out.writeUTF("Receive");
out.writeUTF(sender);
out.writeUTF(chatchannel);
out.writeInt(listening.size());
for(String s : listening) {
out.writeUTF(s);
}
player.sendPluginMessage(this, "venturechat:", stream.toByteArray());
}
if(identifier.equals("Receive")) {
String sender = msgin.readUTF();
String stringchannel = msgin.readUTF();
MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer(UUID.fromString(sender));
ChatChannel chatchannel = ccInfo.getChannelInfo(stringchannel);
String playerList = "";
int size = msgin.readInt();
for(int a = 0; a < size; a++) {
playerList += msgin.readUTF() + ChatColor.WHITE + ", ";
}
if(playerList.length() > 2) {
playerList = playerList.substring(0, playerList.length() - 2);
}
mcp.getPlayer().sendMessage(ChatColor.GOLD + "Players in Channel: " + ChatColor.valueOf(chatchannel.getColor().toUpperCase()) + chatchannel.getName());
mcp.getPlayer().sendMessage(Format.FormatStringAll(playerList));
}
}
if(subchannel.equals("RemoveMessage")) { if(subchannel.equals("RemoveMessage")) {
String hash = msgin.readUTF(); String hash = msgin.readUTF();
this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash); this.getServer().dispatchCommand(this.getServer().getConsoleSender(), "removemessage " + hash);
@ -911,8 +958,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String receiver = msgin.readUTF(); String receiver = msgin.readUTF();
MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver); MineverseChatPlayer p = MineverseChatAPI.getOnlineMineverseChatPlayer(receiver);
UUID sender = UUID.fromString(msgin.readUTF()); UUID sender = UUID.fromString(msgin.readUTF());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(!plugin.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) { if(!plugin.getConfig().getBoolean("bungeecordmessaging", true) || p == null || !p.isOnline()) {
out.writeUTF("Ignore"); out.writeUTF("Ignore");
out.writeUTF("Offline"); out.writeUTF("Offline");
@ -963,8 +1008,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String msg = msgin.readUTF(); String msg = msgin.readUTF();
String echo = msgin.readUTF(); String echo = msgin.readUTF();
String spy = msgin.readUTF(); String spy = msgin.readUTF();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
// System.out.println((p == null) + " null"); // System.out.println((p == null) + " null");
if(p != null) { if(p != null) {
// System.out.println(p.isOnline() + " online"); // System.out.println(p.isOnline() + " online");
@ -1096,8 +1139,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
int numtime = 0; int numtime = 0;
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
ChatChannel cc = ccInfo.getChannelInfo(chatchannel); ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(cc == null) { if(cc == null) {
try { try {
out.writeUTF("Mute"); out.writeUTF("Mute");
@ -1239,8 +1280,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String server = msgin.readUTF(); String server = msgin.readUTF();
Player mp = Bukkit.getPlayer(muteplayer); Player mp = Bukkit.getPlayer(muteplayer);
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(mp == null) { if(mp == null) {
try { try {
out.writeUTF("Muteall"); out.writeUTF("Muteall");
@ -1289,8 +1328,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String server = msgin.readUTF(); String server = msgin.readUTF();
Player mp = Bukkit.getPlayer(muteplayer); Player mp = Bukkit.getPlayer(muteplayer);
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mp);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(mp == null) { if(mp == null) {
try { try {
out.writeUTF("Unmuteall"); out.writeUTF("Unmuteall");
@ -1338,8 +1375,6 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener {
String server = msgin.readUTF(); String server = msgin.readUTF();
MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer); MineverseChatPlayer p = MineverseChatAPI.getMineverseChatPlayer(mutePlayer);
ChatChannel cc = ccInfo.getChannelInfo(chatchannel); ChatChannel cc = ccInfo.getChannelInfo(chatchannel);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
if(cc == null) { if(cc == null) {
try { try {
out.writeUTF("Unmute"); out.writeUTF("Unmute");

View File

@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
public final class MineverseChatAPI { public final class MineverseChatAPI {
public static MineverseChatPlayer getMineverseChatPlayer(Player player) { public static MineverseChatPlayer getMineverseChatPlayer(Player player) {
for(MineverseChatPlayer mcp : MineverseChat.players) { for(MineverseChatPlayer mcp : MineverseChat.players) {
if(mcp.getUUID().toString().equals(player.getUniqueId().toString())) { if(mcp.getName().equals(player.getName())) {
return mcp; return mcp;
} }
} }
@ -39,7 +39,7 @@ public final class MineverseChatAPI {
public static MineverseChatPlayer getOnlineMineverseChatPlayer(Player player) { public static MineverseChatPlayer getOnlineMineverseChatPlayer(Player player) {
for(MineverseChatPlayer mcp : MineverseChat.onlinePlayers) { for(MineverseChatPlayer mcp : MineverseChat.onlinePlayers) {
if(mcp.getUUID().toString().equals(player.getUniqueId().toString())) { if(mcp.getName().equals(player.getName())) {
return mcp; return mcp;
} }
} }

View File

@ -311,7 +311,7 @@ public class MineverseChatPlayer {
public void setOnline(boolean online) { public void setOnline(boolean online) {
this.online = online; this.online = online;
if(this.online) { if(this.online) {
this.player = Bukkit.getPlayer(this.uuid); this.player = Bukkit.getPlayer(name);
} }
else { else {
this.player = null; this.player = null;

View File

@ -1,6 +1,8 @@
package mineverse.Aust1n46.chat.api; package mineverse.Aust1n46.chat.api;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
@ -10,6 +12,7 @@ public class SynchronizedMineverseChatPlayer {
private HashMap<String, Integer> mutes; private HashMap<String, Integer> mutes;
private Set<UUID> ignores; private Set<UUID> ignores;
private int messagePackets; private int messagePackets;
private List<String> messageData = new ArrayList<String>();
private boolean spy; private boolean spy;
private boolean messageToggle; private boolean messageToggle;
@ -22,6 +25,18 @@ public class SynchronizedMineverseChatPlayer {
this.messageToggle = messageToggle; this.messageToggle = messageToggle;
} }
public List<String> getMessageData() {
return this.messageData;
}
public void addData(String s) {
this.messageData.add(s);
}
public void clearMessageData() {
this.messageData.clear();
}
public int getMessagePackets() { public int getMessagePackets() {
return this.messagePackets; return this.messagePackets;
} }

View File

@ -176,6 +176,55 @@ public class MineverseChatBungee extends Plugin implements Listener {
} }
} }
} }
if(subchannel.equals("Chwho")) {
String identifier = in.readUTF();
if(identifier.equals("Get")) {
String sender = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets();
smcp.clearMessageData();
out.writeUTF("Chwho");
out.writeUTF("Get");
out.writeUTF(sender);
out.writeUTF(channel);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray());
}
}
}
if(identifier.equals("Receive")) {
String sender = in.readUTF();
String channel = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.incrementMessagePackets();
int players = in.readInt();
for(int a = 0; a < players; a++) {
smcp.addData(in.readUTF());
}
int servers = 0;
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) {
servers ++;
}
}
if(smcp.getMessagePackets() >= servers) {
smcp.clearMessagePackets();
out.writeUTF("Chwho");
out.writeUTF("Receive");
out.writeUTF(sender);
out.writeUTF(channel);
out.writeInt(smcp.getMessageData().size());
for(String s : smcp.getMessageData()) {
out.writeUTF(s);
}
smcp.clearMessageData();
Server server = getProxy().getPlayer(UUID.fromString(sender)).getServer();
server.sendData("venturechat:", outstream.toByteArray());
}
}
}
if(subchannel.equals("RemoveMessage")) { if(subchannel.equals("RemoveMessage")) {
String hash = in.readUTF(); String hash = in.readUTF();
out.writeUTF("RemoveMessage"); out.writeUTF("RemoveMessage");
@ -194,12 +243,12 @@ public class MineverseChatBungee extends Plugin implements Listener {
String sender = in.readUTF(); String sender = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets(); smcp.clearMessagePackets();
for(String send : getProxy().getServers().keySet()) {
out.writeUTF("Ignore"); out.writeUTF("Ignore");
out.writeUTF("Send"); out.writeUTF("Send");
out.writeUTF(server); out.writeUTF(server);
out.writeUTF(player); out.writeUTF(player);
out.writeUTF(sender); out.writeUTF(sender);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) { if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray()); getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray());
} }
@ -253,7 +302,6 @@ public class MineverseChatBungee extends Plugin implements Listener {
String spy = in.readUTF(); String spy = in.readUTF();
SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender)); SynchronizedMineverseChatPlayer smcp = MineverseChatAPI.getSynchronizedMineverseChatPlayer(UUID.fromString(sender));
smcp.clearMessagePackets(); smcp.clearMessagePackets();
for(String send : getProxy().getServers().keySet()) {
out.writeUTF("Message"); out.writeUTF("Message");
out.writeUTF("Send"); out.writeUTF("Send");
out.writeUTF(server); out.writeUTF(server);
@ -263,6 +311,7 @@ public class MineverseChatBungee extends Plugin implements Listener {
out.writeUTF(message); out.writeUTF(message);
out.writeUTF(echo); out.writeUTF(echo);
out.writeUTF(spy); out.writeUTF(spy);
for(String send : getProxy().getServers().keySet()) {
if(getProxy().getServers().get(send).getPlayers().size() > 0) { if(getProxy().getServers().get(send).getPlayers().size() > 0) {
getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray()); getProxy().getServers().get(send).sendData("venturechat:", outstream.toByteArray());
} }

View File

@ -1,5 +1,8 @@
package mineverse.Aust1n46.chat.command.chat; package mineverse.Aust1n46.chat.command.chat;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -17,6 +20,7 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.channel.ChatChannel; import mineverse.Aust1n46.chat.channel.ChatChannel;
import mineverse.Aust1n46.chat.channel.ChatChannelInfo; import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
import mineverse.Aust1n46.chat.command.MineverseCommand; import mineverse.Aust1n46.chat.command.MineverseCommand;
import mineverse.Aust1n46.chat.utilities.UUIDFetcher;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class Chwho extends MineverseCommand { public class Chwho extends MineverseCommand {
@ -43,6 +47,25 @@ public class Chwho extends MineverseCommand {
return; return;
} }
} }
if(channel.getBungee() && sender instanceof Player) {
MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) sender);
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(byteOutStream);
try {
out.writeUTF("Chwho");
out.writeUTF("Get");
out.writeUTF(mcp.getUUID().toString());
out.writeUTF(channel.getName());
mcp.getPlayer().sendPluginMessage(plugin, "venturechat:", byteOutStream.toByteArray());
out.close();
}
catch(Exception e) {
e.printStackTrace();
}
return;
}
PluginManager pluginManager = plugin.getServer().getPluginManager(); PluginManager pluginManager = plugin.getServer().getPluginManager();
long linecount = plugin.getLineLength(); long linecount = plugin.getLineLength();
for(MineverseChatPlayer p : MineverseChat.onlinePlayers) { for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {

View File

@ -58,9 +58,9 @@ public class CommandListener implements CommandExecutor, Listener {
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException { public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) throws FileNotFoundException {
ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy"); ConfigurationSection cs = plugin.getConfig().getConfigurationSection("commandspy");
Boolean wec = cs.getBoolean("worldeditcommands", true); Boolean wec = cs.getBoolean("worldeditcommands", true);
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer(event.getPlayer());
for(MineverseChatPlayer p : MineverseChat.players) { for(MineverseChatPlayer p : MineverseChat.onlinePlayers) {
if(p.hasCommandSpy() && p.isOnline()) { if(p.hasCommandSpy()) {
if(wec) { if(wec) {
p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage()); p.getPlayer().sendMessage(ChatColor.GOLD + mcp.getName() + ": " + event.getMessage());
} }

View File

@ -17,6 +17,7 @@ import mineverse.Aust1n46.chat.channel.ChatChannelInfo;
import mineverse.Aust1n46.chat.database.PlayerData; import mineverse.Aust1n46.chat.database.PlayerData;
import mineverse.Aust1n46.chat.json.JsonFormat; import mineverse.Aust1n46.chat.json.JsonFormat;
import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.utilities.UUIDFetcher;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@ -63,12 +64,12 @@ public class LoginListener implements Listener {
} }
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) throws Exception {
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer()); MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
if(mcp == null) { if(mcp == null) {
Player player = event.getPlayer(); Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
String name = player.getName(); String name = player.getName();
UUID uuid = UUIDFetcher.getUUIDOf(name);
ChatChannel current = cc.getDefaultChannel(); ChatChannel current = cc.getDefaultChannel();
Set<UUID> ignores = new HashSet<UUID>(); Set<UUID> ignores = new HashSet<UUID>();
Set<String> listening = new HashSet<String>(); Set<String> listening = new HashSet<String>();
@ -80,6 +81,7 @@ public class LoginListener implements Listener {
mcp = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, mail, false, null, true, true, name, jsonFormat, false, false, false, true, true, true); mcp = new MineverseChatPlayer(uuid, name, current, ignores, listening, mutes, blockedCommands, mail, false, null, true, true, name, jsonFormat, false, false, false, true, true, true);
MineverseChat.players.add(mcp); MineverseChat.players.add(mcp);
} }
mcp.setName(event.getPlayer().getName());
mcp.setOnline(true); mcp.setOnline(true);
mcp.setHasPlayed(false); mcp.setHasPlayed(false);
MineverseChat.onlinePlayers.add(mcp); MineverseChat.onlinePlayers.add(mcp);
@ -94,7 +96,6 @@ public class LoginListener implements Listener {
if(mcp.getNickname().equals(mcp.getName())) { if(mcp.getNickname().equals(mcp.getName())) {
mcp.setNickname(event.getPlayer().getName()); mcp.setNickname(event.getPlayer().getName());
} }
mcp.setName(event.getPlayer().getName());
mcp.getPlayer().setDisplayName(Format.FormatStringAll(mcp.getNickname())); mcp.getPlayer().setDisplayName(Format.FormatStringAll(mcp.getNickname()));
String nick = mcp.getNickname(); String nick = mcp.getNickname();
if(nick.length() >= 16) { if(nick.length() >= 16) {

View File

@ -1,5 +1,5 @@
name: VentureChat name: VentureChat
version: 2.14.2 version: 2.14.3
main: mineverse.Aust1n46.chat.MineverseChat main: mineverse.Aust1n46.chat.MineverseChat
depend: [Vault, ProtocolLib, PlaceholderAPI] depend: [Vault, ProtocolLib, PlaceholderAPI]
softdepend: [Towny, Factions, Heroes] softdepend: [Towny, Factions, Heroes]