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

View File

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

View File

@ -16,7 +16,7 @@ public interface Localizable {
* @return the empty localizable
*/
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.format.NamedTextColor;
import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.time.UpdateOption;
import net.minestom.server.utils.validate.Check;
@ -126,7 +127,7 @@ public final class BenchmarkManager {
benchmarkMessage.append(Component.newline());
}
return MinecraftServer.getSerializationManager().serialize(benchmarkMessage.build());
return AdventureSerializer.serialize(benchmarkMessage.build());
}
private void refreshData() {

View File

@ -1,7 +1,7 @@
package net.minestom.server.entity;
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.item.ItemStack;
import net.minestom.server.network.packet.server.play.EntityMetaDataPacket;
@ -55,7 +55,7 @@ public class Metadata {
}
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) {
@ -63,7 +63,7 @@ public class Metadata {
final boolean present = value != null;
writer.writeBoolean(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.serializer.gson.GsonComponentSerializer;
import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
@ -104,7 +104,7 @@ public class WritableBookMeta extends ItemMeta {
if (!pages.isEmpty()) {
NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String);
for (Component page : pages) {
list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page)));
list.add(new NBTString(AdventureSerializer.serialize(page)));
}
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.text.Component;
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 org.jetbrains.annotations.NotNull;
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
@ -174,7 +174,7 @@ public class WrittenBookMeta extends ItemMeta {
if (!pages.isEmpty()) {
NBTList<NBTString> list = new NBTList<>(NBTTypes.TAG_String);
for (Component page : pages) {
list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page)));
list.add(new NBTString(AdventureSerializer.serialize(page)));
}
compound.set("pages", list);
}
@ -211,8 +211,8 @@ public class WrittenBookMeta extends ItemMeta {
WrittenBookMeta meta = new WrittenBookMeta();
meta.resolved = false;
meta.generation = WrittenBookGeneration.ORIGINAL;
meta.author = MinecraftServer.getSerializationManager().translateAndSerialize(book.author(), localizable);
meta.title = MinecraftServer.getSerializationManager().translateAndSerialize(book.title(), localizable);
meta.author = AdventureSerializer.translateAndSerialize(book.author(), localizable);
meta.title = AdventureSerializer.translateAndSerialize(book.title(), localizable);
meta.pages = new ArrayList<>();
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.socket.SocketChannel;
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.extras.mojangAuth.Decrypter;
import net.minestom.server.extras.mojangAuth.Encrypter;
@ -27,7 +27,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.crypto.SecretKey;
import java.awt.Component;
import java.net.SocketAddress;
import java.util.Map;
import java.util.UUID;
@ -188,8 +187,8 @@ public class NettyPlayerConnection extends PlayerConnection {
} else if (message instanceof ServerPacket) {
ServerPacket serverPacket = (ServerPacket) message;
if ((SerializationManager.AUTOMATIC_COMPONENT_TRANSLATION && !skipTranslating) && getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) {
serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> MinecraftServer.getSerializationManager().translate(component, getPlayer()));
if ((AdventureSerializer.AUTOMATIC_COMPONENT_TRANSLATION && !skipTranslating) && getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) {
serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> AdventureSerializer.translate(component, getPlayer()));
}
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.util.Codec;
import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.attribute.Attribute;
import net.minestom.server.attribute.AttributeOperation;
import net.minestom.server.data.Data;
@ -317,7 +318,7 @@ public final class NBTUtils {
if (hasDisplayName || hasLore) {
NBTCompound displayNBT = new NBTCompound();
if (hasDisplayName) {
final String name = MinecraftServer.getSerializationManager().serialize(itemStack.getDisplayName());
final String name = AdventureSerializer.serialize(itemStack.getDisplayName());
displayNBT.setString("Name", name);
}

View File

@ -3,7 +3,7 @@ package net.minestom.server.utils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
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.listener.manager.PacketListenerManager;
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
boolean needsTranslating = false;
if (SerializationManager.AUTOMATIC_COMPONENT_TRANSLATION && packet instanceof ComponentHoldingServerPacket) {
needsTranslating = MinecraftServer.getSerializationManager().areAnyTranslatable(((ComponentHoldingServerPacket) packet).components());
if (AdventureSerializer.AUTOMATIC_COMPONENT_TRANSLATION && packet instanceof ComponentHoldingServerPacket) {
needsTranslating = AdventureSerializer.areAnyTranslatable(((ComponentHoldingServerPacket) packet).components());
}
if (MinecraftServer.hasGroupedPacket() && !needsTranslating) {

View File

@ -4,6 +4,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.kyori.adventure.text.Component;
import net.minestom.server.MinecraftServer;
import net.minestom.server.adventure.AdventureSerializer;
import net.minestom.server.item.ItemStack;
import net.minestom.server.utils.BlockPosition;
import net.minestom.server.utils.NBTUtils;
@ -69,7 +70,7 @@ public class BinaryWriter extends OutputStream {
* @param component the 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)));
}
/**