Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-19 22:40:16 +01:00
Replace string->component conversion in 1.8->1.9 (#3794)
Dieser Commit ist enthalten in:
Ursprung
ce2ad7d5eb
Commit
1ed22327f6
@ -233,13 +233,6 @@ public interface ViaVersionConfig extends Config {
|
|||||||
*/
|
*/
|
||||||
boolean isChunkBorderFix();
|
boolean isChunkBorderFix();
|
||||||
|
|
||||||
/**
|
|
||||||
* Force json transform
|
|
||||||
*
|
|
||||||
* @return true if enabled
|
|
||||||
*/
|
|
||||||
boolean isForceJsonTransform();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should we fix nbt array's in json chat messages for 1.12 clients
|
* Should we fix nbt array's in json chat messages for 1.12 clients
|
||||||
*
|
*
|
||||||
|
@ -63,7 +63,7 @@ public class DeathListener extends ViaBukkitListener {
|
|||||||
wrapper.write(Type.VAR_INT, 2); // Event - Entity dead
|
wrapper.write(Type.VAR_INT, 2); // Event - Entity dead
|
||||||
wrapper.write(Type.VAR_INT, p.getEntityId()); // Player ID
|
wrapper.write(Type.VAR_INT, p.getEntityId()); // Player ID
|
||||||
wrapper.write(Type.INT, p.getEntityId()); // Entity ID
|
wrapper.write(Type.INT, p.getEntityId()); // Entity ID
|
||||||
Protocol1_9To1_8.FIX_JSON.write(wrapper, msg); // Message
|
Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, msg); // Message
|
||||||
|
|
||||||
wrapper.scheduleSend(Protocol1_9To1_8.class);
|
wrapper.scheduleSend(Protocol1_9To1_8.class);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -63,7 +63,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf
|
|||||||
private int pistonReplacementId;
|
private int pistonReplacementId;
|
||||||
private boolean chunkBorderFix;
|
private boolean chunkBorderFix;
|
||||||
private boolean autoTeam;
|
private boolean autoTeam;
|
||||||
private boolean forceJsonTransform;
|
|
||||||
private boolean nbtArrayFix;
|
private boolean nbtArrayFix;
|
||||||
private BlockedProtocolVersions blockedProtocolVersions;
|
private BlockedProtocolVersions blockedProtocolVersions;
|
||||||
private String blockedDisconnectMessage;
|
private String blockedDisconnectMessage;
|
||||||
@ -129,7 +128,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf
|
|||||||
pistonReplacementId = getInt("replacement-piston-id", 0);
|
pistonReplacementId = getInt("replacement-piston-id", 0);
|
||||||
chunkBorderFix = getBoolean("chunk-border-fix", false);
|
chunkBorderFix = getBoolean("chunk-border-fix", false);
|
||||||
autoTeam = getBoolean("auto-team", true);
|
autoTeam = getBoolean("auto-team", true);
|
||||||
forceJsonTransform = getBoolean("force-json-transform", false);
|
|
||||||
nbtArrayFix = getBoolean("chat-nbt-fix", true);
|
nbtArrayFix = getBoolean("chat-nbt-fix", true);
|
||||||
blockedProtocolVersions = loadBlockedProtocolVersions();
|
blockedProtocolVersions = loadBlockedProtocolVersions();
|
||||||
blockedDisconnectMessage = getString("block-disconnect-msg", "You are using an unsupported Minecraft version!");
|
blockedDisconnectMessage = getString("block-disconnect-msg", "You are using an unsupported Minecraft version!");
|
||||||
@ -371,11 +369,6 @@ public abstract class AbstractViaConfig extends Config implements ViaVersionConf
|
|||||||
return preventCollision && autoTeam;
|
return preventCollision && autoTeam;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isForceJsonTransform() {
|
|
||||||
return forceJsonTransform;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean is1_12NBTArrayFix() {
|
public boolean is1_12NBTArrayFix() {
|
||||||
return nbtArrayFix;
|
return nbtArrayFix;
|
||||||
|
@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
|||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
||||||
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
@ -245,7 +246,7 @@ public class CommonBoss implements BossBar {
|
|||||||
wrapper.write(Type.VAR_INT, action.getId());
|
wrapper.write(Type.VAR_INT, action.getId());
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case ADD:
|
case ADD:
|
||||||
Protocol1_9To1_8.FIX_JSON.write(wrapper, title);
|
wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(title));
|
||||||
wrapper.write(Type.FLOAT, health);
|
wrapper.write(Type.FLOAT, health);
|
||||||
wrapper.write(Type.VAR_INT, color.getId());
|
wrapper.write(Type.VAR_INT, color.getId());
|
||||||
wrapper.write(Type.VAR_INT, style.getId());
|
wrapper.write(Type.VAR_INT, style.getId());
|
||||||
@ -257,7 +258,7 @@ public class CommonBoss implements BossBar {
|
|||||||
wrapper.write(Type.FLOAT, health);
|
wrapper.write(Type.FLOAT, health);
|
||||||
break;
|
break;
|
||||||
case UPDATE_TITLE:
|
case UPDATE_TITLE:
|
||||||
Protocol1_9To1_8.FIX_JSON.write(wrapper, title);
|
wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(title));
|
||||||
break;
|
break;
|
||||||
case UPDATE_STYLE:
|
case UPDATE_STYLE:
|
||||||
wrapper.write(Type.VAR_INT, color.getId());
|
wrapper.write(Type.VAR_INT, color.getId());
|
||||||
|
@ -37,8 +37,8 @@ import com.viaversion.viaversion.protocol.ServerProtocolVersionSingleton;
|
|||||||
import com.viaversion.viaversion.protocols.base.packet.BaseClientboundPacket;
|
import com.viaversion.viaversion.protocols.base.packet.BaseClientboundPacket;
|
||||||
import com.viaversion.viaversion.protocols.base.packet.BasePacketTypesProvider;
|
import com.viaversion.viaversion.protocols.base.packet.BasePacketTypesProvider;
|
||||||
import com.viaversion.viaversion.protocols.base.packet.BaseServerboundPacket;
|
import com.viaversion.viaversion.protocols.base.packet.BaseServerboundPacket;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
|
||||||
import com.viaversion.viaversion.util.ChatColorUtil;
|
import com.viaversion.viaversion.util.ChatColorUtil;
|
||||||
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
import com.viaversion.viaversion.util.GsonUtil;
|
import com.viaversion.viaversion.util.GsonUtil;
|
||||||
import io.netty.channel.ChannelFuture;
|
import io.netty.channel.ChannelFuture;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -163,8 +163,10 @@ public class BaseProtocol1_7 extends AbstractProtocol<BaseClientboundPacket, Bas
|
|||||||
if (!wrapper.user().getChannel().isOpen()) return;
|
if (!wrapper.user().getChannel().isOpen()) return;
|
||||||
if (!wrapper.user().shouldApplyBlockProtocol()) return;
|
if (!wrapper.user().shouldApplyBlockProtocol()) return;
|
||||||
|
|
||||||
|
final String disconnectMessage = ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg());
|
||||||
|
|
||||||
PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet
|
PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet
|
||||||
Protocol1_9To1_8.FIX_JSON.write(disconnectPacket, ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg()));
|
wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(disconnectMessage));
|
||||||
wrapper.cancel(); // cancel current
|
wrapper.cancel(); // cancel current
|
||||||
|
|
||||||
// Send and close
|
// Send and close
|
||||||
|
@ -22,7 +22,6 @@ import com.github.steveice10.opennbt.tag.builtin.IntArrayTag;
|
|||||||
import com.github.steveice10.opennbt.tag.builtin.ListTag;
|
import com.github.steveice10.opennbt.tag.builtin.ListTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.NumberTag;
|
import com.github.steveice10.opennbt.tag.builtin.NumberTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.StringTag;
|
import com.github.steveice10.opennbt.tag.builtin.StringTag;
|
||||||
import com.github.steveice10.opennbt.tag.builtin.Tag;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||||
|
@ -283,7 +283,7 @@ public class ItemRewriter {
|
|||||||
|
|
||||||
for (int i = 0; i < pages.size(); i++) {
|
for (int i = 0; i < pages.size(); i++) {
|
||||||
final StringTag page = pages.get(i);
|
final StringTag page = pages.get(i);
|
||||||
page.setValue(ComponentUtil.convertJson(page.getValue(), SerializerVersion.V1_8, SerializerVersion.V1_9).toString());
|
page.setValue(ComponentUtil.convertJsonOrEmpty(page.getValue(), SerializerVersion.V1_8, SerializerVersion.V1_9).toString());
|
||||||
}
|
}
|
||||||
item.setTag(tag);
|
item.setTag(tag);
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
package com.viaversion.viaversion.protocols.protocol1_9to1_8;
|
package com.viaversion.viaversion.protocols.protocol1_9to1_8;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||||
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
import com.viaversion.viaversion.api.minecraft.ClientWorld;
|
||||||
@ -49,13 +48,15 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.CommandBlock
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.InventoryTracker;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.InventoryTracker;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker;
|
||||||
import com.viaversion.viaversion.util.GsonUtil;
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
|
import com.viaversion.viaversion.util.SerializerVersion;
|
||||||
|
|
||||||
public class Protocol1_9To1_8 extends AbstractProtocol<ClientboundPackets1_8, ClientboundPackets1_9, ServerboundPackets1_8, ServerboundPackets1_9> {
|
public class Protocol1_9To1_8 extends AbstractProtocol<ClientboundPackets1_8, ClientboundPackets1_9, ServerboundPackets1_8, ServerboundPackets1_9> {
|
||||||
public static final ValueTransformer<String, JsonElement> FIX_JSON = new ValueTransformer<String, JsonElement>(Type.COMPONENT) {
|
|
||||||
|
public static final ValueTransformer<String, JsonElement> STRING_TO_JSON = new ValueTransformer<String, JsonElement>(Type.COMPONENT) {
|
||||||
@Override
|
@Override
|
||||||
public JsonElement transform(PacketWrapper wrapper, String line) {
|
public JsonElement transform(PacketWrapper wrapper, String line) {
|
||||||
return fixJson(line);
|
return ComponentUtil.convertJsonOrEmpty(line, SerializerVersion.V1_8, SerializerVersion.V1_9);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private final MetadataRewriter1_9To1_8 metadataRewriter = new MetadataRewriter1_9To1_8(this);
|
private final MetadataRewriter1_9To1_8 metadataRewriter = new MetadataRewriter1_9To1_8(this);
|
||||||
@ -64,35 +65,6 @@ public class Protocol1_9To1_8 extends AbstractProtocol<ClientboundPackets1_8, Cl
|
|||||||
super(ClientboundPackets1_8.class, ClientboundPackets1_9.class, ServerboundPackets1_8.class, ServerboundPackets1_9.class);
|
super(ClientboundPackets1_8.class, ClientboundPackets1_9.class, ServerboundPackets1_8.class, ServerboundPackets1_9.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static JsonElement fixJson(String line) {
|
|
||||||
if (line == null || line.equalsIgnoreCase("null")) {
|
|
||||||
line = "{\"text\":\"\"}";
|
|
||||||
} else {
|
|
||||||
if ((!line.startsWith("\"") || !line.endsWith("\"")) && (!line.startsWith("{") || !line.endsWith("}"))) {
|
|
||||||
return constructJson(line);
|
|
||||||
}
|
|
||||||
if (line.startsWith("\"") && line.endsWith("\"")) {
|
|
||||||
line = "{\"text\":" + line + "}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
return GsonUtil.getGson().fromJson(line, JsonObject.class);
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (Via.getConfig().isForceJsonTransform()) {
|
|
||||||
return constructJson(line);
|
|
||||||
} else {
|
|
||||||
Via.getPlatform().getLogger().warning("Invalid JSON String: \"" + line + "\" Please report this issue to the ViaVersion Github: " + e.getMessage());
|
|
||||||
return GsonUtil.getGson().fromJson("{\"text\":\"\"}", JsonObject.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static JsonElement constructJson(String text) {
|
|
||||||
JsonObject jsonObject = new JsonObject();
|
|
||||||
jsonObject.addProperty("text", text);
|
|
||||||
return jsonObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Item getHandItem(final UserConnection info) {
|
public static Item getHandItem(final UserConnection info) {
|
||||||
return Via.getManager().getProviders().get(HandItemProvider.class).getHandItem(info);
|
return Via.getManager().getProviders().get(HandItemProvider.class).getHandItem(info);
|
||||||
}
|
}
|
||||||
@ -121,7 +93,7 @@ public class Protocol1_9To1_8 extends AbstractProtocol<ClientboundPackets1_8, Cl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wrapper.write(Type.COMPONENT, fixJson(wrapper.read(Type.STRING)));
|
STRING_TO_JSON.write(wrapper, wrapper.read(Type.STRING));
|
||||||
});
|
});
|
||||||
|
|
||||||
// Other Handlers
|
// Other Handlers
|
||||||
|
@ -159,7 +159,7 @@ public enum MetaIndex {
|
|||||||
ABSTRACT_MINECART_BLOCK_Y(MINECART_ABSTRACT, 21, MetaType1_8.Int, 9, MetaType1_9.VarInt),
|
ABSTRACT_MINECART_BLOCK_Y(MINECART_ABSTRACT, 21, MetaType1_8.Int, 9, MetaType1_9.VarInt),
|
||||||
ABSTRACT_MINECART_SHOW_BLOCK(MINECART_ABSTRACT, 22, MetaType1_8.Byte, 10, MetaType1_9.Boolean),
|
ABSTRACT_MINECART_SHOW_BLOCK(MINECART_ABSTRACT, 22, MetaType1_8.Byte, 10, MetaType1_9.Boolean),
|
||||||
|
|
||||||
// Command minecart (they are still broken)
|
// Command minecart
|
||||||
MINECART_COMMAND_BLOCK_COMMAND(MINECART_ABSTRACT, 23, MetaType1_8.String, 11, MetaType1_9.String),
|
MINECART_COMMAND_BLOCK_COMMAND(MINECART_ABSTRACT, 23, MetaType1_8.String, 11, MetaType1_9.String),
|
||||||
MINECART_COMMAND_BLOCK_OUTPUT(MINECART_ABSTRACT, 24, MetaType1_8.String, 12, MetaType1_9.Chat),
|
MINECART_COMMAND_BLOCK_OUTPUT(MINECART_ABSTRACT, 24, MetaType1_8.String, 12, MetaType1_9.Chat),
|
||||||
|
|
||||||
|
@ -30,6 +30,8 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter;
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
|
||||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||||
import com.viaversion.viaversion.rewriter.meta.MetaHandlerEvent;
|
import com.viaversion.viaversion.rewriter.meta.MetaHandlerEvent;
|
||||||
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
|
import com.viaversion.viaversion.util.SerializerVersion;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class MetadataRewriter1_9To1_8 extends EntityRewriter<ClientboundPackets1_8, Protocol1_9To1_8> {
|
public class MetadataRewriter1_9To1_8 extends EntityRewriter<ClientboundPackets1_8, Protocol1_9To1_8> {
|
||||||
@ -127,8 +129,9 @@ public class MetadataRewriter1_9To1_8 extends EntityRewriter<ClientboundPackets1
|
|||||||
metadata.setValue(angle);
|
metadata.setValue(angle);
|
||||||
break;
|
break;
|
||||||
case Chat:
|
case Chat:
|
||||||
value = Protocol1_9To1_8.fixJson(value.toString());
|
// Was previously also a component, so just convert it
|
||||||
metadata.setValue(value);
|
String text = (String) value;
|
||||||
|
metadata.setValue(ComponentUtil.convertJsonOrEmpty(text, SerializerVersion.V1_8, SerializerVersion.V1_9));
|
||||||
break;
|
break;
|
||||||
case BlockID:
|
case BlockID:
|
||||||
// Convert from int, short, byte
|
// Convert from int, short, byte
|
||||||
|
@ -253,7 +253,7 @@ public class EntityPackets {
|
|||||||
if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead
|
if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead
|
||||||
wrapper.passthrough(Type.VAR_INT); //Player id
|
wrapper.passthrough(Type.VAR_INT); //Player id
|
||||||
wrapper.passthrough(Type.INT); //Entity id
|
wrapper.passthrough(Type.INT); //Entity id
|
||||||
Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING));
|
Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, wrapper.read(Type.STRING));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ public class InventoryPackets {
|
|||||||
public void register() {
|
public void register() {
|
||||||
map(Type.UNSIGNED_BYTE); // 0 - Window ID
|
map(Type.UNSIGNED_BYTE); // 0 - Window ID
|
||||||
map(Type.STRING); // 1 - Window Type
|
map(Type.STRING); // 1 - Window Type
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 2 - Window Title
|
map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 2 - Window Title
|
||||||
map(Type.UNSIGNED_BYTE); // 3 - Slot Count
|
map(Type.UNSIGNED_BYTE); // 3 - Slot Count
|
||||||
// There is a horse parameter after this, we don't handle it and let it passthrough
|
// There is a horse parameter after this, we don't handle it and let it passthrough
|
||||||
// Inventory tracking
|
// Inventory tracking
|
||||||
|
@ -37,6 +37,7 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MainHandPr
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker;
|
||||||
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
public class PlayerPackets {
|
public class PlayerPackets {
|
||||||
@ -44,7 +45,7 @@ public class PlayerPackets {
|
|||||||
protocol.registerClientbound(ClientboundPackets1_8.CHAT_MESSAGE, new PacketHandlers() {
|
protocol.registerClientbound(ClientboundPackets1_8.CHAT_MESSAGE, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 0 - Chat Message (json)
|
map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 0 - Chat Message (json)
|
||||||
map(Type.BYTE); // 1 - Chat Position
|
map(Type.BYTE); // 1 - Chat Position
|
||||||
|
|
||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
@ -61,15 +62,15 @@ public class PlayerPackets {
|
|||||||
protocol.registerClientbound(ClientboundPackets1_8.TAB_LIST, new PacketHandlers() {
|
protocol.registerClientbound(ClientboundPackets1_8.TAB_LIST, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 0 - Header
|
map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 0 - Header
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Footer
|
map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 1 - Footer
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
protocol.registerClientbound(ClientboundPackets1_8.DISCONNECT, new PacketHandlers() {
|
protocol.registerClientbound(ClientboundPackets1_8.DISCONNECT, new PacketHandlers() {
|
||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 0 - Reason
|
map(Type.STRING, Protocol1_9To1_8.STRING_TO_JSON); // 0 - Reason
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ public class PlayerPackets {
|
|||||||
handler(wrapper -> {
|
handler(wrapper -> {
|
||||||
int action = wrapper.get(Type.VAR_INT, 0);
|
int action = wrapper.get(Type.VAR_INT, 0);
|
||||||
if (action == 0 || action == 1) {
|
if (action == 0 || action == 1) {
|
||||||
Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING));
|
Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, wrapper.read(Type.STRING));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Everything else is handled.
|
// Everything else is handled.
|
||||||
@ -248,13 +249,13 @@ public class PlayerPackets {
|
|||||||
wrapper.passthrough(Type.VAR_INT); // ping
|
wrapper.passthrough(Type.VAR_INT); // ping
|
||||||
String displayName = wrapper.read(Type.OPTIONAL_STRING);
|
String displayName = wrapper.read(Type.OPTIONAL_STRING);
|
||||||
wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ?
|
wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ?
|
||||||
Protocol1_9To1_8.FIX_JSON.transform(wrapper, displayName) : null);
|
Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, displayName) : null);
|
||||||
} else if ((action == 1) || (action == 2)) { // update gamemode || update latency
|
} else if ((action == 1) || (action == 2)) { // update gamemode || update latency
|
||||||
wrapper.passthrough(Type.VAR_INT);
|
wrapper.passthrough(Type.VAR_INT);
|
||||||
} else if (action == 3) { // update display name
|
} else if (action == 3) { // update display name
|
||||||
String displayName = wrapper.read(Type.OPTIONAL_STRING);
|
String displayName = wrapper.read(Type.OPTIONAL_STRING);
|
||||||
wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ?
|
wrapper.write(Type.OPTIONAL_COMPONENT, displayName != null ?
|
||||||
Protocol1_9To1_8.FIX_JSON.transform(wrapper, displayName) : null);
|
Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, displayName) : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -45,6 +45,7 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.sounds.Effect;
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.sounds.SoundEffect;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.sounds.SoundEffect;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
|
||||||
|
import com.viaversion.viaversion.util.ComponentUtil;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@ -54,10 +55,12 @@ public class WorldPackets {
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.POSITION1_8); // 0 - Sign Position
|
map(Type.POSITION1_8); // 0 - Sign Position
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Sign Line (json)
|
handler(wrapper -> {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 2 - Sign Line (json)
|
for (int i = 0; i < 4; i++) {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 3 - Sign Line (json)
|
final String line = wrapper.read(Type.STRING); // Should be Type.COMPONENT but would break in some cases
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 4 - Sign Line (json)
|
Protocol1_9To1_8.STRING_TO_JSON.write(wrapper, line);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -245,10 +248,12 @@ public class WorldPackets {
|
|||||||
@Override
|
@Override
|
||||||
public void register() {
|
public void register() {
|
||||||
map(Type.POSITION1_8); // 0 - Sign Position
|
map(Type.POSITION1_8); // 0 - Sign Position
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 1 - Sign Line (json)
|
handler(wrapper -> {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 2 - Sign Line (json)
|
for (int i = 0; i < 4; i++) {
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 3 - Sign Line (json)
|
final String line = wrapper.read(Type.STRING);
|
||||||
map(Type.STRING, Protocol1_9To1_8.FIX_JSON); // 4 - Sign Line (json)
|
wrapper.write(Type.COMPONENT, ComponentUtil.plainToJson(line));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -100,6 +100,14 @@ public final class ComponentUtil {
|
|||||||
return json != null ? convert(from, to, from.toComponent(json)) : null;
|
return json != null ? convert(from, to, from.toComponent(json)) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static @Nullable JsonElement convertJsonOrEmpty(@Nullable final String json, final SerializerVersion from, final SerializerVersion to) {
|
||||||
|
final ATextComponent component = from.toComponent(json);
|
||||||
|
if (component == null) {
|
||||||
|
return emptyJsonComponent();
|
||||||
|
}
|
||||||
|
return to.toJson(component);
|
||||||
|
}
|
||||||
|
|
||||||
private static JsonElement convert(final SerializerVersion from, final SerializerVersion to, final ATextComponent component) {
|
private static JsonElement convert(final SerializerVersion from, final SerializerVersion to, final ATextComponent component) {
|
||||||
if (from.ordinal() >= SerializerVersion.V1_16.ordinal() && to.ordinal() < SerializerVersion.V1_16.ordinal()) {
|
if (from.ordinal() >= SerializerVersion.V1_16.ordinal() && to.ordinal() < SerializerVersion.V1_16.ordinal()) {
|
||||||
// Convert hover event to legacy format
|
// Convert hover event to legacy format
|
||||||
|
@ -219,8 +219,6 @@ replace-pistons: false
|
|||||||
replacement-piston-id: 0
|
replacement-piston-id: 0
|
||||||
# Fix 1.9+ clients not rendering the far away chunks and improve chunk rendering when moving fast (Increases network usage and decreases client fps slightly)
|
# Fix 1.9+ clients not rendering the far away chunks and improve chunk rendering when moving fast (Increases network usage and decreases client fps slightly)
|
||||||
chunk-border-fix: false
|
chunk-border-fix: false
|
||||||
# Force the string -> json transform
|
|
||||||
force-json-transform: false
|
|
||||||
# Minimize the cooldown animation in 1.8 servers
|
# Minimize the cooldown animation in 1.8 servers
|
||||||
minimize-cooldown: true
|
minimize-cooldown: true
|
||||||
# Allows 1.9+ left-handedness (main hand) on 1.8 servers
|
# Allows 1.9+ left-handedness (main hand) on 1.8 servers
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren