Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-08 17:20:24 +01:00
Rewrite inventory names which use .name syntax
Dieser Commit ist enthalten in:
Ursprung
03382ea987
Commit
dad71f1179
@ -0,0 +1,45 @@
|
|||||||
|
package us.myles.ViaVersion.protocols.protocol1_14to1_13_2;
|
||||||
|
|
||||||
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
import net.md_5.bungee.api.chat.TranslatableComponent;
|
||||||
|
import net.md_5.bungee.chat.ComponentSerializer;
|
||||||
|
|
||||||
|
public class InventoryNameRewriter {
|
||||||
|
public static String processTranslate(String value) {
|
||||||
|
BaseComponent[] components = ComponentSerializer.parse(value);
|
||||||
|
for (BaseComponent component : components) {
|
||||||
|
processTranslate(component);
|
||||||
|
}
|
||||||
|
if (components.length == 1) {
|
||||||
|
return ComponentSerializer.toString(components[0]);
|
||||||
|
} else {
|
||||||
|
return ComponentSerializer.toString(components);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void processTranslate(BaseComponent component) {
|
||||||
|
if (component instanceof TranslatableComponent) {
|
||||||
|
String oldTranslate = ((TranslatableComponent) component).getTranslate();
|
||||||
|
|
||||||
|
// Mojang decided to remove .name from inventory titles
|
||||||
|
if (oldTranslate.startsWith("block.") && oldTranslate.endsWith(".name")) {
|
||||||
|
((TranslatableComponent) component).setTranslate(oldTranslate.substring(0, oldTranslate.length() - 5));
|
||||||
|
}
|
||||||
|
if (((TranslatableComponent) component).getWith() != null) {
|
||||||
|
for (BaseComponent baseComponent : ((TranslatableComponent) component).getWith()) {
|
||||||
|
processTranslate(baseComponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (component.getHoverEvent() != null) {
|
||||||
|
for (BaseComponent baseComponent : component.getHoverEvent().getValue()) {
|
||||||
|
processTranslate(baseComponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (component.getExtra() != null) {
|
||||||
|
for (BaseComponent baseComponent : component.getExtra()) {
|
||||||
|
processTranslate(baseComponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,6 +12,7 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper;
|
|||||||
import us.myles.ViaVersion.api.type.Type;
|
import us.myles.ViaVersion.api.type.Type;
|
||||||
import us.myles.ViaVersion.packets.State;
|
import us.myles.ViaVersion.packets.State;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter;
|
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter;
|
||||||
|
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.InventoryNameRewriter;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
|
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData;
|
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.MappingData;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.storage.EntityTracker;
|
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.storage.EntityTracker;
|
||||||
@ -38,9 +39,10 @@ public class InventoryPackets {
|
|||||||
public void handle(PacketWrapper wrapper) throws Exception {
|
public void handle(PacketWrapper wrapper) throws Exception {
|
||||||
Short windowsId = wrapper.read(Type.UNSIGNED_BYTE);
|
Short windowsId = wrapper.read(Type.UNSIGNED_BYTE);
|
||||||
String type = wrapper.read(Type.STRING);
|
String type = wrapper.read(Type.STRING);
|
||||||
String title = wrapper.read(Type.STRING);
|
String title = InventoryNameRewriter.processTranslate(wrapper.read(Type.STRING));
|
||||||
Short slots = wrapper.read(Type.UNSIGNED_BYTE);
|
Short slots = wrapper.read(Type.UNSIGNED_BYTE);
|
||||||
|
|
||||||
|
|
||||||
if (type.equals("EntityHorse")) {
|
if (type.equals("EntityHorse")) {
|
||||||
wrapper.setId(0x1F);
|
wrapper.setId(0x1F);
|
||||||
int entityId = wrapper.read(Type.INT);
|
int entityId = wrapper.read(Type.INT);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren