mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +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.ItemAttribute;
|
||||||
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders;
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
import net.minecraft.core.registries.Registries;
|
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
import net.minecraft.network.codec.StreamCodec;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
import net.minecraft.world.item.CreativeModeTabs;
|
import net.minecraft.world.item.CreativeModeTabs;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -29,8 +29,9 @@ public class InItemGroupAttribute implements ItemAttribute {
|
||||||
.xmap(InItemGroupAttribute::new, i -> i.group)
|
.xmap(InItemGroupAttribute::new, i -> i.group)
|
||||||
.fieldOf("value");
|
.fieldOf("value");
|
||||||
|
|
||||||
public static final StreamCodec<RegistryFriendlyByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ByteBufCodecs.registry(Registries.CREATIVE_MODE_TAB))
|
public static final StreamCodec<ByteBuf, InItemGroupAttribute> STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ResourceLocation.STREAM_CODEC)
|
||||||
.map(InItemGroupAttribute::new, i -> i.group);
|
.map(i -> new InItemGroupAttribute(BuiltInRegistries.CREATIVE_MODE_TAB.get(i)),
|
||||||
|
i -> i.group == null ? null : BuiltInRegistries.CREATIVE_MODE_TAB.getKey(i.group));
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private CreativeModeTab group;
|
private CreativeModeTab group;
|
||||||
|
|
|
@ -78,23 +78,23 @@ public class ProcessingOutput {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final Codec<Pair<ResourceLocation, Integer>> COMPAT_CODEC = ResourceLocation.CODEC.comapFlatMap(
|
private static final Codec<Pair<ResourceLocation, Integer>> COMPAT_CODEC = ResourceLocation.CODEC.comapFlatMap(
|
||||||
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
|
loc -> DataResult.error(() -> "Compat cannot be deserialized"),
|
||||||
Pair::getFirst
|
Pair::getFirst
|
||||||
);
|
);
|
||||||
|
|
||||||
private static final Codec<Either<ItemStack, Pair<ResourceLocation, Integer>>> ITEM_CODEC = Codec.either(
|
private static final Codec<Either<ItemStack, Pair<ResourceLocation, Integer>>> ITEM_CODEC = Codec.either(
|
||||||
ItemStack.ITEM_NON_AIR_CODEC.xmap(ItemStack::new, ItemStack::getItemHolder),
|
ItemStack.SINGLE_ITEM_CODEC,
|
||||||
COMPAT_CODEC
|
COMPAT_CODEC
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final Codec<ProcessingOutput> CODEC = RecordCodecBuilder.create(i -> i.group(
|
public static final Codec<ProcessingOutput> CODEC = RecordCodecBuilder.create(i -> i.group(
|
||||||
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
|
ITEM_CODEC.fieldOf("item").forGetter(ProcessingOutput::getCodecStack),
|
||||||
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
|
Codec.INT.optionalFieldOf("count", 1).forGetter(s -> {
|
||||||
if (s.compatDatagenOutput != null)
|
if (s.compatDatagenOutput != null)
|
||||||
return s.compatDatagenOutput.getSecond();
|
return s.compatDatagenOutput.getSecond();
|
||||||
return s.getStack().getCount();
|
return s.getStack().getCount();
|
||||||
}),
|
}),
|
||||||
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
|
Codec.FLOAT.optionalFieldOf("chance", 1F).forGetter(s -> s.chance)
|
||||||
).apply(i, ProcessingOutput::fromCodec));
|
).apply(i, ProcessingOutput::fromCodec));
|
||||||
|
|
||||||
public void write(RegistryFriendlyByteBuf buf) {
|
public void write(RegistryFriendlyByteBuf buf) {
|
||||||
|
|
|
@ -1,25 +1,21 @@
|
||||||
package com.simibubi.create.foundation.mixin;
|
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.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
import com.simibubi.create.content.contraptions.AbstractContraptionEntity;
|
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.EntityType;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.Pose;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
@Mixin(Player.class)
|
@Mixin(value = Player.class, priority = 1500)
|
||||||
public abstract class PlayerMixin extends LivingEntity {
|
public abstract class PlayerMixin extends LivingEntity {
|
||||||
protected PlayerMixin(EntityType<? extends LivingEntity> entityType, Level level) {
|
protected PlayerMixin(EntityType<? extends LivingEntity> entityType, Level level) {
|
||||||
super(entityType, 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"))
|
@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) {
|
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(
|
@ModifyExpressionValue(
|
||||||
|
|
Loading…
Add table
Reference in a new issue