papermc/CraftBukkit-Patches/0157-BungeeCord-Chat-API.patch
Thinkofdeath 461353e2cb SPIGOT-522: Remove the global api cache option
This was useful when plugins first started upgrading to uuid because each
plugin would implement their own way for grabbing uuid's from mojang. Because
none of them shared the result they would quickly hit the limits on the api
causing the conversion to either fail or pause for long periods of time. The
global api cache was a (very hacky) way to force all plugins to share a cache
but caused a few issues with plugins that expected a full implementation of
the HTTPURLConnection. Due to the fact that most servers/plugins have updated
now it seems to be a good time to remove this as its usefulness mostly has
expired.
2015-02-06 09:03:19 -06:00

128 lines
4.2 KiB
Diff

From 06a72830d5a89704ea9b527d6231ace86df7e050 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..f9a25e9
--- /dev/null
+++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java
@@ -0,0 +1,47 @@
+package net.minecraft.server;
+
+public class PacketPlayOutChat implements Packet {
+
+ 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) {
+ this.a = packetdataserializer.d();
+ this.b = packetdataserializer.readByte();
+ }
+
+ public void b(PacketDataSerializer packetdataserializer) {
+ // 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;
+ }
+
+ public void a(PacketListener packetlistener) {
+ this.a((PacketListenerPlayOut) packetlistener);
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7cb8a31..d7e3919 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];
@@ -1691,6 +1692,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 e529156..c81d5d2 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