mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 12:11:47 +01:00
ea0b63992c
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 4727d326 Don't let Sign extend SignSide, mark API as experimental 9b29bdcc PR-845: Add preliminary support for multi sided signs CraftBukkit Changes: b346a5f6d PR-1170: Add preliminary support for multi sided signs 86c816189 Update SQLite version d9324b4bc Fix addition of custom smithing trim / transform recipes Spigot Changes: 7d7b241e Rebuild patches
176 lines
8 KiB
Diff
176 lines
8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Techcable <Techcable@outlook.com>
|
|
Date: Thu, 3 Mar 2016 02:32:10 -0600
|
|
Subject: [PATCH] Player Tab List and Title APIs
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
index 9020bc6d9ff6bc0c9b3f00470813f3258554cf45..c2f56f4628e42c130e4c55030432cb43aa0d8458 100644
|
|
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
@@ -548,6 +548,11 @@ public class FriendlyByteBuf extends ByteBuf {
|
|
public FriendlyByteBuf writeComponent(final net.kyori.adventure.text.Component component) {
|
|
return this.writeUtf(PaperAdventure.asJsonString(component, this.adventure$locale), 262144);
|
|
}
|
|
+
|
|
+ @Deprecated
|
|
+ public FriendlyByteBuf writeComponent(final net.md_5.bungee.api.chat.BaseComponent[] component) {
|
|
+ return this.writeUtf(net.md_5.bungee.chat.ComponentSerializer.toString(component), 262144);
|
|
+ }
|
|
// Paper end
|
|
|
|
public FriendlyByteBuf writeComponent(Component text) {
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetSubtitleTextPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetSubtitleTextPacket.java
|
|
index c44a276d201fdfa5144d45d319d7761583c60639..f68a1a6dc6add9496e25cb52c318e086e356e2bb 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetSubtitleTextPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetSubtitleTextPacket.java
|
|
@@ -7,6 +7,7 @@ import net.minecraft.network.protocol.Packet;
|
|
public class ClientboundSetSubtitleTextPacket implements Packet<ClientGamePacketListener> {
|
|
private final Component text;
|
|
public net.kyori.adventure.text.Component adventure$text; // Paper
|
|
+ public net.md_5.bungee.api.chat.BaseComponent[] components; // Paper
|
|
|
|
public ClientboundSetSubtitleTextPacket(Component subtitle) {
|
|
this.text = subtitle;
|
|
@@ -21,6 +22,8 @@ public class ClientboundSetSubtitleTextPacket implements Packet<ClientGamePacket
|
|
// Paper start
|
|
if (this.adventure$text != null) {
|
|
buf.writeComponent(this.adventure$text);
|
|
+ } else if (this.components != null) {
|
|
+ buf.writeComponent(this.components);
|
|
} else
|
|
// Paper end
|
|
buf.writeComponent(this.text);
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitleTextPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitleTextPacket.java
|
|
index bd808eb312ade7122973a47f4b96505829511da5..bf0f9cab7c66c089f35b851e799ba4a43420b437 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitleTextPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetTitleTextPacket.java
|
|
@@ -7,6 +7,7 @@ import net.minecraft.network.protocol.Packet;
|
|
public class ClientboundSetTitleTextPacket implements Packet<ClientGamePacketListener> {
|
|
private final Component text;
|
|
public net.kyori.adventure.text.Component adventure$text; // Paper
|
|
+ public net.md_5.bungee.api.chat.BaseComponent[] components; // Paper
|
|
|
|
public ClientboundSetTitleTextPacket(Component title) {
|
|
this.text = title;
|
|
@@ -21,6 +22,8 @@ public class ClientboundSetTitleTextPacket implements Packet<ClientGamePacketLis
|
|
// Paper start
|
|
if (this.adventure$text != null) {
|
|
buf.writeComponent(this.adventure$text);
|
|
+ } else if (this.components != null) {
|
|
+ buf.writeComponent(this.components);
|
|
} else
|
|
// Paper end
|
|
buf.writeComponent(this.text);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index ce45e409ea3413cabb2e77c7013fa9b867817ad6..aea668388c2960f515def749d4a8bf5359625dbd 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -1,5 +1,6 @@
|
|
package org.bukkit.craftbukkit.entity;
|
|
|
|
+import com.destroystokyo.paper.Title;
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.collect.ImmutableSet;
|
|
import com.google.common.io.BaseEncoding;
|
|
@@ -358,6 +359,100 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
}
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public void setPlayerListHeaderFooter(BaseComponent[] header, BaseComponent[] footer) {
|
|
+ if (header != null) {
|
|
+ String headerJson = net.md_5.bungee.chat.ComponentSerializer.toString(header);
|
|
+ playerListHeader = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().deserialize(headerJson);
|
|
+ } else {
|
|
+ playerListHeader = null;
|
|
+ }
|
|
+
|
|
+ if (footer != null) {
|
|
+ String footerJson = net.md_5.bungee.chat.ComponentSerializer.toString(footer);
|
|
+ playerListFooter = net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().deserialize(footerJson);
|
|
+ } else {
|
|
+ playerListFooter = null;
|
|
+ }
|
|
+
|
|
+ updatePlayerListHeaderFooter();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setPlayerListHeaderFooter(BaseComponent header, BaseComponent footer) {
|
|
+ this.setPlayerListHeaderFooter(header == null ? null : new BaseComponent[]{header},
|
|
+ footer == null ? null : new BaseComponent[]{footer});
|
|
+ }
|
|
+
|
|
+
|
|
+ @Override
|
|
+ public void setTitleTimes(int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
|
+ getHandle().connection.send(new ClientboundSetTitlesAnimationPacket(fadeInTicks, stayTicks, fadeOutTicks));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setSubtitle(BaseComponent[] subtitle) {
|
|
+ final ClientboundSetSubtitleTextPacket packet = new ClientboundSetSubtitleTextPacket((net.minecraft.network.chat.Component) null);
|
|
+ packet.components = subtitle;
|
|
+ getHandle().connection.send(packet);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setSubtitle(BaseComponent subtitle) {
|
|
+ setSubtitle(new BaseComponent[]{subtitle});
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void showTitle(BaseComponent[] title) {
|
|
+ final ClientboundSetTitleTextPacket packet = new ClientboundSetTitleTextPacket((net.minecraft.network.chat.Component) null);
|
|
+ packet.components = title;
|
|
+ getHandle().connection.send(packet);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void showTitle(BaseComponent title) {
|
|
+ showTitle(new BaseComponent[]{title});
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void showTitle(BaseComponent[] title, BaseComponent[] subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
|
+ setTitleTimes(fadeInTicks, stayTicks, fadeOutTicks);
|
|
+ setSubtitle(subtitle);
|
|
+ showTitle(title);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void showTitle(BaseComponent title, BaseComponent subtitle, int fadeInTicks, int stayTicks, int fadeOutTicks) {
|
|
+ setTitleTimes(fadeInTicks, stayTicks, fadeOutTicks);
|
|
+ setSubtitle(subtitle);
|
|
+ showTitle(title);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void sendTitle(Title title) {
|
|
+ Preconditions.checkNotNull(title, "Title is null");
|
|
+ setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut());
|
|
+ setSubtitle(title.getSubtitle() == null ? new BaseComponent[0] : title.getSubtitle());
|
|
+ showTitle(title.getTitle());
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void updateTitle(Title title) {
|
|
+ Preconditions.checkNotNull(title, "Title is null");
|
|
+ setTitleTimes(title.getFadeIn(), title.getStay(), title.getFadeOut());
|
|
+ if (title.getSubtitle() != null) {
|
|
+ setSubtitle(title.getSubtitle());
|
|
+ }
|
|
+ showTitle(title.getTitle());
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void hideTitle() {
|
|
+ getHandle().connection.send(new ClientboundClearTitlesPacket(false));
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public String getDisplayName() {
|
|
if(true) return io.papermc.paper.adventure.DisplayNames.getLegacy(this); // Paper
|