mirror of
https://github.com/ViaVersion/ViaBackwards.git
synced 2026-11-04 08:52:08 -05:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51b1715863 |
No files matched your search
+9
-18
@@ -30,6 +30,7 @@ import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.storage.BiomeStorage
|
||||
import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2;
|
||||
import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.MapColorMappings1_15_2;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.EntityEquipment;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
@@ -47,7 +48,6 @@ import com.viaversion.viaversion.rewriter.RecipeRewriter;
|
||||
import com.viaversion.viaversion.util.CompactArrayUtil;
|
||||
import com.viaversion.viaversion.util.Key;
|
||||
import com.viaversion.viaversion.util.UUIDUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@@ -143,27 +143,21 @@ public class BlockItemPacketRewriter1_16 extends BackwardsItemRewriter<Clientbou
|
||||
protocol.registerClientbound(ClientboundPackets1_16.SET_EQUIPMENT, ClientboundPackets1_15.SET_EQUIPPED_ITEM, wrapper -> {
|
||||
int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
|
||||
List<EquipmentData> equipmentData = new ArrayList<>();
|
||||
byte slot;
|
||||
do {
|
||||
slot = wrapper.read(Types.BYTE);
|
||||
Item item = handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_13_2));
|
||||
int rawSlot = slot & 0x7F;
|
||||
equipmentData.add(new EquipmentData(rawSlot, item));
|
||||
} while ((slot & 0xFFFFFF80) != 0);
|
||||
List<EntityEquipment> equipmentData = wrapper.read(equipmentType());
|
||||
equipmentData.replaceAll(equipment -> equipment.rewrite(wrapper.user(), protocol, true));
|
||||
|
||||
// Send first data in the current packet
|
||||
EquipmentData firstData = equipmentData.get(0);
|
||||
wrapper.write(Types.VAR_INT, firstData.slot);
|
||||
wrapper.write(Types.ITEM1_13_2, firstData.item);
|
||||
EntityEquipment firstData = equipmentData.get(0);
|
||||
wrapper.write(Types.VAR_INT, firstData.slot());
|
||||
wrapper.write(Types.ITEM1_13_2, firstData.item());
|
||||
|
||||
// If there are more items, send new packets for them
|
||||
for (int i = 1; i < equipmentData.size(); i++) {
|
||||
PacketWrapper equipmentPacket = wrapper.create(ClientboundPackets1_15.SET_EQUIPPED_ITEM);
|
||||
EquipmentData data = equipmentData.get(i);
|
||||
EntityEquipment data = equipmentData.get(i);
|
||||
equipmentPacket.write(Types.VAR_INT, entityId);
|
||||
equipmentPacket.write(Types.VAR_INT, data.slot);
|
||||
equipmentPacket.write(Types.ITEM1_13_2, data.item);
|
||||
equipmentPacket.write(Types.VAR_INT, data.slot());
|
||||
equipmentPacket.write(Types.ITEM1_13_2, data.item());
|
||||
equipmentPacket.send(Protocol1_16To1_15_2.class);
|
||||
}
|
||||
});
|
||||
@@ -315,7 +309,4 @@ public class BlockItemPacketRewriter1_16 extends BackwardsItemRewriter<Clientbou
|
||||
enchantmentRewriter.handleToServer(item);
|
||||
return item;
|
||||
}
|
||||
|
||||
private record EquipmentData(int slot, Item item) {
|
||||
}
|
||||
}
|
||||
+6
-3
@@ -28,6 +28,7 @@ import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.Protocol1_19_4To1_19
|
||||
import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.storage.EntityTracker1_19_4;
|
||||
import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.storage.LinkedEntityStorage;
|
||||
import com.viaversion.viaversion.api.data.entity.StoredEntityData;
|
||||
import com.viaversion.viaversion.api.minecraft.EntityEquipment;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_3;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4;
|
||||
@@ -42,6 +43,8 @@ import com.viaversion.viaversion.api.type.types.version.Types1_19_4;
|
||||
import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4;
|
||||
import com.viaversion.viaversion.util.TagUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class EntityPacketRewriter1_19_4 extends EntityRewriter<ClientboundPackets1_19_4, Protocol1_19_4To1_19_3> {
|
||||
|
||||
@@ -284,9 +287,9 @@ public final class EntityPacketRewriter1_19_4 extends EntityRewriter<Clientbound
|
||||
|
||||
final PacketWrapper setEquipment = PacketWrapper.create(ClientboundPackets1_19_3.SET_EQUIPMENT, event.user());
|
||||
setEquipment.write(Types.VAR_INT, event.entityId()); // Entity id
|
||||
setEquipment.write(Types.BYTE, (byte) 5); // Slot - head
|
||||
setEquipment.write(Types.ITEM1_13_2, value);
|
||||
|
||||
final List<EntityEquipment> equipmentList = new ArrayList<>(1);
|
||||
equipmentList.add(new EntityEquipment(5, value)); // Slot - head
|
||||
setEquipment.write(protocol.getItemRewriter().mappedEquipmentType(), equipmentList);
|
||||
setEquipment.send(Protocol1_19_4To1_19_3.class);
|
||||
});
|
||||
filter().type(EntityTypes1_19_4.DISPLAY).handler((event, data) -> {
|
||||
|
||||
+1
-14
@@ -35,7 +35,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
|
||||
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.Types;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18;
|
||||
@@ -182,19 +181,7 @@ public final class BlockItemPacketRewriter1_20_2 extends BackwardsItemRewriter<C
|
||||
wrapper.passthrough(Types.BOOLEAN); // Send telemetry
|
||||
}
|
||||
});
|
||||
protocol.registerClientbound(ClientboundPackets1_20_2.SET_EQUIPMENT, new PacketHandlers() {
|
||||
@Override
|
||||
public void register() {
|
||||
map(Types.VAR_INT); // 0 - Entity ID
|
||||
handler(wrapper -> {
|
||||
byte slot;
|
||||
do {
|
||||
slot = wrapper.passthrough(Types.BYTE);
|
||||
wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2)));
|
||||
} while ((slot & 0xFFFFFF80) != 0);
|
||||
});
|
||||
}
|
||||
});
|
||||
registerSetEquipment(ClientboundPackets1_20_2.SET_EQUIPMENT);
|
||||
|
||||
new RecipeRewriter1_20_2<>(protocol) {
|
||||
@Override
|
||||
|
||||
+11
-14
@@ -30,6 +30,7 @@ import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.RegistryData
|
||||
import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.SecureChatStorage;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.entity.DimensionData;
|
||||
import com.viaversion.viaversion.api.minecraft.EntityEquipment;
|
||||
import com.viaversion.viaversion.api.minecraft.Particle;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
@@ -71,17 +72,14 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
registerRemoveEntities(ClientboundPackets1_20_5.REMOVE_ENTITIES);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_5.SET_EQUIPMENT, wrapper -> {
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT); // Entity id
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
final EntityType type = tracker(wrapper.user()).entityType(entityId);
|
||||
byte slot;
|
||||
do {
|
||||
slot = wrapper.read(Types.BYTE);
|
||||
final Item item = protocol.getItemRewriter().handleItemToClient(wrapper.user(), wrapper.read(VersionedTypes.V1_20_5.item()));
|
||||
final int rawSlot = slot & 0x7F;
|
||||
|
||||
if (rawSlot == 6) {
|
||||
final boolean lastSlot = (slot & 0xFFFFFF80) == 0;
|
||||
slot = (byte) (lastSlot ? 4 : 4 | 0xFFFFFF80); // Map body slot index to chest slot index for horses, also wolves
|
||||
final List<EntityEquipment> equipmentList = wrapper.read(protocol.getItemRewriter().equipmentType());
|
||||
equipmentList.replaceAll(equipment -> {
|
||||
int slot = equipment.slot();
|
||||
Item item = protocol.getItemRewriter().handleItemToClient(wrapper.user(), equipment.item());
|
||||
if (equipment.slot() == 6) {
|
||||
slot = 4;
|
||||
|
||||
if (type != null && type.isOrHasParent(EntityTypes1_20_5.LLAMA)) {
|
||||
// Cancel equipment and set correct entity data instead
|
||||
@@ -89,10 +87,9 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter<Clientbound
|
||||
sendCarpetColorUpdate(wrapper.user(), entityId, item);
|
||||
}
|
||||
}
|
||||
|
||||
wrapper.write(Types.BYTE, slot);
|
||||
wrapper.write(Types.ITEM1_20_2, item);
|
||||
} while ((slot & 0xFFFFFF80) != 0);
|
||||
return new EntityEquipment(slot, item);
|
||||
});
|
||||
wrapper.write(protocol.getItemRewriter().mappedEquipmentType(), equipmentList);
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_20_5.HORSE_SCREEN_OPEN, wrapper -> {
|
||||
|
||||
+13
-29
@@ -32,6 +32,7 @@ import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.data.Mappings;
|
||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||
import com.viaversion.viaversion.api.data.entity.TrackedEntity;
|
||||
import com.viaversion.viaversion.api.minecraft.EntityEquipment;
|
||||
import com.viaversion.viaversion.api.minecraft.Holder;
|
||||
import com.viaversion.viaversion.api.minecraft.HolderSet;
|
||||
import com.viaversion.viaversion.api.minecraft.PaintingVariant;
|
||||
@@ -67,9 +68,7 @@ import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
||||
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
|
||||
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
|
||||
import com.viaversion.viaversion.data.item.ItemHasherBase;
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.IntArrayList;
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.IntLinkedOpenHashSet;
|
||||
import com.viaversion.viaversion.libs.fastutil.ints.IntList;
|
||||
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.packet.ServerboundPacket1_21_4;
|
||||
import com.viaversion.viaversion.protocols.v1_21_2to1_21_4.packet.ServerboundPackets1_21_4;
|
||||
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ClientboundPacket1_21_5;
|
||||
@@ -90,6 +89,7 @@ import static com.viaversion.viaversion.protocols.v1_21_4to1_21_5.rewriter.Block
|
||||
import static com.viaversion.viaversion.util.MathUtil.ceilLog2;
|
||||
|
||||
public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItemRewriter<ClientboundPacket1_21_5, ServerboundPacket1_21_4, Protocol1_21_5To1_21_4> {
|
||||
private static final int MAPPED_SADDLE_ID = 793;
|
||||
private static final int SIGN_BOCK_ENTITY_ID = 7;
|
||||
private static final int HANGING_SIGN_BOCK_ENTITY_ID = 8;
|
||||
private static final int SADDLE_EQUIPMENT_SLOT = 7;
|
||||
@@ -180,39 +180,23 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
|
||||
wrapper.write(Types.HASHED_ITEM, ItemHasherBase.toHashedItem(hashedItemConverter.hasher(), carriedItem));
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_21_5.SET_EQUIPMENT, wrapper -> {
|
||||
final int entityId = wrapper.passthrough(Types.VAR_INT);
|
||||
registerSetEquipment(ClientboundPackets1_21_5.SET_EQUIPMENT);
|
||||
protocol.appendClientbound(ClientboundPackets1_21_5.SET_EQUIPMENT, wrapper -> {
|
||||
final int entityId = wrapper.get(Types.VAR_INT, 0);
|
||||
final TrackedEntity trackedEntity = protocol.getEntityRewriter().tracker(wrapper.user()).entity(entityId);
|
||||
|
||||
// Remove saddle equipment, keep the rest
|
||||
final IntList keptSlots = new IntArrayList();
|
||||
final List<Item> keptItems = new ArrayList<>();
|
||||
byte value;
|
||||
do {
|
||||
value = wrapper.read(Types.BYTE);
|
||||
final int equipmentSlot = value & 0x7F;
|
||||
final Item item = wrapper.read(itemType());
|
||||
if (equipmentSlot == SADDLE_EQUIPMENT_SLOT) {
|
||||
final List<EntityEquipment> equipmentList = wrapper.get(protocol.getItemRewriter().mappedEquipmentType(), 0);
|
||||
equipmentList.removeIf(equipment -> {
|
||||
if (equipment.slot() == SADDLE_EQUIPMENT_SLOT) {
|
||||
// Send saddle entity data for horses
|
||||
if (trackedEntity != null && trackedEntity.entityType().isOrHasParent(EntityTypes1_21_5.ABSTRACT_HORSE)) {
|
||||
sendSaddledEntityData(wrapper.user(), trackedEntity, entityId, item.identifier() == 800);
|
||||
sendSaddledEntityData(wrapper.user(), trackedEntity, entityId, equipment.item().identifier() == MAPPED_SADDLE_ID);
|
||||
}
|
||||
} else {
|
||||
keptSlots.add(equipmentSlot);
|
||||
keptItems.add(handleItemToClient(wrapper.user(), item));
|
||||
return true;
|
||||
}
|
||||
} while (value < 0);
|
||||
|
||||
if (keptSlots.isEmpty()) {
|
||||
return false;
|
||||
});
|
||||
if (equipmentList.isEmpty()) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < keptSlots.size(); i++) {
|
||||
final int slot = keptSlots.getInt(i);
|
||||
final boolean more = i < keptSlots.size() - 1;
|
||||
wrapper.write(Types.BYTE, (byte) (more ? (slot | -128) : slot));
|
||||
wrapper.write(mappedItemType(), keptItems.get(i));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# ViaVersion
|
||||
viaver = "5.6.0"
|
||||
viaver = "5.6.1-SNAPSHOT"
|
||||
|
||||
# Common provided
|
||||
netty = "4.0.20.Final"
|
||||
|
||||
Reference in new issue
Block a user