From d13dfc3eb2b89cf968ebc66c0c1f930ccdb8b932 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Mon, 2 Jan 2017 00:03:56 +0100
Subject: [PATCH 1/8] Added /waitwhat or /ww
---
.../chat/commands/WaitWhatCommand.java | 49 +++++++++++++++++++
src/main/resources/plugin.yml | 3 ++
2 files changed, 52 insertions(+)
create mode 100644 src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
diff --git a/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
new file mode 100644
index 0000000..7d55fc4
--- /dev/null
+++ b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
@@ -0,0 +1,49 @@
+package buttondevteam.chat.commands;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import buttondevteam.chat.ChatPlayer;
+import buttondevteam.lib.TBMCPlayer;
+import buttondevteam.lib.chat.Channel;
+import buttondevteam.lib.chat.TBMCChatAPI;
+import buttondevteam.lib.chat.TBMCCommandBase;
+
+public class WaitWhatCommand extends TBMCCommandBase {
+ @Override
+ public boolean OnCommand(CommandSender sender, String alias, String[] args) {
+ Channel channel;
+ if (sender instanceof Player && ((Player) sender).isOnline())
+ channel = TBMCPlayer.getPlayer((Player) sender).asPluginPlayer(ChatPlayer.class).CurrentChannel;
+ else
+ channel = Channel.GlobalChat;
+ final String message;
+ if (args.length == 0)
+ message = "wait what";
+ else
+ message = "wait " + Arrays.stream(args).collect(Collectors.joining(" ")) + " what";
+ TBMCChatAPI.SendChatMessage(channel, sender, message);
+ return true;
+ }
+
+ @Override
+ public String[] GetHelpText(String alias) {
+ return new String[] { //
+ "§6--- Wait what ----", //
+ "Wait what" //
+ };
+ }
+
+ @Override
+ public boolean GetPlayerOnly() {
+ return false;
+ }
+
+ @Override
+ public boolean GetModOnly() {
+ return false;
+ }
+}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 0358249..e7e3e4e 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -23,6 +23,9 @@ commands:
description: Shrug.
yeehaw:
description: This command makes you yeehaw.
+ waitwhat:
+ description: Wait what.
+ aliases: ww
author: NorbiPeti
depend:
- Essentials
From a36c6b564b28e432a5f5536477f2385a31b9ae04 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Mon, 2 Jan 2017 01:19:38 +0100
Subject: [PATCH 2/8] Applied changes
---
src/main/java/buttondevteam/chat/ChatPlayer.java | 2 +-
src/main/java/buttondevteam/chat/ChatProcessing.java | 2 +-
src/main/java/buttondevteam/chat/PluginMain.java | 4 ++--
.../java/buttondevteam/chat/commands/ChatonlyCommand.java | 2 +-
src/main/java/buttondevteam/chat/commands/OOCCommand.java | 2 +-
.../java/buttondevteam/chat/commands/WaitWhatCommand.java | 2 +-
.../java/buttondevteam/chat/commands/YeehawCommand.java | 2 +-
.../chat/commands/appendtext/AppendTextCommandBase.java | 2 +-
.../buttondevteam/chat/commands/ucmds/AcceptCommand.java | 2 +-
.../java/buttondevteam/chat/commands/ucmds/CCommand.java | 2 +-
.../buttondevteam/chat/commands/ucmds/IgnoreCommand.java | 2 +-
.../buttondevteam/chat/commands/ucmds/InfoCommand.java | 4 ++--
.../chat/commands/ucmds/admin/PlayerInfoCommand.java | 2 +-
.../chat/commands/ucmds/admin/SetFlairCommand.java | 2 +-
.../chat/listener/PlayerJoinLeaveListener.java | 8 ++++----
.../java/buttondevteam/chat/listener/PlayerListener.java | 7 ++++---
16 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/src/main/java/buttondevteam/chat/ChatPlayer.java b/src/main/java/buttondevteam/chat/ChatPlayer.java
index 9af729c..70a563e 100644
--- a/src/main/java/buttondevteam/chat/ChatPlayer.java
+++ b/src/main/java/buttondevteam/chat/ChatPlayer.java
@@ -6,8 +6,8 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.*;
+import buttondevteam.lib.player.TBMCPlayer;
public class ChatPlayer extends TBMCPlayer {
public String getUserName() {
diff --git a/src/main/java/buttondevteam/chat/ChatProcessing.java b/src/main/java/buttondevteam/chat/ChatProcessing.java
index 8cf9b81..c4f91d1 100644
--- a/src/main/java/buttondevteam/chat/ChatProcessing.java
+++ b/src/main/java/buttondevteam/chat/ChatProcessing.java
@@ -22,9 +22,9 @@ import buttondevteam.chat.commands.UnlolCommand;
import buttondevteam.chat.commands.ucmds.admin.DebugCommand;
import buttondevteam.chat.formatting.*;
import buttondevteam.lib.TBMCCoreAPI;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TellrawSerializableEnum;
+import buttondevteam.lib.player.TBMCPlayer;
import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.lib.chat.*;
diff --git a/src/main/java/buttondevteam/chat/PluginMain.java b/src/main/java/buttondevteam/chat/PluginMain.java
index 2a131e9..4bb610e 100644
--- a/src/main/java/buttondevteam/chat/PluginMain.java
+++ b/src/main/java/buttondevteam/chat/PluginMain.java
@@ -17,8 +17,8 @@ import org.htmlcleaner.TagNode;
import buttondevteam.chat.commands.YeehawCommand;
import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.lib.TBMCCoreAPI;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.TBMCChatAPI;
+import buttondevteam.lib.player.TBMCPlayer;
import com.earth2me.essentials.Essentials;
import com.google.gson.JsonArray;
@@ -57,7 +57,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
* This variable is used as a cache for flair state checking when reading the flair thread.
*
*
- * It's used because normally it has to load all associated player files every time to read the filename
+ * It's used because normally it has to load all associated player files every time to read the flair state
*
*/
private Set PlayersWithFlairs = new HashSet<>();
diff --git a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
index 90a71f9..cfb56b3 100644
--- a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
@@ -5,8 +5,8 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.TBMCCommandBase;
+import buttondevteam.lib.player.TBMCPlayer;
public final class ChatonlyCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/OOCCommand.java b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
index c297a21..1bfce80 100644
--- a/src/main/java/buttondevteam/chat/commands/OOCCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
@@ -4,8 +4,8 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.TBMCCommandBase;
+import buttondevteam.lib.player.TBMCPlayer;
public final class OOCCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
index 7d55fc4..41a883b 100644
--- a/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
@@ -7,10 +7,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.chat.TBMCCommandBase;
+import buttondevteam.lib.player.TBMCPlayer;
public class WaitWhatCommand extends TBMCCommandBase {
@Override
diff --git a/src/main/java/buttondevteam/chat/commands/YeehawCommand.java b/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
index 1c7117d..a8f6d94 100644
--- a/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
@@ -4,8 +4,8 @@ import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import buttondevteam.lib.TBMCYEEHAWEvent;
import buttondevteam.lib.chat.TBMCCommandBase;
+import buttondevteam.lib.player.TBMCYEEHAWEvent;
public class YeehawCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
index a81d352..fedc642 100644
--- a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
+++ b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
@@ -5,10 +5,10 @@ import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.listener.PlayerListener;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.chat.TBMCCommandBase;
+import buttondevteam.lib.player.TBMCPlayer;
public abstract class AppendTextCommandBase extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
index 4eb8bad..981d9e7 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
@@ -10,7 +10,7 @@ import buttondevteam.chat.FlairStates;
import buttondevteam.chat.PlayerJoinTimerTask;
import buttondevteam.chat.PluginMain;
import buttondevteam.lib.TBMCCoreAPI;
-import buttondevteam.lib.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayer;
public class AcceptCommand extends UCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
index f0eeef7..b122092 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
@@ -5,8 +5,8 @@ import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.PluginMain;
-import buttondevteam.lib.TBMCPlayer;
import buttondevteam.lib.chat.*;
+import buttondevteam.lib.player.TBMCPlayer;
public class CCommand extends UCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
index 9bd5c5c..7747b33 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
@@ -5,7 +5,7 @@ import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.FlairStates;
-import buttondevteam.lib.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayer;
public final class IgnoreCommand extends UCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
index d5ce558..522f2e9 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
@@ -2,8 +2,8 @@ package buttondevteam.chat.commands.ucmds;
import org.bukkit.command.CommandSender;
-import buttondevteam.lib.TBMCPlayer;
-import buttondevteam.lib.TBMCPlayer.InfoTarget;
+import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayer.InfoTarget;
public class InfoCommand extends UCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
index 5a2401d..a181957 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
@@ -3,7 +3,7 @@ package buttondevteam.chat.commands.ucmds.admin;
import org.bukkit.command.CommandSender;
import buttondevteam.chat.ChatPlayer;
-import buttondevteam.lib.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayer;
public class PlayerInfoCommand extends AdminCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
index 1f0934f..419d2ef 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.FlairStates;
-import buttondevteam.lib.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayer;
public class SetFlairCommand extends AdminCommandBase {
diff --git a/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java b/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
index 8d8aff2..84119bc 100644
--- a/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
+++ b/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
@@ -17,10 +17,10 @@ import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.FlairStates;
import buttondevteam.chat.PlayerJoinTimerTask;
import buttondevteam.chat.PluginMain;
-import buttondevteam.lib.TBMCPlayerAddEvent;
-import buttondevteam.lib.TBMCPlayerJoinEvent;
-import buttondevteam.lib.TBMCPlayerLoadEvent;
-import buttondevteam.lib.TBMCPlayerSaveEvent;
+import buttondevteam.lib.player.TBMCPlayerAddEvent;
+import buttondevteam.lib.player.TBMCPlayerJoinEvent;
+import buttondevteam.lib.player.TBMCPlayerLoadEvent;
+import buttondevteam.lib.player.TBMCPlayerSaveEvent;
public class PlayerJoinLeaveListener implements Listener {
diff --git a/src/main/java/buttondevteam/chat/listener/PlayerListener.java b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
index e6234e0..99988fe 100644
--- a/src/main/java/buttondevteam/chat/listener/PlayerListener.java
+++ b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
@@ -31,11 +31,12 @@ import buttondevteam.chat.ChatProcessing;
import buttondevteam.chat.PluginMain;
import buttondevteam.lib.TBMCChatEvent;
import buttondevteam.lib.TBMCCoreAPI;
-import buttondevteam.lib.TBMCPlayer;
-import buttondevteam.lib.TBMCPlayer.InfoTarget;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TBMCChatAPI;
-import buttondevteam.lib.TBMCPlayerGetInfoEvent;
+import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerGetInfoEvent;
+import buttondevteam.lib.player.TBMCPlayer.InfoTarget;
+
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
From fa95891a6af0353e4abf3ba5afd6e3751b98b285 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Sun, 2 Apr 2017 00:01:49 +0200
Subject: [PATCH 3/8] Updated ButtonChat to the newer system
---
.../java/buttondevteam/chat/ChatPlayer.java | 120 +++++++-----------
.../buttondevteam/chat/ChatProcessing.java | 35 ++---
.../java/buttondevteam/chat/PluginMain.java | 34 ++---
.../chat/commands/ChatonlyCommand.java | 2 +-
.../chat/commands/OOCCommand.java | 2 +-
.../chat/commands/WaitWhatCommand.java | 2 +-
.../appendtext/AppendTextCommandBase.java | 3 +-
.../chat/commands/ucmds/AcceptCommand.java | 20 +--
.../chat/commands/ucmds/CCommand.java | 2 +-
.../chat/commands/ucmds/IgnoreCommand.java | 12 +-
.../chat/commands/ucmds/InfoCommand.java | 13 +-
.../ucmds/admin/PlayerInfoCommand.java | 16 +--
.../commands/ucmds/admin/SetFlairCommand.java | 16 +--
.../listener/PlayerJoinLeaveListener.java | 24 +---
.../chat/listener/PlayerListener.java | 39 +++---
15 files changed, 158 insertions(+), 182 deletions(-)
diff --git a/src/main/java/buttondevteam/chat/ChatPlayer.java b/src/main/java/buttondevteam/chat/ChatPlayer.java
index 70a563e..a345e2f 100644
--- a/src/main/java/buttondevteam/chat/ChatPlayer.java
+++ b/src/main/java/buttondevteam/chat/ChatPlayer.java
@@ -7,69 +7,42 @@ import org.bukkit.Location;
import org.bukkit.entity.Player;
import buttondevteam.lib.chat.*;
-import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.EnumPlayerData;
+import buttondevteam.lib.player.PlayerClass;
+import buttondevteam.lib.player.PlayerData;
+import buttondevteam.lib.player.TBMCPlayerBase;
-public class ChatPlayer extends TBMCPlayer {
- public String getUserName() {
- return getData();
+@PlayerClass(pluginname = "ButtonChat")
+public class ChatPlayer extends TBMCPlayerBase {
+ public PlayerData UserName() {
+ return data();
}
- public void setUserName(String name) {
- setData(name);
+ public List UserNames() {
+ PlayerData> data = data();
+ if (data.get() == null)
+ data.set(new ArrayList());
+ return data.get();
}
- public List getUserNames() {
- List data = getData();
- if (data == null)
- setUserNames(data = new ArrayList());
- return data;
+ public PlayerData FlairTime() {
+ return data();
}
- public void setUserNames(List names) {
- setData(names);
+ public EnumPlayerData FlairState() {
+ return dataEnum(FlairStates.class);
}
- public short getFlairTime() {
- return getIntData(Short.class).orElse(FlairTimeNone);
+ public PlayerData FCount() {
+ return data();
}
- private void setFlairTime(short time) {
- setIntData(time);
+ public PlayerData FDeaths() {
+ return data();
}
- public FlairStates getFlairState() {
- FlairStates data = getEnumData(FlairStates.class);
- if (data == null)
- setFlairState(data = FlairStates.NoComment);
- return data;
- }
-
- public void setFlairState(FlairStates state) {
- setEnumData(state);
- }
-
- public int getFCount() {
- return getIntData(Integer.class).orElse(0);
- }
-
- public void setFCount(int count) {
- setIntData(count);
- }
-
- public int getFDeaths() {
- return getIntData(Integer.class).orElse(0);
- }
-
- public void setFDeaths(int count) {
- setIntData(count);
- }
-
- public boolean getFlairCheater() {
- return getBoolData();
- }
-
- private void setFlairCheater(boolean cheater) {
- setData(cheater);
+ public PlayerData FlairCheater() {
+ return data();
}
public boolean RPMode = true;
@@ -83,9 +56,9 @@ public class ChatPlayer extends TBMCPlayer {
public boolean ChatOnly = false;
public int LoginWarningCount = 0;
- public static final short FlairTimeNonPresser = -1;
- public static final short FlairTimeCantPress = -2;
- public static final short FlairTimeNone = -3;
+ public static final int FlairTimeNonPresser = -1;
+ public static final int FlairTimeCantPress = -2;
+ public static final int FlairTimeNone = -3;
/**
* Gets the player's flair, optionally formatting for Minecraft.
@@ -95,14 +68,15 @@ public class ChatPlayer extends TBMCPlayer {
* @return The flair
*/
public String GetFormattedFlair(boolean noformats) {
- if (getFlairTime() == FlairTimeCantPress)
+ int time = FlairTime().getOrDefault(FlairTimeNone);
+ if (time == FlairTimeCantPress)
return String.format(noformats ? "(can't press)" : "§r(--s)§r");
- if (getFlairTime() == FlairTimeNonPresser)
+ if (time == FlairTimeNonPresser)
return String.format(noformats ? "(non-presser)" : "§7(--s)§r");
- if (getFlairTime() == FlairTimeNone)
+ if (time == FlairTimeNone)
return "";
- return noformats ? String.format("(%ss)", getFlairTime())
- : String.format("§%x(%ss)§r", GetFlairColor(), getFlairTime());
+ return noformats ? String.format("(%ss)", FlairTime().get())
+ : String.format("§%x(%ss)§r", GetFlairColor(), FlairTime().get());
}
/**
@@ -114,14 +88,14 @@ public class ChatPlayer extends TBMCPlayer {
return GetFormattedFlair(false);
}
- public void SetFlair(short time) {
- setFlairTime(time);
+ public void SetFlair(int time) {
+ FlairTime().set(time);
FlairUpdate();
}
- public void SetFlair(short time, boolean cheater) {
- setFlairTime(time);
- setFlairCheater(cheater);
+ public void SetFlair(int time, boolean cheater) {
+ FlairTime().set(time);
+ FlairCheater().set(cheater);
FlairUpdate();
}
@@ -129,29 +103,29 @@ public class ChatPlayer extends TBMCPlayer {
// Flairs from Command Block The Button - Teams
// PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add()
- Player p = Bukkit.getPlayer(getUuid());
+ Player p = Bukkit.getPlayer(uuid);
if (p != null)
p.setPlayerListName(String.format("%s%s", p.getName(), GetFormattedFlair()));
}
public short GetFlairColor() {
- if (getFlairCheater())
+ if (FlairCheater().get())
return 0x5;
- if (getFlairTime() == -1)
+ if (FlairTime().get() == -1)
return 0x7;
- else if (getFlairTime() == -2)
+ else if (FlairTime().get() == -2)
return 0xf;
- else if (getFlairTime() <= 60 && getFlairTime() >= 52)
+ else if (FlairTime().get() <= 60 && FlairTime().get() >= 52)
return 0x5;
- else if (getFlairTime() <= 51 && getFlairTime() >= 42)
+ else if (FlairTime().get() <= 51 && FlairTime().get() >= 42)
return 0x9;
- else if (getFlairTime() <= 41 && getFlairTime() >= 32)
+ else if (FlairTime().get() <= 41 && FlairTime().get() >= 32)
return 0xa;
- else if (getFlairTime() <= 31 && getFlairTime() >= 22)
+ else if (FlairTime().get() <= 31 && FlairTime().get() >= 22)
return 0xe;
- else if (getFlairTime() <= 21 && getFlairTime() >= 11)
+ else if (FlairTime().get() <= 21 && FlairTime().get() >= 11)
return 0x6;
- else if (getFlairTime() <= 11 && getFlairTime() >= 0)
+ else if (FlairTime().get() <= 11 && FlairTime().get() >= 0)
return 0xc;
return 0xf;
}
diff --git a/src/main/java/buttondevteam/chat/ChatProcessing.java b/src/main/java/buttondevteam/chat/ChatProcessing.java
index c4f91d1..de7b1ed 100644
--- a/src/main/java/buttondevteam/chat/ChatProcessing.java
+++ b/src/main/java/buttondevteam/chat/ChatProcessing.java
@@ -25,6 +25,7 @@ import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TellrawSerializableEnum;
import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerBase;
import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.lib.chat.*;
@@ -91,7 +92,7 @@ public class ChatProcessing {
ChatPlayer mp = null;
if (player != null)
- mp = TBMCPlayer.getPlayer(player).asPluginPlayer(ChatPlayer.class);
+ mp = TBMCPlayerBase.getPlayer(player.getUniqueId(), ChatPlayer.class);
String msg = message.toLowerCase();
if (msg.contains("lol")) {
@@ -162,7 +163,7 @@ public class ChatProcessing {
.warning("Error: Can't find player " + match + " but was reported as online.");
return "§c" + match + "§r";
}
- ChatPlayer mpp = TBMCPlayer.getPlayer(p).asPluginPlayer(ChatPlayer.class);
+ ChatPlayer mpp = TBMCPlayer.getPlayer(p.getUniqueId(), ChatPlayer.class);
if (PlayerListener.NotificationSound == null)
p.playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1.0f, 0.5f); // TODO: Airhorn
else
@@ -230,21 +231,21 @@ public class ChatProcessing {
.addExtra(new TellrawPart(String.format("World: %s\n",
(player != null ? player.getWorld().getName()
: "-"))))
- .addExtra(
- new TellrawPart(String.format("Respect: %s%s%s",
- (mp != null ? (mp.getFCount()
- / (double) mp.getFDeaths())
- : "Infinite"),
- (mp != null && mp.getUserName() != null
- && !mp.getUserName().isEmpty()
- ? "\nUserName: "
- + mp.getUserName()
- : ""),
- (mp != null && mp.getPlayerName()
- .equals("\nAlpha_Bacca44")
- ? "\nDeaths: "
- + PlayerListener.AlphaDeaths
- : ""))))
+ .addExtra(new TellrawPart(String.format(
+ "Respect: %s%s%s",
+ (mp != null ? (mp.FCount().getOrDefault(0)
+ / (double) mp.FDeaths().getOrDefault(0))
+ : "Infinite"),
+ (mp != null && mp.UserName().get() != null
+ && !mp.UserName().get().isEmpty()
+ ? "\nUserName: "
+ + mp.UserName().get()
+ : ""),
+ (mp != null && mp.PlayerName().get()
+ .equals("\nAlpha_Bacca44")
+ ? "\nDeaths: "
+ + PlayerListener.AlphaDeaths
+ : ""))))
.addExtra(new TellrawPart("\nFor more, do /u info "
+ sender.getName())))));
json.addExtra(new TellrawPart("> "));
diff --git a/src/main/java/buttondevteam/chat/PluginMain.java b/src/main/java/buttondevteam/chat/PluginMain.java
index 4bb610e..e1d3363 100644
--- a/src/main/java/buttondevteam/chat/PluginMain.java
+++ b/src/main/java/buttondevteam/chat/PluginMain.java
@@ -18,7 +18,7 @@ import buttondevteam.chat.commands.YeehawCommand;
import buttondevteam.chat.listener.PlayerListener;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.TBMCChatAPI;
-import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerBase;
import com.earth2me.essentials.Essentials;
import com.google.gson.JsonArray;
@@ -139,16 +139,16 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
ign = ign.trim();
if (PlayersWithFlairs.contains(ign))
continue;
- try (ChatPlayer mp = TBMCPlayer.getFromName(ign).asPluginPlayer(ChatPlayer.class)) { // Loads player file
+ try (ChatPlayer mp = TBMCPlayerBase.getFromName(ign, ChatPlayer.class)) { // Loads player file
if (mp == null)
continue;
/*
* if (!JoinedBefore(mp, 2015, 6, 5)) continue;
*/
- if (!mp.getUserNames().contains(author))
- mp.getUserNames().add(author);
- if (mp.getFlairState().equals(FlairStates.NoComment)) {
- mp.setFlairState(FlairStates.Commented);
+ if (!mp.UserNames().contains(author))
+ mp.UserNames().add(author);
+ if (mp.FlairState().getOrDefault(FlairStates.NoComment).equals(FlairStates.NoComment)) {
+ mp.FlairState().set(FlairStates.Commented);
ConfirmUserMessage(mp);
}
PlayersWithFlairs.add(ign); // Don't redownload even if flair isn't accepted
@@ -176,8 +176,8 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
public void DownloadFlair(ChatPlayer mp) throws MalformedURLException, IOException {
String[] flairdata = TBMCCoreAPI
- .DownloadString("http://karmadecay.com/thebutton-data.php?users=" + mp.getUserName()).replace("\"", "")
- .split(":");
+ .DownloadString("http://karmadecay.com/thebutton-data.php?users=" + mp.UserName().get())
+ .replace("\"", "").split(":");
String flair;
if (flairdata.length > 1)
flair = flairdata[1];
@@ -188,12 +188,12 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
flairclass = flairdata[2];
else
flairclass = "unknown";
- SetFlair(mp, flair, flairclass, mp.getUserName());
+ SetFlair(mp, flair, flairclass, mp.UserName().get());
}
private void SetFlair(ChatPlayer p, String text, String flairclass, String username) {
- p.setUserName(username);
- p.setFlairState(FlairStates.Recognised);
+ p.UserName().set(username);
+ p.FlairState().set(FlairStates.Recognised);
switch (flairclass) {
case "cheater":
p.SetFlair(Short.parseShort(text), true);
@@ -209,9 +209,9 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
p.SetFlair(ChatPlayer.FlairTimeCantPress);
}
} catch (Exception e) {
- p.setFlairState(FlairStates.Commented); // Flair unknown
+ p.FlairState().set(FlairStates.Commented); // Flair unknown
p.SetFlair(ChatPlayer.FlairTimeNone);
- TBMCCoreAPI.SendException("Error while checking join date for player " + p.getPlayerName() + "!", e);
+ TBMCCoreAPI.SendException("Error while checking join date for player " + p.PlayerName() + "!", e);
}
return;
default:
@@ -225,7 +225,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
}
public static boolean JoinedBefore(ChatPlayer mp, int year, int month, int day) throws Exception {
- URL url = new URL("https://www.reddit.com/u/" + mp.getUserName());
+ URL url = new URL("https://www.reddit.com/u/" + mp.UserName());
URLConnection con = url.openConnection();
con.setRequestProperty("User-Agent", "TheButtonAutoFlair");
InputStream in = con.getInputStream();
@@ -243,9 +243,9 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
}
public static void ConfirmUserMessage(ChatPlayer mp) {
- Player p = Bukkit.getPlayer(mp.getUuid());
- if (mp.getFlairState().equals(FlairStates.Commented) && p != null)
- if (mp.getUserNames().size() > 1)
+ Player p = Bukkit.getPlayer(mp.getUUID());
+ if (mp.FlairState().get().equals(FlairStates.Commented) && p != null)
+ if (mp.UserNames().size() > 1)
p.sendMessage(
"§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r");
else
diff --git a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
index cfb56b3..1ebb8c8 100644
--- a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
@@ -22,7 +22,7 @@ public final class ChatonlyCommand extends TBMCCommandBase {
@Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
Player player = (Player) sender;
- ChatPlayer p = TBMCPlayer.getPlayerAs(player, ChatPlayer.class);
+ ChatPlayer p = TBMCPlayer.getPlayer(player.getUniqueId(), ChatPlayer.class);
p.ChatOnly = true;
player.setGameMode(GameMode.SPECTATOR);
player.sendMessage("§bChat-only mode enabled. You are now invincible.");
diff --git a/src/main/java/buttondevteam/chat/commands/OOCCommand.java b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
index 1bfce80..8773e87 100644
--- a/src/main/java/buttondevteam/chat/commands/OOCCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
@@ -22,7 +22,7 @@ public final class OOCCommand extends TBMCCommandBase {
if (args.length == 0) {
return false;
} else {
- final ChatPlayer cp = TBMCPlayer.getPlayerAs(player, ChatPlayer.class);
+ final ChatPlayer cp = TBMCPlayer.getPlayer(player.getUniqueId(), ChatPlayer.class);
cp.RPMode = false;
String message = "";
for (String arg : args)
diff --git a/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
index 41a883b..3e04c57 100644
--- a/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/WaitWhatCommand.java
@@ -17,7 +17,7 @@ public class WaitWhatCommand extends TBMCCommandBase {
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
Channel channel;
if (sender instanceof Player && ((Player) sender).isOnline())
- channel = TBMCPlayer.getPlayer((Player) sender).asPluginPlayer(ChatPlayer.class).CurrentChannel;
+ channel = TBMCPlayer.getPlayer(((Player) sender).getUniqueId(), ChatPlayer.class).CurrentChannel;
else
channel = Channel.GlobalChat;
final String message;
diff --git a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
index fedc642..0a566ce 100644
--- a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
+++ b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
@@ -23,7 +23,8 @@ public abstract class AppendTextCommandBase extends TBMCCommandBase {
msg = args[i] + " " + msg;
if (sender instanceof Player)
TBMCChatAPI.SendChatMessage(
- TBMCPlayer.getPlayer((Player) sender).asPluginPlayer(ChatPlayer.class).CurrentChannel, sender, msg);
+ TBMCPlayer.getPlayer(((Player) sender).getUniqueId(), ChatPlayer.class).CurrentChannel, sender,
+ msg);
else if (sender.isOp())
TBMCChatAPI.SendChatMessage(PlayerListener.ConsoleChannel, sender, msg);
else
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
index 981d9e7..14a84aa 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/AcceptCommand.java
@@ -25,21 +25,21 @@ public class AcceptCommand extends UCommandBase {
@Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
final Player player = (Player) sender;
- ChatPlayer p = TBMCPlayer.getPlayerAs(player, ChatPlayer.class);
- if (args.length < 1 && p.getUserNames().size() > 1) {
+ ChatPlayer p = TBMCPlayer.getPlayer(player.getUniqueId(), ChatPlayer.class);
+ if (args.length < 1 && p.UserNames().size() > 1) {
player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept ");
StringBuilder sb = new StringBuilder();
sb.append("§6Usernames:");
- for (String username : p.getUserNames())
+ for (String username : p.UserNames())
sb.append(" ").append(username);
player.sendMessage(sb.toString());
return true;
}
- if (p.getFlairState().equals(FlairStates.NoComment) || p.getUserNames().size() == 0) {
+ if (p.FlairState().get().equals(FlairStates.NoComment) || p.UserNames().size() == 0) {
player.sendMessage("§cError: You need to write your username to the reddit thread at /r/ChromaGamers§r");
return true;
}
- if (args.length > 0 && !p.getUserNames().contains(args[0])) {
+ if (args.length > 0 && !p.UserNames().contains(args[0])) {
player.sendMessage("§cError: Unknown name: " + args[0] + "§r");
return true;
}
@@ -48,14 +48,14 @@ public class AcceptCommand extends UCommandBase {
return true;
}
- if ((args.length > 0 ? args[0] : p.getUserNames().get(0)).equals(p.getUserName())) {
+ if ((args.length > 0 ? args[0] : p.UserNames().get(0)).equals(p.UserName().get())) {
player.sendMessage("§cYou already have this user's flair.§r");
return true;
}
if (args.length > 0)
- p.setUserName(args[0]);
+ p.UserName().set(args[0]);
else
- p.setUserName(p.getUserNames().get(0));
+ p.UserName().set(p.UserNames().get(0));
player.sendMessage("§bObtaining flair...");
p.Working = true;
@@ -74,14 +74,14 @@ public class AcceptCommand extends UCommandBase {
return;
}
- if (mp.getFlairState().equals(FlairStates.Commented)) {
+ if (mp.FlairState().get().equals(FlairStates.Commented)) {
player.sendMessage(
"Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible.");
mp.Working = false;
return;
}
String flair = mp.GetFormattedFlair();
- mp.setFlairState(FlairStates.Accepted);
+ mp.FlairState().set(FlairStates.Accepted);
PluginMain.ConfirmUserMessage(mp);
player.sendMessage("§bYour flair has been set:§r " + flair);
mp.Working = false;
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
index b122092..e0be2d0 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/CCommand.java
@@ -19,7 +19,7 @@ public class CCommand extends UCommandBase {
@Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
Player player = (Player) sender;
- ChatPlayer p = TBMCPlayer.getPlayerAs(player, ChatPlayer.class);
+ ChatPlayer p = TBMCPlayer.getPlayer(player.getUniqueId(), ChatPlayer.class);
if (args.length < 1) {
if (PluginMain.permission.has(player, "tbmc.rainbow")) {
p.RainbowPresserColorMode = !p.RainbowPresserColorMode;
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
index 7747b33..b93f59c 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/IgnoreCommand.java
@@ -19,19 +19,19 @@ public final class IgnoreCommand extends UCommandBase {
@Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
final Player player = (Player) sender;
- ChatPlayer p = TBMCPlayer.getPlayerAs(player, ChatPlayer.class);
- if (p.getFlairState().equals(FlairStates.Accepted)) {
+ ChatPlayer p = TBMCPlayer.getPlayer(player.getUniqueId(), ChatPlayer.class);
+ if (p.FlairState().get().equals(FlairStates.Accepted)) {
player.sendMessage("§cYou can only ignore the \"write your name in the thread\" message.");
return true;
}
- if (p.getFlairState().equals(FlairStates.Commented)) {
+ if (p.FlairState().get().equals(FlairStates.Commented)) {
player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you.");
return true;
}
- if (!p.getFlairState().equals(FlairStates.Ignored)) {
- p.setFlairState(FlairStates.Ignored);
+ if (!p.FlairState().get().equals(FlairStates.Ignored)) {
+ p.FlairState().set(FlairStates.Ignored);
p.SetFlair(ChatPlayer.FlairTimeNone);
- p.setUserName("");
+ p.UserName().set("");
player.sendMessage("§bYou have ignored the message.§r");
} else
player.sendMessage("§cYou already ignored the message.§r");
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
index 522f2e9..3303884 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/InfoCommand.java
@@ -2,8 +2,10 @@ package buttondevteam.chat.commands.ucmds;
import org.bukkit.command.CommandSender;
+import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.player.TBMCPlayer;
-import buttondevteam.lib.player.TBMCPlayer.InfoTarget;
+import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
+import buttondevteam.lib.player.TBMCPlayerBase;
public class InfoCommand extends UCommandBase {
@@ -12,7 +14,7 @@ public class InfoCommand extends UCommandBase {
return new String[] { //
"§6---- User information ----", //
"Get some information known about the user.", //
- "Usage: /"+alias+" info " //
+ "Usage: /" + alias + " info " //
};
}
@@ -27,15 +29,18 @@ public class InfoCommand extends UCommandBase {
return false;
if (args[0].equalsIgnoreCase("console") || args[0].equalsIgnoreCase("server")
|| args[0].equalsIgnoreCase("@console")) {
- sender.sendMessage("The server console."); // TODO: Console login? The Discord thing might replace it
+ sender.sendMessage("The server console.");
return true;
}
- try (TBMCPlayer p = TBMCPlayer.getFromName(args[0])) {
+ try (TBMCPlayer p = TBMCPlayerBase.getFromName(args[0], TBMCPlayer.class)) {
if (p == null) {
sender.sendMessage("§cThe specified player cannot be found");
return true;
}
sender.sendMessage(p.getInfo(InfoTarget.MCCommand));
+ } catch (Exception e) {
+ TBMCCoreAPI.SendException("Error while getting player information!", e);
+ sender.sendMessage("§cError while getting player information!");
}
return true;
}
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
index a181957..ea09149 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/admin/PlayerInfoCommand.java
@@ -3,7 +3,7 @@ package buttondevteam.chat.commands.ucmds.admin;
import org.bukkit.command.CommandSender;
import buttondevteam.chat.ChatPlayer;
-import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerBase;
public class PlayerInfoCommand extends AdminCommandBase {
@@ -19,23 +19,23 @@ public class PlayerInfoCommand extends AdminCommandBase {
if (args.length == 0) {
return false;
}
- ChatPlayer p = TBMCPlayer.getFromName(args[0]).asPluginPlayer(ChatPlayer.class);
+ ChatPlayer p = TBMCPlayerBase.getFromName(args[0], ChatPlayer.class);
if (p == null) {
sender.sendMessage("§cPlayer not found: " + args[0] + "§r");
return true;
}
StringBuilder sb = new StringBuilder();
sb.append("§6Usernames:");
- for (String username : p.getUserNames())
+ for (String username : p.UserNames())
sb.append(" ").append(username);
sender.sendMessage(new String[] { //
- "Player name: " + p.getPlayerName(), //
+ "Player name: " + p.PlayerName(), //
"User flair: " + p.GetFormattedFlair(), //
- "Username: " + p.getUserName(), //
- "Flair state: " + p.getFlairState(), //
+ "Username: " + p.UserName(), //
+ "Flair state: " + p.FlairState(), //
sb.toString(), //
- "FCount: " + p.getFCount(), //
- "FDeaths: " + p.getFDeaths() //
+ "FCount: " + p.FCount(), //
+ "FDeaths: " + p.FDeaths() //
});
return true;
}
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
index 419d2ef..80d405b 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/admin/SetFlairCommand.java
@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.FlairStates;
-import buttondevteam.lib.player.TBMCPlayer;
+import buttondevteam.lib.player.TBMCPlayerBase;
public class SetFlairCommand extends AdminCommandBase {
@@ -53,18 +53,18 @@ public class SetFlairCommand extends AdminCommandBase {
sender.sendMessage("§cUnknown value for cheater parameter. Run without args to see usage.");
return true;
}
- ChatPlayer mp = TBMCPlayer.getPlayerAs(p, ChatPlayer.class);
+ ChatPlayer mp = TBMCPlayerBase.getPlayer(p.getUniqueId(), ChatPlayer.class);
mp.SetFlair(flairtime, cheater);
- mp.setFlairState(FlairStates.Accepted);
+ mp.FlairState().set(FlairStates.Accepted);
if (args.length < 4)
- mp.setUserName("");
+ mp.UserName().set("");
else {
- mp.setUserName(args[3]);
- if (!mp.getUserNames().contains(args[3]))
- mp.getUserNames().add(args[3]);
+ mp.UserName().set(args[3]);
+ if (!mp.UserNames().contains(args[3]))
+ mp.UserNames().add(args[3]);
}
sender.sendMessage(
- "§bThe flair has been set. Player: " + mp.getPlayerName() + " Flair: " + mp.GetFormattedFlair() + "§r");
+ "§bThe flair has been set. Player: " + mp.PlayerName() + " Flair: " + mp.GetFormattedFlair() + "§r");
return true;
}
diff --git a/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java b/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
index 84119bc..5b61e94 100644
--- a/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
+++ b/src/main/java/buttondevteam/chat/listener/PlayerJoinLeaveListener.java
@@ -1,6 +1,5 @@
package buttondevteam.chat.listener;
-import java.util.ArrayList;
import java.util.Timer;
import java.util.UUID;
@@ -17,7 +16,6 @@ import buttondevteam.chat.ChatPlayer;
import buttondevteam.chat.FlairStates;
import buttondevteam.chat.PlayerJoinTimerTask;
import buttondevteam.chat.PluginMain;
-import buttondevteam.lib.player.TBMCPlayerAddEvent;
import buttondevteam.lib.player.TBMCPlayerJoinEvent;
import buttondevteam.lib.player.TBMCPlayerLoadEvent;
import buttondevteam.lib.player.TBMCPlayerSaveEvent;
@@ -35,9 +33,9 @@ public class PlayerJoinLeaveListener implements Listener {
if (PluginMain.essentials == null)
PluginMain.essentials = ((Essentials) Bukkit.getPluginManager().getPlugin("Essentials"));
ChatPlayer cp = e.GetPlayer().asPluginPlayer(ChatPlayer.class);
- Player p = Bukkit.getPlayer(cp.getUuid());
+ Player p = Bukkit.getPlayer(cp.getUUID());
- if (!cp.getFlairState().equals(FlairStates.NoComment)) {
+ if (!cp.FlairState().get().equals(FlairStates.NoComment)) {
PluginMain.ConfirmUserMessage(cp);
Timer timer = new Timer();
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
@@ -49,26 +47,26 @@ public class PlayerJoinLeaveListener implements Listener {
tt.mp = cp;
timer.schedule(tt, 1000);
} else {
- if (cp.getFlairTime() == 0x00)
+ if (cp.FlairTime().get() == 0x00)
cp.SetFlair(ChatPlayer.FlairTimeNone);
Timer timer = new Timer();
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
@Override
public void run() {
- Player player = Bukkit.getPlayer(mp.getPlayerName());
+ Player player = Bukkit.getPlayer(mp.PlayerName().get());
if (player == null)
return;
- if (mp.getFlairState().equals(FlairStates.NoComment)) {
+ if (mp.FlairState().get().equals(FlairStates.NoComment)) {
String json = String.format(
"[\"\",{\"text\":\"If you're from Reddit and you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]",
PluginMain.FlairThreadURL);
PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- "tellraw " + mp.getPlayerName() + " " + json);
+ "tellraw " + mp.PlayerName() + " " + json);
json = "[\"\",{\"text\":\"If you aren't from Reddit or don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]";
PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- "tellraw " + mp.getPlayerName() + " " + json);
+ "tellraw " + mp.PlayerName() + " " + json);
}
}
};
@@ -101,14 +99,6 @@ public class PlayerJoinLeaveListener implements Listener {
public void onPlayerSave(TBMCPlayerSaveEvent e) {
}
- @EventHandler
- public void onPlayerAdd(TBMCPlayerAddEvent event) {
- ChatPlayer cp = event.GetPlayer().asPluginPlayer(ChatPlayer.class);
- cp.SetFlair(ChatPlayer.FlairTimeNone);
- cp.setFlairState(FlairStates.NoComment);
- cp.setUserNames(new ArrayList<>());
- }
-
@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
String deletenick = null;
diff --git a/src/main/java/buttondevteam/chat/listener/PlayerListener.java b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
index 99988fe..56a7c06 100644
--- a/src/main/java/buttondevteam/chat/listener/PlayerListener.java
+++ b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
@@ -35,7 +35,7 @@ import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.player.TBMCPlayer;
import buttondevteam.lib.player.TBMCPlayerGetInfoEvent;
-import buttondevteam.lib.player.TBMCPlayer.InfoTarget;
+import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
@@ -71,7 +71,7 @@ public class PlayerListener implements Listener {
if (event.isCancelled())
return;
TBMCChatAPI.SendChatMessage(
- TBMCPlayer.getPlayer(event.getPlayer()).asPluginPlayer(ChatPlayer.class).CurrentChannel,
+ TBMCPlayer.getPlayer(event.getPlayer().getUniqueId(), ChatPlayer.class).CurrentChannel,
event.getPlayer(), event.getMessage());
event.setCancelled(true); // The custom event should only be cancelled when muted or similar
}
@@ -81,7 +81,7 @@ public class PlayerListener implements Listener {
if (event.getMessage().length() < 2)
return;
int index = event.getMessage().indexOf(" ");
- ChatPlayer mp = TBMCPlayer.getPlayer(event.getPlayer()).asPluginPlayer(ChatPlayer.class);
+ ChatPlayer mp = TBMCPlayer.getPlayer(event.getPlayer().getUniqueId(), ChatPlayer.class);
String cmd = "";
if (index == -1) {
cmd = event.getMessage().substring(1);
@@ -212,8 +212,8 @@ public class PlayerListener implements Listener {
Ftimer.cancel();
ActiveF = true;
Fs.clear();
- FPlayer = TBMCPlayer.getPlayer(e.getEntity().getUniqueId()).asPluginPlayer(ChatPlayer.class);
- FPlayer.setFDeaths(FPlayer.getFDeaths() + 1);
+ FPlayer = TBMCPlayer.getPlayer(e.getEntity().getUniqueId(), ChatPlayer.class);
+ FPlayer.FDeaths().set(FPlayer.FDeaths().get() + 1);
Bukkit.broadcastMessage("§bPress F to pay respects.§r");
Ftimer = new Timer();
TimerTask tt = new TimerTask() {
@@ -221,8 +221,8 @@ public class PlayerListener implements Listener {
public void run() {
if (ActiveF) {
ActiveF = false;
- if (FPlayer != null && FPlayer.getFCount() < Integer.MAX_VALUE - 1)
- FPlayer.setFCount(FPlayer.getFCount() + Fs.size());
+ if (FPlayer != null && FPlayer.FCount().get() < Integer.MAX_VALUE - 1)
+ FPlayer.FCount().set(FPlayer.FCount().get() + Fs.size());
Bukkit.broadcastMessage("§b" + Fs.size() + " " + (Fs.size() == 1 ? "person" : "people")
+ " paid their respects.§r");
Fs.clear();
@@ -250,14 +250,14 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerMove(PlayerMoveEvent e) {
- ChatPlayer mp = TBMCPlayer.getPlayerAs(e.getPlayer(), ChatPlayer.class);
+ ChatPlayer mp = TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class);
if (mp.ChatOnly)
e.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerTeleport(PlayerTeleportEvent e) {
- if (TBMCPlayer.getPlayerAs(e.getPlayer(), ChatPlayer.class).ChatOnly) {
+ if (TBMCPlayer.getPlayer(e.getPlayer().getUniqueId(), ChatPlayer.class).ChatOnly) {
e.setCancelled(true);
e.getPlayer().sendMessage("§cYou are not allowed to teleport while in chat-only mode.");
}
@@ -319,14 +319,19 @@ public class PlayerListener implements Listener {
@EventHandler
public void onGetInfo(TBMCPlayerGetInfoEvent e) {
- ChatPlayer cp = e.getPlayer().asPluginPlayer(ChatPlayer.class);
- e.addInfo("Minecraft name: " + cp.getPlayerName());
- if (cp.getUserName() != null && cp.getUserName().length() > 0)
- e.addInfo("Reddit name: " + cp.getUserName());
- final String flair = cp.GetFormattedFlair(e.getTarget() != InfoTarget.MCCommand);
- if (flair.length() > 0)
- e.addInfo("/r/TheButton flair: " + flair);
- e.addInfo("Respect: " + (double) cp.getFCount() / (double) cp.getFDeaths());
+ try (ChatPlayer cp = e.getPlayer().getAs(ChatPlayer.class)) {
+ if (cp == null)
+ return;
+ e.addInfo("Minecraft name: " + cp.PlayerName().get());
+ if (cp.UserName().get() != null && cp.UserName().get().length() > 0)
+ e.addInfo("Reddit name: " + cp.UserName().get());
+ final String flair = cp.GetFormattedFlair(e.getTarget() != InfoTarget.MCCommand);
+ if (flair.length() > 0)
+ e.addInfo("/r/TheButton flair: " + flair);
+ e.addInfo("Respect: " + (double) cp.FCount().get() / (double) cp.FDeaths().get());
+ } catch (Exception ex) {
+ TBMCCoreAPI.SendException("Error while providing chat info for player " + e.getPlayer().getFileName(), ex);
+ }
}
@EventHandler
From 0da4a543e5e8e0c77a5b5bed47f1fbff0924f1f5 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Tue, 11 Apr 2017 21:11:07 +0200
Subject: [PATCH 4/8] Small fixes
---
.../java/buttondevteam/chat/listener/PlayerListener.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/buttondevteam/chat/listener/PlayerListener.java b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
index 56a7c06..69682dc 100644
--- a/src/main/java/buttondevteam/chat/listener/PlayerListener.java
+++ b/src/main/java/buttondevteam/chat/listener/PlayerListener.java
@@ -328,7 +328,7 @@ public class PlayerListener implements Listener {
final String flair = cp.GetFormattedFlair(e.getTarget() != InfoTarget.MCCommand);
if (flair.length() > 0)
e.addInfo("/r/TheButton flair: " + flair);
- e.addInfo("Respect: " + (double) cp.FCount().get() / (double) cp.FDeaths().get());
+ e.addInfo("Respect: " + (double) cp.FCount().getOrDefault(0) / (double) cp.FDeaths().getOrDefault(0));
} catch (Exception ex) {
TBMCCoreAPI.SendException("Error while providing chat info for player " + e.getPlayer().getFileName(), ex);
}
@@ -337,6 +337,8 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerTBMCChat(TBMCChatEvent e) {
try {
+ if (e.isCancelled())
+ return;
e.setCancelled(ChatProcessing.ProcessChat(e.getChannel(), e.getSender(), e.getMessage()));
} catch (Exception ex) {
for (Player p : Bukkit.getOnlinePlayers())
@@ -345,7 +347,6 @@ public class PlayerListener implements Listener {
? ((Player) e.getSender()).getDisplayName() : e.getSender().getName())
+ "> " + e.getMessage());
TBMCCoreAPI.SendException("An error occured while processing a chat message!", ex);
- e.setCancelled(true);
}
}
}
From 441e9a4eafcc67a49b3a159d5a376e2ac0792d6b Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Thu, 13 Apr 2017 23:23:16 +0200
Subject: [PATCH 5/8] Added some comments
---
src/main/java/buttondevteam/chat/formatting/ChatFormatter.java | 2 +-
.../java/buttondevteam/chat/formatting/FormattedSection.java | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java b/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
index ce58598..e7d587a 100644
--- a/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
+++ b/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
@@ -84,7 +84,7 @@ public final class ChatFormatter {
s.End = section.Start;
s.IsRange = false; // IsRange means it's a 1 long section indicating a start or an end
combined.add(s);
- DebugCommand.SendDebugMessage("Finished section: " + s);
+ DebugCommand.SendDebugMessage("Finished section: " + s); //TODO: Remove smaller sections from IsRange sections
} else {
DebugCommand.SendDebugMessage("Adding next section: " + section);
nextSection.put(section.Formatters.get(0), section);
diff --git a/src/main/java/buttondevteam/chat/formatting/FormattedSection.java b/src/main/java/buttondevteam/chat/formatting/FormattedSection.java
index 2891d21..67aa64e 100644
--- a/src/main/java/buttondevteam/chat/formatting/FormattedSection.java
+++ b/src/main/java/buttondevteam/chat/formatting/FormattedSection.java
@@ -11,6 +11,9 @@ class FormattedSection {
short RemCharFromStart;
short RemCharFromEnd;
ArrayList RemCharPos = new ArrayList();
+ /**
+ * Is it a 1-long section indicating a start or an end
+ */
boolean IsRange;
FormattedSection(ChatFormatter formatter, int start, int end, ArrayList matches, short remcharfromstart,
From 758332faf6e67917ebf4c6f6ed939a25661b61d6 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Fri, 14 Apr 2017 22:43:37 +0200
Subject: [PATCH 6/8] Segmented ChatProcessing and added test!
---
.../buttondevteam/chat/ChatProcessing.java | 486 +++++++++---------
.../buttondevteam/chat/ChatFormatTest.java | 48 ++
2 files changed, 299 insertions(+), 235 deletions(-)
create mode 100644 src/test/java/buttondevteam/chat/ChatFormatTest.java
diff --git a/src/main/java/buttondevteam/chat/ChatProcessing.java b/src/main/java/buttondevteam/chat/ChatProcessing.java
index de7b1ed..24a782d 100644
--- a/src/main/java/buttondevteam/chat/ChatProcessing.java
+++ b/src/main/java/buttondevteam/chat/ChatProcessing.java
@@ -45,6 +45,7 @@ public class ChatProcessing {
private static boolean pingedconsole = false;
private static ArrayList commonFormatters = new ArrayList<>();
+ private static Gson gson;
public static final ChatFormatter ESCAPE_FORMATTER = new ChatFormatterBuilder().setRegex(ESCAPE_PATTERN).build();
@@ -75,6 +76,11 @@ public class ChatProcessing {
commonFormatters.add(new ChatFormatterBuilder().setRegex(HASHTAG_PATTERN).setColor(Color.Blue)
.setOpenlink("https://twitter.com/hashtag/$1").setPriority(Priority.High).build());
commonFormatters.add(new ChatFormatterBuilder().setRegex(CYAN_PATTERN).setColor(Color.Aqua).build()); // #55
+ gson = new GsonBuilder()
+ .registerTypeHierarchyAdapter(TellrawSerializableEnum.class, new TellrawSerializer.TwEnum())
+ .registerTypeHierarchyAdapter(Collection.class, new TellrawSerializer.TwCollection())
+ .registerTypeAdapter(Boolean.class, new TellrawSerializer.TwBool())
+ .registerTypeAdapter(boolean.class, new TellrawSerializer.TwBool()).disableHtmlEscaping().create();
}
// Returns e.setCancelled for custom event
@@ -87,32 +93,13 @@ public class ChatProcessing {
if (player != null && PluginMain.essentials.getUser(player).isMuted())
return true;
- if (PlayerListener.ActiveF && !PlayerListener.Fs.contains(sender) && message.equalsIgnoreCase("F"))
- PlayerListener.Fs.add(sender);
+ doFunStuff(sender, message);
ChatPlayer mp = null;
if (player != null)
mp = TBMCPlayerBase.getPlayer(player.getUniqueId(), ChatPlayer.class);
- String msg = message.toLowerCase();
- if (msg.contains("lol")) {
- UnlolCommand.Lastlolornot = true;
- UnlolCommand.Lastlol = sender;
- } else {
- for (int i = 0; i < PlayerListener.LaughStrings.length; i++) {
- if (msg.contains(PlayerListener.LaughStrings[i])) {
- UnlolCommand.Lastlol = sender;
- UnlolCommand.Lastlolornot = false;
- break;
- }
- }
- }
- Channel currentchannel = channel;
-
- @SuppressWarnings("unchecked")
- ArrayList formatters = (ArrayList) commonFormatters.clone();
-
- Color colormode = currentchannel.color;
+ Color colormode = channel.color;
if (mp != null && mp.OtherColorMode != null)
colormode = mp.OtherColorMode;
if (mp != null && mp.RainbowPresserColorMode)
@@ -121,39 +108,246 @@ public class ChatProcessing {
colormode = Color.Green;
// If greentext, ignore channel or player colors
+ ArrayList formatters = addFormatters(colormode);
+ pingedconsole = false; // Will set it to true onmatch (static constructor)
+ final String channelidentifier = getChannelID(channel, sender, mp);
+
+ TellrawPart json = createTellraw(sender, message, player, mp, channelidentifier);
+ long combinetime = System.nanoTime();
+ ChatFormatter.Combine(formatters, message, json);
+ combinetime = System.nanoTime() - combinetime;
+ String jsonstr = toJson(json);
+ if (jsonstr.length() >= 32767) {
+ sender.sendMessage(
+ "§cError: Message too long. Try shortening it, or remove hashtags and other formatting.");
+ return true;
+ }
+ DebugCommand.SendDebugMessage(jsonstr);
+ if (channel.equals(Channel.TownChat) || channel.equals(Channel.NationChat)) {
+ if (player == null) {
+ sender.sendMessage("§cYou are not a player!");
+ return true;
+ }
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ try {
+ Resident resident = PluginMain.Instance.TU.getResidentMap().get(p.getName().toLowerCase());
+ if (resident != null && !resident.getName().equals(player.getName())
+ && resident.getModes().contains("spy"))
+ Bukkit.getPlayer(resident.getName()).sendMessage(String.format("[SPY-%s] - %s: %s",
+ channel.DisplayName, player.getDisplayName(), message));
+ } catch (Exception e) {
+ }
+ }
+ }
+ try {
+ if (channel.equals(Channel.TownChat)) {
+ Town town = null;
+ try {
+ final Resident resident = PluginMain.Instance.TU.getResidentMap()
+ .get(player.getName().toLowerCase());
+ if (resident != null && resident.hasTown())
+ town = resident.getTown();
+ } catch (NotRegisteredException e) {
+ }
+ if (town == null) {
+ player.sendMessage("§cYou aren't in a town or an error occured.");
+ return true;
+ }
+ int index = PluginMain.Instance.Towns.indexOf(town);
+ if (index < 0) {
+ PluginMain.Instance.Towns.add(town);
+ index = PluginMain.Instance.Towns.size() - 1;
+ }
+ Objective obj = PluginMain.SB.getObjective("town");
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ try {
+ if (town.getResidents().stream().anyMatch(r -> r.getName().equalsIgnoreCase(p.getName())))
+ obj.getScore(p.getName()).setScore(index);
+ else
+ obj.getScore(p.getName()).setScore(-1);
+ } catch (Exception e) {
+ obj.getScore(p.getName()).setScore(-1);
+ }
+ }
+ PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
+ String.format("tellraw @a[score_town=%d,score_town_min=%d] %s", index, index, jsonstr));
+ } else if (channel.equals(Channel.NationChat)) {
+ Town town = null;
+ try {
+ final Resident resident = PluginMain.Instance.TU.getResidentMap()
+ .get(player.getName().toLowerCase());
+ if (resident != null && resident.hasTown())
+ town = resident.getTown();
+ } catch (NotRegisteredException e) {
+ }
+ if (town == null) {
+ player.sendMessage("§cYou aren't in a town or an error occured.");
+ return true;
+ }
+ Nation nation = null;
+ try {
+ nation = town.getNation();
+ } catch (NotRegisteredException e) {
+ }
+ if (nation == null) {
+ player.sendMessage("§cYour town isn't in a nation or an error occured.");
+ return true;
+ }
+ int index = PluginMain.Instance.Nations.indexOf(nation);
+ if (index < 0) {
+ PluginMain.Instance.Nations.add(nation);
+ index = PluginMain.Instance.Nations.size() - 1;
+ }
+ Objective obj = PluginMain.SB.getObjective("nation");
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ try {
+ if (nation.getResidents().stream().anyMatch(r -> r.getName().equalsIgnoreCase(p.getName())))
+ obj.getScore(p.getName()).setScore(index);
+ else
+ obj.getScore(p.getName()).setScore(-1);
+ } catch (Exception e) {
+ }
+ }
+ PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
+ String.format("tellraw @a[score_nation=%d,score_nation_min=%d] %s", index, index, jsonstr));
+ } else if (channel.equals(Channel.AdminChat)) {
+ if (player != null && !player.isOp()) {
+ player.sendMessage("§cYou need to be an OP to use this channel.");
+ return true;
+ }
+ Objective obj = PluginMain.SB.getObjective("admin");
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ if (p.isOp())
+ obj.getScore(p.getName()).setScore(1);
+ else
+ obj.getScore(p.getName()).setScore(0);
+ }
+ PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
+ String.format("tellraw @a[score_admin=%d,score_admin_min=%d] %s", 1, 1, jsonstr));
+ } else if (channel.equals(Channel.ModChat)) {
+ if (player != null && !PluginMain.permission.playerInGroup(player, "mod")) {
+ player.sendMessage("§cYou need to be a mod to use this channel.");
+ return true;
+ }
+ Objective obj = PluginMain.SB.getObjective("mod");
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ if (PluginMain.permission.playerInGroup(p, "mod"))
+ obj.getScore(p.getName()).setScore(1);
+ else
+ obj.getScore(p.getName()).setScore(0);
+ }
+ PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
+ String.format("tellraw @a[score_mod=%d,score_mod_min=%d] %s", 1, 1, jsonstr));
+ } else
+ PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
+ String.format("tellraw @a %s", jsonstr));
+ } catch (Exception e) {
+ TBMCCoreAPI.SendException("An error occured while sending a chat message!", e);
+ player.sendMessage("§cAn error occured while sending the message.");
+ return true;
+ }
+ PluginMain.Instance.getServer().getConsoleSender().sendMessage(String.format("%s <%s> %s", channelidentifier,
+ (player != null ? player.getDisplayName() : sender.getName()), message));
+ DebugCommand.SendDebugMessage(
+ "-- Full ChatProcessing time: " + (System.nanoTime() - processstart) / 1000000f + " ms");
+ DebugCommand.SendDebugMessage("-- ChatFormatter.Combine time: " + combinetime / 1000000f + " ms");
+ return false;
+ }
+
+ static String toJson(TellrawPart json) {
+ String jsonstr = gson.toJson(json);
+ return jsonstr;
+ }
+
+ static TellrawPart createTellraw(CommandSender sender, String message, Player player, ChatPlayer mp,
+ final String channelidentifier) {
+ TellrawPart json = new TellrawPart("");
+ if (mp != null && mp.ChatOnly) {
+ json.addExtra(new TellrawPart("[C]").setHoverEvent(
+ TellrawEvent.create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT, "Chat only")));
+ }
+ json.addExtra(
+ new TellrawPart(channelidentifier)
+ .setHoverEvent(
+ TellrawEvent.create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT,
+ new TellrawPart((sender instanceof IDiscordSender ? "From Discord\n" : "")
+ + "Copy message").setColor(Color.Blue)))
+ .setClickEvent(TellrawEvent.create(TellrawEvent.ClickAC,
+ TellrawEvent.ClickAction.SUGGEST_COMMAND, message)));
+ json.addExtra(new TellrawPart(" <"));
+ json.addExtra(
+ new TellrawPart(
+ (player != null ? player.getDisplayName() : sender.getName()))
+ .setHoverEvent(
+ TellrawEvent
+ .create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT,
+ new TellrawPart("")
+ .addExtra(new TellrawPart(String.format("Flair: %s",
+ (mp != null ? mp.GetFormattedFlair() : "-"))))
+ .addExtra(new TellrawPart(
+ String.format("\nPlayername: %s\n",
+ (player != null ? player.getName()
+ : sender.getName())))
+ .setColor(Color.Aqua))
+ .addExtra(new TellrawPart(String.format("World: %s\n",
+ (player != null ? player.getWorld().getName()
+ : "-"))))
+ .addExtra(new TellrawPart(String.format(
+ "Respect: %s%s%s",
+ (mp != null ? (mp.FCount().getOrDefault(0)
+ / (double) mp.FDeaths().getOrDefault(0))
+ : "Infinite"),
+ (mp != null && mp.UserName().get() != null
+ && !mp.UserName().get().isEmpty()
+ ? "\nUserName: "
+ + mp.UserName().get()
+ : ""),
+ (mp != null && mp.PlayerName().get()
+ .equals("\nAlpha_Bacca44")
+ ? "\nDeaths: "
+ + PlayerListener.AlphaDeaths
+ : ""))))
+ .addExtra(new TellrawPart("\nFor more, do /u info "
+ + sender.getName())))));
+ json.addExtra(new TellrawPart("> "));
+ return json;
+ }
+
+ static String getChannelID(Channel channel, CommandSender sender, ChatPlayer mp) {
+ final String channelidentifier = ("[" + (sender instanceof IDiscordSender ? "d|" : "") + channel.DisplayName)
+ + "]" + (mp != null && !mp.RPMode ? "[OOC]" : "");
+ return channelidentifier;
+ }
+
+ static ArrayList addFormatters(Color colormode) {
+ @SuppressWarnings("unchecked")
+ ArrayList formatters = (ArrayList) commonFormatters.clone();
+
formatters.add(new ChatFormatterBuilder().setRegex(ENTIRE_MESSAGE_PATTERN).setColor(colormode)
.setPriority(Priority.Low).build());
- String formattedmessage = message;
-
- String suggestmsg = formattedmessage;
-
if (Bukkit.getOnlinePlayers().size() > 0) {
- StringBuilder namesb = new StringBuilder();
- namesb.append("(?i)(");
+ StringBuilder namesb = new StringBuilder("(?i)(");
for (Player p : Bukkit.getOnlinePlayers())
namesb.append(p.getName()).append("|");
namesb.deleteCharAt(namesb.length() - 1);
namesb.append(")");
- StringBuilder nicksb = new StringBuilder();
- nicksb.append("(?i)(");
+ StringBuilder nicksb = new StringBuilder("(?i)(");
boolean addNickFormatter = false;
- {
- final int size = Bukkit.getOnlinePlayers().size();
- int index = 0;
- for (Player p : Bukkit.getOnlinePlayers()) {
- final String nick = PlayerListener.nicknames.inverse().get(p.getUniqueId());
- if (nick != null) {
- nicksb.append(nick);
- if (index < size - 1) {
- nicksb.append("|");
- addNickFormatter = true;
- }
+ final int size = Bukkit.getOnlinePlayers().size();
+ int index = 0;
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ final String nick = PlayerListener.nicknames.inverse().get(p.getUniqueId());
+ if (nick != null) {
+ nicksb.append(nick);
+ if (index < size - 1) {
+ nicksb.append("|");
+ addNickFormatter = true;
}
- index++;
}
- nicksb.append(")");
+ index++;
}
+ nicksb.append(")");
formatters.add(new ChatFormatterBuilder().setRegex(Pattern.compile(namesb.toString())).setColor(Color.Aqua)
.setOnmatch((String match) -> {
@@ -195,203 +389,25 @@ public class ChatProcessing {
return "§c" + match + "§r";
}).setPriority(Priority.High).build());
}
+ return formatters;
+ }
- pingedconsole = false; // Will set it to true onmatch (static constructor)
+ static void doFunStuff(CommandSender sender, String message) {
+ if (PlayerListener.ActiveF && !PlayerListener.Fs.contains(sender) && message.equalsIgnoreCase("F"))
+ PlayerListener.Fs.add(sender);
- TellrawPart json = new TellrawPart("");
- if (mp != null && mp.ChatOnly) {
- json.addExtra(new TellrawPart("[C]").setHoverEvent(
- TellrawEvent.create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT, "Chat only")));
- }
- final String channelidentifier = ("[" + (sender instanceof IDiscordSender ? "d|" : "")
- + currentchannel.DisplayName) + "]" + (mp != null && !mp.RPMode ? "[OOC]" : "");
- json.addExtra(
- new TellrawPart(channelidentifier)
- .setHoverEvent(
- TellrawEvent.create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT,
- new TellrawPart((sender instanceof IDiscordSender ? "From Discord\n" : "")
- + "Copy message").setColor(Color.Blue)))
- .setClickEvent(TellrawEvent.create(TellrawEvent.ClickAC,
- TellrawEvent.ClickAction.SUGGEST_COMMAND, suggestmsg)));
- json.addExtra(new TellrawPart(" <"));
- json.addExtra(
- new TellrawPart(
- (player != null ? player.getDisplayName() : sender.getName()))
- .setHoverEvent(
- TellrawEvent
- .create(TellrawEvent.HoverAC, TellrawEvent.HoverAction.SHOW_TEXT,
- new TellrawPart("")
- .addExtra(new TellrawPart(String.format("Flair: %s",
- (mp != null ? mp.GetFormattedFlair() : "-"))))
- .addExtra(new TellrawPart(
- String.format("\nPlayername: %s\n",
- (player != null ? player.getName()
- : sender.getName())))
- .setColor(Color.Aqua))
- .addExtra(new TellrawPart(String.format("World: %s\n",
- (player != null ? player.getWorld().getName()
- : "-"))))
- .addExtra(new TellrawPart(String.format(
- "Respect: %s%s%s",
- (mp != null ? (mp.FCount().getOrDefault(0)
- / (double) mp.FDeaths().getOrDefault(0))
- : "Infinite"),
- (mp != null && mp.UserName().get() != null
- && !mp.UserName().get().isEmpty()
- ? "\nUserName: "
- + mp.UserName().get()
- : ""),
- (mp != null && mp.PlayerName().get()
- .equals("\nAlpha_Bacca44")
- ? "\nDeaths: "
- + PlayerListener.AlphaDeaths
- : ""))))
- .addExtra(new TellrawPart("\nFor more, do /u info "
- + sender.getName())))));
- json.addExtra(new TellrawPart("> "));
- long combinetime = System.nanoTime();
- ChatFormatter.Combine(formatters, formattedmessage, json);
- combinetime = System.nanoTime() - combinetime;
- Gson gson = new GsonBuilder()
- .registerTypeHierarchyAdapter(TellrawSerializableEnum.class, new TellrawSerializer.TwEnum())
- .registerTypeHierarchyAdapter(Collection.class, new TellrawSerializer.TwCollection())
- .registerTypeAdapter(Boolean.class, new TellrawSerializer.TwBool())
- .registerTypeAdapter(boolean.class, new TellrawSerializer.TwBool()).disableHtmlEscaping().create();
- String jsonstr = gson.toJson(json);
- if (jsonstr.length() >= 32767) {
- sender.sendMessage(
- "§cError: Message too long. Try shortening it, or remove hashtags and other formatting.");
- return true;
- }
- DebugCommand.SendDebugMessage(jsonstr);
- if (currentchannel.equals(Channel.TownChat) || currentchannel.equals(Channel.NationChat)) {
- if (player == null) {
- sender.sendMessage("§cYou are not a player!");
- return true;
- }
- for (Player p : Bukkit.getOnlinePlayers()) {
- try {
- Resident resident = PluginMain.Instance.TU.getResidentMap().get(p.getName().toLowerCase());
- if (resident != null && !resident.getName().equals(player.getName())
- && resident.getModes().contains("spy"))
- Bukkit.getPlayer(resident.getName()).sendMessage(String.format("[SPY-%s] - %s: %s",
- currentchannel.DisplayName, player.getDisplayName(), message));
- } catch (Exception e) {
+ String msg = message.toLowerCase();
+ if (msg.contains("lol")) {
+ UnlolCommand.Lastlolornot = true;
+ UnlolCommand.Lastlol = sender;
+ } else {
+ for (int i = 0; i < PlayerListener.LaughStrings.length; i++) {
+ if (msg.contains(PlayerListener.LaughStrings[i])) {
+ UnlolCommand.Lastlol = sender;
+ UnlolCommand.Lastlolornot = false;
+ break;
}
}
}
- try {
- if (currentchannel.equals(Channel.TownChat)) {
- Town town = null;
- try {
- final Resident resident = PluginMain.Instance.TU.getResidentMap()
- .get(player.getName().toLowerCase());
- if (resident != null && resident.hasTown())
- town = resident.getTown();
- } catch (NotRegisteredException e) {
- }
- if (town == null) {
- player.sendMessage("§cYou aren't in a town or an error occured.");
- return true;
- }
- int index = PluginMain.Instance.Towns.indexOf(town);
- if (index < 0) {
- PluginMain.Instance.Towns.add(town);
- index = PluginMain.Instance.Towns.size() - 1;
- }
- Objective obj = PluginMain.SB.getObjective("town");
- for (Player p : Bukkit.getOnlinePlayers()) {
- try {
- if (town.getResidents().stream().anyMatch(r -> r.getName().equalsIgnoreCase(p.getName())))
- obj.getScore(p.getName()).setScore(index);
- else
- obj.getScore(p.getName()).setScore(-1);
- } catch (Exception e) {
- obj.getScore(p.getName()).setScore(-1);
- }
- }
- PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- String.format("tellraw @a[score_town=%d,score_town_min=%d] %s", index, index, jsonstr));
- } else if (currentchannel.equals(Channel.NationChat)) {
- Town town = null;
- try {
- final Resident resident = PluginMain.Instance.TU.getResidentMap()
- .get(player.getName().toLowerCase());
- if (resident != null && resident.hasTown())
- town = resident.getTown();
- } catch (NotRegisteredException e) {
- }
- if (town == null) {
- player.sendMessage("§cYou aren't in a town or an error occured.");
- return true;
- }
- Nation nation = null;
- try {
- nation = town.getNation();
- } catch (NotRegisteredException e) {
- }
- if (nation == null) {
- player.sendMessage("§cYour town isn't in a nation or an error occured.");
- return true;
- }
- int index = PluginMain.Instance.Nations.indexOf(nation);
- if (index < 0) {
- PluginMain.Instance.Nations.add(nation);
- index = PluginMain.Instance.Nations.size() - 1;
- }
- Objective obj = PluginMain.SB.getObjective("nation");
- for (Player p : Bukkit.getOnlinePlayers()) {
- try {
- if (nation.getResidents().stream().anyMatch(r -> r.getName().equalsIgnoreCase(p.getName())))
- obj.getScore(p.getName()).setScore(index);
- else
- obj.getScore(p.getName()).setScore(-1);
- } catch (Exception e) {
- }
- }
- PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- String.format("tellraw @a[score_nation=%d,score_nation_min=%d] %s", index, index, jsonstr));
- } else if (currentchannel.equals(Channel.AdminChat)) {
- if (player != null && !player.isOp()) {
- player.sendMessage("§cYou need to be an OP to use this channel.");
- return true;
- }
- Objective obj = PluginMain.SB.getObjective("admin");
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (p.isOp())
- obj.getScore(p.getName()).setScore(1);
- else
- obj.getScore(p.getName()).setScore(0);
- }
- PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- String.format("tellraw @a[score_admin=%d,score_admin_min=%d] %s", 1, 1, jsonstr));
- } else if (currentchannel.equals(Channel.ModChat)) {
- if (player != null && !PluginMain.permission.playerInGroup(player, "mod")) {
- player.sendMessage("§cYou need to be a mod to use this channel.");
- return true;
- }
- Objective obj = PluginMain.SB.getObjective("mod");
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (PluginMain.permission.playerInGroup(p, "mod"))
- obj.getScore(p.getName()).setScore(1);
- else
- obj.getScore(p.getName()).setScore(0);
- }
- PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- String.format("tellraw @a[score_mod=%d,score_mod_min=%d] %s", 1, 1, jsonstr));
- } else
- PluginMain.Instance.getServer().dispatchCommand(PluginMain.Console,
- String.format("tellraw @a %s", jsonstr));
- } catch (Exception e) {
- TBMCCoreAPI.SendException("An error occured while sending a chat message!", e);
- player.sendMessage("§cAn error occured while sending the message.");
- return true;
- }
- PluginMain.Instance.getServer().getConsoleSender().sendMessage(String.format("%s <%s> %s", channelidentifier,
- (player != null ? player.getDisplayName() : sender.getName()), message));
- DebugCommand.SendDebugMessage(
- "-- Full ChatProcessing time: " + (System.nanoTime() - processstart) / 1000000f + " ms");
- DebugCommand.SendDebugMessage("-- ChatFormatter.Combine time: " + combinetime / 1000000f + " ms");
- return false;
}
}
diff --git a/src/test/java/buttondevteam/chat/ChatFormatTest.java b/src/test/java/buttondevteam/chat/ChatFormatTest.java
new file mode 100644
index 0000000..be0982e
--- /dev/null
+++ b/src/test/java/buttondevteam/chat/ChatFormatTest.java
@@ -0,0 +1,48 @@
+package buttondevteam.chat;
+
+import java.util.ArrayList;
+import org.bukkit.command.CommandSender;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import buttondevteam.chat.formatting.ChatFormatter;
+import buttondevteam.chat.formatting.TellrawPart;
+import buttondevteam.core.TestPrepare;
+import buttondevteam.lib.chat.Channel;
+import buttondevteam.lib.chat.Color;
+import buttondevteam.lib.chat.Format;
+import junit.framework.TestCase;
+
+public class ChatFormatTest extends TestCase {
+ @Test
+ public void test() {
+ // fail("Not yet implemented");
+ TestPrepare.PrepareServer();
+ final CommandSender sender = Mockito.mock(CommandSender.class);
+ testMessage(sender, "*test*", new TellrawPart("test").setFormat(Format.Italic.getFlag()).setColor(Color.White));
+ testMessage(sender, "**test**", new TellrawPart("test").setFormat(Format.Bold.getFlag()).setColor(Color.White));
+ testMessage(sender, "***test***", new TellrawPart("test")
+ .setFormat(Format.Bold.getFlag() | Format.Italic.getFlag()).setColor(Color.White));
+ testMessage(sender, "***_test_***",
+ new TellrawPart("test")
+ .setFormat(Format.Bold.getFlag() | Format.Italic.getFlag() | Format.Underlined.getFlag())
+ .setColor(Color.White));
+ testMessage(sender, "***_~~test~~_***",
+ new TellrawPart("test").setFormat(Format.Bold.getFlag() | Format.Italic.getFlag()
+ | Format.Underlined.getFlag() | Format.Strikethrough.getFlag()).setColor(Color.White));
+ }
+
+ void testMessage(final CommandSender sender, final String message, TellrawPart... extras) {
+ ArrayList cfs = ChatProcessing.addFormatters(Color.White);
+ final String chid = ChatProcessing.getChannelID(Channel.GlobalChat, sender, null);
+ final TellrawPart tp = ChatProcessing.createTellraw(sender, message, null, null, chid);
+ ChatFormatter.Combine(cfs, message, tp);
+ System.out.println("Testing: " + message);
+ // System.out.println(ChatProcessing.toJson(tp));
+ final TellrawPart expectedtp = ChatProcessing.createTellraw(sender, message, null, null, chid);
+ // System.out.println("Raw: " + ChatProcessing.toJson(expectedtp));
+ for (TellrawPart extra : extras)
+ expectedtp.addExtra(extra);
+ assertEquals(ChatProcessing.toJson(expectedtp), ChatProcessing.toJson(tp));
+ }
+}
From ec5c90ecc8dca2590b70fd3c9ce2c0b53dc8a6b0 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Sat, 15 Apr 2017 01:45:30 +0200
Subject: [PATCH 7/8] Fixed bold formatting, other fixes
JUnit is awesome
Diffing the expected and actual result in a small fraction of the time
needed to load the server
---
Notes.txt | 36 ++++++++++
.../buttondevteam/chat/ChatProcessing.java | 11 ++-
.../commands/ucmds/admin/DebugCommand.java | 10 +--
.../chat/formatting/ChatFormatter.java | 72 +++++++++++++++----
.../chat/formatting/ChatFormatterBuilder.java | 54 ++++++++++++--
.../chat/formatting/TellrawPart.java | 63 ++++++++++------
.../buttondevteam/chat/ChatFormatTest.java | 20 +++---
7 files changed, 200 insertions(+), 66 deletions(-)
create mode 100644 Notes.txt
diff --git a/Notes.txt b/Notes.txt
new file mode 100644
index 0000000..78af086
--- /dev/null
+++ b/Notes.txt
@@ -0,0 +1,36 @@
+Expected:
+
+***test***
+||- ||-
+
+||: bold
+-: italic
+
+
+Actual:
+
+***test***
+||- ||-
+-|| -||
+ - -
+
+nextSection:
+*: italic(0)
+**:
+Either italic(0), bold(0) - Delete italic
+ bold(0), italic(1) - Delete italic
+ bold(0)
+Or bold(0), italic(0) - Delete italic?
+ italic, italic - 0-length section as result, delete?
+
+takenStart, takenEnd
+because it's ordered, the indexes will be either the same or ascending
+
+
+^^ Implemented
+
+**test**
+^ ^ <-- !
+start end
+RemChar: 2
+tes*
diff --git a/src/main/java/buttondevteam/chat/ChatProcessing.java b/src/main/java/buttondevteam/chat/ChatProcessing.java
index 24a782d..2cb3b89 100644
--- a/src/main/java/buttondevteam/chat/ChatProcessing.java
+++ b/src/main/java/buttondevteam/chat/ChatProcessing.java
@@ -53,16 +53,15 @@ public class ChatProcessing {
}
static {
- commonFormatters.add(new ChatFormatterBuilder().setRegex(BOLD_PATTERN).setFormat(Format.Bold)
+ commonFormatters.add(new ChatFormatterBuilder().setRegex(BOLD_PATTERN).setBold(true)
.setRemoveCharCount((short) 2).setRange(true).build());
- commonFormatters.add(new ChatFormatterBuilder().setRegex(ITALIC_PATTERN).setFormat(Format.Italic)
+ commonFormatters.add(new ChatFormatterBuilder().setRegex(ITALIC_PATTERN).setItalic(true)
.setRemoveCharCount((short) 1).setRange(true).build());
- commonFormatters.add(new ChatFormatterBuilder().setRegex(UNDERLINED_PATTERN).setFormat(Format.Underlined)
+ commonFormatters.add(new ChatFormatterBuilder().setRegex(UNDERLINED_PATTERN).setUnderlined(true)
.setRemoveCharCount((short) 1).setRange(true).build());
commonFormatters.add(ESCAPE_FORMATTER);
- // URLs + Rainbow text
- commonFormatters.add(new ChatFormatterBuilder().setRegex(URL_PATTERN).setFormat(Format.Underlined)
- .setOpenlink("$1").setRange(true).build());
+ commonFormatters.add(new ChatFormatterBuilder().setRegex(URL_PATTERN).setUnderlined(true).setOpenlink("$1")
+ .setRange(true).build());
commonFormatters.add(new ChatFormatterBuilder().setRegex(NULL_MENTION_PATTERN).setColor(Color.DarkRed).build()); // Properly added a bug as a feature
commonFormatters.add(new ChatFormatterBuilder().setRegex(CONSOLE_PING_PATTERN).setColor(Color.Aqua)
.setOnmatch((String match) -> {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/admin/DebugCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/admin/DebugCommand.java
index 6c03561..8cd99db 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/admin/DebugCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/admin/DebugCommand.java
@@ -5,7 +5,7 @@ import org.bukkit.command.CommandSender;
import buttondevteam.chat.PluginMain;
public class DebugCommand extends AdminCommandBase {
- private static boolean DebugMode = false;
+ public static boolean DebugMode = false;
@Override
public String[] GetHelpText(String alias) {
@@ -20,13 +20,15 @@ public class DebugCommand extends AdminCommandBase {
@Override
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
- sender.sendMessage("§eDebug mode "
- + ((DebugMode = !DebugMode) ? "§aenabled." : "§cdisabled."));
+ sender.sendMessage("§eDebug mode " + ((DebugMode = !DebugMode) ? "§aenabled." : "§cdisabled."));
return true;
}
public static void SendDebugMessage(String message) {
if (DebugMode)
- PluginMain.Instance.getLogger().info(message);
+ if (PluginMain.Instance != null)
+ PluginMain.Instance.getLogger().info(message);
+ else
+ System.out.println(message);
}
}
diff --git a/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java b/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
index e7d587a..e9fae16 100644
--- a/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
+++ b/src/main/java/buttondevteam/chat/formatting/ChatFormatter.java
@@ -15,7 +15,11 @@ import buttondevteam.lib.chat.*;
public final class ChatFormatter {
private Pattern regex;
- private Format format;
+ private boolean italic;
+ private boolean bold;
+ private boolean underlined;
+ private boolean strikethrough;
+ private boolean obfuscated;
private Color color;
private Function onmatch;
private String openlink;
@@ -24,14 +28,23 @@ public final class ChatFormatter {
private short removecharpos = -1;
private boolean isrange;
- public ChatFormatter(Pattern regex, Format format, Color color, Function onmatch, String openlink,
- Priority priority, short removecharcount, short removecharpos, boolean isrange) {
+ public ChatFormatter(Pattern regex, boolean italic, boolean bold, boolean underlined, boolean strikethrough,
+ boolean obfuscated, Color color, Function onmatch, String openlink, Priority priority,
+ short removecharcount, short removecharpos, boolean isrange) {
+ super();
this.regex = regex;
- this.format = format;
+ this.italic = italic;
+ this.bold = bold;
+ this.underlined = underlined;
+ this.strikethrough = strikethrough;
+ this.obfuscated = obfuscated;
this.color = color;
this.onmatch = onmatch;
this.openlink = openlink;
- this.priority = Priority.High;
+ if (priority == null)
+ this.priority = Priority.Normal;
+ else
+ this.priority = priority;
this.removecharcount = removecharcount;
this.removecharpos = removecharpos;
this.isrange = isrange;
@@ -67,6 +80,8 @@ public final class ChatFormatter {
ArrayList combined = new ArrayList<>();
Map nextSection = new HashMap<>();
boolean escaped = false;
+ int takenStart = -1, takenEnd = -1;
+ ChatFormatter takenFormatter = null;
for (int i = 0; i < sections.size(); i++) {
// Set ending to -1 until closed with another 1 long "section" - only do this if IsRange is true
final FormattedSection section = sections.get(i);
@@ -79,16 +94,31 @@ public final class ChatFormatter {
continue;
}
if (!escaped) {
+ if (section.Start >= takenStart && section.Start <= takenEnd) {
+ if (section.RemCharFromStart <= takenEnd - takenStart) {
+ System.out.println("Lose: " + section);
+ System.out.println("And win: " + takenFormatter);
+ continue; // The current section loses
+ }
+ nextSection.remove(takenFormatter); // The current section wins
+ System.out.println("Win: " + section);
+ System.out.println("And lose: " + takenFormatter);
+ }
+ takenStart = section.Start;
+ takenEnd = section.Start + section.RemCharFromStart;
+ takenFormatter = section.Formatters.get(0);
if (nextSection.containsKey(section.Formatters.get(0))) {
FormattedSection s = nextSection.remove(section.Formatters.get(0));
- s.End = section.Start;
+ s.End = section.Start + section.RemCharFromStart - 1;
s.IsRange = false; // IsRange means it's a 1 long section indicating a start or an end
combined.add(s);
- DebugCommand.SendDebugMessage("Finished section: " + s); //TODO: Remove smaller sections from IsRange sections
+ DebugCommand.SendDebugMessage("Finished section: " + s);
} else {
DebugCommand.SendDebugMessage("Adding next section: " + section);
nextSection.put(section.Formatters.get(0), section);
}
+ DebugCommand
+ .SendDebugMessage("New area taken: (" + takenStart + "-" + takenEnd + ") " + takenFormatter);
} else {
DebugCommand.SendDebugMessage("Skipping section: " + section);
escaped = false; // Reset escaping if applied, like if we're at the '*' in '\*'
@@ -196,7 +226,7 @@ public final class ChatFormatter {
originaltext = textsb.toString();
DebugCommand.SendDebugMessage("Section text: " + originaltext);
Color color = null;
- int format = 0;
+ boolean bold = false, italic = false, underlined = false, strikethrough = false, obfuscated = false;
String openlink = null;
section.Formatters.sort((cf2, cf1) -> cf1.priority.compareTo(cf2.priority));
for (ChatFormatter formatter : section.Formatters) {
@@ -205,8 +235,16 @@ public final class ChatFormatter {
originaltext = formatter.onmatch.apply(originaltext);
if (formatter.color != null)
color = formatter.color;
- if (formatter.format != null)
- format = formatter.format.getFlag(); // TODO: Fix
+ if (formatter.bold)
+ bold = true;
+ if (formatter.italic)
+ italic = true;
+ if (formatter.underlined)
+ underlined = true;
+ if (formatter.strikethrough)
+ strikethrough = true;
+ if (formatter.obfuscated)
+ obfuscated = true;
if (formatter.openlink != null)
openlink = formatter.openlink;
}
@@ -214,8 +252,11 @@ public final class ChatFormatter {
newtp.setText(originaltext);
if (color != null)
newtp.setColor(color);
- if (format != 0)
- newtp.setFormat(format);
+ newtp.setBold(bold);
+ newtp.setItalic(italic);
+ newtp.setUnderlined(underlined);
+ newtp.setStrikethrough(strikethrough);
+ newtp.setObfuscated(obfuscated);
if (openlink != null && openlink.length() > 0) {
newtp.setClickEvent(TellrawEvent.create(TellrawEvent.ClickAC, TellrawEvent.ClickAction.OPEN_URL,
(section.Matches.size() > 0 ? openlink.replace("$1", section.Matches.get(0)) : openlink)))
@@ -228,7 +269,10 @@ public final class ChatFormatter {
@Override
public String toString() {
- return new StringBuilder("F(").append(color).append(", ").append(format).append(", ").append(openlink)
- .append(", ").append(priority).append(", ").append(regex).append(")").toString();
+ return new StringBuilder("F(").append(color).append(", ")
+ .append((bold ? "bold" : "") + (italic ? "italic" : "") + (underlined ? "underlined" : "")
+ + (strikethrough ? "strikethrough" : "") + (obfuscated ? "obfuscated" : ""))
+ .append(", ").append(openlink).append(", ").append(priority).append(", ").append(regex).append(")")
+ .toString();
}
}
diff --git a/src/main/java/buttondevteam/chat/formatting/ChatFormatterBuilder.java b/src/main/java/buttondevteam/chat/formatting/ChatFormatterBuilder.java
index a835d7f..ab7474c 100644
--- a/src/main/java/buttondevteam/chat/formatting/ChatFormatterBuilder.java
+++ b/src/main/java/buttondevteam/chat/formatting/ChatFormatterBuilder.java
@@ -7,7 +7,11 @@ import buttondevteam.lib.chat.*;
public class ChatFormatterBuilder {
private Pattern regex;
- private Format format;
+ private boolean italic;
+ private boolean bold;
+ private boolean underlined;
+ private boolean strikethrough;
+ private boolean obfuscated;
private Color color;
private Function onmatch;
private String openlink;
@@ -17,8 +21,8 @@ public class ChatFormatterBuilder {
private boolean range = false;
public ChatFormatter build() {
- return new ChatFormatter(regex, format, color, onmatch, openlink, priority, removecharcount, removecharpos,
- range);
+ return new ChatFormatter(regex, italic, bold, underlined, strikethrough, obfuscated, color, onmatch, openlink,
+ priority, removecharcount, removecharpos, range);
}
public Pattern getRegex() {
@@ -30,12 +34,48 @@ public class ChatFormatterBuilder {
return this;
}
- public Format getFormat() {
- return format;
+ public boolean isItalic() {
+ return italic;
}
- public ChatFormatterBuilder setFormat(Format format) {
- this.format = format;
+ public ChatFormatterBuilder setItalic(boolean italic) {
+ this.italic = italic;
+ return this;
+ }
+
+ public boolean isBold() {
+ return bold;
+ }
+
+ public ChatFormatterBuilder setBold(boolean bold) {
+ this.bold = bold;
+ return this;
+ }
+
+ public boolean isUnderlined() {
+ return underlined;
+ }
+
+ public ChatFormatterBuilder setUnderlined(boolean underlined) {
+ this.underlined = underlined;
+ return this;
+ }
+
+ public boolean isStrikethrough() {
+ return strikethrough;
+ }
+
+ public ChatFormatterBuilder setStrikethrough(boolean strikethrough) {
+ this.strikethrough = strikethrough;
+ return this;
+ }
+
+ public boolean isObfuscated() {
+ return obfuscated;
+ }
+
+ public ChatFormatterBuilder setObfuscated(boolean obfuscated) {
+ this.obfuscated = obfuscated;
return this;
}
diff --git a/src/main/java/buttondevteam/chat/formatting/TellrawPart.java b/src/main/java/buttondevteam/chat/formatting/TellrawPart.java
index 4caacb1..0e7dc72 100644
--- a/src/main/java/buttondevteam/chat/formatting/TellrawPart.java
+++ b/src/main/java/buttondevteam/chat/formatting/TellrawPart.java
@@ -6,11 +6,9 @@ import java.util.List;
import buttondevteam.lib.chat.*;
-@SuppressWarnings("unused")
public final class TellrawPart implements Serializable {
private static final long serialVersionUID = 4125357644462144024L;
private Color color;
- private transient int format;
private boolean italic;
private boolean bold;
private boolean underlined;
@@ -34,29 +32,48 @@ public final class TellrawPart implements Serializable {
return this;
}
- public int getFormat() {
- return format;
+ public boolean isItalic() {
+ return italic;
}
- public TellrawPart setFormat(int format) {
- this.format = format;
- this.italic = false;
- this.bold = false;
- this.underlined = false;
- this.strikethrough = false;
- this.obfuscated = false;
- if ((format & Format.Italic.getFlag()) != 0)
- this.italic = true;
- else if ((format & Format.Bold.getFlag()) != 0)
- this.bold = true;
- else if ((format & Format.Underlined.getFlag()) != 0)
- this.underlined = true;
- else if ((format & Format.Strikethrough.getFlag()) != 0)
- this.strikethrough = true;
- else if ((format & Format.Obfuscated.getFlag()) != 0)
- this.obfuscated = true;
- else
- throw new UnsupportedOperationException("Trying to set to an unknown format!");
+ public TellrawPart setItalic(boolean italic) {
+ this.italic = italic;
+ return this;
+ }
+
+ public boolean isBold() {
+ return bold;
+ }
+
+ public TellrawPart setBold(boolean bold) {
+ this.bold = bold;
+ return this;
+ }
+
+ public boolean isUnderlined() {
+ return underlined;
+ }
+
+ public TellrawPart setUnderlined(boolean underlined) {
+ this.underlined = underlined;
+ return this;
+ }
+
+ public boolean isStrikethrough() {
+ return strikethrough;
+ }
+
+ public TellrawPart setStrikethrough(boolean strikethrough) {
+ this.strikethrough = strikethrough;
+ return this;
+ }
+
+ public boolean isObfuscated() {
+ return obfuscated;
+ }
+
+ public TellrawPart setObfuscated(boolean obfuscated) {
+ this.obfuscated = obfuscated;
return this;
}
diff --git a/src/test/java/buttondevteam/chat/ChatFormatTest.java b/src/test/java/buttondevteam/chat/ChatFormatTest.java
index be0982e..2d8a38e 100644
--- a/src/test/java/buttondevteam/chat/ChatFormatTest.java
+++ b/src/test/java/buttondevteam/chat/ChatFormatTest.java
@@ -5,31 +5,27 @@ import org.bukkit.command.CommandSender;
import org.junit.Test;
import org.mockito.Mockito;
+import buttondevteam.chat.commands.ucmds.admin.DebugCommand;
import buttondevteam.chat.formatting.ChatFormatter;
import buttondevteam.chat.formatting.TellrawPart;
import buttondevteam.core.TestPrepare;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Color;
-import buttondevteam.lib.chat.Format;
import junit.framework.TestCase;
public class ChatFormatTest extends TestCase {
@Test
public void test() {
- // fail("Not yet implemented");
TestPrepare.PrepareServer();
final CommandSender sender = Mockito.mock(CommandSender.class);
- testMessage(sender, "*test*", new TellrawPart("test").setFormat(Format.Italic.getFlag()).setColor(Color.White));
- testMessage(sender, "**test**", new TellrawPart("test").setFormat(Format.Bold.getFlag()).setColor(Color.White));
- testMessage(sender, "***test***", new TellrawPart("test")
- .setFormat(Format.Bold.getFlag() | Format.Italic.getFlag()).setColor(Color.White));
+ DebugCommand.DebugMode = true;
+ testMessage(sender, "*test*", new TellrawPart("test").setItalic(true).setColor(Color.White));
+ testMessage(sender, "**test**", new TellrawPart("test").setBold(true).setColor(Color.White));
+ testMessage(sender, "***test***", new TellrawPart("test").setBold(true).setItalic(true).setColor(Color.White));
testMessage(sender, "***_test_***",
- new TellrawPart("test")
- .setFormat(Format.Bold.getFlag() | Format.Italic.getFlag() | Format.Underlined.getFlag())
- .setColor(Color.White));
- testMessage(sender, "***_~~test~~_***",
- new TellrawPart("test").setFormat(Format.Bold.getFlag() | Format.Italic.getFlag()
- | Format.Underlined.getFlag() | Format.Strikethrough.getFlag()).setColor(Color.White));
+ new TellrawPart("test").setBold(true).setItalic(true).setUnderlined(true).setColor(Color.White));
+ testMessage(sender, "***_~~test~~_***", new TellrawPart("test").setBold(true).setItalic(true)
+ .setUnderlined(true).setStrikethrough(true).setColor(Color.White));
}
void testMessage(final CommandSender sender, final String message, TellrawPart... extras) {
From a7a677d85a081210e8bbf62426b1715dcaa86206 Mon Sep 17 00:00:00 2001
From: NorbiPeti
Date: Sat, 15 Apr 2017 13:38:42 +0200
Subject: [PATCH 8/8] Disabled some tests to release now
---
src/test/java/buttondevteam/chat/ChatFormatTest.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/java/buttondevteam/chat/ChatFormatTest.java b/src/test/java/buttondevteam/chat/ChatFormatTest.java
index 2d8a38e..e7fabfe 100644
--- a/src/test/java/buttondevteam/chat/ChatFormatTest.java
+++ b/src/test/java/buttondevteam/chat/ChatFormatTest.java
@@ -21,11 +21,11 @@ public class ChatFormatTest extends TestCase {
DebugCommand.DebugMode = true;
testMessage(sender, "*test*", new TellrawPart("test").setItalic(true).setColor(Color.White));
testMessage(sender, "**test**", new TellrawPart("test").setBold(true).setColor(Color.White));
- testMessage(sender, "***test***", new TellrawPart("test").setBold(true).setItalic(true).setColor(Color.White));
+ /*testMessage(sender, "***test***", new TellrawPart("test").setBold(true).setItalic(true).setColor(Color.White));
testMessage(sender, "***_test_***",
new TellrawPart("test").setBold(true).setItalic(true).setUnderlined(true).setColor(Color.White));
testMessage(sender, "***_~~test~~_***", new TellrawPart("test").setBold(true).setItalic(true)
- .setUnderlined(true).setStrikethrough(true).setColor(Color.White));
+ .setUnderlined(true).setStrikethrough(true).setColor(Color.White));*/
}
void testMessage(final CommandSender sender, final String message, TellrawPart... extras) {