Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab6ffcce7d | ||
|
|
d0cc86103a |
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<name>StaffChat</name>
|
||||||
<groupId>me.oskar3123</groupId>
|
<groupId>me.oskar3123</groupId>
|
||||||
<artifactId>staffchat</artifactId>
|
<artifactId>staffchat</artifactId>
|
||||||
<version>1.2.0-SNAPSHOT</version>
|
<version>1.3.1-SNAPSHOT</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<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
|
public class BungeeStaffChatEvent extends Event implements Cancellable
|
||||||
{
|
{
|
||||||
|
|
||||||
private final String message;
|
|
||||||
private final ProxiedPlayer player;
|
private final ProxiedPlayer player;
|
||||||
private boolean cancelled = false;
|
private boolean cancelled = false;
|
||||||
private String format;
|
private String format;
|
||||||
|
private String message;
|
||||||
|
|
||||||
public BungeeStaffChatEvent(ProxiedPlayer player, String format, String message)
|
public BungeeStaffChatEvent(ProxiedPlayer player, String format, String message)
|
||||||
{
|
{
|
||||||
@@ -34,6 +34,11 @@ public class BungeeStaffChatEvent extends Event implements Cancellable
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message)
|
||||||
|
{
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
public ProxiedPlayer getPlayer()
|
public ProxiedPlayer getPlayer()
|
||||||
{
|
{
|
||||||
return player;
|
return player;
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ public class BungeeChatListener implements Listener
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
format = chatEvent.getFormat();
|
format = chatEvent.getFormat();
|
||||||
|
message = chatEvent.getMessage();
|
||||||
|
|
||||||
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(player.getName()));
|
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(player.getName()));
|
||||||
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ public class Main extends JavaPlugin
|
|||||||
|
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", chatListener);
|
||||||
new MetricsLite(this);
|
new MetricsLite(this);
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
registerCommands();
|
registerCommands();
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ public class StaffChatEvent extends Event implements Cancellable
|
|||||||
|
|
||||||
private static HandlerList handlerList = new HandlerList();
|
private static HandlerList handlerList = new HandlerList();
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final String message;
|
|
||||||
private boolean cancelled = false;
|
private boolean cancelled = false;
|
||||||
private String format;
|
private String format;
|
||||||
|
private String message;
|
||||||
|
|
||||||
public StaffChatEvent(Player player, String format, String message)
|
public StaffChatEvent(boolean async, Player player, String format, String message)
|
||||||
{
|
{
|
||||||
|
super(async);
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.format = format;
|
this.format = format;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
@@ -46,6 +47,11 @@ public class StaffChatEvent extends Event implements Cancellable
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message)
|
||||||
|
{
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HandlerList getHandlers()
|
public HandlerList getHandlers()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,20 +1,26 @@
|
|||||||
package me.oskar3123.staffchat.spigot.listener;
|
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.Main;
|
||||||
import me.oskar3123.staffchat.spigot.event.StaffChatEvent;
|
import me.oskar3123.staffchat.spigot.event.StaffChatEvent;
|
||||||
import me.oskar3123.staffchat.util.StringUtils;
|
import me.oskar3123.staffchat.util.StringUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class ChatListener implements Listener
|
public class ChatListener implements Listener, PluginMessageListener
|
||||||
{
|
{
|
||||||
|
|
||||||
private Main plugin;
|
private Main plugin;
|
||||||
@@ -48,29 +54,93 @@ public class ChatListener implements Listener
|
|||||||
message = plugin.replacePlaceholders(event.getPlayer(), message);
|
message = plugin.replacePlaceholders(event.getPlayer(), message);
|
||||||
}
|
}
|
||||||
|
|
||||||
StaffChatEvent chatEvent = new StaffChatEvent(event.getPlayer(), format, message);
|
StaffChatEvent chatEvent = new StaffChatEvent(event.isAsynchronous(), event.getPlayer(), format, message);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(chatEvent);
|
Bukkit.getServer().getPluginManager().callEvent(chatEvent);
|
||||||
if (chatEvent.isCancelled())
|
if (chatEvent.isCancelled())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
format = chatEvent.getFormat();
|
format = chatEvent.getFormat();
|
||||||
|
message = chatEvent.getMessage();
|
||||||
|
|
||||||
|
format = plugin.replacePlaceholders(event.getPlayer(), format);
|
||||||
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(event.getPlayer().getName()));
|
format = format.replaceAll("\\{NAME\\}", StringUtils.sanitize(event.getPlayer().getName()));
|
||||||
format = ChatColor.translateAlternateColorCodes('&', format);
|
format = ChatColor.translateAlternateColorCodes('&', format);
|
||||||
format = plugin.replacePlaceholders(event.getPlayer(), format);
|
|
||||||
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
format = format.replaceAll("\\{MESSAGE\\}", StringUtils.sanitize(message));
|
||||||
|
|
||||||
final String finalMessage = format;
|
final String finalMessage = format;
|
||||||
|
|
||||||
Bukkit.getOnlinePlayers().stream()
|
if (plugin.getConfig().getBoolean("settings.sendmessagestoallservers"))
|
||||||
.filter(p -> p.hasPermission(plugin.seePerm))
|
{
|
||||||
.forEach(p -> p.sendMessage(finalMessage));
|
sendForwardPluginMessage(event.getPlayer(), finalMessage);
|
||||||
plugin.getLogger().info(ChatColor.stripColor(finalMessage));
|
}
|
||||||
|
sendStaffChatMessage(finalMessage);
|
||||||
|
|
||||||
event.setCancelled(true);
|
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)
|
public boolean togglePlayer(UUID player)
|
||||||
{
|
{
|
||||||
if (toggledPlayers.contains(player))
|
if (toggledPlayers.contains(player))
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
name: StaffChat
|
name: StaffChat
|
||||||
authors: [oskar3123]
|
authors: [oskar3123]
|
||||||
main: me.oskar3123.staffchat.bungee.BungeeMain
|
main: me.oskar3123.staffchat.bungee.BungeeMain
|
||||||
version: 1.2.0
|
version: 1.3.0
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ settings:
|
|||||||
character: '@'
|
character: '@'
|
||||||
format: '&b{NAME}: {MESSAGE}'
|
format: '&b{NAME}: {MESSAGE}'
|
||||||
replaceplaceholdersinmessage: true
|
replaceplaceholdersinmessage: true
|
||||||
|
sendmessagestoallservers: true
|
||||||
messages:
|
messages:
|
||||||
prefix: '&7StaffChat&8> &7'
|
prefix: '&7StaffChat&8> &7'
|
||||||
nopermission: '&cYou don''t have permission to do that'
|
nopermission: '&cYou don''t have permission to do that'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ name: StaffChat
|
|||||||
authors: [oskar3123]
|
authors: [oskar3123]
|
||||||
main: me.oskar3123.staffchat.spigot.Main
|
main: me.oskar3123.staffchat.spigot.Main
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
version: 1.2.0
|
version: 1.3.1
|
||||||
softdepend: [PlaceholderAPI]
|
softdepend: [PlaceholderAPI]
|
||||||
commands:
|
commands:
|
||||||
staffchat:
|
staffchat:
|
||||||
|
|||||||
Reference in New Issue
Block a user