The bugs escaped the box

- Fix item group attribute crashing
- Fix mixin conflict with imm portals
- Fix processing output not supporting components
- Run datagen
This commit is contained in:
IThundxr 2025-03-01 09:00:10 -05:00
parent 8e002e49fa
commit 427105d4fc
Failed to generate hash of commit
3 changed files with 22 additions and 25 deletions

View file

@ -13,12 +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 io.netty.buffer.ByteBuf;
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.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.ItemStack;
@ -29,8 +29,9 @@ 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);
public static final StreamCodec<ByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ResourceLocation.STREAM_CODEC)
.map(i -> new InItemGroupAttribute(BuiltInRegistries.CREATIVE_MODE_TAB.get(i)),
i -> i.group == null ? null : BuiltInRegistries.CREATIVE_MODE_TAB.getKey(i.group));
@Nullable
private CreativeModeTab group;

View file

@ -78,23 +78,23 @@ public class ProcessingOutput {
}
private static final Codec<Pair<ResourceLocation, Integer>> COMPAT_CODEC = ResourceLocation.CODEC.comapFlatMap(
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
Pair::getFirst
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
Pair::getFirst
);
private static final Codec<Either<ItemStack, Pair<ResourceLocation, Integer>>> ITEM_CODEC = Codec.either(
ItemStack.ITEM_NON_AIR_CODEC.xmap(ItemStack::new, ItemStack::getItemHolder),
COMPAT_CODEC
ItemStack.SINGLE_ITEM_CODEC,
COMPAT_CODEC
);
public static final Codec<ProcessingOutput> CODEC = RecordCodecBuilder.create(i -> i.group(
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
if (s.compatDatagenOutput != null)
return s.compatDatagenOutput.getSecond();
return s.getStack().getCount();
}),
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
if (s.compatDatagenOutput != null)
return s.compatDatagenOutput.getSecond();
return s.getStack().getCount();
}),
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
).apply(i, ProcessingOutput::fromCodec));
public void write(RegistryFriendlyByteBuf buf) {

View file

@ -1,25 +1,21 @@
package com.simibubi.create.foundation.mixin;
import com.llamalad7.mixinextras.sugar.Local;
import com.simibubi.create.content.equipment.armor.CardboardArmorHandler;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.Pose;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
import com.simibubi.create.content.equipment.armor.CardboardArmorHandler;
import com.simibubi.create.infrastructure.config.AllConfigs;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.Pose;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
@Mixin(Player.class)
@Mixin(value = Player.class, priority = 1500)
public abstract class PlayerMixin extends LivingEntity {
protected PlayerMixin(EntityType<? extends LivingEntity> entityType, Level level) {
super(entityType, level);
@ -27,7 +23,7 @@ public abstract class PlayerMixin extends LivingEntity {
@ModifyExpressionValue(method = "canPlayerFitWithinBlocksAndEntitiesWhen", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;noCollision(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/AABB;)Z"))
public boolean create$playerHidingAsBoxIsCrouchingNotSwimming(boolean original, @Local(argsOnly = true) Pose pose) {
return original || (pose == Pose.CROUCHING && CardboardArmorHandler.testForStealth((Entity) (Object) this));
return original || (pose == Pose.CROUCHING && CardboardArmorHandler.testForStealth(this));
}
@ModifyExpressionValue(