Add UserConnection param to item rewriter methods

This commit is contained in:
RaphiMC 2024-04-21 22:54:26 +02:00
parent 05604ca1a1
commit a48c470a48
No known key found for this signature in database
GPG Key ID: 0F6BB0657A03AC94
7 changed files with 45 additions and 41 deletions

View File

@ -17,6 +17,7 @@
*/ */
package net.raphimc.vialegacy.api.remapper; package net.raphimc.vialegacy.api.remapper;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
@ -100,7 +101,7 @@ public abstract class LegacyItemRewriter<P extends Protocol> extends RewriterBas
} }
@Override @Override
public Item handleItemToClient(final Item item) { public Item handleItemToClient(final UserConnection user, final Item item) {
if (item == null) return null; if (item == null) return null;
for (RewriteEntry rewriteEntry : this.rewriteEntries) { for (RewriteEntry rewriteEntry : this.rewriteEntries) {
@ -117,7 +118,7 @@ public abstract class LegacyItemRewriter<P extends Protocol> extends RewriterBas
} }
@Override @Override
public Item handleItemToServer(final Item item) { public Item handleItemToServer(final UserConnection user, final Item item) {
if (item == null) return null; if (item == null) return null;
for (NonExistentEntry nonExistentEntry : this.nonExistentItems) { for (NonExistentEntry nonExistentEntry : this.nonExistentItems) {
@ -159,12 +160,12 @@ public abstract class LegacyItemRewriter<P extends Protocol> extends RewriterBas
} }
private void handleClientboundItem(final PacketWrapper wrapper) throws Exception { private void handleClientboundItem(final PacketWrapper wrapper) throws Exception {
final Item item = this.handleItemToClient(wrapper.read(this.itemType)); final Item item = this.handleItemToClient(wrapper.user(), wrapper.read(this.itemType));
wrapper.write(this.mappedItemType, item); wrapper.write(this.mappedItemType, item);
} }
private void handleServerboundItem(final PacketWrapper wrapper) throws Exception { private void handleServerboundItem(final PacketWrapper wrapper) throws Exception {
final Item item = this.handleItemToServer(wrapper.read(this.mappedItemType)); final Item item = this.handleItemToServer(wrapper.user(), wrapper.read(this.mappedItemType));
wrapper.write(this.itemType, item); wrapper.write(this.itemType, item);
} }

View File

@ -17,6 +17,7 @@
*/ */
package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.rewriter; package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.rewriter;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.item.Item;
import net.raphimc.vialegacy.api.data.ItemList1_6; import net.raphimc.vialegacy.api.data.ItemList1_6;
import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter; import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter;
@ -42,12 +43,12 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_4_2to1_3_1_2> {
} }
@Override @Override
public Item handleItemToServer(Item item) { public Item handleItemToServer(final UserConnection user, final Item item) {
if (item != null && item.identifier() == ItemList1_6.emptyMap.itemID) { if (item != null && item.identifier() == ItemList1_6.emptyMap.itemID) {
item.setIdentifier(ItemList1_6.map.itemID); item.setIdentifier(ItemList1_6.map.itemID);
} }
return super.handleItemToServer(item); return super.handleItemToServer(user, item);
} }
} }

View File

@ -137,7 +137,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.INT); // entity id map(Type.INT); // entity id
map(Type.SHORT); // slot map(Type.SHORT); // slot
map(Types1_7_6.ITEM); // item map(Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToClient(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToClient(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_6_4.RESPAWN, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_6_4.RESPAWN, new PacketHandlers() {
@ -296,11 +296,11 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.BYTE); // pitch map(Type.BYTE); // pitch
handler(wrapper -> { handler(wrapper -> {
final Item currentItem = new DataItem(wrapper.read(Type.UNSIGNED_SHORT), (byte) 1, (short) 0, null); // item final Item currentItem = new DataItem(wrapper.read(Type.UNSIGNED_SHORT), (byte) 1, (short) 0, null); // item
itemRewriter.handleItemToClient(currentItem); itemRewriter.handleItemToClient(wrapper.user(), currentItem);
wrapper.write(Type.SHORT, (short) currentItem.identifier()); wrapper.write(Type.SHORT, (short) currentItem.identifier());
}); });
map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata
handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); handler(wrapper -> rewriteMetadata(wrapper.user(), wrapper.get(Types1_7_6.METADATA_LIST, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_6_4.SPAWN_ENTITY, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_6_4.SPAWN_ENTITY, new PacketHandlers() {
@ -342,7 +342,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.SHORT); // velocity y map(Type.SHORT); // velocity y
map(Type.SHORT); // velocity z map(Type.SHORT); // velocity z
map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata
handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); handler(wrapper -> rewriteMetadata(wrapper.user(), wrapper.get(Types1_7_6.METADATA_LIST, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_6_4.SPAWN_PAINTING, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_6_4.SPAWN_PAINTING, new PacketHandlers() {
@ -369,7 +369,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
public void register() { public void register() {
map(Type.INT); // entity id map(Type.INT); // entity id
map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata
handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); handler(wrapper -> rewriteMetadata(wrapper.user(), wrapper.get(Types1_7_6.METADATA_LIST, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_6_4.ENTITY_PROPERTIES, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_6_4.ENTITY_PROPERTIES, new PacketHandlers() {
@ -620,7 +620,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.BYTE); // window id map(Type.BYTE); // window id
map(Type.SHORT); // slot map(Type.SHORT); // slot
map(Types1_7_6.ITEM); // item map(Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToClient(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToClient(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_6_4.WINDOW_ITEMS, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_6_4.WINDOW_ITEMS, new PacketHandlers() {
@ -630,7 +630,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
handler(wrapper -> { handler(wrapper -> {
final Item[] items = wrapper.passthrough(Types1_7_6.ITEM_ARRAY); // items final Item[] items = wrapper.passthrough(Types1_7_6.ITEM_ARRAY); // items
for (Item item : items) { for (Item item : items) {
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
} }
}); });
} }
@ -754,10 +754,10 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
wrapper.passthrough(Type.INT); // window id wrapper.passthrough(Type.INT); // window id
final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.ITEM)); // item 1 itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Types1_7_6.ITEM)); // item 1
itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.ITEM)); // item 3 itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Types1_7_6.ITEM)); // item 3
if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items
itemRewriter.handleItemToClient(wrapper.passthrough(Types1_7_6.ITEM)); // item 2 itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Types1_7_6.ITEM)); // item 2
} }
wrapper.passthrough(Type.BOOLEAN); // unavailable wrapper.passthrough(Type.BOOLEAN); // unavailable
} }
@ -974,7 +974,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Types1_7_6.POSITION_UBYTE); // position map(Types1_7_6.POSITION_UBYTE); // position
map(Type.UNSIGNED_BYTE); // direction map(Type.UNSIGNED_BYTE); // direction
map(Types1_7_6.ITEM); // item map(Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToServer(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
map(Type.UNSIGNED_BYTE); // offset x map(Type.UNSIGNED_BYTE); // offset x
map(Type.UNSIGNED_BYTE); // offset y map(Type.UNSIGNED_BYTE); // offset y
map(Type.UNSIGNED_BYTE); // offset z map(Type.UNSIGNED_BYTE); // offset z
@ -989,7 +989,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.SHORT); // action map(Type.SHORT); // action
map(Type.BYTE); // mode map(Type.BYTE); // mode
map(Types1_7_6.ITEM); // item map(Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToServer(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
} }
}); });
this.registerServerbound(ServerboundPackets1_7_2.UPDATE_SIGN, new PacketHandlers() { this.registerServerbound(ServerboundPackets1_7_2.UPDATE_SIGN, new PacketHandlers() {
@ -1070,7 +1070,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
switch (channel) { switch (channel) {
case "MC|BEdit": case "MC|BEdit":
case "MC|BSign": case "MC|BSign":
itemRewriter.handleItemToServer(wrapper.passthrough(Types1_7_6.ITEM)); itemRewriter.handleItemToServer(wrapper.user(), wrapper.passthrough(Types1_7_6.ITEM));
length = (short) PacketUtil.calculateLength(wrapper); length = (short) PacketUtil.calculateLength(wrapper);
break; break;
case "MC|AdvCdm": case "MC|AdvCdm":
@ -1103,10 +1103,10 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
}); });
} }
private void rewriteMetadata(final List<Metadata> metadataList) { private void rewriteMetadata(final UserConnection user, final List<Metadata> metadataList) {
for (Metadata metadata : metadataList) { for (Metadata metadata : metadataList) {
if (metadata.metaType().equals(MetaType1_6_4.Slot)) { if (metadata.metaType().equals(MetaType1_6_4.Slot)) {
itemRewriter.handleItemToClient(metadata.value()); itemRewriter.handleItemToClient(user, metadata.value());
} }
metadata.setMetaType(MetaType1_7_6.byId(metadata.metaType().typeId())); metadata.setMetaType(MetaType1_7_6.byId(metadata.metaType().typeId()));
} }

View File

@ -154,7 +154,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
this.registerClientbound(ClientboundPackets1_7_2.CHAT_MESSAGE, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_7_2.CHAT_MESSAGE, new PacketHandlers() {
@Override @Override
public void register() { public void register() {
map(Type.STRING, Type.STRING, chatComponentRewriter::toClient); // message handler(wrapper -> wrapper.write(Type.STRING, chatComponentRewriter.toClient(wrapper.user(), wrapper.read(Type.STRING)))); // message
create(Type.BYTE, (byte) 0); // position create(Type.BYTE, (byte) 0); // position
} }
}); });
@ -164,7 +164,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
map(Type.INT, Type.VAR_INT); // entity id map(Type.INT, Type.VAR_INT); // entity id
map(Type.SHORT); // slot map(Type.SHORT); // slot
map(Types1_7_6.ITEM, Type.ITEM1_8); // item map(Types1_7_6.ITEM, Type.ITEM1_8); // item
handler(wrapper -> itemRewriter.handleItemToClient(wrapper.get(Type.ITEM1_8, 0))); handler(wrapper -> itemRewriter.handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_8, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_7_2.SPAWN_POSITION, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_7_2.SPAWN_POSITION, new PacketHandlers() {
@ -244,7 +244,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
final short itemId = wrapper.read(Type.SHORT); // item in hand final short itemId = wrapper.read(Type.SHORT); // item in hand
final Item currentItem = new DataItem(itemId, (byte) 1, (short) 0, null); final Item currentItem = new DataItem(itemId, (byte) 1, (short) 0, null);
itemRewriter.handleItemToClient(currentItem); itemRewriter.handleItemToClient(wrapper.user(), currentItem);
wrapper.write(Type.SHORT, (short) currentItem.identifier()); wrapper.write(Type.SHORT, (short) currentItem.identifier());
final List<Metadata> metadata = wrapper.read(Types1_7_6.METADATA_LIST); // metadata final List<Metadata> metadata = wrapper.read(Types1_7_6.METADATA_LIST); // metadata
@ -781,7 +781,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
int damage = 0; int damage = 0;
if (parts.length > 2) damage = Integer.parseInt(parts[2]); if (parts.length > 2) damage = Integer.parseInt(parts[2]);
final DataItem item = new DataItem(id, (byte) 1, (short) damage, null); final DataItem item = new DataItem(id, (byte) 1, (short) damage, null);
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.VAR_INT, item.identifier()); // particle data wrapper.write(Type.VAR_INT, item.identifier()); // particle data
if (item.data() != 0) if (item.data() != 0)
wrapper.write(Type.VAR_INT, (int) item.data()); // particle data wrapper.write(Type.VAR_INT, (int) item.data()); // particle data
@ -891,7 +891,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
wrapper.write(Type.SHORT, slot); wrapper.write(Type.SHORT, slot);
}); });
map(Types1_7_6.ITEM, Type.ITEM1_8); // item map(Types1_7_6.ITEM, Type.ITEM1_8); // item
handler(wrapper -> itemRewriter.handleItemToClient(wrapper.get(Type.ITEM1_8, 0))); handler(wrapper -> itemRewriter.handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_8, 0)));
} }
}); });
this.registerClientbound(ClientboundPackets1_7_2.WINDOW_ITEMS, new PacketHandlers() { this.registerClientbound(ClientboundPackets1_7_2.WINDOW_ITEMS, new PacketHandlers() {
@ -909,7 +909,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
items[1] = new DataItem(351/*lapis_lazuli*/, (byte) 3, (short) 4, null); items[1] = new DataItem(351/*lapis_lazuli*/, (byte) 3, (short) 4, null);
} }
for (Item item : items) { for (Item item : items) {
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
} }
wrapper.write(Type.ITEM1_8_SHORT_ARRAY, items); wrapper.write(Type.ITEM1_8_SHORT_ARRAY, items);
}); });
@ -1123,17 +1123,17 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
Item item = wrapper.read(Types1_7_6.ITEM); Item item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 1 wrapper.write(Type.ITEM1_8, item); // item 1
item = wrapper.read(Types1_7_6.ITEM); item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 3 wrapper.write(Type.ITEM1_8, item); // item 3
final boolean has3Items = wrapper.passthrough(Type.BOOLEAN); // has 3 items final boolean has3Items = wrapper.passthrough(Type.BOOLEAN); // has 3 items
if (has3Items) { if (has3Items) {
item = wrapper.read(Types1_7_6.ITEM); item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item); itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 2 wrapper.write(Type.ITEM1_8, item); // item 2
} }
@ -1254,7 +1254,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
handler(wrapper -> { handler(wrapper -> {
final short direction = wrapper.get(Type.UNSIGNED_BYTE, 0); final short direction = wrapper.get(Type.UNSIGNED_BYTE, 0);
final Item item = wrapper.get(Types1_7_6.ITEM, 0); final Item item = wrapper.get(Types1_7_6.ITEM, 0);
itemRewriter.handleItemToServer(item); itemRewriter.handleItemToServer(wrapper.user(), item);
if (item != null && item.identifier() == ItemList1_6.writtenBook.itemID && direction == 255) { // If placed item is a book then cancel it and send a MC|BOpen to the client if (item != null && item.identifier() == ItemList1_6.writtenBook.itemID && direction == 255) { // If placed item is a book then cancel it and send a MC|BOpen to the client
final PacketWrapper openBook = PacketWrapper.create(ClientboundPackets1_8.PLUGIN_MESSAGE, wrapper.user()); final PacketWrapper openBook = PacketWrapper.create(ClientboundPackets1_8.PLUGIN_MESSAGE, wrapper.user());
@ -1321,7 +1321,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
map(Type.SHORT); // transaction id map(Type.SHORT); // transaction id
map(Type.BYTE); // action map(Type.BYTE); // action
map(Type.ITEM1_8, Types1_7_6.ITEM); // item map(Type.ITEM1_8, Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToServer(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
} }
}); });
this.registerServerbound(ServerboundPackets1_8.CREATIVE_INVENTORY_ACTION, new PacketHandlers() { this.registerServerbound(ServerboundPackets1_8.CREATIVE_INVENTORY_ACTION, new PacketHandlers() {
@ -1329,7 +1329,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
public void register() { public void register() {
map(Type.SHORT); // slot map(Type.SHORT); // slot
map(Type.ITEM1_8, Types1_7_6.ITEM); // item map(Type.ITEM1_8, Types1_7_6.ITEM); // item
handler(wrapper -> itemRewriter.handleItemToServer(wrapper.get(Types1_7_6.ITEM, 0))); handler(wrapper -> itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Types1_7_6.ITEM, 0)));
} }
}); });
this.registerServerbound(ServerboundPackets1_8.UPDATE_SIGN, new PacketHandlers() { this.registerServerbound(ServerboundPackets1_8.UPDATE_SIGN, new PacketHandlers() {
@ -1381,7 +1381,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
case "MC|BEdit": case "MC|BEdit":
case "MC|BSign": case "MC|BSign":
final Item item = wrapper.read(Type.ITEM1_8); // book final Item item = wrapper.read(Type.ITEM1_8); // book
itemRewriter.handleItemToServer(item); itemRewriter.handleItemToServer(wrapper.user(), item);
wrapper.write(Types1_7_6.ITEM, item); // book wrapper.write(Types1_7_6.ITEM, item); // book
break; break;
case "MC|Brand": case "MC|Brand":

View File

@ -96,7 +96,7 @@ public class MetadataRewriter {
entry.setValue(((Number) value).floatValue()); entry.setValue(((Number) value).floatValue());
break; break;
case Slot: case Slot:
this.protocol.getItemRewriter().handleItemToClient((Item) value); this.protocol.getItemRewriter().handleItemToClient(user, (Item) value);
break; break;
case String: case String:
case Position: case Position:

View File

@ -18,6 +18,7 @@
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter; package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.Protocol;
@ -428,7 +429,7 @@ public class ChatComponentRewriter {
this.protocol = protocol; this.protocol = protocol;
} }
public String toClient(final String text) { public String toClient(final UserConnection user, final String text) {
final ATextComponent component = TextComponentSerializer.V1_7.deserialize(text); final ATextComponent component = TextComponentSerializer.V1_7.deserialize(text);
// Replace translation keys with their actual translations // Replace translation keys with their actual translations
TextUtils.iterateAll(component, c -> { TextUtils.iterateAll(component, c -> {
@ -455,7 +456,7 @@ public class ChatComponentRewriter {
item.setIdentifier(idTag.asShort()); item.setIdentifier(idTag.asShort());
item.setData(damage); item.setData(damage);
item.setTag(itemTag); item.setTag(itemTag);
item = this.protocol.getItemRewriter().handleItemToClient(item); item = this.protocol.getItemRewriter().handleItemToClient(user, item);
if (!ID_TO_NAME.containsKey(item.identifier())) { if (!ID_TO_NAME.containsKey(item.identifier())) {
throw new IllegalArgumentException("Invalid item ID: " + item.identifier()); throw new IllegalArgumentException("Invalid item ID: " + item.identifier());

View File

@ -18,6 +18,7 @@
package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter; package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter;
import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
@ -65,8 +66,8 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_8to1_7_6_10> {
} }
@Override @Override
public Item handleItemToClient(Item item) { public Item handleItemToClient(final UserConnection user, final Item item) {
super.handleItemToClient(item); super.handleItemToClient(user, item);
if (item == null) return null; if (item == null) return null;
if (item.identifier() == ItemList1_6.skull.itemID && item.data() == 3 && item.tag() != null) { // player_skull if (item.identifier() == ItemList1_6.skull.itemID && item.data() == 3 && item.tag() != null) { // player_skull
@ -106,7 +107,7 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_8to1_7_6_10> {
} }
@Override @Override
public Item handleItemToServer(Item item) { public Item handleItemToServer(final UserConnection user, final Item item) {
if (item == null) return null; if (item == null) return null;
NOT_VALID: NOT_VALID:
@ -117,7 +118,7 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_8to1_7_6_10> {
} }
} }
return super.handleItemToServer(item); return super.handleItemToServer(user, item);
} }
} }