version 1.3.0
spigot version: now sends a bungeecord forward plugin message to display on all servers under the same proxy both versions: message is now editable in the events
This commit is contained in:
parent
c57fb7223a
commit
d0cc86103a
2
pom.xml
2
pom.xml
|
@ -7,7 +7,7 @@
|
|||
|
||||
<groupId>me.oskar3123</groupId>
|
||||
<artifactId>staffchat</artifactId>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
|
|
@ -7,10 +7,10 @@ import net.md_5.bungee.api.plugin.Event;
|
|||
public class BungeeStaffChatEvent extends Event implements Cancellable
|
||||
{
|
||||
|
||||
private final String message;
|
||||
private final ProxiedPlayer player;
|
||||
private boolean cancelled = false;
|
||||
private String format;
|
||||
private String message;
|
||||
|
||||
public BungeeStaffChatEvent(ProxiedPlayer player, String format, String message)
|
||||
{
|
||||
|
@ -34,6 +34,11 @@ public class BungeeStaffChatEvent extends Event implements Cancellable
|
|||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message)
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public ProxiedPlayer getPlayer()
|
||||
{
|
||||
return player;
|
||||
|
|
|
@ -63,6 +63,7 @@ public class BungeeChatListener implements Listener
|
|||
return;
|
||||
}
|
||||
format = chatEvent.getFormat();
|
||||
message = chatEvent.getMessage();
|
||||
|
||||
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(player.getName()));
|
||||
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
||||
|
|
|
@ -18,6 +18,8 @@ public class Main extends JavaPlugin
|
|||
|
||||
public void onEnable()
|
||||
{
|
||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||
getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", chatListener);
|
||||
new MetricsLite(this);
|
||||
saveDefaultConfig();
|
||||
registerCommands();
|
||||
|
|
|
@ -10,9 +10,9 @@ public class StaffChatEvent extends Event implements Cancellable
|
|||
|
||||
private static HandlerList handlerList = new HandlerList();
|
||||
private final Player player;
|
||||
private final String message;
|
||||
private boolean cancelled = false;
|
||||
private String format;
|
||||
private String message;
|
||||
|
||||
public StaffChatEvent(Player player, String format, String message)
|
||||
{
|
||||
|
@ -46,6 +46,11 @@ public class StaffChatEvent extends Event implements Cancellable
|
|||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message)
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers()
|
||||
{
|
||||
|
|
|
@ -1,20 +1,26 @@
|
|||
package me.oskar3123.staffchat.spigot.listener;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import me.oskar3123.staffchat.spigot.Main;
|
||||
import me.oskar3123.staffchat.spigot.event.StaffChatEvent;
|
||||
import me.oskar3123.staffchat.util.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ChatListener implements Listener
|
||||
public class ChatListener implements Listener, PluginMessageListener
|
||||
{
|
||||
|
||||
private Main plugin;
|
||||
|
@ -55,22 +61,86 @@ public class ChatListener implements Listener
|
|||
return;
|
||||
}
|
||||
format = chatEvent.getFormat();
|
||||
message = chatEvent.getMessage();
|
||||
|
||||
format = plugin.replacePlaceholders(event.getPlayer(), format);
|
||||
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(event.getPlayer().getName()));
|
||||
format = ChatColor.translateAlternateColorCodes('&', format);
|
||||
format = plugin.replacePlaceholders(event.getPlayer(), format);
|
||||
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
||||
|
||||
final String finalMessage = format;
|
||||
|
||||
Bukkit.getOnlinePlayers().stream()
|
||||
.filter(p -> p.hasPermission(plugin.seePerm))
|
||||
.forEach(p -> p.sendMessage(finalMessage));
|
||||
plugin.getLogger().info(ChatColor.stripColor(finalMessage));
|
||||
if (plugin.getConfig().getBoolean("settings.sendmessagestoallservers"))
|
||||
{
|
||||
sendForwardPluginMessage(event.getPlayer(), finalMessage);
|
||||
}
|
||||
sendStaffChatMessage(finalMessage);
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPluginMessageReceived(String channel, Player player, byte[] message)
|
||||
{
|
||||
if (!channel.equals("BungeeCord")) {
|
||||
return;
|
||||
}
|
||||
ByteArrayDataInput in = ByteStreams.newDataInput(message);
|
||||
String subChannel = in.readUTF();
|
||||
if (!subChannel.equals("StaffChat"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
short len = in.readShort();
|
||||
byte[] msgbytes = new byte[len];
|
||||
in.readFully(msgbytes);
|
||||
|
||||
DataInputStream msgin = new DataInputStream(new ByteArrayInputStream(msgbytes));
|
||||
String actualMessage;
|
||||
try
|
||||
{
|
||||
actualMessage = msgin.readUTF();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
plugin.getLogger().severe("Failed to read plugin message from bungeecord");
|
||||
return;
|
||||
}
|
||||
sendStaffChatMessage(actualMessage);
|
||||
}
|
||||
|
||||
private void sendStaffChatMessage(final String message)
|
||||
{
|
||||
Bukkit.getOnlinePlayers().stream()
|
||||
.filter(p -> p.hasPermission(plugin.seePerm))
|
||||
.forEach(p -> p.sendMessage(message));
|
||||
plugin.getLogger().info(ChatColor.stripColor(message));
|
||||
}
|
||||
|
||||
private void sendForwardPluginMessage(Player player, final String finalMessage)
|
||||
{
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF("Forward");
|
||||
out.writeUTF("ONLINE");
|
||||
out.writeUTF("StaffChat");
|
||||
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
|
||||
DataOutputStream dataStream = new DataOutputStream(byteStream);
|
||||
try
|
||||
{
|
||||
dataStream.writeUTF(finalMessage);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
plugin.getLogger().severe("Failed to send plugin message to bungeecord");
|
||||
return;
|
||||
}
|
||||
byte[] data = byteStream.toByteArray();
|
||||
out.writeShort(data.length);
|
||||
out.write(data);
|
||||
player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray());
|
||||
}
|
||||
|
||||
public boolean togglePlayer(UUID player)
|
||||
{
|
||||
if (toggledPlayers.contains(player))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
name: StaffChat
|
||||
authors: [oskar3123]
|
||||
main: me.oskar3123.staffchat.bungee.BungeeMain
|
||||
version: 1.2.0
|
||||
version: 1.3.0
|
||||
|
|
|
@ -2,6 +2,7 @@ settings:
|
|||
character: '@'
|
||||
format: '&b{NAME}: {MESSAGE}'
|
||||
replaceplaceholdersinmessage: true
|
||||
sendmessagestoallservers: true
|
||||
messages:
|
||||
prefix: '&7StaffChat&8> &7'
|
||||
nopermission: '&cYou don''t have permission to do that'
|
||||
|
|
|
@ -2,7 +2,7 @@ name: StaffChat
|
|||
authors: [oskar3123]
|
||||
main: me.oskar3123.staffchat.spigot.Main
|
||||
api-version: 1.13
|
||||
version: 1.2.0
|
||||
version: 1.3.0
|
||||
softdepend: [PlaceholderAPI]
|
||||
commands:
|
||||
staffchat:
|
||||
|
|
Loading…
Reference in New Issue