Skip to content

Commit 427105d

Browse files
committed
The bugs escaped the box
- Fix item group attribute crashing - Fix mixin conflict with imm portals - Fix processing output not supporting components - Run datagen
1 parent 8e002e4 commit 427105d

File tree

3 files changed

+22
-25
lines changed

3 files changed

+22
-25
lines changed

src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InItemGroupAttribute.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute;
1414
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
1515

16+
import io.netty.buffer.ByteBuf;
1617
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
1718
import net.minecraft.core.registries.BuiltInRegistries;
18-
import net.minecraft.core.registries.Registries;
1919
import net.minecraft.network.RegistryFriendlyByteBuf;
20-
import net.minecraft.network.codec.ByteBufCodecs;
2120
import net.minecraft.network.codec.StreamCodec;
21+
import net.minecraft.resources.ResourceLocation;
2222
import net.minecraft.world.item.CreativeModeTab;
2323
import net.minecraft.world.item.CreativeModeTabs;
2424
import net.minecraft.world.item.ItemStack;
@@ -29,8 +29,9 @@ public class InItemGroupAttribute implements ItemAttribute {
2929
.xmap(InItemGroupAttribute::new, i -> i.group)
3030
.fieldOf("value");
3131

32-
public static final StreamCodec<RegistryFriendlyByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ByteBufCodecs.registry(Registries.CREATIVE_MODE_TAB))
33-
.map(InItemGroupAttribute::new, i -> i.group);
32+
public static final StreamCodec<ByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ResourceLocation.STREAM_CODEC)
33+
.map(i -> new InItemGroupAttribute(BuiltInRegistries.CREATIVE_MODE_TAB.get(i)),
34+
i -> i.group == null ? null : BuiltInRegistries.CREATIVE_MODE_TAB.getKey(i.group));
3435

3536
@Nullable
3637
private CreativeModeTab group;

src/main/java/com/simibubi/create/content/processing/recipe/ProcessingOutput.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,23 @@ public ItemStack rollOutput() {
7878
}
7979

8080
private static final Codec<Pair<ResourceLocation, Integer>> COMPAT_CODEC = ResourceLocation.CODEC.comapFlatMap(
81-
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
82-
Pair::getFirst
81+
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
82+
Pair::getFirst
8383
);
8484

8585
private static final Codec<Either<ItemStack, Pair<ResourceLocation, Integer>>> ITEM_CODEC = Codec.either(
86-
ItemStack.ITEM_NON_AIR_CODEC.xmap(ItemStack::new, ItemStack::getItemHolder),
87-
COMPAT_CODEC
86+
ItemStack.SINGLE_ITEM_CODEC,
87+
COMPAT_CODEC
8888
);
8989

9090
public static final Codec<ProcessingOutput> CODEC = RecordCodecBuilder.create(i -> i.group(
91-
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
92-
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
93-
if (s.compatDatagenOutput != null)
94-
return s.compatDatagenOutput.getSecond();
95-
return s.getStack().getCount();
96-
}),
97-
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
91+
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
92+
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
93+
if (s.compatDatagenOutput != null)
94+
return s.compatDatagenOutput.getSecond();
95+
return s.getStack().getCount();
96+
}),
97+
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
9898
).apply(i, ProcessingOutput::fromCodec));
9999

100100
public void write(RegistryFriendlyByteBuf buf) {

src/main/java/com/simibubi/create/foundation/mixin/PlayerMixin.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
11
package com.simibubi.create.foundation.mixin;
22

3-
import com.llamalad7.mixinextras.sugar.Local;
4-
import com.simibubi.create.content.equipment.armor.CardboardArmorHandler;
5-
6-
import com.simibubi.create.infrastructure.config.AllConfigs;
7-
8-
import net.minecraft.world.entity.Entity;
9-
import net.minecraft.world.entity.Pose;
10-
113
import org.spongepowered.asm.mixin.Mixin;
124
import org.spongepowered.asm.mixin.injection.At;
135

146
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
7+
import com.llamalad7.mixinextras.sugar.Local;
158
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
9+
import com.simibubi.create.content.equipment.armor.CardboardArmorHandler;
10+
import com.simibubi.create.infrastructure.config.AllConfigs;
1611

1712
import net.minecraft.world.entity.EntityType;
1813
import net.minecraft.world.entity.LivingEntity;
14+
import net.minecraft.world.entity.Pose;
1915
import net.minecraft.world.entity.player.Player;
2016
import net.minecraft.world.level.Level;
2117

22-
@Mixin(Player.class)
18+
@Mixin(value = Player.class, priority = 1500)
2319
public abstract class PlayerMixin extends LivingEntity {
2420
protected PlayerMixin(EntityType<? extends LivingEntity> entityType, Level level) {
2521
super(entityType, level);
2622
}
2723

2824
@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"))
2925
public boolean create$playerHidingAsBoxIsCrouchingNotSwimming(boolean original, @Local(argsOnly = true) Pose pose) {
30-
return original || (pose == Pose.CROUCHING && CardboardArmorHandler.testForStealth((Entity) (Object) this));
26+
return original || (pose == Pose.CROUCHING && CardboardArmorHandler.testForStealth(this));
3127
}
3228

3329
@ModifyExpressionValue(

0 commit comments

Comments
 (0)