PaperMC/CraftBukkit-Patches/0154-BungeeCord-Chat-API.patch
2015-04-08 22:47:31 -05:00

126 lines
4.2 KiB
Diff

From 7c8335a89bbac0114ac349f20223b78858e728cc Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sat, 13 Dec 2014 13:06:05 +1100
Subject: [PATCH] BungeeCord Chat API
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/src/main/java/net/minecraft/server/PacketPlayOutChat.java
new file mode 100644
index 0000000..6cd5df2
--- /dev/null
+++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java
@@ -0,0 +1,45 @@
+package net.minecraft.server;
+
+import java.io.IOException;
+
+public class PacketPlayOutChat implements Packet<PacketListenerPlayOut> {
+
+ private IChatBaseComponent a;
+ public net.md_5.bungee.api.chat.BaseComponent[] components; // Spigot
+ private byte b;
+
+ public PacketPlayOutChat() {}
+
+ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent) {
+ this(ichatbasecomponent, (byte) 1);
+ }
+
+ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, byte b0) {
+ this.a = ichatbasecomponent;
+ this.b = b0;
+ }
+
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
+ this.a = packetdataserializer.d();
+ this.b = packetdataserializer.readByte();
+ }
+
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
+ // Spigot start
+ if (components != null) {
+ packetdataserializer.a(net.md_5.bungee.chat.ComponentSerializer.toString(components));
+ } else {
+ packetdataserializer.a(this.a);
+ }
+ // Spigot end
+ packetdataserializer.writeByte(this.b);
+ }
+
+ public void a(PacketListenerPlayOut packetlistenerplayout) {
+ packetlistenerplayout.a(this);
+ }
+
+ public boolean b() {
+ return this.b == 1 || this.b == 2;
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 59386fd..6174417 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -121,6 +121,7 @@ import io.netty.buffer.ByteBufOutputStream;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.base64.Base64;
import jline.console.ConsoleReader;
+import net.md_5.bungee.api.chat.BaseComponent;
public final class CraftServer implements Server {
private static final Player[] EMPTY_PLAYER_ARRAY = new Player[0];
@@ -1705,6 +1706,20 @@ public final class CraftServer implements Server {
{
return org.spigotmc.SpigotConfig.config;
}
+
+ @Override
+ public void broadcast(BaseComponent component) {
+ for (Player player : getOnlinePlayers()) {
+ player.spigot().sendMessage(component);
+ }
+ }
+
+ @Override
+ public void broadcast(BaseComponent... components) {
+ for (Player player : getOnlinePlayers()) {
+ player.spigot().sendMessage(components);
+ }
+ }
};
public Spigot spigot()
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 92df378..06e014c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -18,6 +18,7 @@ import java.util.Set;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
+import net.md_5.bungee.api.chat.BaseComponent;
import net.minecraft.server.*;
@@ -1428,6 +1429,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
return java.util.Collections.unmodifiableSet( ret );
}
+
+ @Override
+ public void sendMessage(BaseComponent component) {
+ sendMessage( new BaseComponent[] { component } );
+ }
+
+ @Override
+ public void sendMessage(BaseComponent... components) {
+ if ( getHandle().playerConnection == null ) return;
+
+ PacketPlayOutChat packet = new PacketPlayOutChat();
+ packet.components = components;
+ getHandle().playerConnection.sendPacket(packet);
+ }
};
public Player.Spigot spigot()
--
2.1.0