3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-12-27 16:40:12 +01:00
Dieser Commit ist enthalten in:
Gerrygames 2019-01-23 14:37:07 +01:00
Ursprung c539cc6e57
Commit 8448b9628e
2 geänderte Dateien mit 153 neuen und 153 gelöschten Zeilen

Datei anzeigen

@ -15,143 +15,143 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter;
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.packets.InventoryPackets;
public class PlayerPacket1_13 extends Rewriter<Protocol1_12_2To1_13> { public class PlayerPacket1_13 extends Rewriter<Protocol1_12_2To1_13> {
@Override @Override
protected void registerPackets(Protocol1_12_2To1_13 protocol) { protected void registerPackets(Protocol1_12_2To1_13 protocol) {
//Plugin Message //Plugin Message
protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() { protocol.out(State.PLAY, 0x19, 0x18, new PacketRemapper() {
@Override @Override
public void registerMap() { public void registerMap() {
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
public void handle(PacketWrapper wrapper) throws Exception { public void handle(PacketWrapper wrapper) throws Exception {
String channel = wrapper.read(Type.STRING); String channel = wrapper.read(Type.STRING);
if (channel.equals("minecraft:trader_list")) { if (channel.equals("minecraft:trader_list")) {
wrapper.write(Type.STRING, "MC|TrList"); wrapper.write(Type.STRING, "MC|TrList");
wrapper.passthrough(Type.INT); //Passthrough Window ID wrapper.passthrough(Type.INT); //Passthrough Window ID
int size = wrapper.passthrough(Type.UNSIGNED_BYTE); int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
//Input Item //Input Item
Item input = wrapper.read(Type.FLAT_ITEM); Item input = wrapper.read(Type.FLAT_ITEM);
BlockItemPackets1_13.toClient(input); BlockItemPackets1_13.toClient(input);
wrapper.write(Type.ITEM, input); wrapper.write(Type.ITEM, input);
//Output Item //Output Item
Item output = wrapper.read(Type.FLAT_ITEM); Item output = wrapper.read(Type.FLAT_ITEM);
BlockItemPackets1_13.toClient(output); BlockItemPackets1_13.toClient(output);
wrapper.write(Type.ITEM, output); wrapper.write(Type.ITEM, output);
boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item
if (secondItem) { if (secondItem) {
//Second Item //Second Item
Item second = wrapper.read(Type.FLAT_ITEM); Item second = wrapper.read(Type.FLAT_ITEM);
BlockItemPackets1_13.toClient(second); BlockItemPackets1_13.toClient(second);
wrapper.write(Type.ITEM, second); wrapper.write(Type.ITEM, second);
} }
wrapper.passthrough(Type.BOOLEAN); //Trade disabled wrapper.passthrough(Type.BOOLEAN); //Trade disabled
wrapper.passthrough(Type.INT); //Number of tools uses wrapper.passthrough(Type.INT); //Number of tools uses
wrapper.passthrough(Type.INT); //Maximum number of trade uses wrapper.passthrough(Type.INT); //Maximum number of trade uses
} }
} else { } else {
String oldChannel = InventoryPackets.getOldPluginChannelId(channel); String oldChannel = InventoryPackets.getOldPluginChannelId(channel);
if (oldChannel == null) { if (oldChannel == null) {
ViaBackwards.getPlatform().getLogger().warning("Could not find old channel for " + channel); ViaBackwards.getPlatform().getLogger().warning("Could not find old channel for " + channel);
wrapper.cancel(); wrapper.cancel();
return; return;
} }
wrapper.write(Type.STRING, oldChannel); wrapper.write(Type.STRING, oldChannel);
} }
} }
}); });
} }
}); });
//Scoreboard Objective //Scoreboard Objective
protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() { protocol.out(State.PLAY, 0x45, 0x42, new PacketRemapper() {
@Override @Override
public void registerMap() { public void registerMap() {
map(Type.STRING); map(Type.STRING);
map(Type.BYTE); map(Type.BYTE);
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
public void handle(PacketWrapper wrapper) throws Exception { public void handle(PacketWrapper wrapper) throws Exception {
byte mode = wrapper.get(Type.BYTE, 0); byte mode = wrapper.get(Type.BYTE, 0);
if (mode == 0 || mode == 2) { if (mode == 0 || mode == 2) {
String value = wrapper.read(Type.STRING); String value = wrapper.read(Type.STRING);
value = ChatRewriter.jsonTextToLegacy(value); value = ChatRewriter.jsonTextToLegacy(value);
if (value.length() > 32) value = value.substring(0, 32); if (value.length() > 32) value = value.substring(0, 32);
wrapper.write(Type.STRING, value); wrapper.write(Type.STRING, value);
int type = wrapper.read(Type.VAR_INT); int type = wrapper.read(Type.VAR_INT);
wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer"); wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer");
} }
} }
}); });
} }
}); });
//Teams //Teams
protocol.out(State.PLAY, 0x47, 0x44, new PacketRemapper() { protocol.out(State.PLAY, 0x47, 0x44, new PacketRemapper() {
@Override @Override
public void registerMap() { public void registerMap() {
map(Type.STRING); map(Type.STRING);
map(Type.BYTE); map(Type.BYTE);
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
public void handle(PacketWrapper wrapper) throws Exception { public void handle(PacketWrapper wrapper) throws Exception {
byte action = wrapper.get(Type.BYTE, 0); byte action = wrapper.get(Type.BYTE, 0);
if (action == 0 || action == 2) { if (action == 0 || action == 2) {
String displayName = wrapper.read(Type.STRING); String displayName = wrapper.read(Type.STRING);
displayName = ChatRewriter.jsonTextToLegacy(displayName); displayName = ChatRewriter.jsonTextToLegacy(displayName);
displayName = ChatUtil.removeUnusedColor(displayName, 'f'); displayName = ChatUtil.removeUnusedColor(displayName, 'f');
if (displayName.length() > 32) displayName = displayName.substring(0, 32); if (displayName.length() > 32) displayName = displayName.substring(0, 32);
wrapper.write(Type.STRING, displayName); wrapper.write(Type.STRING, displayName);
byte flags = wrapper.read(Type.BYTE); byte flags = wrapper.read(Type.BYTE);
String nameTagVisibility = wrapper.read(Type.STRING); String nameTagVisibility = wrapper.read(Type.STRING);
String collisionRule = wrapper.read(Type.STRING); String collisionRule = wrapper.read(Type.STRING);
int colour = wrapper.read(Type.VAR_INT); int colour = wrapper.read(Type.VAR_INT);
if (colour == 21) { if (colour == 21) {
colour = -1; colour = -1;
} }
//TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik //TODO team color/prefix handling changed from 1.12.2 to 1.13 and to 1.13.1 again afaik
String prefix = wrapper.read(Type.STRING); String prefix = wrapper.read(Type.STRING);
String suffix = wrapper.read(Type.STRING); String suffix = wrapper.read(Type.STRING);
prefix = prefix == null || prefix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(prefix); prefix = prefix == null || prefix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(prefix);
prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r"); prefix += "§" + (colour > -1 && colour <= 15 ? Integer.toHexString(colour) : "r");
prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); prefix = ChatUtil.removeUnusedColor(prefix, 'f', true);
if (prefix.length() > 16) prefix = prefix.substring(0, 16); if (prefix.length() > 16) prefix = prefix.substring(0, 16);
if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1);
suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix); suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix);
suffix = ChatUtil.removeUnusedColor(suffix, 'f'); suffix = ChatUtil.removeUnusedColor(suffix, 'f');
if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1);
wrapper.write(Type.STRING, prefix); wrapper.write(Type.STRING, prefix);
wrapper.write(Type.STRING, suffix); wrapper.write(Type.STRING, suffix);
wrapper.write(Type.BYTE, flags); wrapper.write(Type.BYTE, flags);
wrapper.write(Type.STRING, nameTagVisibility); wrapper.write(Type.STRING, nameTagVisibility);
wrapper.write(Type.STRING, collisionRule); wrapper.write(Type.STRING, collisionRule);
wrapper.write(Type.BYTE, (byte) colour); wrapper.write(Type.BYTE, (byte) colour);
} }
if (action == 0 || action == 3 || action == 4) { if (action == 0 || action == 3 || action == 4) {
wrapper.passthrough(Type.STRING_ARRAY); //Entities wrapper.passthrough(Type.STRING_ARRAY); //Entities
} }
} }
}); });
} }
}); });
// Tab-Complete (clientbound) TODO MODIFIED // Tab-Complete (clientbound) TODO MODIFIED
protocol.out(State.PLAY, 0x10, 0x0E, new PacketRemapper() { protocol.out(State.PLAY, 0x10, 0x0E, new PacketRemapper() {
@Override @Override
public void registerMap() { public void registerMap() {
handler(new PacketHandler() { handler(new PacketHandler() {
@Override @Override
public void handle(PacketWrapper wrapper) throws Exception { public void handle(PacketWrapper wrapper) throws Exception {
int key = wrapper.read(Type.VAR_INT); int key = wrapper.read(Type.VAR_INT);
int start = wrapper.read(Type.VAR_INT); int start = wrapper.read(Type.VAR_INT);
int length = wrapper.read(Type.VAR_INT); int length = wrapper.read(Type.VAR_INT);
@ -163,10 +163,10 @@ public class PlayerPacket1_13 extends Rewriter<Protocol1_12_2To1_13> {
// Ignore tooltip // Ignore tooltip
wrapper.read(Type.OPTIONAL_CHAT); wrapper.read(Type.OPTIONAL_CHAT);
} }
} }
}); });
} }
}); });
// Tab-Complete (serverbound) // Tab-Complete (serverbound)
protocol.in(State.PLAY, 0x05, 0x01, new PacketRemapper() { protocol.in(State.PLAY, 0x05, 0x01, new PacketRemapper() {
@ -189,7 +189,7 @@ public class PlayerPacket1_13 extends Rewriter<Protocol1_12_2To1_13> {
// Ignore fields // Ignore fields
wrapper.read(Type.BOOLEAN); wrapper.read(Type.BOOLEAN);
if (wrapper.read(Type.BOOLEAN)) { if (wrapper.read(Type.BOOLEAN)) {
wrapper.read(Type.POSITION); wrapper.read(Type.POSITION);
} }
} }
}); });
@ -304,8 +304,8 @@ public class PlayerPacket1_13 extends Rewriter<Protocol1_12_2To1_13> {
}); });
} }
@Override @Override
protected void registerRewrites() { protected void registerRewrites() {
} }
} }

Datei anzeigen

@ -3,30 +3,30 @@ package nl.matsv.viabackwards.utils;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class ChatUtil { public class ChatUtil {
private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))"); private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))");
private static final Pattern UNUSED_COLOR_PATTERN_PREFIX = Pattern.compile("(?>(?>§[0-fk-or])*(§r))|(?>(?>§[0-f])*(§[0-f]))"); private static final Pattern UNUSED_COLOR_PATTERN_PREFIX = Pattern.compile("(?>(?>§[0-fk-or])*(§r))|(?>(?>§[0-f])*(§[0-f]))");
public static String removeUnusedColor(String legacy, char defaultColor) { public static String removeUnusedColor(String legacy, char defaultColor) {
return removeUnusedColor(legacy, defaultColor, false); return removeUnusedColor(legacy, defaultColor, false);
} }
public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) { public static String removeUnusedColor(String legacy, char defaultColor, boolean isPrefix) {
if (legacy == null) return null; if (legacy == null) return null;
Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN; Pattern pattern = isPrefix ? UNUSED_COLOR_PATTERN_PREFIX : UNUSED_COLOR_PATTERN;
legacy = pattern.matcher(legacy).replaceAll("$1$2"); legacy = pattern.matcher(legacy).replaceAll("$1$2");
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
char last = defaultColor; char last = defaultColor;
for (int i = 0; i < legacy.length(); i++) { for (int i = 0; i < legacy.length(); i++) {
char current = legacy.charAt(i); char current = legacy.charAt(i);
if (current != '§' || i == legacy.length() - 1) { if (current != '§' || i == legacy.length() - 1) {
builder.append(current); builder.append(current);
continue; continue;
} }
current = legacy.charAt(++i); current = legacy.charAt(++i);
if (current == last) continue; if (current == last) continue;
builder.append('§').append(current); builder.append('§').append(current);
last = current; last = current;
} }
return builder.toString(); return builder.toString();
} }
} }