mirror of
https://github.com/Minestom/Minestom.git
synced 2024-12-27 11:38:03 +01:00
chore: Update Adventure to 4.9.3 and remove some deprecated elements (#510)
This commit is contained in:
parent
3be4edc096
commit
429db5b2bf
@ -5,4 +5,4 @@ asmVersion=9.2
|
|||||||
mixinVersion=0.8.4
|
mixinVersion=0.8.4
|
||||||
hephaistosVersion=v1.1.8
|
hephaistosVersion=v1.1.8
|
||||||
kotlinVersion=1.5.31
|
kotlinVersion=1.5.31
|
||||||
adventureVersion=4.8.1
|
adventureVersion=4.9.3
|
@ -6,14 +6,15 @@ import net.kyori.adventure.bossbar.BossBar;
|
|||||||
import net.kyori.adventure.key.Key;
|
import net.kyori.adventure.key.Key;
|
||||||
import net.kyori.adventure.sound.Sound;
|
import net.kyori.adventure.sound.Sound;
|
||||||
import net.kyori.adventure.sound.SoundStop;
|
import net.kyori.adventure.sound.SoundStop;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import net.kyori.adventure.title.Title;
|
||||||
|
import net.kyori.adventure.title.TitlePart;
|
||||||
import net.minestom.server.entity.Entity;
|
import net.minestom.server.entity.Entity;
|
||||||
import net.minestom.server.network.packet.server.ServerPacket;
|
import net.minestom.server.network.packet.server.ServerPacket;
|
||||||
import net.minestom.server.network.packet.server.play.EntitySoundEffectPacket;
|
import net.minestom.server.network.packet.server.play.*;
|
||||||
import net.minestom.server.network.packet.server.play.NamedSoundEffectPacket;
|
|
||||||
import net.minestom.server.network.packet.server.play.SoundEffectPacket;
|
|
||||||
import net.minestom.server.network.packet.server.play.StopSoundPacket;
|
|
||||||
import net.minestom.server.sound.SoundEvent;
|
import net.minestom.server.sound.SoundEvent;
|
||||||
|
import net.minestom.server.utils.TickUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -205,4 +206,28 @@ public class AdventurePacketConvertor {
|
|||||||
|
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates one of the three title packets from a title part and a value.
|
||||||
|
*
|
||||||
|
* @param part the part
|
||||||
|
* @param value the value
|
||||||
|
* @param <T> the type of the part
|
||||||
|
* @return the title packet
|
||||||
|
*/
|
||||||
|
public static <T> @NotNull ServerPacket createTitlePartPacket(@NotNull TitlePart<T> part, @NotNull T value) {
|
||||||
|
if (part == TitlePart.TITLE) {
|
||||||
|
return new SetTitleTextPacket((Component) value);
|
||||||
|
} else if (part == TitlePart.SUBTITLE) {
|
||||||
|
return new SetTitleSubTitlePacket((Component) value);
|
||||||
|
} else if (part == TitlePart.TIMES) {
|
||||||
|
Title.Times times = (Title.Times) value;
|
||||||
|
return new SetTitleTimePacket(
|
||||||
|
TickUtils.fromDuration(times.fadeIn(), TickUtils.CLIENT_TICK_MS),
|
||||||
|
TickUtils.fromDuration(times.stay(), TickUtils.CLIENT_TICK_MS),
|
||||||
|
TickUtils.fromDuration(times.fadeOut(), TickUtils.CLIENT_TICK_MS));
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Unknown TitlePart " + part);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,203 +0,0 @@
|
|||||||
package net.minestom.server.adventure;
|
|
||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import net.kyori.adventure.text.TranslatableComponent;
|
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
|
||||||
import net.kyori.adventure.translation.GlobalTranslator;
|
|
||||||
import net.kyori.adventure.translation.TranslationRegistry;
|
|
||||||
import net.kyori.adventure.translation.Translator;
|
|
||||||
import net.minestom.server.utils.ComponentUtils;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Manager class for handling Adventure serialization. By default AdventureSerializer will simply
|
|
||||||
* serialize components to Strings using {@link GsonComponentSerializer}. However, AdventureSerializer
|
|
||||||
* class can be used to change the way text is serialized. For example, a pre-JSON
|
|
||||||
* implementation of Minestom could change AdventureSerializer to the plain component serializer.
|
|
||||||
* <br><br>
|
|
||||||
* This manager also performs translation on all messages and the {@code serialize}
|
|
||||||
* method should be used when converting {@link Component}s into strings. This allows for
|
|
||||||
* messages with {@link TranslatableComponent} to be automatically translated into the locale
|
|
||||||
* of specific players, or other elements which implement {@link Localizable}. To add your
|
|
||||||
* own translations, use {@link GlobalTranslator#addSource(Translator)} with a
|
|
||||||
* {@link TranslationRegistry} or your own implementation of {@link Translator}.
|
|
||||||
*
|
|
||||||
* @deprecated Use {@link MinestomAdventure}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public class AdventureSerializer {
|
|
||||||
/**
|
|
||||||
* If components should be automatically translated in outgoing packets.
|
|
||||||
* @deprecated Use {@link MinestomAdventure#AUTOMATIC_COMPONENT_TRANSLATION}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static final boolean AUTOMATIC_COMPONENT_TRANSLATION = MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION;
|
|
||||||
|
|
||||||
private static Function<Component, String> serializer = component -> GsonComponentSerializer.gson().serialize(component);
|
|
||||||
|
|
||||||
private AdventureSerializer() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the root serializer that is used to convert components into strings.
|
|
||||||
*
|
|
||||||
* @return the serializer
|
|
||||||
* @deprecated The serializer is no longer in use, use the adventure-provided serializers
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull Function<Component, String> getSerializer() {
|
|
||||||
return AdventureSerializer.serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the root serializer that is used to convert components into strings.
|
|
||||||
*
|
|
||||||
* @param serializer the serializer
|
|
||||||
* @deprecated The serializer is no longer in use
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static void setSerializer(@NotNull Function<Component, String> serializer) {
|
|
||||||
AdventureSerializer.serializer = serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the default locale used to translate {@link TranslatableComponent} if, when
|
|
||||||
* {@link #translate(Component, Localizable)} is called with a localizable that
|
|
||||||
* does not have a locale.
|
|
||||||
*
|
|
||||||
* @return the default locale
|
|
||||||
* @deprecated Use {@link MinestomAdventure#getDefaultLocale()}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull Locale getDefaultLocale() {
|
|
||||||
return MinestomAdventure.getDefaultLocale();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the default locale used to translate {@link TranslatableComponent} if, when
|
|
||||||
* {@link #translate(Component, Localizable)} is called with a localizable that
|
|
||||||
* does not have a locale.
|
|
||||||
*
|
|
||||||
* @param defaultLocale the new default locale, or {@code null} to return to the default
|
|
||||||
* @deprecated Use {@link MinestomAdventure#setDefaultLocale(Locale)}}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static void setDefaultLocale(@Nullable Locale defaultLocale) {
|
|
||||||
MinestomAdventure.setDefaultLocale(defaultLocale);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the global translator object used by AdventureSerializer manager. This is just shorthand for
|
|
||||||
* {@link GlobalTranslator#get()}.
|
|
||||||
*
|
|
||||||
* @return the global translator
|
|
||||||
* @deprecated Use {@link GlobalTranslator#get()}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull GlobalTranslator getTranslator() {
|
|
||||||
return GlobalTranslator.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares a component for serialization. This runs the component through the
|
|
||||||
* translator for the localizable's locale.
|
|
||||||
*
|
|
||||||
* @param component the component
|
|
||||||
* @param localizable the localizable
|
|
||||||
*
|
|
||||||
* @return the prepared component
|
|
||||||
* @deprecated Use {@link GlobalTranslator#translate(String, Locale)}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull Component translate(@NotNull Component component, @NotNull Localizable localizable) {
|
|
||||||
return GlobalTranslator.renderer().render(component, Objects.requireNonNullElse(localizable.getLocale(), AdventureSerializer.getDefaultLocale()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares a component for serialization. This runs the component through the
|
|
||||||
* translator for the locale.
|
|
||||||
*
|
|
||||||
* @param component the component
|
|
||||||
* @param locale the locale
|
|
||||||
*
|
|
||||||
* @return the prepared component
|
|
||||||
* @deprecated Use {@link GlobalTranslator#translate(String, Locale)}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull Component translate(@NotNull Component component, @NotNull Locale locale) {
|
|
||||||
return GlobalTranslator.renderer().render(component, locale);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Serializes a component into a string using {@link #getSerializer()}.
|
|
||||||
*
|
|
||||||
* @param component the component
|
|
||||||
*
|
|
||||||
* @return the serialized string
|
|
||||||
* @deprecated Use the Adventure serializers directly
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static @NotNull String serialize(@NotNull Component component) {
|
|
||||||
return AdventureSerializer.serializer.apply(component);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares and then serializes a component.
|
|
||||||
*
|
|
||||||
* @param component the component
|
|
||||||
* @param localizable the localisable
|
|
||||||
*
|
|
||||||
* @return the string
|
|
||||||
* @deprecated Use {@link GlobalTranslator#translate(String, Locale)} and the Adventure serializers
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static String translateAndSerialize(@NotNull Component component, @NotNull Localizable localizable) {
|
|
||||||
return AdventureSerializer.translateAndSerialize(component, Objects.requireNonNullElse(localizable.getLocale(), AdventureSerializer.getDefaultLocale()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares and then serializes a component.
|
|
||||||
*
|
|
||||||
* @param component the component
|
|
||||||
* @param locale the locale
|
|
||||||
*
|
|
||||||
* @return the string
|
|
||||||
* @deprecated Use {@link GlobalTranslator#translate(String, Locale)} and the Adventure serializers
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static String translateAndSerialize(@NotNull Component component, @NotNull Locale locale) {
|
|
||||||
return AdventureSerializer.serialize(AdventureSerializer.translate(component, locale));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if a component can be translated server-side. This is done by running the
|
|
||||||
* component through the translator and seeing if the translated component is equal
|
|
||||||
* to the non translated component.
|
|
||||||
* @param component the component
|
|
||||||
* @return {@code true} if the component can be translated server-side,
|
|
||||||
* {@code false} otherwise
|
|
||||||
* @deprecated Use {@link ComponentUtils#isTranslatable(Component)}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static boolean isTranslatable(@NotNull Component component) {
|
|
||||||
return ComponentUtils.isTranslatable(component);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if any of a series of components are translatable server-side.
|
|
||||||
* @param components the components
|
|
||||||
* @return {@code true} if any of the components can be translated server-side,
|
|
||||||
* {@code false} otherwise
|
|
||||||
* @deprecated Use {@link ComponentUtils#areAnyTranslatable(Collection)}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true)
|
|
||||||
public static boolean areAnyTranslatable(@NotNull Collection<Component> components) {
|
|
||||||
return ComponentUtils.areAnyTranslatable(components);
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,6 +9,7 @@ import net.kyori.adventure.sound.Sound;
|
|||||||
import net.kyori.adventure.sound.SoundStop;
|
import net.kyori.adventure.sound.SoundStop;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.title.Title;
|
import net.kyori.adventure.title.Title;
|
||||||
|
import net.kyori.adventure.title.TitlePart;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.adventure.AdventurePacketConvertor;
|
import net.minestom.server.adventure.AdventurePacketConvertor;
|
||||||
import net.minestom.server.entity.Player;
|
import net.minestom.server.entity.Player;
|
||||||
@ -17,6 +18,7 @@ import net.minestom.server.message.Messenger;
|
|||||||
import net.minestom.server.network.packet.server.ServerPacket;
|
import net.minestom.server.network.packet.server.ServerPacket;
|
||||||
import net.minestom.server.network.packet.server.play.*;
|
import net.minestom.server.network.packet.server.play.*;
|
||||||
import net.minestom.server.utils.PacketUtils;
|
import net.minestom.server.utils.PacketUtils;
|
||||||
|
import net.minestom.server.utils.TickUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -69,9 +71,8 @@ public interface PacketGroupingAudience extends ForwardingAudience {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void showTitle(@NotNull Title title) {
|
default <T> void sendTitlePart(@NotNull TitlePart<T> part, @NotNull T value) {
|
||||||
sendGroupedPacket(new SetTitleTextPacket(title.title()));
|
sendGroupedPacket(AdventurePacketConvertor.createTitlePartPacket(part, value));
|
||||||
sendGroupedPacket(new SetTitleSubTitlePacket(title.subtitle()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -15,6 +15,7 @@ import net.kyori.adventure.text.event.HoverEventSource;
|
|||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.title.Title;
|
import net.kyori.adventure.title.Title;
|
||||||
|
import net.kyori.adventure.title.TitlePart;
|
||||||
import net.minestom.server.MinecraftServer;
|
import net.minestom.server.MinecraftServer;
|
||||||
import net.minestom.server.advancements.AdvancementTab;
|
import net.minestom.server.advancements.AdvancementTab;
|
||||||
import net.minestom.server.adventure.AdventurePacketConvertor;
|
import net.minestom.server.adventure.AdventurePacketConvertor;
|
||||||
@ -611,14 +612,6 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||||||
sendPluginMessage(channel, message.getBytes(StandardCharsets.UTF_8));
|
sendPluginMessage(channel, message.getBytes(StandardCharsets.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link #sendMessage(Component)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public void sendJsonMessage(@NotNull String json) {
|
|
||||||
this.sendMessage(GsonComponentSerializer.gson().deserialize(json));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendMessage(@NotNull Identity source, @NotNull Component message, @NotNull MessageType type) {
|
public void sendMessage(@NotNull Identity source, @NotNull Component message, @NotNull MessageType type) {
|
||||||
Messenger.sendMessage(this, message, ChatPosition.fromMessageType(type), source.uuid());
|
Messenger.sendMessage(this, message, ChatPosition.fromMessageType(type), source.uuid());
|
||||||
@ -688,16 +681,8 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showTitle(@NotNull Title title) {
|
public <T> void sendTitlePart(@NotNull TitlePart<T> part, @NotNull T value) {
|
||||||
playerConnection.sendPacket(new SetTitleTextPacket(title.title()));
|
playerConnection.sendPacket(AdventurePacketConvertor.createTitlePartPacket(part, value));
|
||||||
playerConnection.sendPacket(new SetTitleSubTitlePacket(title.subtitle()));
|
|
||||||
final var times = title.times();
|
|
||||||
if (times != null) {
|
|
||||||
playerConnection.sendPacket(new SetTitleTimePacket(
|
|
||||||
TickUtils.fromDuration(times.fadeIn(), TickUtils.CLIENT_TICK_MS),
|
|
||||||
TickUtils.fromDuration(times.stay(), TickUtils.CLIENT_TICK_MS),
|
|
||||||
TickUtils.fromDuration(times.fadeOut(), TickUtils.CLIENT_TICK_MS)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -705,20 +690,6 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||||||
playerConnection.sendPacket(new ActionBarPacket(message));
|
playerConnection.sendPacket(new ActionBarPacket(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Specifies the display time of a title.
|
|
||||||
*
|
|
||||||
* @param fadeIn ticks to spend fading in
|
|
||||||
* @param stay ticks to keep the title displayed
|
|
||||||
* @param fadeOut ticks to spend out, not when to start fading out
|
|
||||||
* @deprecated Use {@link #showTitle(Title)}. Note that this will overwrite the
|
|
||||||
* existing title. This is expected behavior and will be the case in 1.17.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public void sendTitleTime(int fadeIn, int stay, int fadeOut) {
|
|
||||||
playerConnection.sendPacket(new SetTitleTimePacket(fadeIn, stay, fadeOut));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resetTitle() {
|
public void resetTitle() {
|
||||||
playerConnection.sendPacket(new ClearTitlesPacket(true));
|
playerConnection.sendPacket(new ClearTitlesPacket(true));
|
||||||
|
@ -3,8 +3,9 @@ package net.minestom.server.item.metadata;
|
|||||||
import net.kyori.adventure.inventory.Book;
|
import net.kyori.adventure.inventory.Book;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.minestom.server.adventure.AdventureSerializer;
|
import net.kyori.adventure.translation.GlobalTranslator;
|
||||||
import net.minestom.server.adventure.Localizable;
|
import net.minestom.server.adventure.Localizable;
|
||||||
|
import net.minestom.server.adventure.MinestomAdventure;
|
||||||
import net.minestom.server.item.ItemMeta;
|
import net.minestom.server.item.ItemMeta;
|
||||||
import net.minestom.server.item.ItemMetaBuilder;
|
import net.minestom.server.item.ItemMetaBuilder;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -70,8 +71,8 @@ public class WrittenBookMeta extends ItemMeta implements ItemMetaBuilder.Provide
|
|||||||
return new Builder()
|
return new Builder()
|
||||||
.resolved(false)
|
.resolved(false)
|
||||||
.generation(WrittenBookGeneration.ORIGINAL)
|
.generation(WrittenBookGeneration.ORIGINAL)
|
||||||
.author(AdventureSerializer.translateAndSerialize(book.author(), localizable))
|
.author(GsonComponentSerializer.gson().serialize(GlobalTranslator.render(book.author(), Objects.requireNonNullElse(localizable.getLocale(), MinestomAdventure.getDefaultLocale()))))
|
||||||
.title(AdventureSerializer.translateAndSerialize(book.title(), localizable))
|
.title(GsonComponentSerializer.gson().serialize(GlobalTranslator.render(book.title(), Objects.requireNonNullElse(localizable.getLocale(), MinestomAdventure.getDefaultLocale()))))
|
||||||
.pages(book.pages())
|
.pages(book.pages())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user