Skip to content
This repository was archived by the owner on Dec 5, 2020. It is now read-only.

Commit 045d26d

Browse files
authored
Merge pull request #7 from ModdedMinecraftClub/feature/remove-json
Switch to section symbol formatting; improve reliability of command output
2 parents 75f003e + 36c9de8 commit 045d26d

File tree

4 files changed

+63
-78
lines changed

4 files changed

+63
-78
lines changed

src/club/moddedminecraft/polychat/bukkitclient/BukkitClient.java

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -24,32 +24,14 @@
2424

2525
public final class BukkitClient extends JavaPlugin implements Listener {
2626

27-
private static final HashMap<Integer, ChatColor> colorHashMap = new HashMap<Integer, ChatColor>() {{
28-
put(0, ChatColor.getByChar('0'));
29-
put(1, ChatColor.getByChar('1'));
30-
put(2, ChatColor.getByChar('2'));
31-
put(3, ChatColor.getByChar('3'));
32-
put(4, ChatColor.getByChar('4'));
33-
put(5, ChatColor.getByChar('5'));
34-
put(6, ChatColor.getByChar('6'));
35-
put(7, ChatColor.getByChar('7'));
36-
put(8, ChatColor.getByChar('8'));
37-
put(9, ChatColor.getByChar('9'));
38-
put(10, ChatColor.getByChar('a'));
39-
put(11, ChatColor.getByChar('b'));
40-
put(12, ChatColor.getByChar('c'));
41-
put(13, ChatColor.getByChar('d'));
42-
put(14, ChatColor.getByChar('e'));
43-
put(15, ChatColor.getByChar('f'));
44-
}};
4527
public static boolean shutdownClean = false;
4628
public static MessageBus messageBus = null;
4729
public static Properties properties;
4830
public static File propertiesFolder;
4931
public static ReattachThread reattachThread;
5032
public static ActivePlayerThread playerThread;
51-
public static String idJson = null;
52-
public static String idJsonNoColor = null;
33+
public static String id = null;
34+
public static String idFormatted = null;
5335
public static boolean reattachKill = false;
5436
public static ArrayList<BukkitCommandSender> commands = new ArrayList<>();
5537

@@ -85,11 +67,6 @@ public static int calculateParameters(String command) {
8567
return matcher.groupCount();
8668
}
8769

88-
public static ChatColor getColor(int color) {
89-
return colorHashMap.getOrDefault(color, ChatColor.getByChar("0"));
90-
}
91-
92-
9370
public static void queueCommand(BukkitCommandSender sender) { //Holding place for commands
9471
commands.add(sender);
9572
}
@@ -107,10 +84,6 @@ public static int getMaxPlayers() {
10784
return Bukkit.getMaxPlayers();
10885
}
10986

110-
public Server getBukkitServer() {
111-
return getServer();
112-
}
113-
11487
@Override
11588
public void onEnable() {
11689
//TODO: check if the folder exists
@@ -140,7 +113,7 @@ public void run() {
140113

141114
BukkitClient.sendMessage(infoMessage);
142115

143-
ServerStatusMessage onlineMsg = new ServerStatusMessage(properties.getProperty("server_id"), idJson, (short) 1);
116+
ServerStatusMessage onlineMsg = new ServerStatusMessage(id, idFormatted, (short) 1);
144117
sendMessage(onlineMsg);
145118

146119
BukkitScheduler scheduler = getServer().getScheduler();
@@ -150,7 +123,12 @@ public void run() {
150123
for (BukkitCommandSender sender : commands) {
151124
String command = sender.getCommand();
152125
if (command != null) {
153-
getServer().dispatchCommand(sender, command);
126+
try {
127+
getServer().dispatchCommand(sender, command);
128+
sender.sendOutput();
129+
} catch (Exception e) {
130+
System.err.println(e);
131+
}
154132
}
155133
}
156134
commands.clear();
@@ -166,7 +144,7 @@ public void onDisable() {
166144
shutdownClean = true;
167145
reattachKill = true;
168146

169-
ServerStatusMessage offlineMsg = new ServerStatusMessage(properties.getProperty("server_id"), idJson, (short) 2);
147+
ServerStatusMessage offlineMsg = new ServerStatusMessage(id, idFormatted, (short) 2);
170148
sendMessage(offlineMsg);
171149

172150
try {
@@ -184,7 +162,7 @@ public void onDisable() {
184162
public void shutdownHook() {
185163
//Sends either crashed or offline depending on if shutdown happened cleanly
186164
if (!shutdownClean) {
187-
ServerStatusMessage crashMsg = new ServerStatusMessage(properties.getProperty("server_id"), idJson, (short) 3);
165+
ServerStatusMessage crashMsg = new ServerStatusMessage(id, idFormatted, (short) 3);
188166
sendMessage(crashMsg);
189167
}
190168
try {
@@ -225,18 +203,14 @@ public void handleConfiguration(File modConfigDir) {
225203
}
226204

227205
public void handlePrefix() {
228-
String idText = properties.getProperty("server_id");
229-
ChatColor color;
230-
if (!(idText.equals("empty"))) {
206+
String serverId = properties.getProperty("server_id");
207+
if (!(serverId.equals("empty"))) {
231208
int code = Integer.parseInt(properties.getProperty("id_color"));
232209
if ((code < 0) || (code > 15)) {
233-
color = ChatColor.getByChar('f');
234-
} else {
235-
color = getColor(code);
210+
code = 15;
236211
}
237-
idJsonNoColor = idText;
238-
idText = color + "" + idText;
239-
idJson = idText;
212+
id = "[" + serverId + "]";
213+
idFormatted = String.format("§%01x[%s]", code, serverId);
240214
}
241215
}
242216

src/club/moddedminecraft/polychat/bukkitclient/BukkitCommandSender.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import club.moddedminecraft.polychat.networking.io.CommandOutputMessage;
55
import org.bukkit.Server;
66
import org.bukkit.command.CommandSender;
7+
import org.bukkit.command.ConsoleCommandSender;
8+
import org.bukkit.conversations.Conversation;
9+
import org.bukkit.conversations.ConversationAbandonedEvent;
710
import org.bukkit.permissions.Permission;
811
import org.bukkit.permissions.PermissionAttachment;
912
import org.bukkit.permissions.PermissionAttachmentInfo;
@@ -14,7 +17,7 @@
1417
import java.util.regex.Matcher;
1518
import java.util.regex.Pattern;
1619

17-
public class BukkitCommandSender implements CommandSender {
20+
public class BukkitCommandSender implements ConsoleCommandSender {
1821

1922
private final CommandMessage commandMessage;
2023
private final Server server;
@@ -182,4 +185,34 @@ public boolean isOp() {
182185
public void setOp(boolean b) {
183186

184187
}
188+
189+
@Override
190+
public boolean isConversing() {
191+
return false;
192+
}
193+
194+
@Override
195+
public void acceptConversationInput(String s) {
196+
197+
}
198+
199+
@Override
200+
public boolean beginConversation(Conversation conversation) {
201+
return false;
202+
}
203+
204+
@Override
205+
public void abandonConversation(Conversation conversation) {
206+
207+
}
208+
209+
@Override
210+
public void abandonConversation(Conversation conversation, ConversationAbandonedEvent conversationAbandonedEvent) {
211+
212+
}
213+
214+
@Override
215+
public void sendRawMessage(String s) {
216+
217+
}
185218
}

src/club/moddedminecraft/polychat/bukkitclient/EventListener.java

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@ public static void handleMessage(AbstractMessage message) {
3232
ChatColor colorType = ChatColor.WHITE; //Sets a placeholder white
3333
int color = broadcastMessage.prefixColor(); //gets the color from message
3434
if ((color >= 0) && (color <= 15))
35-
colorType = BukkitClient.getColor(color); //makes sure color is valid and sets it to bukkit color type
35+
colorType = ChatColor.getByChar(String.format("%01x", color)); //makes sure color is valid and sets it to bukkit color type
3636
finalMessage = broadcastPrefix + "" + colorType + "" + broadcastMessage.getMessage() + ChatColor.WHITE; //Prefix: color, message then white to finalMessage
3737

3838
} else if (message instanceof ChatMessage) {
3939
ChatMessage chatMessage = (ChatMessage) message;
40-
if (chatMessage.getComponentJson().equals("empty")) {
40+
if (chatMessage.getFormattedMessage().equals("empty")) {
4141
String prefix = ChatColor.DARK_PURPLE + "" + "[Discord] "; //Sets prefix to discord
4242
ChatColor colorType = ChatColor.WHITE; //Sets colorType to Dark Purple for the rest of a discord message
4343
finalMessage = prefix + "" + colorType + "" + chatMessage.getUsername() + " " + chatMessage.getMessage(); //Appends the color, username and message to the finalMessage
4444
} else {
45-
finalMessage = chatMessage.getUsername() + chatMessage.getMessage();//TODO: Fix the JSON decoding
45+
finalMessage = chatMessage.getFormattedMessage();
4646
}
4747
} else if (message instanceof ServerStatusMessage) {
4848
ServerStatusMessage serverStatus = ((ServerStatusMessage) message);
@@ -60,7 +60,7 @@ public static void handleMessage(AbstractMessage message) {
6060
System.err.println("Unrecognized server state " + serverStatus.getState() + " received from " + serverStatus.getServerID());
6161
}
6262
if (finalMessage != null) {
63-
finalMessage = serverStatus.getServerID() + "" + ChatColor.WHITE + "" + finalMessage; //Server Prefix: *White* Server Status
63+
finalMessage = serverStatus.getFormattedPrefix() + "§r" + finalMessage;
6464
}
6565
} else if (message instanceof PlayerStatusMessage) {
6666
PlayerStatusMessage playerStatus = ((PlayerStatusMessage) message);
@@ -70,23 +70,14 @@ public static void handleMessage(AbstractMessage message) {
7070
} else {
7171
finalMessage = " " + playerStatus.getUserName() + " has left the game";
7272
}
73-
finalMessage = playerStatus.getServerID() + "" + ChatColor.WHITE + "" + finalMessage; //Server Prefix: *White* Player name has left/joined
7473

74+
finalMessage = playerStatus.getFormattedPrefix() + "§r" + finalMessage;
7575
}
7676
} else if (message instanceof CommandMessage) {
7777
CommandMessage commandMessage = (CommandMessage) message;
7878
final BukkitCommandSender sender = new BukkitCommandSender(commandMessage, server, BukkitClient.properties.getProperty("id_color", "15"));
7979

8080
BukkitClient.queueCommand(sender);
81-
82-
// send command output to discord in .5 seconds
83-
new Timer().schedule(new TimerTask() { //TODO: Command output returning
84-
@Override
85-
public void run() {
86-
sender.sendOutput();
87-
}
88-
}, 500);
89-
9081
}
9182
if (finalMessage != null) {
9283
Bukkit.getServer().getLogger().info(finalMessage);
@@ -99,7 +90,7 @@ public void run() {
9990
@EventHandler
10091
public void onChat(AsyncPlayerChatEvent event) {
10192
String id = BukkitClient.properties.getProperty("server_id");
102-
event.setFormat(BukkitClient.idJson + " §7%s: §r%s");
93+
event.setFormat(BukkitClient.idFormatted + " §7%s: §r%s");
10394

10495
String name = event.getPlayer().getDisplayName();
10596
String cleanName = "";
@@ -111,34 +102,20 @@ public void onChat(AsyncPlayerChatEvent event) {
111102
}
112103
}
113104

114-
String cleanedJsonBase = BukkitClient.idJson + " " + cleanName + event.getMessage();
115-
String cleanedJson = "";
116-
for (int i = 0; i < cleanedJsonBase.length(); ++i) {
117-
char c = cleanedJsonBase.charAt(i);
118-
if (Character.isAlphabetic(c) || Character.isDigit(c) || c == '[' || c == ']' || c == ':' || c == ' ') {
119-
cleanedJson += c;
120-
}
121-
}
122-
123-
String json = "{\"text\": \"" + cleanedJson + "\"}";
124-
System.out.println(BukkitClient.idJson);
125-
ChatMessage chatMessage = new ChatMessage(BukkitClient.idJsonNoColor + " " + cleanName, event.getMessage(), json);
105+
String formattedName = BukkitClient.id + " " + cleanName + ": ";
106+
ChatMessage chatMessage = new ChatMessage(formattedName, event.getMessage(), String.format(event.getFormat(), cleanName, event.getMessage()));
126107
BukkitClient.sendMessage(chatMessage);
127108
}
128109

129110
@EventHandler
130111
public void onJoin(PlayerJoinEvent event) {
131-
String id = BukkitClient.properties.getProperty("server_id");
132-
PlayerStatusMessage loginMsg = new PlayerStatusMessage(event.getPlayer().getName(), id, BukkitClient.idJson, true, false);
112+
PlayerStatusMessage loginMsg = new PlayerStatusMessage(event.getPlayer().getName(), BukkitClient.id, BukkitClient.idFormatted, true, false);
133113
BukkitClient.sendMessage(loginMsg);
134-
135-
136114
}
137115

138116
@EventHandler
139117
public void onLeave(PlayerQuitEvent event) {
140-
String id = BukkitClient.properties.getProperty("server_id");
141-
PlayerStatusMessage logoutMsg = new PlayerStatusMessage(event.getPlayer().getName(), id, BukkitClient.idJson, false, false);
118+
PlayerStatusMessage logoutMsg = new PlayerStatusMessage(event.getPlayer().getName(), BukkitClient.id, BukkitClient.idFormatted, false, false);
142119
BukkitClient.sendMessage(logoutMsg);
143120
}
144121

src/club/moddedminecraft/polychat/bukkitclient/threads/ReattachThread.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.net.UnknownHostException;
1010
import java.util.ArrayList;
1111

12+
import static club.moddedminecraft.polychat.bukkitclient.BukkitClient.idFormatted;
1213
import static club.moddedminecraft.polychat.bukkitclient.BukkitClient.reattachKill;
1314

1415
public class ReattachThread extends HeartbeatThread {
@@ -71,8 +72,8 @@ public void sendServerOnline() { //TODO
7172
BukkitClient.properties.getProperty("server_address", "DEFAULT_ADDRESS"), BukkitClient.getMaxPlayers());
7273
BukkitClient.sendMessage(infoMessage);
7374
//Reports the server as online and ready to receive players
74-
String id = BukkitClient.idJson;
75-
ServerStatusMessage statusMessage = new ServerStatusMessage(BukkitClient.properties.getProperty("server_id"), id, (short) 1);
75+
String id = BukkitClient.idFormatted;
76+
ServerStatusMessage statusMessage = new ServerStatusMessage(BukkitClient.id, idFormatted, (short) 1);
7677
BukkitClient.sendMessage(statusMessage);
7778
}
7879

0 commit comments

Comments
 (0)