mirror of
https://github.com/FabricMC/fabric.git
synced 2025-04-08 21:14:41 -04:00
Dont serialise empty transfer variant components (#3628)
This commit is contained in:
parent
fc9addbd3c
commit
a93ecdadf3
2 changed files with 25 additions and 3 deletions
fabric-transfer-api-v1/src
main/java/net/fabricmc/fabric/impl/transfer
test/java/net/fabricmc/fabric/test/transfer/unittests
|
@ -25,6 +25,7 @@ import net.minecraft.network.codec.PacketCodec;
|
|||
import net.minecraft.network.codec.PacketCodecs;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.util.dynamic.Codecs;
|
||||
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
|
||||
|
@ -34,7 +35,7 @@ import net.fabricmc.fabric.impl.transfer.item.ItemVariantImpl;
|
|||
public class VariantCodecs {
|
||||
public static final Codec<ItemVariant> ITEM_CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
||||
Registries.ITEM.getEntryCodec().fieldOf("item").forGetter(ItemVariant::getRegistryEntry),
|
||||
ComponentChanges.CODEC.fieldOf("components").forGetter(ItemVariant::getComponents)
|
||||
Codecs.createStrictOptionalFieldCodec(ComponentChanges.CODEC, "components", ComponentChanges.EMPTY).forGetter(ItemVariant::getComponents)
|
||||
).apply(instance, ItemVariantImpl::of)
|
||||
);
|
||||
public static final PacketCodec<RegistryByteBuf, ItemVariant> ITEM_PACKET_CODEC = PacketCodec.tuple(
|
||||
|
@ -45,7 +46,7 @@ public class VariantCodecs {
|
|||
|
||||
public static final Codec<FluidVariant> FLUID_CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
||||
Registries.FLUID.getEntryCodec().fieldOf("fluid").forGetter(FluidVariant::getRegistryEntry),
|
||||
ComponentChanges.CODEC.fieldOf("components").forGetter(FluidVariant::getComponents)
|
||||
Codecs.createStrictOptionalFieldCodec(ComponentChanges.CODEC, "components", ComponentChanges.EMPTY).forGetter(FluidVariant::getComponents)
|
||||
).apply(instance, FluidVariantImpl::of)
|
||||
);
|
||||
public static final PacketCodec<RegistryByteBuf, FluidVariant> FLUID_PACKET_CODEC = PacketCodec.tuple(
|
||||
|
|
|
@ -130,7 +130,28 @@ public class SingleVariantItemStorageTests extends AbstractTransferApiTest {
|
|||
|
||||
NbtCompound nbt = new NbtCompound();
|
||||
storage.writeNbt(nbt, staticDrm());
|
||||
assertEquals("{amount:1L,variant:{components:{},item:\"minecraft:diamond\"}}", nbt.toString());
|
||||
assertEquals("{amount:1L,variant:{item:\"minecraft:diamond\"}}", nbt.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void writeNbtWithComponentTest() {
|
||||
SingleItemStorage storage = new SingleItemStorage() {
|
||||
@Override
|
||||
protected long getCapacity(ItemVariant variant) {
|
||||
return 10;
|
||||
}
|
||||
};
|
||||
|
||||
try (Transaction tx = Transaction.openOuter()) {
|
||||
ItemStack stack = new ItemStack(Items.DIAMOND);
|
||||
stack.set(DataComponentTypes.CUSTOM_NAME, Text.literal("test name"));
|
||||
storage.insert(ItemVariant.of(stack), 1, tx);
|
||||
tx.commit();
|
||||
}
|
||||
|
||||
NbtCompound nbt = new NbtCompound();
|
||||
storage.writeNbt(nbt, staticDrm());
|
||||
assertEquals("{amount:1L,variant:{components:{\"minecraft:custom_name\":'\"test name\"'},item:\"minecraft:diamond\"}}", nbt.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Add table
Reference in a new issue