b31089a929
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: d264e972 #591: Add option for a consumer before spawning an item 1c537fce #590: Add spawn and transform reasons for piglin zombification. CraftBukkit Changes: ee5006d1 #810: Add option for a consumer before spawning an item f6a39d3c #809: Add spawn and transform reasons for piglin zombification. 0c24068a Organise imports Spigot Changes: bff52619 Organise imports
174 Zeilen
7.8 KiB
Diff
174 Zeilen
7.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/server/IChatBaseComponent.java b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
index 921fe6399745318c18570360fb438c45762b1b8e..2b8916e3b3ecfd3917b5acf3ea6dfc2793e242c8 100644
|
|
--- a/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
+++ b/src/main/java/net/minecraft/server/IChatBaseComponent.java
|
|
@@ -359,6 +359,7 @@ public interface IChatBaseComponent extends Message, IChatFormatted, Iterable<IC
|
|
return IChatBaseComponent.ChatSerializer.a.toJsonTree(ichatbasecomponent);
|
|
}
|
|
|
|
+ @Nullable public static IChatBaseComponent jsonToComponent(String json) { return a(json);} // Paper - OBFHELPER
|
|
@Nullable
|
|
public static IChatMutableComponent a(String s) {
|
|
return (IChatMutableComponent) ChatDeserializer.a(IChatBaseComponent.ChatSerializer.a, s, IChatMutableComponent.class, false);
|
|
diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java
|
|
index 6c9aed49d5e63d6df608719ed17e813f86e93fcc..391f96e585d80f7921fd96f207b0b60d88961ae7 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketDataSerializer.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketDataSerializer.java
|
|
@@ -158,6 +158,11 @@ public class PacketDataSerializer extends ByteBuf {
|
|
public PacketDataSerializer writeComponent(final net.kyori.adventure.text.Component component) {
|
|
return this.writeUtf(PaperAdventure.asJsonString(component, this.adventure$locale), 262144);
|
|
}
|
|
+
|
|
+ @Deprecated
|
|
+ public PacketDataSerializer 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 PacketDataSerializer a(IChatBaseComponent ichatbasecomponent) {
|
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
|
|
index 772ca6256964692a2b9c12e2edc532d2a8f51f7b..71168d9d0252e93253fa3b3f0bface3ae58757b7 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutTitle.java
|
|
@@ -44,6 +44,17 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
|
|
}
|
|
|
|
}
|
|
+ // Paper start
|
|
+ public net.md_5.bungee.api.chat.BaseComponent[] components;
|
|
+
|
|
+ public PacketPlayOutTitle(EnumTitleAction action, net.md_5.bungee.api.chat.BaseComponent[] components, int fadeIn, int stay, int fadeOut) {
|
|
+ this.a = action;
|
|
+ this.components = components;
|
|
+ this.c = fadeIn;
|
|
+ this.d = stay;
|
|
+ this.e = fadeOut;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
@Override
|
|
public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
|
@@ -52,6 +63,8 @@ public class PacketPlayOutTitle implements Packet<PacketListenerPlayOut> {
|
|
// Paper start
|
|
if (this.adventure$text != null) {
|
|
packetdataserializer.writeComponent(this.adventure$text);
|
|
+ } else if (this.components != null) {
|
|
+ packetdataserializer.writeComponent(this.components);
|
|
} else
|
|
// Paper end
|
|
packetdataserializer.a(this.b);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index e0805f4e295ff3866e7689214cfd922267a98008..4f3511447473f50336a1deea62958834cb3d4af1 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;
|
|
@@ -238,6 +239,96 @@ 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().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TIMES, (BaseComponent[]) null, fadeInTicks, stayTicks, fadeOutTicks));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setSubtitle(BaseComponent[] subtitle) {
|
|
+ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.SUBTITLE, subtitle, 0, 0, 0));
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setSubtitle(BaseComponent subtitle) {
|
|
+ setSubtitle(new BaseComponent[]{subtitle});
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void showTitle(BaseComponent[] title) {
|
|
+ getHandle().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.TITLE, title, 0, 0, 0));
|
|
+ }
|
|
+
|
|
+ @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().playerConnection.sendPacket(new PacketPlayOutTitle(PacketPlayOutTitle.EnumTitleAction.CLEAR, (BaseComponent[]) null, 0, 0, 0));
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public String getDisplayName() {
|
|
if(true) return io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.serialize(this.getHandle().adventure$displayName); // Paper
|