fix name serialization on 1.9-1.12

This commit is contained in:
Pyrbu 2023-12-14 13:08:46 +01:00
parent 993127ed85
commit 18693df7cc
3 changed files with 12 additions and 7 deletions

@ -7,6 +7,7 @@ import com.github.retrooper.packetevents.util.adventure.AdventureSerializer;
import lol.pyr.znpcsplus.entity.EntityPropertyImpl; import lol.pyr.znpcsplus.entity.EntityPropertyImpl;
import lol.pyr.znpcsplus.entity.PacketEntity; import lol.pyr.znpcsplus.entity.PacketEntity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.Map; import java.util.Map;
@ -19,7 +20,8 @@ public class DinnerboneProperty extends EntityPropertyImpl<Boolean> {
public DinnerboneProperty(boolean legacy, boolean optional) { public DinnerboneProperty(boolean legacy, boolean optional) {
super("dinnerbone", false, Boolean.class); super("dinnerbone", false, Boolean.class);
Component name = Component.text("Dinnerbone"); Component name = Component.text("Dinnerbone");
Object serialized = legacy ? AdventureSerializer.getLegacyGsonSerializer().serialize(name) : name; Object serialized = legacy ? AdventureSerializer.getLegacyGsonSerializer().serialize(name) :
optional ? name : LegacyComponentSerializer.legacySection().serialize(name);
this.serialized = optional ? Optional.of(serialized) : serialized; this.serialized = optional ? Optional.of(serialized) : serialized;
this.type = optional ? EntityDataTypes.OPTIONAL_ADV_COMPONENT : EntityDataTypes.STRING; this.type = optional ? EntityDataTypes.OPTIONAL_ADV_COMPONENT : EntityDataTypes.STRING;
} }

@ -15,14 +15,14 @@ import java.util.Optional;
public class NameProperty extends EntityPropertyImpl<Component> { public class NameProperty extends EntityPropertyImpl<Component> {
private final LegacyComponentSerializer legacySerializer; private final LegacyComponentSerializer legacySerializer;
private final boolean legacy; private final boolean legacySerialization;
private final boolean optional; private final boolean optional;
public NameProperty(LegacyComponentSerializer legacySerializer, boolean legacy, boolean optional) { public NameProperty(LegacyComponentSerializer legacySerializer, boolean legacySerialization, boolean optional) {
super("name", null, Component.class); super("name", null, Component.class);
this.legacySerializer = legacySerializer; this.legacySerializer = legacySerializer;
this.legacy = legacy; this.legacySerialization = legacySerialization;
this.optional = optional; this.optional = optional;
} }
@ -31,12 +31,13 @@ public class NameProperty extends EntityPropertyImpl<Component> {
Component value = entity.getProperty(this); Component value = entity.getProperty(this);
if (value != null) { if (value != null) {
value = PapiUtil.set(legacySerializer, player, value); value = PapiUtil.set(legacySerializer, player, value);
Object serialized = legacy ? AdventureSerializer.getLegacyGsonSerializer().serialize(value) : value; Object serialized = legacySerialization ? AdventureSerializer.getLegacyGsonSerializer().serialize(value) :
optional ? value : LegacyComponentSerializer.legacySection().serialize(value);
if (optional) properties.put(2, new EntityData(2, EntityDataTypes.OPTIONAL_ADV_COMPONENT, Optional.of(serialized))); if (optional) properties.put(2, new EntityData(2, EntityDataTypes.OPTIONAL_ADV_COMPONENT, Optional.of(serialized)));
else properties.put(2, new EntityData(2, EntityDataTypes.STRING, serialized)); else properties.put(2, new EntityData(2, EntityDataTypes.STRING, serialized));
} }
if (legacy) properties.put(3, newEntityData(3, EntityDataTypes.BYTE, (byte) (value != null ? 1 : 0))); if (legacySerialization) properties.put(3, newEntityData(3, EntityDataTypes.BYTE, (byte) (value != null ? 1 : 0)));
else properties.put(3, newEntityData(3, EntityDataTypes.BOOLEAN, value != null)); else properties.put(3, newEntityData(3, EntityDataTypes.BOOLEAN, value != null));
} }
} }

@ -8,6 +8,7 @@ import lol.pyr.znpcsplus.entity.EntityPropertyImpl;
import lol.pyr.znpcsplus.entity.PacketEntity; import lol.pyr.znpcsplus.entity.PacketEntity;
import lol.pyr.znpcsplus.util.RabbitType; import lol.pyr.znpcsplus.util.RabbitType;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.Map; import java.util.Map;
@ -24,7 +25,8 @@ public class RabbitTypeProperty extends EntityPropertyImpl<RabbitType> {
this.index = index; this.index = index;
this.legacyBooleans = legacyBooleans; this.legacyBooleans = legacyBooleans;
Component name = Component.text("Toast"); Component name = Component.text("Toast");
Object serialized = legacyNames ? AdventureSerializer.getLegacyGsonSerializer().serialize(name) : name; Object serialized = legacyNames ? AdventureSerializer.getLegacyGsonSerializer().serialize(name) :
optional ? name : LegacyComponentSerializer.legacySection().serialize(name);
this.serialized = optional ? Optional.of(serialized) : serialized; this.serialized = optional ? Optional.of(serialized) : serialized;
this.type = optional ? EntityDataTypes.OPTIONAL_ADV_COMPONENT : EntityDataTypes.STRING; this.type = optional ? EntityDataTypes.OPTIONAL_ADV_COMPONENT : EntityDataTypes.STRING;
} }