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;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
@ -100,7 +101,7 @@ public abstract class LegacyItemRewriter<P extends Protocol> extends RewriterBas
}
@Override
public Item handleItemToClient(final Item item) {
public Item handleItemToClient(final UserConnection user, final Item item) {
if (item == null) return null;
for (RewriteEntry rewriteEntry : this.rewriteEntries) {
@ -117,7 +118,7 @@ public abstract class LegacyItemRewriter<P extends Protocol> extends RewriterBas
}
@Override
public Item handleItemToServer(final Item item) {
public Item handleItemToServer(final UserConnection user, final Item item) {
if (item == null) return null;
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 {
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);
}
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);
}

View File

@ -17,6 +17,7 @@
*/
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 net.raphimc.vialegacy.api.data.ItemList1_6;
import net.raphimc.vialegacy.api.remapper.LegacyItemRewriter;
@ -42,12 +43,12 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_4_2to1_3_1_2> {
}
@Override
public Item handleItemToServer(Item item) {
public Item handleItemToServer(final UserConnection user, final Item item) {
if (item != null && item.identifier() == ItemList1_6.emptyMap.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.SHORT); // slot
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() {
@ -296,11 +296,11 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.BYTE); // pitch
handler(wrapper -> {
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());
});
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() {
@ -342,7 +342,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.SHORT); // velocity y
map(Type.SHORT); // velocity z
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() {
@ -369,7 +369,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
public void register() {
map(Type.INT); // entity id
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() {
@ -620,7 +620,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Type.BYTE); // window id
map(Type.SHORT); // slot
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() {
@ -630,7 +630,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
handler(wrapper -> {
final Item[] items = wrapper.passthrough(Types1_7_6.ITEM_ARRAY); // 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
final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count
for (int i = 0; i < count; i++) {
itemRewriter.handleItemToClient(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 1
itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Types1_7_6.ITEM)); // item 3
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
}
@ -974,7 +974,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
map(Types1_7_6.POSITION_UBYTE); // position
map(Type.UNSIGNED_BYTE); // direction
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 y
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.BYTE); // mode
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() {
@ -1070,7 +1070,7 @@ public class Protocol1_7_2_5to1_6_4 extends StatelessTransitionProtocol<Clientbo
switch (channel) {
case "MC|BEdit":
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);
break;
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) {
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()));
}

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() {
@Override
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
}
});
@ -164,7 +164,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
map(Type.INT, Type.VAR_INT); // entity id
map(Type.SHORT); // slot
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() {
@ -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 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());
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;
if (parts.length > 2) damage = Integer.parseInt(parts[2]);
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
if (item.data() != 0)
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);
});
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() {
@ -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);
}
for (Item item : items) {
itemRewriter.handleItemToClient(item);
itemRewriter.handleItemToClient(wrapper.user(), item);
}
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
for (int i = 0; i < count; i++) {
Item item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item);
itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 1
item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item);
itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 3
final boolean has3Items = wrapper.passthrough(Type.BOOLEAN); // has 3 items
if (has3Items) {
item = wrapper.read(Types1_7_6.ITEM);
itemRewriter.handleItemToClient(item);
itemRewriter.handleItemToClient(wrapper.user(), item);
wrapper.write(Type.ITEM1_8, item); // item 2
}
@ -1254,7 +1254,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
handler(wrapper -> {
final short direction = wrapper.get(Type.UNSIGNED_BYTE, 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
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.BYTE); // action
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() {
@ -1329,7 +1329,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
public void register() {
map(Type.SHORT); // slot
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() {
@ -1381,7 +1381,7 @@ public class Protocol1_8to1_7_6_10 extends AbstractProtocol<ClientboundPackets1_
case "MC|BEdit":
case "MC|BSign":
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
break;
case "MC|Brand":

View File

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

View File

@ -18,6 +18,7 @@
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.Item;
import com.viaversion.viaversion.api.protocol.Protocol;
@ -428,7 +429,7 @@ public class ChatComponentRewriter {
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);
// Replace translation keys with their actual translations
TextUtils.iterateAll(component, c -> {
@ -455,7 +456,7 @@ public class ChatComponentRewriter {
item.setIdentifier(idTag.asShort());
item.setData(damage);
item.setTag(itemTag);
item = this.protocol.getItemRewriter().handleItemToClient(item);
item = this.protocol.getItemRewriter().handleItemToClient(user, item);
if (!ID_TO_NAME.containsKey(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;
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.type.Type;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
@ -65,8 +66,8 @@ public class ItemRewriter extends LegacyItemRewriter<Protocol1_8to1_7_6_10> {
}
@Override
public Item handleItemToClient(Item item) {
super.handleItemToClient(item);
public Item handleItemToClient(final UserConnection user, final Item item) {
super.handleItemToClient(user, item);
if (item == null) return null;
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
public Item handleItemToServer(Item item) {
public Item handleItemToServer(final UserConnection user, final Item item) {
if (item == null) return null;
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);
}
}