Misc. fixes, chat history config, clickable announcements #114
4 changed files with 29 additions and 16 deletions
|
@ -35,13 +35,13 @@
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:ReflectionProvider:2.17.1" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:ReflectionProvider:2.17.1" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:FlattenedProvider:2.17.1" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:FlattenedProvider:2.17.1" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.palmergames.bukkit.towny:Towny:0.95.2.0" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: com.palmergames.bukkit.towny:Towny:0.95.2.0" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.milkbowl:VaultAPI:master-4c248aad62-1" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.milkbowl:VaultAPI:master-89c00e1cb8-1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.bukkit:bukkit:1.13.1-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot:1.12.2-R0.1-SNAPSHOT" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot:1.12.2-R0.1-SNAPSHOT" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.github.webbukkit:Dynmap-Towny:master-0.60-g924051d-7" level="project" />
|
<orderEntry type="library" name="Maven: com.github.webbukkit:Dynmap-Towny:master-0.60-g924051d-7" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.github.webbukkit:Dynmap:v2.5" level="project" />
|
<orderEntry type="library" name="Maven: com.github.webbukkit:Dynmap:v2.5" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.nijikokun.bukkit:Permissions:3.1.6" level="project" />
|
<orderEntry type="library" name="Maven: com.nijikokun.bukkit:Permissions:3.1.6" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.bukkit:bukkit:1.7.10-R0.1-SNAPSHOT" level="project" />
|
||||||
<orderEntry type="library" name="Maven: ru.tehkode:PermissionsEx:1.19.1" level="project" />
|
<orderEntry type="library" name="Maven: ru.tehkode:PermissionsEx:1.19.1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: de.bananaco:bPermissions:2.9.1" level="project" />
|
<orderEntry type="library" name="Maven: de.bananaco:bPermissions:2.9.1" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.platymuus.bukkit.permissions:PermissionsBukkit:1.6" level="project" />
|
<orderEntry type="library" name="Maven: com.platymuus.bukkit.permissions:PermissionsBukkit:1.6" level="project" />
|
||||||
|
|
|
@ -21,7 +21,7 @@ public class HistoryCommand extends UCommandBase {
|
||||||
/**
|
/**
|
||||||
* Key: ChannelID_groupID
|
* Key: ChannelID_groupID
|
||||||
*/
|
*/
|
||||||
private static HashMap<String, LinkedList<HistoryEntry>> messages = new HashMap<>();
|
private static final HashMap<String, LinkedList<HistoryEntry>> messages = new HashMap<>();
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand
|
||||||
public boolean def(CommandSender sender, @Command2.OptionalArg String channel) {
|
public boolean def(CommandSender sender, @Command2.OptionalArg String channel) {
|
||||||
|
@ -43,6 +43,7 @@ public class HistoryCommand extends UCommandBase {
|
||||||
stream = Stream.of(och.get());
|
stream = Stream.of(och.get());
|
||||||
}
|
}
|
||||||
AtomicBoolean sent = new AtomicBoolean();
|
AtomicBoolean sent = new AtomicBoolean();
|
||||||
|
synchronized (messages) {
|
||||||
val arr = stream.map(getThem).filter(Objects::nonNull).flatMap(Collection::stream)
|
val arr = stream.map(getThem).filter(Objects::nonNull).flatMap(Collection::stream)
|
||||||
.sorted(Comparator.comparingLong(he -> he.timestamp)).toArray(HistoryEntry[]::new);
|
.sorted(Comparator.comparingLong(he -> he.timestamp)).toArray(HistoryEntry[]::new);
|
||||||
for (int i = Math.max(0, arr.length - 10); i < arr.length; i++) {
|
for (int i = Math.max(0, arr.length - 10); i < arr.length; i++) {
|
||||||
|
@ -51,6 +52,7 @@ public class HistoryCommand extends UCommandBase {
|
||||||
sender.sendMessage("[" + e.channel.DisplayName().get() + "] " + cm.getSender().getName() + ": " + cm.getMessage());
|
sender.sendMessage("[" + e.channel.DisplayName().get() + "] " + cm.getSender().getName() + ": " + cm.getMessage());
|
||||||
sent.set(true);
|
sent.set(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!sent.get())
|
if (!sent.get())
|
||||||
sender.sendMessage("No messages can be found.");
|
sender.sendMessage("No messages can be found.");
|
||||||
return true;
|
return true;
|
||||||
|
@ -69,9 +71,11 @@ public class HistoryCommand extends UCommandBase {
|
||||||
public static void addChatMessage(ChatMessage chatMessage, Channel channel) {
|
public static void addChatMessage(ChatMessage chatMessage, Channel channel) {
|
||||||
val groupID = channel.getGroupID(chatMessage.getPermCheck());
|
val groupID = channel.getGroupID(chatMessage.getPermCheck());
|
||||||
if (groupID == null) return; //Just to be sure
|
if (groupID == null) return; //Just to be sure
|
||||||
|
synchronized (messages) {
|
||||||
var ll = messages.computeIfAbsent(channel.ID + "_" + groupID, k -> new LinkedList<>()); //<-- TIL
|
var ll = messages.computeIfAbsent(channel.ID + "_" + groupID, k -> new LinkedList<>()); //<-- TIL
|
||||||
ll.add(new HistoryEntry(System.nanoTime(), chatMessage, channel)); //Adds as last element
|
ll.add(new HistoryEntry(System.nanoTime(), chatMessage, channel)); //Adds as last element
|
||||||
while (ll.size() > 10)
|
while (ll.size() > 10)
|
||||||
ll.remove(); //Removes the first element
|
ll.remove(); //Removes the first element
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,14 +26,14 @@ import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.HashSet;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class FunComponent extends Component<PluginMain> implements Listener {
|
public class FunComponent extends Component<PluginMain> implements Listener {
|
||||||
private boolean ActiveF = false;
|
private boolean ActiveF = false;
|
||||||
private ChatPlayer FPlayer = null;
|
private ChatPlayer FPlayer = null;
|
||||||
private BukkitTask Ftask = null;
|
private BukkitTask Ftask = null;
|
||||||
private ArrayList<CommandSender> Fs = new ArrayList<>();
|
private HashSet<CommandSender> Fs = new HashSet<>();
|
||||||
private UnlolCommand command;
|
private UnlolCommand command;
|
||||||
private TBMCSystemChatEvent.BroadcastTarget unlolTarget;
|
private TBMCSystemChatEvent.BroadcastTarget unlolTarget;
|
||||||
private TBMCSystemChatEvent.BroadcastTarget fTarget;
|
private TBMCSystemChatEvent.BroadcastTarget fTarget;
|
||||||
|
@ -119,7 +119,7 @@ public class FunComponent extends Component<PluginMain> implements Listener {
|
||||||
FPlayer.FDeaths().set(FPlayer.FDeaths().get() + 1);
|
FPlayer.FDeaths().set(FPlayer.FDeaths().get() + 1);
|
||||||
TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL,
|
TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, Channel.RecipientTestResult.ALL,
|
||||||
"§bPress F to pay respects.§r", fTarget);
|
"§bPress F to pay respects.§r", fTarget);
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(PluginMain.Instance, tt, 15 * 20);
|
Ftask = Bukkit.getScheduler().runTaskLaterAsynchronously(PluginMain.Instance, tt, 15 * 20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -161,6 +161,8 @@ public class PlayerListener implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long lastError = 0;
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerTBMCChat(TBMCChatEvent e) {
|
public void onPlayerTBMCChat(TBMCChatEvent e) {
|
||||||
try {
|
try {
|
||||||
|
@ -169,6 +171,13 @@ public class PlayerListener implements Listener {
|
||||||
HistoryCommand.addChatMessage(e.getCm(), e.getChannel());
|
HistoryCommand.addChatMessage(e.getCm(), e.getChannel());
|
||||||
e.setCancelled(FormatterComponent.handleChat(e));
|
e.setCancelled(FormatterComponent.handleChat(e));
|
||||||
} catch (NoClassDefFoundError | Exception ex) { // Weird things can happen
|
} catch (NoClassDefFoundError | Exception ex) { // Weird things can happen
|
||||||
|
if (lastError < System.nanoTime() - 1000L * 1000L * 1000L * 60 * 60 //60 mins
|
||||||
|
&& Bukkit.getOnlinePlayers().size() > 0) { //If there are no players on, display to the first person
|
||||||
|
lastError = System.nanoTime(); //I put the whole thing in the if to protect against race conditions
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers())
|
||||||
|
if (e.shouldSendTo(p))
|
||||||
|
p.sendMessage("[" + e.getChannel().DisplayName().get() + "] §cSome features in the message below might be unavailable due to an error.");
|
||||||
|
}
|
||||||
ChatUtils.sendChatMessage(e, s -> "§c!§r" + s);
|
ChatUtils.sendChatMessage(e, s -> "§c!§r" + s);
|
||||||
TBMCCoreAPI.SendException("An error occured while processing a chat message!", ex);
|
TBMCCoreAPI.SendException("An error occured while processing a chat message!", ex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue