diff --git a/gradle.properties b/gradle.properties index f992240..e7f48c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ parchment_version = 2024.11.17 mod_id=mechanical_lemon_lib mod_name=MechanicalLemonLib mod_license=LGPL3 -mod_version=0.1.49 +mod_version=0.1.56 mod_group_id=com.oierbravo mod_author=oierbravo mod_description=Mod Utility Library diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipe.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipe.java index 24a30da..7c98914 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipe.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipe.java @@ -21,7 +21,7 @@ public abstract class BaseRecipe conditions; - abstract public List getEnabledRequirements(); + //abstract public List getEnabledRequirements(); public BaseRecipe(P params){ this.id = params.id; diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipeBuilder.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipeBuilder.java index 16fe0e5..b42e3a4 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipeBuilder.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/BaseRecipeBuilder.java @@ -44,12 +44,12 @@ public abstract class BaseRecipeBuilder, P extends Bas public > BRP withRequirement(IRecipeRequirement requirement){ //public BaseRecipeBuilder withRequirement(IRecipeRequirement requirement){ params.recipeRequirements.add(requirement); - return (BRP) this; + return ((BRP) this); } public > BRP withRequirements(List pRecipeRequirements) { //public BaseRecipeBuilder withRequirements(List pRecipeRequirements) { params.recipeRequirements.addAll(pRecipeRequirements); - return (BRP) this; + return ((BRP) this); } public BaseRecipeBuilder whenModLoaded(String modid) { diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/IRecipeRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/IRecipeRequirement.java index aa38f52..fe5b379 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/IRecipeRequirement.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/IRecipeRequirement.java @@ -28,13 +28,14 @@ public interface IRecipeRequirement { STREAM_CODEC.apply(ByteBufCodecs.list(256)); boolean test(Level pLevel, BlockEntity pBlockEntity); - /*boolean isPresent();*/ + String getIdString(); String toString(); RecipeRequirementType getType(); default Component toTooltipComponent(){ - return LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip", toString()).component(); + //return LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip").newLine().component().append(toString());.component(); + return LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip", toString()).newLine().space().add(Component.literal(toString())).component(); }; default Component toMissingComponent(){ return LibLang.translate("ui.recipe_requirement." + getIdString() + ".missing").component(); diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/RecipeRequirementsUtils.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/RecipeRequirementsUtils.java index 1bffc57..cc90841 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/RecipeRequirementsUtils.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/RecipeRequirementsUtils.java @@ -2,21 +2,29 @@ package com.oierbravo.mechanical_lemon_lib.foundation.recipe; import com.google.gson.JsonObject; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.block.entity.BlockEntity; +import java.awt.*; import java.util.ArrayList; import java.util.List; import java.util.Map; public class RecipeRequirementsUtils { - public static ArrayList> checkRequirements(Map pRecipeRequirements, BlockEntity pBlockEntity){ + /*public static ArrayList> checkRequirements(Map pRecipeRequirements, BlockEntity pBlockEntity){ ArrayList> missingRequirements = new ArrayList<>(); pRecipeRequirements.forEach((recipeRequirementType, recipeRequirement) -> { if(!recipeRequirement.test(pBlockEntity.getLevel(),pBlockEntity)) missingRequirements.add(recipeRequirement.getType()); }); return missingRequirements; + }*/ + + public static
List getRequirementsTooltips(BR recipe){ + if(recipe.getRecipeRequirements().isEmpty()) + return List.of(); + return recipe.getRecipeRequirements().stream().map(IRecipeRequirement::toTooltipComponent).toList(); } } diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java new file mode 100644 index 0000000..f5341e5 --- /dev/null +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java @@ -0,0 +1,74 @@ +package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements; + +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement; +import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType; +import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes; +import net.minecraft.core.Holder; +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.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.entity.BlockEntity; + +import java.util.Optional; + +public record BiomeRequirement(ResourceKey biomeResourceKey) implements IRecipeRequirement { + public static String ID = "biome"; + + public static MapCodec CODEC = RecordCodecBuilder + .mapCodec((builder) + -> builder + .group(ResourceKey.codec(Registries.BIOME).optionalFieldOf("value", null) + .forGetter(BiomeRequirement::biomeResourceKey)).apply(builder,BiomeRequirement::new)); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ResourceKey.streamCodec(Registries.BIOME), BiomeRequirement::biomeResourceKey, + BiomeRequirement::new + ); + + public static BiomeRequirement of(ResourceKey key) { + return new BiomeRequirement( key); + } + + public boolean test(Level pLevel, BlockEntity pBlockEntity) { + if(biomeResourceKey == null) + return true; + Holder blockEntityBiome = pLevel.getBiome(pBlockEntity.getBlockPos()); + + if(pLevel.isClientSide()){ + return false; + } + + Optional> requiredBiomeHolder = pLevel.getServer().registryAccess().registryOrThrow(Registries.BIOME).asLookup().get(biomeResourceKey); + + if(requiredBiomeHolder.isPresent() + && blockEntityBiome.is(requiredBiomeHolder.get().key())) + return true; + + return false; + } + + @Override + public RecipeRequirementType getType() { + return MechanicalLemonRecipeRequirementTypes.BIOME.get(); + } + + @Override + public String getIdString() { + return ID; + } + + @Override + public String toString() { + return biomeResourceKey.location().toString(); + } + +} diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.nu b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.nu deleted file mode 100644 index 458eade..0000000 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.nu +++ /dev/null @@ -1,150 +0,0 @@ -package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements; - -import com.google.gson.JsonObject; -import com.mojang.serialization.JsonOps; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirement; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType; -import net.minecraft.core.Holder; -import net.minecraft.core.registries.Registries; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.entity.BlockEntity; - -import java.util.Optional; - -import static java.lang.constant.ConstantDescs.NULL; - -public class BiomeRequirement extends RecipeRequirement { - public static final RecipeRequirementType TYPE = new BiomeRequirementType(); - - - public static final BiomeRequirement EMPTY = new BiomeRequirement(); - - protected TagKey biomeTagKey; - - protected ResourceKey biomeResourceKey; - - public BiomeRequirement() { - - } - public BiomeRequirement(TagKey tag) { - biomeTagKey = tag; - } - - public BiomeRequirement(ResourceKey key) { - biomeResourceKey = key; - } - - public BiomeRequirement(ResourceKey key, TagKey tag) { - this.biomeResourceKey = key; - this.biomeTagKey = tag; - } - public static BiomeRequirement of(ResourceKey key) { - return new BiomeRequirement(key); - } - public static BiomeRequirement of(TagKey tag) { - return new BiomeRequirement(tag); - } - public static BiomeRequirement of(ResourceKey key, TagKey tag) { - return new BiomeRequirement(key, tag); - } - - public boolean test(Level pLevel, BlockEntity pBlockEntity) { - if(biomeResourceKey == null && biomeTagKey == null) - return true; - Holder blockEntityBiome = pLevel.getBiome(pBlockEntity.getBlockPos()); - - if(pLevel.isClientSide()){ - return false; - } - - Optional> requiredBiomeHolder = pLevel.getServer().registryAccess().registryOrThrow(Registries.BIOME).asLookup().get(biomeResourceKey); - - if(requiredBiomeHolder.isPresent() - && blockEntityBiome.is(requiredBiomeHolder.get().key())) - return true; - - - return pLevel.getServer().registryAccess().registryOrThrow(Registries.BIOME).getTag(biomeTagKey).map(t -> - t.contains(blockEntityBiome) - ).orElse(false); - } - - public boolean isPresent(){ - if(biomeTagKey == null && biomeResourceKey == null) - return false; - return true; - } - - public String toString(){ - if(biomeTagKey == null && biomeResourceKey == null) - return null; - if(biomeResourceKey != null) - return biomeResourceKey.location().toString(); - return biomeTagKey.location().toString(); - } - - - @Override - public RecipeRequirementType getType() { - return TYPE; - } - - private static class BiomeRequirementType extends RecipeRequirementType { - - public BiomeRequirementType() { - super("biome"); - } - - public BiomeRequirementType(String id) { - super(id); - } - - @Override - public BiomeRequirement fromJson(JsonObject pJson) { - if (GsonHelper.isValidNode(pJson, "biome")) { - ResourceKey biomeResourceKey = ResourceKey.codec(Registries.BIOME).parse(JsonOps.INSTANCE, pJson.get("biome")).result().get(); - TagKey biomeTag = TagKey.codec(Registries.BIOME).parse(JsonOps.INSTANCE, pJson.get("biome")).result().get(); - return BiomeRequirement.of(biomeResourceKey,biomeTag); - } - return BiomeRequirement.EMPTY; - } - - @Override - public JsonObject toJson(JsonObject pJson, RecipeRequirement pRecipeRequirement){ - if(!pRecipeRequirement.isPresent()) - return pJson; - pJson.addProperty("biome", pRecipeRequirement.toString()); - return pJson; - } - - - @Override - public BiomeRequirement fromNetwork(FriendlyByteBuf buffer) { - boolean hasRequirement = buffer.readBoolean(); - if(hasRequirement) { - ResourceLocation rl = buffer.readResourceLocation(); - if (NULL.equals(rl)) return BiomeRequirement.EMPTY; - else return BiomeRequirement.of(TagKey.create(Registries.BIOME, rl)); - } - return BiomeRequirement.EMPTY; - } - @Override - public void toNetwork(FriendlyByteBuf buffer, RecipeRequirement pRecipeRequirement) { - if(pRecipeRequirement == null) - pRecipeRequirement = new BiomeRequirement(); - if(pRecipeRequirement instanceof BiomeRequirement){ - buffer.writeBoolean(pRecipeRequirement.isPresent()); - if(pRecipeRequirement.isPresent()) { - TagKey biome = ((BiomeRequirement) pRecipeRequirement).biomeTagKey; - buffer.writeResourceLocation(biome.location()); - } - } - } - } -} diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.old b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.old deleted file mode 100644 index e73db20..0000000 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeRequirement.java.old +++ /dev/null @@ -1,158 +0,0 @@ -package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements; - -import com.google.gson.JsonObject; -import com.mojang.serialization.JsonOps; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirement; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType; -import net.minecraft.client.Minecraft; -import net.minecraft.core.Holder; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.Registries; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.entity.BlockEntity; - -import java.util.Objects; -import java.util.Optional; - -import static java.lang.constant.ConstantDescs.NULL; - -public class BiomeRequirement extends RecipeRequirement { - public static final RecipeRequirementType TYPE = new BiomeRequirementType(); - - - public static final BiomeRequirement EMPTY = new BiomeRequirement(); - - protected TagKey biomeTagKey; - - protected ResourceKey biomeResourceKey; - - public BiomeRequirement() { - - } - public BiomeRequirement(TagKey tag) { - this(null,tag); - } - - public BiomeRequirement(ResourceKey key) { - this(key,null); - } - - public BiomeRequirement(ResourceKey key, TagKey tag) { - this.biomeResourceKey = key; - this.biomeTagKey = tag; - } - public static BiomeRequirement of(ResourceKey key) { - return new BiomeRequirement(key); - } - public static BiomeRequirement of(TagKey tag) { - return new BiomeRequirement(tag); - } - public static BiomeRequirement of(ResourceKey key, TagKey tag) { - return new BiomeRequirement(key, tag); - } - - public boolean test(Level pLevel, BlockEntity pBlockEntity) { - if(biomeResourceKey == null && biomeTagKey == null) - return true; - Holder blockEntityBiome = pLevel.getBiome(pBlockEntity.getBlockPos()); - - /*if(pLevel.isClientSide()){ - return false; - }*/ - RegistryAccess registryAccess; - if(pLevel.isClientSide()) - registryAccess = Objects.requireNonNull(Minecraft.getInstance().getConnection()).registryAccess(); - registryAccess = pLevel.registryAccess(); - - Optional> requiredBiomeHolder = Objects.requireNonNull(registryAccess.registryOrThrow(Registries.BIOME).asLookup().get(biomeResourceKey)); - - if(requiredBiomeHolder.isPresent() - && blockEntityBiome.is(requiredBiomeHolder.get().key())) - return true; - - - return registryAccess.registryOrThrow(Registries.BIOME).getTag(biomeTagKey).map(t -> - t.contains(blockEntityBiome) - ).orElse(false); - } - - - public boolean isPresent(){ - if(biomeTagKey == null && biomeResourceKey == null) - return false; - return true; - } - - public String toString(){ - if(biomeTagKey == null && biomeResourceKey == null) - return null; - if(biomeResourceKey != null) - return biomeResourceKey.location().toString(); - return biomeTagKey.location().toString(); - } - - - @Override - public RecipeRequirementType getType() { - return TYPE; - } - - private static class BiomeRequirementType extends RecipeRequirementType { - - public BiomeRequirementType() { - super("biome"); - } - - public BiomeRequirementType(String id) { - super(id); - } - - @Override - public BiomeRequirement fromJson(JsonObject pJson) { - if (GsonHelper.isValidNode(pJson, "biome")) { - ResourceKey biomeResourceKey = ResourceKey.codec(Registries.BIOME).parse(JsonOps.INSTANCE, pJson.get("biome")).result().get(); - TagKey biomeTag = TagKey.codec(Registries.BIOME).parse(JsonOps.INSTANCE, pJson.get("biome")).result().get(); - return BiomeRequirement.of(biomeResourceKey,biomeTag); - } - return BiomeRequirement.EMPTY; - } - - @Override - public JsonObject toJson(JsonObject pJson, RecipeRequirement pRecipeRequirement){ - if(!pRecipeRequirement.isPresent()) - return pJson; - pJson.addProperty("biome", pRecipeRequirement.toString()); - return pJson; - } - - - @Override - public BiomeRequirement fromNetwork(FriendlyByteBuf buffer) { - boolean hasRequirement = buffer.readBoolean(); - if(hasRequirement) { - ResourceLocation rl = buffer.readResourceLocation(); - if (NULL.equals(rl)) return BiomeRequirement.EMPTY; - else return BiomeRequirement.of(TagKey.create(Registries.BIOME, rl)); - } - return BiomeRequirement.EMPTY; - } - @Override - public void toNetwork(FriendlyByteBuf buffer, RecipeRequirement pRecipeRequirement) { - if(pRecipeRequirement == null) - pRecipeRequirement = new BiomeRequirement(); - if(pRecipeRequirement instanceof BiomeRequirement){ - buffer.writeBoolean(pRecipeRequirement.isPresent()); - if(pRecipeRequirement.isPresent()) { - TagKey biome = ((BiomeRequirement) pRecipeRequirement).biomeTagKey; - buffer.writeResourceLocation(biome.location()); - } - } - } - } -} diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeTagRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeTagRequirement.java new file mode 100644 index 0000000..948d084 --- /dev/null +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/BiomeTagRequirement.java @@ -0,0 +1,82 @@ +package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement; +import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType; +import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes; +import net.minecraft.core.Holder; +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.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BiomeTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.entity.BlockEntity; + +import java.util.Optional; + +public record BiomeTagRequirement(TagKey tag) implements IRecipeRequirement { + public static String ID = "biome_tag"; + + public BiomeTagRequirement(ResourceLocation resourceLocation){ + this(TagKey.create(Registries.BIOME,resourceLocation)); + } + public static MapCodec CODEC = RecordCodecBuilder + .mapCodec((builder) + -> builder + //.group(TagKey.codec(Registries.BIOME).optionalFieldOf("value", null) + .group(ResourceLocation.CODEC.optionalFieldOf("value", null) + .forGetter(BiomeTagRequirement::getResourceLocation)).apply(builder,BiomeTagRequirement::new)); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ResourceLocation.STREAM_CODEC, BiomeTagRequirement::getResourceLocation, + BiomeTagRequirement::new + ); + public ResourceLocation getResourceLocation(){ + return tag.location(); + } + /* public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ResourceKey.streamCodec(Registries.BIOME), BiomeTagRequirement::tag, + BiomeTagRequirement::new + );*/ + + public static BiomeTagRequirement of(TagKey tag) { + return new BiomeTagRequirement(tag); + } + + public boolean test(Level pLevel, BlockEntity pBlockEntity) { + if(tag == null) + return true; + Holder blockEntityBiome = pLevel.getBiome(pBlockEntity.getBlockPos()); + + if(pLevel.isClientSide()){ + return false; + } + + return pLevel.getServer().registryAccess().registryOrThrow(Registries.BIOME).getTag(tag).map(t -> + t.contains(blockEntityBiome) + ).orElse(false); + } + + @Override + public RecipeRequirementType getType() { + return MechanicalLemonRecipeRequirementTypes.BIOME_TAG.get(); + } + + @Override + public String getIdString() { + return ID; + } + + @Override + public String toString() { + return tag.location().toString(); + } + +} diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxSpeedRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxSpeedRequirement.java index 1b5c3cc..c32a571 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxSpeedRequirement.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxSpeedRequirement.java @@ -33,14 +33,9 @@ public record MaxSpeedRequirement(Float speed) implements IRecipeRequirement { return false; } - /* @Override - public boolean isPresent() { - return false; - }*/ - @Override public RecipeRequirementType getType() { - return MechanicalLemonRecipeRequirementTypes.MIN_SPEED.get(); + return MechanicalLemonRecipeRequirementTypes.MAX_SPEED.get(); } @Override diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxYRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxYRequirement.java index e2483d9..ceda72f 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxYRequirement.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MaxYRequirement.java @@ -13,7 +13,7 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -public record MaxYRequirement(Integer maxY) implements IRecipeRequirement{ +public record MaxYRequirement(Integer maxY) implements IRecipeRequirement { public static String ID = "max_y"; public static MapCodec CODEC = RecordCodecBuilder @@ -39,11 +39,6 @@ public record MaxYRequirement(Integer maxY) implements IRecipeRequirement{ return pos.getCenter().y <= maxY; } - /* @Override - public boolean isPresent() { - return false; - }*/ - @Override public RecipeRequirementType getType() { return MechanicalLemonRecipeRequirementTypes.MAX_Y.get(); diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinSpeedRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinSpeedRequirement.java index 6ccbe14..3d17e41 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinSpeedRequirement.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinSpeedRequirement.java @@ -33,11 +33,6 @@ public record MinSpeedRequirement(Float speed) implements IRecipeRequirement { return false; } - /* @Override - public boolean isPresent() { - return false; - }*/ - @Override public RecipeRequirementType getType() { return MechanicalLemonRecipeRequirementTypes.MIN_SPEED.get(); diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinYRequirement.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinYRequirement.java index ba3a3d3..367847f 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinYRequirement.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/foundation/recipe/requirements/MinYRequirement.java @@ -39,11 +39,6 @@ public record MinYRequirement(Integer minY) implements IRecipeRequirement { return pos.getCenter().y >= minY; } - /*@Override - public boolean isPresent() { - return false; - }*/ - @Override public RecipeRequirementType getType() { return MechanicalLemonRecipeRequirementTypes.MIN_Y.get(); diff --git a/src/main/java/com/oierbravo/mechanical_lemon_lib/register/MechanicalLemonRecipeRequirementTypes.java b/src/main/java/com/oierbravo/mechanical_lemon_lib/register/MechanicalLemonRecipeRequirementTypes.java index 454d9ee..e2c79c6 100644 --- a/src/main/java/com/oierbravo/mechanical_lemon_lib/register/MechanicalLemonRecipeRequirementTypes.java +++ b/src/main/java/com/oierbravo/mechanical_lemon_lib/register/MechanicalLemonRecipeRequirementTypes.java @@ -4,10 +4,7 @@ import com.mojang.serialization.MapCodec; import com.oierbravo.mechanical_lemon_lib.MechanicalLemonLib; import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement; import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.MaxSpeedRequirement; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.MaxYRequirement; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.MinYRequirement; -import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.MinSpeedRequirement; +import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.*; import net.minecraft.network.codec.StreamCodec; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredRegister; @@ -31,6 +28,12 @@ public class MechanicalLemonRecipeRequirementTypes { public static final Supplier> MAX_Y = register(MaxYRequirement.ID, MaxYRequirement.CODEC, MaxYRequirement.STREAM_CODEC); + public static final Supplier> BIOME = + register(BiomeRequirement.ID, BiomeRequirement.CODEC, BiomeRequirement.STREAM_CODEC); + + public static final Supplier> BIOME_TAG = + register(BiomeTagRequirement.ID, BiomeTagRequirement.CODEC, BiomeTagRequirement.STREAM_CODEC); + public static void init(IEventBus modEventBus) { RECIPE_REQUIREMENT_TYPES.register(modEventBus); } diff --git a/src/main/resources/assets/mechanical_lemon_lib/lang/en_us.json b/src/main/resources/assets/mechanical_lemon_lib/lang/en_us.json index d8a83c9..ddb1b5c 100644 --- a/src/main/resources/assets/mechanical_lemon_lib/lang/en_us.json +++ b/src/main/resources/assets/mechanical_lemon_lib/lang/en_us.json @@ -1,15 +1,19 @@ { "mechanical_lemon_lib.ui.progress": "Progress: %d%%", "itemGroup.mechanical_lemon_lib": "Mechanicals", + "mechanical_lemon_lib.ui.recipe.requirements.title": "Requirements:", "mechanical_lemon_lib.ui.recipe_requirement.none.tooltip": "No specific requirement", "mechanical_lemon_lib.ui.recipe_requirement.biome.tooltip": "Biome: %s", + "mechanical_lemon_lib.ui.recipe_requirement.biome_tag.tooltip": "Biome: %s", "mechanical_lemon_lib.ui.recipe_requirement.min_y.tooltip": "Min Y: %s", "mechanical_lemon_lib.ui.recipe_requirement.max_y.tooltip": "Max Y: %s", "mechanical_lemon_lib.ui.recipe_requirement.min_speed.tooltip": "Min Speed: %s", + "mechanical_lemon_lib.ui.recipe_requirement.max_speed.tooltip": "Max Speed: %s", "mechanical_lemon_lib.ui.recipe_requirement.biome.missing": "Incorrect biome", - "mechanical_lemon_lib.ui.recipe_requirement.max_y.missing": "Too high", - "mechanical_lemon_lib.ui.recipe_requirement.min_y.missing": "Too low", + "mechanical_lemon_lib.ui.recipe_requirement.max_y.missing": "Y position Too high", + "mechanical_lemon_lib.ui.recipe_requirement.min_y.missing": "Y position Too low", "mechanical_lemon_lib.ui.recipe_requirement.min_speed.missing": "Not enough speed", + "mechanical_lemon_lib.ui.recipe_requirement.max_speed.missing": "Too fast", "mechanical_lemon_lib.ui.recipe_requirement.output.missing": "Output full or incompatible", "mechanical_lemon_lib.ui.recipe_requirement.ingredients.missing": "Missing ingredients" } \ No newline at end of file