mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
Steamed Codecs
- Rewrite codecs using StreamCodec#composite(codec, getter, factory) to use StreamCodec#map instead - Require StreamCodec's for ItemAttribute's
This commit is contained in:
parent
f66d29e34c
commit
3bcabaf18e
24 changed files with 184 additions and 73 deletions
|
@ -25,7 +25,7 @@ registrate_version = MC1.21-1.3.0+62
|
|||
flywheel_minecraft_version = 1.21.1
|
||||
flywheel_version = 1.0.0-beta-6
|
||||
flywheel_version_range = [1.0.0-alpha,2.0)
|
||||
ponder_version = 1.0.32
|
||||
ponder_version = 1.0.34
|
||||
jei_minecraft_version = 1.21.1
|
||||
jei_version = 19.21.0.247
|
||||
curios_minecraft_version = 1.21.1
|
||||
|
|
|
@ -129,10 +129,9 @@ public class AllDataComponents {
|
|||
builder -> builder.persistent(AttributeFilterWhitelistMode.CODEC).networkSynchronized(AttributeFilterWhitelistMode.STREAM_CODEC)
|
||||
);
|
||||
|
||||
// TODO - Make a stream codec for this
|
||||
public static final DataComponentType<List<ItemAttributeEntry>> ATTRIBUTE_FILTER_MATCHED_ATTRIBUTES = register(
|
||||
"attribute_filter_matched_attributes",
|
||||
builder -> builder.persistent(ItemAttributeEntry.CODEC.listOf())
|
||||
builder -> builder.persistent(ItemAttributeEntry.CODEC.listOf()).networkSynchronized(CatnipStreamCodecBuilders.list(ItemAttributeEntry.STREAM_CODEC))
|
||||
);
|
||||
|
||||
public static final DataComponentType<ClipboardType> CLIPBOARD_TYPE = register(
|
||||
|
|
|
@ -11,14 +11,13 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
||||
public record MountedStorageSyncPacket(int contraptionId, Map<BlockPos, MountedItemStorage> items, Map<BlockPos, MountedFluidStorage> fluids) implements ClientboundPacketPayload {
|
||||
public static StreamCodec<RegistryFriendlyByteBuf, MountedStorageSyncPacket> STREAM_CODEC = StreamCodec.composite(
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, MountedStorageSyncPacket> STREAM_CODEC = StreamCodec.composite(
|
||||
ByteBufCodecs.INT, MountedStorageSyncPacket::contraptionId,
|
||||
ByteBufCodecs.map(HashMap::new, BlockPos.STREAM_CODEC, MountedItemStorage.STREAM_CODEC), MountedStorageSyncPacket::items,
|
||||
ByteBufCodecs.map(HashMap::new, BlockPos.STREAM_CODEC, MountedFluidStorage.STREAM_CODEC), MountedStorageSyncPacket::fluids,
|
||||
|
|
|
@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|||
import com.simibubi.create.AllParticleTypes;
|
||||
import com.simibubi.create.foundation.particle.ICustomParticleData;
|
||||
|
||||
import net.createmod.catnip.platform.CatnipServices;
|
||||
import net.minecraft.client.particle.ParticleProvider;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.core.particles.ParticleType;
|
||||
|
@ -47,30 +46,25 @@ public class FluidParticleData implements ParticleOptions, ICustomParticleData<F
|
|||
.forGetter(p -> p.fluid))
|
||||
.apply(i, fs -> new FluidParticleData(AllParticleTypes.FLUID_PARTICLE.get(), fs)));
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> STREAM_CODEC = StreamCodec.composite(
|
||||
FluidStack.STREAM_CODEC,
|
||||
p -> p.fluid,
|
||||
fs -> new FluidParticleData(AllParticleTypes.FLUID_PARTICLE.get(), fs));
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> STREAM_CODEC = FluidStack.STREAM_CODEC
|
||||
.map(fs -> new FluidParticleData(AllParticleTypes.FLUID_PARTICLE.get(), fs), p -> p.fluid);
|
||||
|
||||
|
||||
public static final MapCodec<FluidParticleData> BASIN_CODEC = RecordCodecBuilder.mapCodec(i -> i
|
||||
.group(FluidStack.CODEC.fieldOf("fluid")
|
||||
.forGetter(p -> p.fluid))
|
||||
.apply(i, fs -> new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), fs)));
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> BASIN_STREAM_CODEC = StreamCodec.composite(
|
||||
FluidStack.STREAM_CODEC,
|
||||
p -> p.fluid,
|
||||
fs -> new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), fs));
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> BASIN_STREAM_CODEC = FluidStack.STREAM_CODEC
|
||||
.map(fs -> new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), fs), p -> p.fluid);
|
||||
|
||||
public static final MapCodec<FluidParticleData> DRIP_CODEC = RecordCodecBuilder.mapCodec(i -> i
|
||||
.group(FluidStack.CODEC.fieldOf("fluid")
|
||||
.forGetter(p -> p.fluid))
|
||||
.apply(i, fs -> new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fs)));
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> DRIP_STREAM_CODEC = StreamCodec.composite(
|
||||
FluidStack.STREAM_CODEC,
|
||||
p -> p.fluid,
|
||||
fs -> new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fs));
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidParticleData> DRIP_STREAM_CODEC = FluidStack.STREAM_CODEC
|
||||
.map(fs -> new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fs), p -> p.fluid);
|
||||
|
||||
@Override
|
||||
public MapCodec<FluidParticleData> getCodec(ParticleType<FluidParticleData> type) {
|
||||
|
|
|
@ -12,8 +12,8 @@ import net.minecraft.core.particles.ParticleOptions;
|
|||
import net.minecraft.core.particles.ParticleType;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
|
||||
|
@ -24,11 +24,8 @@ public class SteamJetParticleData implements ParticleOptions, ICustomParticleDat
|
|||
.forGetter(p -> p.speed))
|
||||
.apply(i, SteamJetParticleData::new));
|
||||
|
||||
public static final StreamCodec<ByteBuf, SteamJetParticleData> STREAM_CODEC = StreamCodec.composite(
|
||||
ByteBufCodecs.FLOAT,
|
||||
p -> p.speed,
|
||||
SteamJetParticleData::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, SteamJetParticleData> STREAM_CODEC = ByteBufCodecs.FLOAT.map(
|
||||
SteamJetParticleData::new, p -> p.speed);
|
||||
|
||||
float speed;
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ import com.simibubi.create.content.logistics.item.filter.attribute.attributes.In
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.attributes.ItemNameAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.attributes.ShulkerFillLevelAttribute;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
|
@ -28,6 +30,7 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.minecraft.world.item.crafting.Recipe;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.item.crafting.SingleRecipeInput;
|
||||
import net.minecraft.world.item.enchantment.Enchantment;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.ComposterBlock;
|
||||
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
|
||||
|
@ -83,13 +86,13 @@ public class AllItemAttributeTypes {
|
|||
.isPresent();
|
||||
}
|
||||
|
||||
// TODO - Move away from stream()
|
||||
private static boolean maxEnchanted(ItemStack s) {
|
||||
return s.getTagEnchantments()
|
||||
.entrySet()
|
||||
.stream()
|
||||
.anyMatch(e -> e.getKey().value()
|
||||
.getMaxLevel() <= e.getIntValue());
|
||||
for (Object2IntMap.Entry<Holder<Enchantment>> entry : s.getTagEnchantments().entrySet()) {
|
||||
if (entry.getKey().value().getMaxLevel() <= entry.getIntValue())
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static ItemAttributeType singleton(String id, Predicate<ItemStack> predicate) {
|
||||
|
|
|
@ -8,12 +8,16 @@ import org.jetbrains.annotations.Nullable;
|
|||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.simibubi.create.AllRegistries;
|
||||
import com.simibubi.create.AllRegistries.Keys;
|
||||
import com.simibubi.create.foundation.utility.CreateLang;
|
||||
|
||||
import net.createmod.catnip.codecs.CatnipCodecUtils;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
|
@ -22,6 +26,7 @@ import net.neoforged.api.distmarker.OnlyIn;
|
|||
|
||||
public interface ItemAttribute {
|
||||
Codec<ItemAttribute> CODEC = AllRegistries.ITEM_ATTRIBUTE_TYPES.byNameCodec().dispatch(ItemAttribute::getType, ItemAttributeType::codec);
|
||||
StreamCodec<RegistryFriendlyByteBuf, ItemAttribute> STREAM_CODEC = ByteBufCodecs.registry(Keys.ITEM_ATTRIBUTE_TYPES).dispatch(ItemAttribute::getType, ItemAttributeType::streamCodec);
|
||||
|
||||
static CompoundTag saveStatic(ItemAttribute attribute, HolderLookup.Provider registries) {
|
||||
CompoundTag nbt = new CompoundTag();
|
||||
|
@ -59,9 +64,15 @@ public interface ItemAttribute {
|
|||
}
|
||||
|
||||
record ItemAttributeEntry(ItemAttribute attribute, boolean inverted) {
|
||||
public static final Codec<ItemAttribute.ItemAttributeEntry> CODEC = RecordCodecBuilder.create(i -> i.group(
|
||||
ItemAttribute.CODEC.fieldOf("attribute").forGetter(ItemAttribute.ItemAttributeEntry::attribute),
|
||||
Codec.BOOL.fieldOf("inverted").forGetter(ItemAttribute.ItemAttributeEntry::inverted)
|
||||
).apply(i, ItemAttribute.ItemAttributeEntry::new));
|
||||
public static final Codec<ItemAttributeEntry> CODEC = RecordCodecBuilder.create(i -> i.group(
|
||||
ItemAttribute.CODEC.fieldOf("attribute").forGetter(ItemAttributeEntry::attribute),
|
||||
Codec.BOOL.fieldOf("inverted").forGetter(ItemAttributeEntry::inverted)
|
||||
).apply(i, ItemAttributeEntry::new));
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, ItemAttributeEntry> STREAM_CODEC = StreamCodec.composite(
|
||||
ItemAttribute.STREAM_CODEC, ItemAttributeEntry::attribute,
|
||||
ByteBufCodecs.BOOL, ItemAttributeEntry::inverted,
|
||||
ItemAttributeEntry::new
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,11 @@ package com.simibubi.create.content.logistics.item.filter.attribute;
|
|||
import java.util.List;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
|
@ -14,4 +17,6 @@ public interface ItemAttributeType {
|
|||
List<ItemAttribute> getAllAttributes(ItemStack stack, Level level);
|
||||
|
||||
MapCodec<? extends ItemAttribute> codec();
|
||||
|
||||
StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec();
|
||||
}
|
||||
|
|
|
@ -13,8 +13,13 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
import net.neoforged.fml.ModContainer;
|
||||
import net.neoforged.fml.ModList;
|
||||
import net.neoforged.neoforgespi.language.IModInfo;
|
||||
|
@ -24,6 +29,9 @@ public record AddedByAttribute(String modId) implements ItemAttribute {
|
|||
.xmap(AddedByAttribute::new, AddedByAttribute::modId)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, AddedByAttribute> STREAM_CODEC = ByteBufCodecs.STRING_UTF8
|
||||
.map(AddedByAttribute::new, AddedByAttribute::modId);
|
||||
|
||||
@Override
|
||||
public boolean appliesTo(ItemStack stack, Level world) {
|
||||
return modId.equals(stack.getItem()
|
||||
|
@ -67,5 +75,10 @@ public record AddedByAttribute(String modId) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,11 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
|
@ -20,6 +24,9 @@ public record BookAuthorAttribute(String author) implements ItemAttribute {
|
|||
.xmap(BookAuthorAttribute::new, BookAuthorAttribute::author)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, BookAuthorAttribute> STREAM_CODEC = ByteBufCodecs.STRING_UTF8
|
||||
.map(BookAuthorAttribute::new, BookAuthorAttribute::author);
|
||||
|
||||
private static String extractAuthor(ItemStack stack) {
|
||||
if (stack.has(DataComponents.WRITTEN_BOOK_CONTENT)) {
|
||||
return stack.get(DataComponents.WRITTEN_BOOK_CONTENT).author();
|
||||
|
@ -70,5 +77,10 @@ public record BookAuthorAttribute(String author) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,13 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.util.ExtraCodecs;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.WrittenBookItem;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
public record BookCopyAttribute(int generation) implements ItemAttribute {
|
||||
|
@ -21,6 +24,9 @@ public record BookCopyAttribute(int generation) implements ItemAttribute {
|
|||
.xmap(BookCopyAttribute::new, BookCopyAttribute::generation)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, BookCopyAttribute> STREAM_CODEC = ByteBufCodecs.INT
|
||||
.map(BookCopyAttribute::new, BookCopyAttribute::generation);
|
||||
|
||||
private static int extractGeneration(ItemStack stack) {
|
||||
if (stack.has(DataComponents.WRITTEN_BOOK_CONTENT)) {
|
||||
return stack.get(DataComponents.WRITTEN_BOOK_CONTENT).generation();
|
||||
|
@ -71,5 +77,10 @@ public record BookCopyAttribute(int generation) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,9 +15,12 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.createmod.catnip.registry.RegisteredObjectsHelper;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.DyeColor;
|
||||
import net.minecraft.world.item.FireworkRocketItem;
|
||||
import net.minecraft.world.item.FireworkStarItem;
|
||||
|
@ -30,6 +33,9 @@ public record ColorAttribute(DyeColor color) implements ItemAttribute {
|
|||
.xmap(ColorAttribute::new, ColorAttribute::color)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, ColorAttribute> STREAM_CODEC = DyeColor.STREAM_CODEC
|
||||
.map(ColorAttribute::new, ColorAttribute::color);
|
||||
|
||||
private static Collection<DyeColor> findMatchingDyeColors(ItemStack stack) {
|
||||
DyeColor color = DyeColor.getColor(stack);
|
||||
if (color != null)
|
||||
|
@ -98,5 +104,10 @@ public record ColorAttribute(DyeColor color) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.enchantment.Enchantment;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
|
@ -23,6 +25,9 @@ public record EnchantAttribute(@Nullable Holder<Enchantment> enchantment) implem
|
|||
.xmap(EnchantAttribute::new, EnchantAttribute::enchantment)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, EnchantAttribute> STREAM_CODEC = Enchantment.STREAM_CODEC
|
||||
.map(EnchantAttribute::new, EnchantAttribute::enchantment);
|
||||
|
||||
@Override
|
||||
public boolean appliesTo(ItemStack itemStack, Level level) {
|
||||
return EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet().contains(enchantment);
|
||||
|
@ -67,5 +72,10 @@ public record EnchantAttribute(@Nullable Holder<Enchantment> enchantment) implem
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,10 +12,15 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecs;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
|
||||
import net.neoforged.neoforge.capabilities.Capabilities;
|
||||
import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem;
|
||||
|
||||
|
@ -24,6 +29,9 @@ public record FluidContentsAttribute(@Nullable Fluid fluid) implements ItemAttri
|
|||
.xmap(FluidContentsAttribute::new, FluidContentsAttribute::fluid)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, FluidContentsAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(CatnipStreamCodecs.FLUID)
|
||||
.map(FluidContentsAttribute::new, FluidContentsAttribute::fluid);
|
||||
|
||||
private static List<Fluid> extractFluids(ItemStack stack) {
|
||||
List<Fluid> fluids = new ArrayList<>();
|
||||
|
||||
|
@ -82,5 +90,10 @@ public record FluidContentsAttribute(@Nullable Fluid fluid) implements ItemAttri
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
|||
import java.util.Objects;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import com.simibubi.create.Create;
|
||||
|
@ -12,7 +13,12 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.CreativeModeTabs;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -23,9 +29,13 @@ public class InItemGroupAttribute implements ItemAttribute {
|
|||
.xmap(InItemGroupAttribute::new, i -> i.group)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ByteBufCodecs.registry(Registries.CREATIVE_MODE_TAB))
|
||||
.map(InItemGroupAttribute::new, i -> i.group);
|
||||
|
||||
@Nullable
|
||||
private CreativeModeTab group;
|
||||
|
||||
public InItemGroupAttribute(CreativeModeTab group) {
|
||||
public InItemGroupAttribute(@Nullable CreativeModeTab group) {
|
||||
this.group = group;
|
||||
}
|
||||
|
||||
|
@ -109,5 +119,10 @@ public class InItemGroupAttribute implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,9 +3,6 @@ package com.simibubi.create.content.logistics.item.filter.attribute.attributes;
|
|||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.createmod.catnip.nbt.NBTHelper;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import com.mojang.serialization.MapCodec;
|
||||
|
@ -13,7 +10,11 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.tags.ItemTags;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
|
@ -25,6 +26,9 @@ public record InTagAttribute(TagKey<Item> tag) implements ItemAttribute {
|
|||
.xmap(InTagAttribute::new, InTagAttribute::tag)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, InTagAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.tagKey(Registries.ITEM)
|
||||
.map(InTagAttribute::new, InTagAttribute::tag);
|
||||
|
||||
@Override
|
||||
public boolean appliesTo(ItemStack stack, Level level) {
|
||||
return stack.is(tag);
|
||||
|
@ -62,5 +66,10 @@ public record InTagAttribute(TagKey<Item> tag) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,9 +12,13 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttrib
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
|
||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
||||
|
@ -23,6 +27,9 @@ public record ItemNameAttribute(String itemName) implements ItemAttribute {
|
|||
.xmap(ItemNameAttribute::new, ItemNameAttribute::itemName)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, ItemNameAttribute> STREAM_CODEC = ByteBufCodecs.STRING_UTF8
|
||||
.map(ItemNameAttribute::new, ItemNameAttribute::itemName);
|
||||
|
||||
private static String extractCustomName(ItemStack stack) {
|
||||
if (stack.has(DataComponents.CUSTOM_NAME)) {
|
||||
try {
|
||||
|
@ -78,5 +85,10 @@ public record ItemNameAttribute(String itemName) implements ItemAttribute {
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,9 +15,13 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute
|
|||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||
import com.simibubi.create.foundation.utility.CreateLang;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.createmod.catnip.lang.Lang;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.core.component.DataComponents;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.component.ItemContainerContents;
|
||||
|
@ -30,6 +34,9 @@ public record ShulkerFillLevelAttribute(ShulkerLevels levels) implements ItemAtt
|
|||
.xmap(ShulkerFillLevelAttribute::new, ShulkerFillLevelAttribute::levels)
|
||||
.fieldOf("value");
|
||||
|
||||
public static final StreamCodec<ByteBuf, ShulkerFillLevelAttribute> STREAM_CODEC = ShulkerLevels.STREAM_CODEC
|
||||
.map(ShulkerFillLevelAttribute::new, ShulkerFillLevelAttribute::levels);
|
||||
|
||||
@Override
|
||||
public boolean appliesTo(ItemStack stack, Level level) {
|
||||
return levels != null && levels.canApply(stack);
|
||||
|
@ -59,6 +66,7 @@ public record ShulkerFillLevelAttribute(ShulkerLevels levels) implements ItemAtt
|
|||
FULL("full", amount -> amount == Integer.MAX_VALUE);
|
||||
|
||||
public static final Codec<ShulkerLevels> CODEC = StringRepresentable.fromValues(ShulkerLevels::values);
|
||||
public static final StreamCodec<ByteBuf, ShulkerLevels> STREAM_CODEC = CatnipStreamCodecBuilders.ofEnum(ShulkerLevels.class);
|
||||
|
||||
private final Predicate<Integer> requiredSize;
|
||||
private final String key;
|
||||
|
@ -127,5 +135,10 @@ public record ShulkerFillLevelAttribute(ShulkerLevels levels) implements ItemAtt
|
|||
public MapCodec<? extends ItemAttribute> codec() {
|
||||
return CODEC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StreamCodec<? super RegistryFriendlyByteBuf, ? extends ItemAttribute> streamCodec() {
|
||||
return STREAM_CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,10 +52,8 @@ public record PackagePortPlacementPacket(PackagePortTarget target, BlockPos pos)
|
|||
}
|
||||
|
||||
public record ClientBoundRequest(BlockPos pos) implements ClientboundPacketPayload {
|
||||
public static final StreamCodec<ByteBuf, ClientBoundRequest> STREAM_CODEC = StreamCodec.composite(
|
||||
BlockPos.STREAM_CODEC, ClientBoundRequest::pos,
|
||||
ClientBoundRequest::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, ClientBoundRequest> STREAM_CODEC = BlockPos.STREAM_CODEC
|
||||
.map(ClientBoundRequest::new, ClientBoundRequest::pos);
|
||||
|
||||
@Override
|
||||
public PacketTypeProvider getTypeProvider() {
|
||||
|
|
|
@ -5,26 +5,23 @@ import java.util.Optional;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllRegistries;
|
||||
|
||||
import com.simibubi.create.AllRegistries.Keys;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
import com.simibubi.create.AllBlockEntityTypes;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRegistries;
|
||||
import com.simibubi.create.AllRegistries.Keys;
|
||||
import com.simibubi.create.content.kinetics.chainConveyor.ChainConveyorBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.chainConveyor.ChainConveyorBlockEntity.ConnectedPort;
|
||||
import com.simibubi.create.content.kinetics.chainConveyor.ChainConveyorBlockEntity.ConnectionStats;
|
||||
import com.simibubi.create.content.kinetics.chainConveyor.ChainConveyorPackage;
|
||||
import com.simibubi.create.content.trains.station.StationBlockEntity;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -210,10 +207,8 @@ public abstract class PackagePortTarget {
|
|||
BlockPos.CODEC.fieldOf("relative_pos").forGetter(i -> i.relativePos)
|
||||
).apply(instance, TrainStationFrogportTarget::new));
|
||||
|
||||
public static final StreamCodec<ByteBuf, TrainStationFrogportTarget> STREAM_CODEC = StreamCodec.composite(
|
||||
BlockPos.STREAM_CODEC, i -> i.relativePos,
|
||||
TrainStationFrogportTarget::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, TrainStationFrogportTarget> STREAM_CODEC = BlockPos.STREAM_CODEC
|
||||
.map(TrainStationFrogportTarget::new, i -> i.relativePos);
|
||||
|
||||
public TrainStationFrogportTarget(BlockPos relativePos) {
|
||||
super(relativePos);
|
||||
|
|
|
@ -18,10 +18,8 @@ import net.neoforged.api.distmarker.Dist;
|
|||
import net.neoforged.api.distmarker.OnlyIn;
|
||||
|
||||
public record WiFiEffectPacket(BlockPos pos) implements ClientboundPacketPayload {
|
||||
public static final StreamCodec<ByteBuf, WiFiEffectPacket> STREAM_CODEC = StreamCodec.composite(
|
||||
BlockPos.STREAM_CODEC, WiFiEffectPacket::pos,
|
||||
WiFiEffectPacket::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, WiFiEffectPacket> STREAM_CODEC = BlockPos.STREAM_CODEC
|
||||
.map(WiFiEffectPacket::new, WiFiEffectPacket::pos);
|
||||
|
||||
@Override
|
||||
public PacketTypeProvider getTypeProvider() {
|
||||
|
|
|
@ -9,10 +9,8 @@ import net.minecraft.network.codec.StreamCodec;
|
|||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
public class LogisticalStockRequestPacket extends BlockEntityConfigurationPacket<StockCheckingBlockEntity> {
|
||||
public static final StreamCodec<ByteBuf, LogisticalStockRequestPacket> STREAM_CODEC = StreamCodec.composite(
|
||||
BlockPos.STREAM_CODEC, packet -> packet.pos,
|
||||
LogisticalStockRequestPacket::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, LogisticalStockRequestPacket> STREAM_CODEC = BlockPos.STREAM_CODEC
|
||||
.map(LogisticalStockRequestPacket::new, packet -> packet.pos);
|
||||
|
||||
public LogisticalStockRequestPacket(BlockPos pos) {
|
||||
super(pos);
|
||||
|
|
|
@ -16,10 +16,8 @@ public record PackageOrder(List<BigItemStack> stacks) {
|
|||
Codec.list(BigItemStack.CODEC).fieldOf("entries").forGetter(PackageOrder::stacks)
|
||||
).apply(instance, PackageOrder::new));
|
||||
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, PackageOrder> STREAM_CODEC = StreamCodec.composite(
|
||||
CatnipStreamCodecBuilders.list(BigItemStack.STREAM_CODEC), PackageOrder::stacks,
|
||||
PackageOrder::new
|
||||
);
|
||||
public static final StreamCodec<RegistryFriendlyByteBuf, PackageOrder> STREAM_CODEC = CatnipStreamCodecBuilders.list(BigItemStack.STREAM_CODEC)
|
||||
.map(PackageOrder::new, PackageOrder::stacks);
|
||||
|
||||
public static PackageOrder empty() {
|
||||
return new PackageOrder(Collections.emptyList());
|
||||
|
|
|
@ -3,10 +3,9 @@ package com.simibubi.create.content.trains.graph;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.createmod.catnip.nbt.NBTHelper;
|
||||
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||
import net.createmod.catnip.nbt.NBTHelper;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
|
@ -17,10 +16,8 @@ import net.minecraft.resources.ResourceLocation;
|
|||
import net.minecraft.world.level.Level;
|
||||
|
||||
public class DimensionPalette {
|
||||
public static final StreamCodec<ByteBuf, DimensionPalette> STREAM_CODEC = StreamCodec.composite(
|
||||
CatnipStreamCodecBuilders.list(ResourceKey.streamCodec(Registries.DIMENSION)), packet -> packet.gatheredDims,
|
||||
DimensionPalette::new
|
||||
);
|
||||
public static final StreamCodec<ByteBuf, DimensionPalette> STREAM_CODEC = CatnipStreamCodecBuilders.list(ResourceKey.streamCodec(Registries.DIMENSION))
|
||||
.map(DimensionPalette::new, i -> i.gatheredDims);
|
||||
|
||||
private final List<ResourceKey<Level>> gatheredDims;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue