Rename serializer and make static static

This commit is contained in:
Kieran Wallbanks 2021-03-26 16:45:47 +00:00
parent 7fd3daae5f
commit aa2d1f6397
11 changed files with 53 additions and 61 deletions

View File

@ -2,7 +2,7 @@ package net.minestom.server;
import net.minestom.server.advancements.AdvancementManager; import net.minestom.server.advancements.AdvancementManager;
import net.minestom.server.adventure.bossbar.BossBarManager; import net.minestom.server.adventure.bossbar.BossBarManager;
import net.minestom.server.adventure.SerializationManager; import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.adventure.audience.Audiences; import net.minestom.server.adventure.audience.Audiences;
import net.minestom.server.benchmark.BenchmarkManager; import net.minestom.server.benchmark.BenchmarkManager;
import net.minestom.server.command.CommandManager; import net.minestom.server.command.CommandManager;
@ -118,7 +118,6 @@ public final class MinecraftServer {
private static DimensionTypeManager dimensionTypeManager; private static DimensionTypeManager dimensionTypeManager;
private static BiomeManager biomeManager; private static BiomeManager biomeManager;
private static AdvancementManager advancementManager; private static AdvancementManager advancementManager;
private static SerializationManager serializationManager;
private static BossBarManager bossBarManager; private static BossBarManager bossBarManager;
private static Audiences audiences; private static Audiences audiences;
@ -186,7 +185,6 @@ public final class MinecraftServer {
dimensionTypeManager = new DimensionTypeManager(); dimensionTypeManager = new DimensionTypeManager();
biomeManager = new BiomeManager(); biomeManager = new BiomeManager();
advancementManager = new AdvancementManager(); advancementManager = new AdvancementManager();
serializationManager = new SerializationManager();
bossBarManager = new BossBarManager(); bossBarManager = new BossBarManager();
audiences = new Audiences(); audiences = new Audiences();
@ -436,16 +434,6 @@ public final class MinecraftServer {
return connectionManager; return connectionManager;
} }
/**
* Gets the manager handing component serialization.
*
* @return the manager
*/
public static SerializationManager getSerializationManager() {
checkInitStatus(serializationManager);
return serializationManager;
}
/** /**
* Gets the boss bar manager. * Gets the boss bar manager.
* *

View File

@ -14,10 +14,10 @@ import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
/** /**
* Manager class for handling Adventure serialization. By default this will simply * Manager class for handling Adventure serialization. By default AdventureSerializer will simply
* serialize components to Strings using {@link GsonComponentSerializer}. However, this * 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 * class can be used to change the way text is serialized. For example, a pre-JSON
* implementation of Minestom could change this to the plain component serializer. * implementation of Minestom could change AdventureSerializer to the plain component serializer.
* <br><br> * <br><br>
* This manager also performs translation on all messages and the {@code serialize} * 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 * method should be used when converting {@link Component}s into strings. This allows for
@ -26,7 +26,7 @@ import java.util.function.Function;
* own translations, use {@link GlobalTranslator#addSource(Translator)} with a * own translations, use {@link GlobalTranslator#addSource(Translator)} with a
* {@link TranslationRegistry} or your own implementation of {@link Translator}. * {@link TranslationRegistry} or your own implementation of {@link Translator}.
*/ */
public class SerializationManager { public class AdventureSerializer {
/** /**
* If components should be automatically translated in outgoing packets. * If components should be automatically translated in outgoing packets.
*/ */
@ -34,16 +34,18 @@ public class SerializationManager {
protected static final Localizable NULL_LOCALIZABLE = () -> null; protected static final Localizable NULL_LOCALIZABLE = () -> null;
private Function<Component, String> serializer = component -> GsonComponentSerializer.gson().serialize(component); private static Function<Component, String> serializer = component -> GsonComponentSerializer.gson().serialize(component);
private Locale defaultLocale = Locale.US; private static Locale defaultLocale = Locale.US;
private AdventureSerializer() {}
/** /**
* Gets the root serializer that is used to convert components into strings. * Gets the root serializer that is used to convert components into strings.
* *
* @return the serializer * @return the serializer
*/ */
public @NotNull Function<Component, String> getSerializer() { public static @NotNull Function<Component, String> getSerializer() {
return this.serializer; return AdventureSerializer.serializer;
} }
/** /**
@ -51,8 +53,8 @@ public class SerializationManager {
* *
* @param serializer the serializer * @param serializer the serializer
*/ */
public void setSerializer(@NotNull Function<Component, String> serializer) { public static void setSerializer(@NotNull Function<Component, String> serializer) {
this.serializer = serializer; AdventureSerializer.serializer = serializer;
} }
/** /**
@ -62,7 +64,7 @@ public class SerializationManager {
* *
* @return the default locale * @return the default locale
*/ */
public @NotNull Locale getDefaultLocale() { public static @NotNull Locale getDefaultLocale() {
return defaultLocale; return defaultLocale;
} }
@ -73,17 +75,17 @@ public class SerializationManager {
* *
* @param defaultLocale the new default locale * @param defaultLocale the new default locale
*/ */
public void setDefaultLocale(@NotNull Locale defaultLocale) { public static void setDefaultLocale(@NotNull Locale defaultLocale) {
this.defaultLocale = defaultLocale; AdventureSerializer.defaultLocale = defaultLocale;
} }
/** /**
* Gets the global translator object used by this manager. This is just shorthand for * Gets the global translator object used by AdventureSerializer manager. This is just shorthand for
* {@link GlobalTranslator#get()}. * {@link GlobalTranslator#get()}.
* *
* @return the global translator * @return the global translator
*/ */
public @NotNull GlobalTranslator getTranslator() { public static @NotNull GlobalTranslator getTranslator() {
return GlobalTranslator.get(); return GlobalTranslator.get();
} }
@ -96,8 +98,8 @@ public class SerializationManager {
* *
* @return the prepared component * @return the prepared component
*/ */
public @NotNull Component translate(@NotNull Component component, @NotNull Localizable localizable) { public static @NotNull Component translate(@NotNull Component component, @NotNull Localizable localizable) {
return GlobalTranslator.renderer().render(component, Objects.requireNonNullElse(localizable.getLocale(), this.getDefaultLocale())); return GlobalTranslator.renderer().render(component, Objects.requireNonNullElse(localizable.getLocale(), AdventureSerializer.getDefaultLocale()));
} }
/** /**
@ -109,7 +111,7 @@ public class SerializationManager {
* *
* @return the prepared component * @return the prepared component
*/ */
public @NotNull Component translate(@NotNull Component component, @NotNull Locale locale) { public static @NotNull Component translate(@NotNull Component component, @NotNull Locale locale) {
return GlobalTranslator.renderer().render(component, locale); return GlobalTranslator.renderer().render(component, locale);
} }
@ -120,8 +122,8 @@ public class SerializationManager {
* *
* @return the serialized string * @return the serialized string
*/ */
public @NotNull String serialize(@NotNull Component component) { public static @NotNull String serialize(@NotNull Component component) {
return this.serializer.apply(component); return AdventureSerializer.serializer.apply(component);
} }
/** /**
@ -132,8 +134,8 @@ public class SerializationManager {
* *
* @return the string * @return the string
*/ */
public String translateAndSerialize(@NotNull Component component, @NotNull Localizable localizable) { public static String translateAndSerialize(@NotNull Component component, @NotNull Localizable localizable) {
return this.translateAndSerialize(component, Objects.requireNonNullElse(localizable.getLocale(), this.getDefaultLocale())); return AdventureSerializer.translateAndSerialize(component, Objects.requireNonNullElse(localizable.getLocale(), AdventureSerializer.getDefaultLocale()));
} }
/** /**
@ -144,8 +146,8 @@ public class SerializationManager {
* *
* @return the string * @return the string
*/ */
public String translateAndSerialize(@NotNull Component component, @NotNull Locale locale) { public static String translateAndSerialize(@NotNull Component component, @NotNull Locale locale) {
return this.serialize(this.translate(component, locale)); return AdventureSerializer.serialize(AdventureSerializer.translate(component, locale));
} }
/** /**
@ -156,8 +158,8 @@ public class SerializationManager {
* @return {@code true} if the component can be translated server-side, * @return {@code true} if the component can be translated server-side,
* {@code false} otherwise * {@code false} otherwise
*/ */
public boolean isTranslatable(@NotNull Component component) { public static boolean isTranslatable(@NotNull Component component) {
return !component.equals(this.translate(component, this.getDefaultLocale())); return !component.equals(AdventureSerializer.translate(component, AdventureSerializer.getDefaultLocale()));
} }
/** /**
@ -166,9 +168,9 @@ public class SerializationManager {
* @return {@code true} if any of the components can be translated server-side, * @return {@code true} if any of the components can be translated server-side,
* {@code false} otherwise * {@code false} otherwise
*/ */
public boolean areAnyTranslatable(@NotNull Collection<Component> components) { public static boolean areAnyTranslatable(@NotNull Collection<Component> components) {
for (Component component : components) { for (Component component : components) {
if (this.isTranslatable(component)) { if (AdventureSerializer.isTranslatable(component)) {
return true; return true;
} }
} }

View File

@ -16,7 +16,7 @@ public interface Localizable {
* @return the empty localizable * @return the empty localizable
*/ */
static @NotNull Localizable empty() { static @NotNull Localizable empty() {
return SerializationManager.NULL_LOCALIZABLE; return AdventureSerializer.NULL_LOCALIZABLE;
} }
/** /**

View File

@ -6,6 +6,7 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.time.UpdateOption; import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check; import net.minestom.server.utils.validate.Check;
@ -126,7 +127,7 @@ public final class BenchmarkManager {
benchmarkMessage.append(Component.newline()); benchmarkMessage.append(Component.newline());
} }
return MinecraftServer.getSerializationManager().serialize(benchmarkMessage.build()); return AdventureSerializer.serialize(benchmarkMessage.build());
} }
private void refreshData() { private void refreshData() {

View File

@ -1,7 +1,7 @@
package net.minestom.server.entity; package net.minestom.server.entity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer; import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.chat.JsonMessage; import net.minestom.server.chat.JsonMessage;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; import net.minestom.server.network.packet.server.play.EntityMetaDataPacket;
@ -55,7 +55,7 @@ public class Metadata {
} }
public static Value<Component> Chat(@NotNull Component value) { public static Value<Component> Chat(@NotNull Component value) {
return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(MinecraftServer.getSerializationManager().serialize(value))); return new Value<>(TYPE_CHAT, value, writer -> writer.writeSizedString(AdventureSerializer.serialize(value)));
} }
public static Value<Component> OptChat(@Nullable Component value) { public static Value<Component> OptChat(@Nullable Component value) {
@ -63,7 +63,7 @@ public class Metadata {
final boolean present = value != null; final boolean present = value != null;
writer.writeBoolean(present); writer.writeBoolean(present);
if (present) { if (present) {
writer.writeSizedString(MinecraftServer.getSerializationManager().serialize(value)); writer.writeSizedString(AdventureSerializer.serialize(value));
} }
}); });
} }

View File

@ -2,7 +2,7 @@ package net.minestom.server.item.metadata;
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.MinecraftServer; import net.minestom.server.adventure.AdventureSerializer;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTCompound;
@ -104,7 +104,7 @@ public class WritableBookMeta extends ItemMeta {
if (!pages.isEmpty()) { if (!pages.isEmpty()) {
NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String); NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String);
for (Component page : pages) { for (Component page : pages) {
list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page))); list.add(new NBTString(AdventureSerializer.serialize(page)));
} }
compound.set("pages", list); compound.set("pages", list);
} }

View File

@ -3,7 +3,7 @@ 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.MinecraftServer; import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.adventure.Localizable; import net.minestom.server.adventure.Localizable;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTCompound;
@ -174,7 +174,7 @@ public class WrittenBookMeta extends ItemMeta {
if (!pages.isEmpty()) { if (!pages.isEmpty()) {
NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String); NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String);
for (Component page : pages) { for (Component page : pages) {
list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page))); list.add(new NBTString(AdventureSerializer.serialize(page)));
} }
compound.set("pages", list); compound.set("pages", list);
} }
@ -211,8 +211,8 @@ public class WrittenBookMeta extends ItemMeta {
WrittenBookMeta meta = new WrittenBookMeta(); WrittenBookMeta meta = new WrittenBookMeta();
meta.resolved = false; meta.resolved = false;
meta.generation = WrittenBookGeneration.ORIGINAL; meta.generation = WrittenBookGeneration.ORIGINAL;
meta.author = MinecraftServer.getSerializationManager().translateAndSerialize(book.author(), localizable); meta.author = AdventureSerializer.translateAndSerialize(book.author(), localizable);
meta.title = MinecraftServer.getSerializationManager().translateAndSerialize(book.title(), localizable); meta.title = AdventureSerializer.translateAndSerialize(book.title(), localizable);
meta.pages = new ArrayList<>(); meta.pages = new ArrayList<>();
meta.pages.addAll(book.pages()); meta.pages.addAll(book.pages());

View File

@ -5,7 +5,7 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFuture;
import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.SocketChannel;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.SerializationManager; import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.entity.PlayerSkin; import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.extras.mojangAuth.Decrypter; import net.minestom.server.extras.mojangAuth.Decrypter;
import net.minestom.server.extras.mojangAuth.Encrypter; import net.minestom.server.extras.mojangAuth.Encrypter;
@ -27,7 +27,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import java.awt.Component;
import java.net.SocketAddress; import java.net.SocketAddress;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -188,8 +187,8 @@ public class NettyPlayerConnection extends PlayerConnection {
} else if (message instanceof ServerPacket) { } else if (message instanceof ServerPacket) {
ServerPacket serverPacket = (ServerPacket) message; ServerPacket serverPacket = (ServerPacket) message;
if ((SerializationManager.AUTOMATIC_COMPONENT_TRANSLATION && !skipTranslating) && getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) { if ((AdventureSerializer.AUTOMATIC_COMPONENT_TRANSLATION && !skipTranslating) && getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) {
serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> MinecraftServer.getSerializationManager().translate(component, getPlayer())); serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> AdventureSerializer.translate(component, getPlayer()));
} }
synchronized (tickBuffer) { synchronized (tickBuffer) {

View File

@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import net.kyori.adventure.util.Codec; import net.kyori.adventure.util.Codec;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.attribute.Attribute; import net.minestom.server.attribute.Attribute;
import net.minestom.server.attribute.AttributeOperation; import net.minestom.server.attribute.AttributeOperation;
import net.minestom.server.data.Data; import net.minestom.server.data.Data;
@ -317,7 +318,7 @@ public final class NBTUtils {
if (hasDisplayName || hasLore) { if (hasDisplayName || hasLore) {
NBTCompound displayNBT = new NBTCompound(); NBTCompound displayNBT = new NBTCompound();
if (hasDisplayName) { if (hasDisplayName) {
final String name = MinecraftServer.getSerializationManager().serialize(itemStack.getDisplayName()); final String name = AdventureSerializer.serialize(itemStack.getDisplayName());
displayNBT.setString("Name", name); displayNBT.setString("Name", name);
} }

View File

@ -3,7 +3,7 @@ package net.minestom.server.utils;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.SerializationManager; import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.listener.manager.PacketListenerManager; import net.minestom.server.listener.manager.PacketListenerManager;
import net.minestom.server.network.netty.packet.FramedPacket; import net.minestom.server.network.netty.packet.FramedPacket;
@ -50,8 +50,8 @@ public final class PacketUtils {
// work out if the packet needs to be sent individually due to server-side translating // work out if the packet needs to be sent individually due to server-side translating
boolean needsTranslating = false; boolean needsTranslating = false;
if (SerializationManager.AUTOMATIC_COMPONENT_TRANSLATION && packet instanceof ComponentHoldingServerPacket) { if (AdventureSerializer.AUTOMATIC_COMPONENT_TRANSLATION && packet instanceof ComponentHoldingServerPacket) {
needsTranslating = MinecraftServer.getSerializationManager().areAnyTranslatable(((ComponentHoldingServerPacket) packet).components()); needsTranslating = AdventureSerializer.areAnyTranslatable(((ComponentHoldingServerPacket) packet).components());
} }
if (MinecraftServer.hasGroupedPacket() && !needsTranslating) { if (MinecraftServer.hasGroupedPacket() && !needsTranslating) {

View File

@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.BlockPosition;
import net.minestom.server.utils.NBTUtils; import net.minestom.server.utils.NBTUtils;
@ -69,7 +70,7 @@ public class BinaryWriter extends OutputStream {
* @param component the component * @param component the component
*/ */
public void writeComponent(Component component) { public void writeComponent(Component component) {
this.writeSizedString(MinecraftServer.getSerializationManager().serialize(Objects.requireNonNullElseGet(component, Component::empty))); this.writeSizedString(AdventureSerializer.serialize(Objects.requireNonNullElseGet(component, Component::empty)));
} }
/** /**