mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-03 22:34:42 +01:00
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:
parent
8e002e49fa
commit
427105d4fc
3 changed files with 22 additions and 25 deletions
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Reference in a new issue