Name change
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# Mechanical Lemon Lib
|
# Mechanicals Lib
|
||||||
|
|
||||||
## License
|
## License
|
||||||
- Certain sections of the code are from the Create mod, which is licensed under the MIT license. See Create's license for more information.
|
- Certain sections of the code are from the Create mod, which is licensed under the MIT license. See Create's license for more information.
|
||||||
@@ -11,13 +11,13 @@ parchment_minecraft_version = 1.21.1
|
|||||||
parchment_version = 2024.11.17
|
parchment_version = 2024.11.17
|
||||||
|
|
||||||
# Dependency Versions
|
# Dependency Versions
|
||||||
mod_id=mechanical_lemon_lib
|
mod_id=mechanicals
|
||||||
mod_name=MechanicalLemonLib
|
mod_name=Mechanicals Lib
|
||||||
mod_license=LGPL3
|
mod_license=LGPL3
|
||||||
mod_version=0.1.56
|
mod_version=0.1.0
|
||||||
mod_group_id=com.oierbravo
|
mod_group_id=com.oierbravo
|
||||||
mod_author=oierbravo
|
mod_author=oierbravo
|
||||||
mod_description=Mod Utility Library
|
mod_description=Utility Library for Create Addons.
|
||||||
|
|
||||||
# dependency versions
|
# dependency versions
|
||||||
create_version = 6.0.2-32
|
create_version = 6.0.2-32
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ plugins {
|
|||||||
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
|
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = 'MechanicalLemonLib'
|
rootProject.name = 'Mechanicals'
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib;
|
|
||||||
|
|
||||||
import com.mojang.logging.LogUtils;
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.LemonCreativeModeTabs;
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRegistries;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.neoforged.bus.api.IEventBus;
|
|
||||||
import net.neoforged.fml.ModContainer;
|
|
||||||
import net.neoforged.fml.common.Mod;
|
|
||||||
import net.neoforged.neoforge.registries.*;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
|
|
||||||
@Mod(MechanicalLemonLib.MODID)
|
|
||||||
public class MechanicalLemonLib {
|
|
||||||
|
|
||||||
public static final String MODID = "mechanical_lemon_lib";
|
|
||||||
private static final Logger LOGGER = LogUtils.getLogger();
|
|
||||||
|
|
||||||
public MechanicalLemonLib(IEventBus modEventBus, ModContainer modContainer) {
|
|
||||||
|
|
||||||
LemonCreativeModeTabs.register(modEventBus);
|
|
||||||
|
|
||||||
modEventBus.addListener(this::newRegistries);
|
|
||||||
MechanicalLemonRecipeRequirementTypes.init(modEventBus);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void newRegistries(NewRegistryEvent event) {
|
|
||||||
MechanicalLemonRegistries.register(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ResourceLocation asResource(String path) {
|
|
||||||
return ResourceLocation.fromNamespaceAndPath(MODID, path);
|
|
||||||
}
|
|
||||||
public static Logger getLogger(){
|
|
||||||
return LOGGER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import net.minecraft.advancements.Advancement;
|
|
||||||
import net.minecraft.advancements.AdvancementRequirements;
|
|
||||||
import net.minecraft.advancements.AdvancementRewards;
|
|
||||||
import net.minecraft.advancements.Criterion;
|
|
||||||
import net.minecraft.advancements.critereon.RecipeUnlockedTrigger;
|
|
||||||
import net.minecraft.data.recipes.RecipeBuilder;
|
|
||||||
import net.minecraft.data.recipes.RecipeOutput;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.world.item.Item;
|
|
||||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
|
||||||
import net.neoforged.neoforge.common.conditions.ICondition;
|
|
||||||
import net.neoforged.neoforge.common.conditions.ModLoadedCondition;
|
|
||||||
import net.neoforged.neoforge.common.conditions.NotCondition;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
public abstract class BaseRecipeBuilder<R extends BaseRecipe<?,P>, P extends BaseRecipeParams> {
|
|
||||||
protected final Map<String, Criterion<?>> criteria = new LinkedHashMap<>();
|
|
||||||
|
|
||||||
protected P params;
|
|
||||||
protected ArrayList<IRecipeRequirement> recipeRequirements;
|
|
||||||
protected ArrayList<ICondition> recipeConditions;
|
|
||||||
|
|
||||||
public BaseRecipeBuilder( ResourceLocation id){
|
|
||||||
recipeRequirements = new ArrayList<>();
|
|
||||||
recipeConditions = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract R build();
|
|
||||||
|
|
||||||
public void build(Consumer<RecipeBuilder> consumer) {
|
|
||||||
consumer.accept(new DataGenResult<>(build(), recipeConditions));
|
|
||||||
}
|
|
||||||
|
|
||||||
public <BRP extends BaseRecipeBuilder<?,?>> BRP withRequirement(IRecipeRequirement requirement){
|
|
||||||
//public <BRP extends BaseRecipeSerializer<?,?> BaseRecipeBuilder<R,P> withRequirement(IRecipeRequirement requirement){
|
|
||||||
params.recipeRequirements.add(requirement);
|
|
||||||
return ((BRP) this);
|
|
||||||
}
|
|
||||||
public <BRP extends BaseRecipeBuilder<?,?>> BRP withRequirements(List<IRecipeRequirement> pRecipeRequirements) {
|
|
||||||
//public BaseRecipeBuilder<R,P> withRequirements(List<IRecipeRequirement> pRecipeRequirements) {
|
|
||||||
params.recipeRequirements.addAll(pRecipeRequirements);
|
|
||||||
return ((BRP) this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BaseRecipeBuilder<R,P> whenModLoaded(String modid) {
|
|
||||||
return withCondition(new ModLoadedCondition(modid));
|
|
||||||
}
|
|
||||||
|
|
||||||
public BaseRecipeBuilder<R,P> whenModMissing(String modid) {
|
|
||||||
return withCondition(new NotCondition(new ModLoadedCondition(modid)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public BaseRecipeBuilder<R,P> withCondition(ICondition condition) {
|
|
||||||
recipeConditions.add(condition);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
public void save(RecipeOutput recipeOutput, ResourceLocation resourceLocation) {
|
|
||||||
Advancement.Builder advancement = recipeOutput.advancement()
|
|
||||||
.addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceLocation))
|
|
||||||
.rewards(AdvancementRewards.Builder.recipe(resourceLocation))
|
|
||||||
.requirements(AdvancementRequirements.Strategy.OR);
|
|
||||||
this.criteria.forEach(advancement::addCriterion);
|
|
||||||
|
|
||||||
recipeOutput.accept(resourceLocation, build(), advancement.build(params.id.withPrefix("recipes/")));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void save(RecipeOutput recipeOutput) {
|
|
||||||
save(recipeOutput, params.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class DataGenResult<S extends BaseRecipe<?,?>> implements RecipeBuilder {
|
|
||||||
|
|
||||||
private List<ICondition> recipeConditions;
|
|
||||||
private BaseRecipeSerializer<S,?> serializer;
|
|
||||||
private ResourceLocation id;
|
|
||||||
protected final Map<String, Criterion<?>> criteria = new LinkedHashMap<>();
|
|
||||||
@Nullable
|
|
||||||
protected String group;
|
|
||||||
|
|
||||||
private S recipe;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public DataGenResult(S recipe, List<ICondition> recipeConditions) {
|
|
||||||
this.recipe = recipe;
|
|
||||||
this.recipeConditions = recipeConditions;
|
|
||||||
ResourceLocation typeId = recipe.id;
|
|
||||||
|
|
||||||
if (!(recipe.getSerializer() instanceof BaseRecipeSerializer))
|
|
||||||
throw new IllegalStateException("Cannot datagen Recipe of type: " + typeId);
|
|
||||||
|
|
||||||
this.id = ResourceLocation.fromNamespaceAndPath(recipe.id.getNamespace(),
|
|
||||||
typeId.getPath() + "/" + recipe.id.getPath());
|
|
||||||
this.serializer = (BaseRecipeSerializer<S, ?>) recipe.getSerializer();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RecipeBuilder unlockedBy(String name, Criterion<?> criterion) {
|
|
||||||
this.criteria.put(name, criterion);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RecipeBuilder group(@Nullable String s) {
|
|
||||||
this.group = group;
|
|
||||||
return this; }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item getResult() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void save(RecipeOutput recipeOutput, ResourceLocation resourceLocation) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*@Override
|
|
||||||
public void serializeRecipeData(JsonObject json) {
|
|
||||||
serializer.write(json, recipe);
|
|
||||||
if (recipeConditions.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
JsonArray conds = new JsonArray();
|
|
||||||
recipeConditions.forEach(c -> conds.add(CraftingHelper.serialize(c)));
|
|
||||||
json.add("conditions", conds);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ResourceLocation getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RecipeSerializer<?> getType() {
|
|
||||||
return serializer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JsonObject serializeAdvancement() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ResourceLocation getAdvancementId() {
|
|
||||||
return null;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.mojang.serialization.MapCodec;
|
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public abstract class BaseRecipeSerializer<R extends BaseRecipe<?,?>, B extends BaseRecipeBuilder<R,?>> implements RecipeSerializer<R> {
|
|
||||||
protected final List<String> enabledRecipeRequirements;
|
|
||||||
|
|
||||||
public BaseRecipeSerializer(List<String> pEnabledRecipeRequirements) {
|
|
||||||
this.enabledRecipeRequirements = pEnabledRecipeRequirements;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
|
||||||
|
|
||||||
public interface IBaseRecipeParams {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
|
||||||
|
|
||||||
import net.minecraft.world.level.Level;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
|
||||||
|
|
||||||
public interface IProcessBlockingRequirement {
|
|
||||||
boolean test(Level pLevel, BlockEntity pBlockEntity);
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
|
||||||
|
|
||||||
import net.minecraft.world.level.Level;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public interface IRecipeWithRequirements {
|
|
||||||
|
|
||||||
|
|
||||||
ArrayList<IRecipeRequirement> getRecipeRequirements();
|
|
||||||
//List<String> getEnabledRequirements();
|
|
||||||
|
|
||||||
|
|
||||||
default Optional<IRecipeRequirement> getRequirement(RecipeRequirementType<?> type) {
|
|
||||||
return getRecipeRequirements().stream().filter(iRecipeRequirement -> iRecipeRequirement.getType() == type).findFirst();
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean checkRequirements(Level pLevel, BlockEntity pBlockEntity);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
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<RecipeRequirementType<?>> checkRequirements(Map<String, IRecipeRequirement> pRecipeRequirements, BlockEntity pBlockEntity){
|
|
||||||
ArrayList<RecipeRequirementType<?>> missingRequirements = new ArrayList<>();
|
|
||||||
pRecipeRequirements.forEach((recipeRequirementType, recipeRequirement) -> {
|
|
||||||
if(!recipeRequirement.test(pBlockEntity.getLevel(),pBlockEntity))
|
|
||||||
missingRequirements.add(recipeRequirement.getType());
|
|
||||||
});
|
|
||||||
return missingRequirements;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public static <BR extends IRecipeWithRequirements> List<Component> getRequirementsTooltips(BR recipe){
|
|
||||||
if(recipe.getRecipeRequirements().isEmpty())
|
|
||||||
return List.of();
|
|
||||||
return recipe.getRecipeRequirements().stream().map(IRecipeRequirement::toTooltipComponent).toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.oierbravo.mechanicals;
|
||||||
|
|
||||||
|
import dev.engine_room.flywheel.lib.model.baked.PartialModel;
|
||||||
|
|
||||||
|
public class MechanicalPartials {
|
||||||
|
public static final PartialModel SHAFT_QUARTER = block("shaft_quarter");
|
||||||
|
private static PartialModel block(String path) {
|
||||||
|
return PartialModel.of(Mechanicals.asResource("block/" + path));
|
||||||
|
}
|
||||||
|
public static void init() {
|
||||||
|
// init static fields
|
||||||
|
}
|
||||||
|
}
|
||||||
44
src/main/java/com/oierbravo/mechanicals/Mechanicals.java
Normal file
44
src/main/java/com/oierbravo/mechanicals/Mechanicals.java
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package com.oierbravo.mechanicals;
|
||||||
|
|
||||||
|
import com.mojang.logging.LogUtils;
|
||||||
|
import com.oierbravo.mechanicals.register.MechanicalCreativeModeTabs;
|
||||||
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
|
import com.oierbravo.mechanicals.register.MechanicalRegistries;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.neoforged.bus.api.IEventBus;
|
||||||
|
import net.neoforged.fml.ModContainer;
|
||||||
|
import net.neoforged.fml.common.Mod;
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
|
import net.neoforged.neoforge.registries.*;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
@Mod(Mechanicals.MODID)
|
||||||
|
public class Mechanicals {
|
||||||
|
|
||||||
|
public static final String MODID = "mechanicals";
|
||||||
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
|
||||||
|
public Mechanicals(IEventBus modEventBus, ModContainer modContainer) {
|
||||||
|
|
||||||
|
MechanicalCreativeModeTabs.register(modEventBus);
|
||||||
|
|
||||||
|
modEventBus.addListener(this::newRegistries);
|
||||||
|
MechanicalRecipeRequirementTypes.init(modEventBus);
|
||||||
|
modEventBus.addListener(this::doClientStuff);
|
||||||
|
|
||||||
|
}
|
||||||
|
private void doClientStuff(final FMLClientSetupEvent event) {
|
||||||
|
MechanicalPartials.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void newRegistries(NewRegistryEvent event) {
|
||||||
|
MechanicalRegistries.register(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResourceLocation asResource(String path) {
|
||||||
|
return ResourceLocation.fromNamespaceAndPath(MODID, path);
|
||||||
|
}
|
||||||
|
public static Logger getLogger(){
|
||||||
|
return LOGGER;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.blockEntity.behaviour;
|
package com.oierbravo.mechanicals.foundation.blockEntity.behaviour;
|
||||||
|
|
||||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.blockEntity.behaviour;
|
package com.oierbravo.mechanicals.foundation.blockEntity.behaviour;
|
||||||
|
|
||||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.blockEntity.behaviour;
|
package com.oierbravo.mechanicals.foundation.blockEntity.behaviour;
|
||||||
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeWithRequirements;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeWithRequirements;
|
import com.oierbravo.mechanicals.utility.LibLang;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.utility.LibLang;
|
|
||||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
|
||||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||||
@@ -13,28 +11,21 @@ import net.minecraft.nbt.CompoundTag;
|
|||||||
import net.minecraft.nbt.ListTag;
|
import net.minecraft.nbt.ListTag;
|
||||||
import net.minecraft.nbt.Tag;
|
import net.minecraft.nbt.Tag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.level.Level;
|
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public class RecipeRequirementsBehaviour<R extends IRecipeWithRequirements> extends BlockEntityBehaviour {
|
public class RecipeRequirementsBehaviour<R extends IRecipeWithRequirements> extends BlockEntityBehaviour {
|
||||||
public static final BehaviourType<RecipeRequirementsBehaviour<?>> TYPE = new BehaviourType<>();
|
public static final BehaviourType<RecipeRequirementsBehaviour<?>> TYPE = new BehaviourType<>();
|
||||||
|
|
||||||
public RecipeRequirementsSpecifics<R> specifics;
|
public RecipeRequirementsSpecifics<R> specifics;
|
||||||
|
|
||||||
private boolean meetsRequirements;
|
|
||||||
private boolean meetsIngredients;
|
|
||||||
private boolean hasEnoughOutput;
|
|
||||||
private ArrayList<String> missingRequirements;
|
private ArrayList<String> missingRequirements;
|
||||||
|
|
||||||
public <T extends SmartBlockEntity & RecipeRequirementsSpecifics<R>> RecipeRequirementsBehaviour(T te) {
|
public <T extends SmartBlockEntity & RecipeRequirementsSpecifics<R>> RecipeRequirementsBehaviour(T te) {
|
||||||
super(te);
|
super(te);
|
||||||
this.specifics = te;
|
this.specifics = te;
|
||||||
this.meetsIngredients = false;
|
|
||||||
this.missingRequirements = new ArrayList<>();
|
this.missingRequirements = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,50 +35,38 @@ public class RecipeRequirementsBehaviour<R extends IRecipeWithRequirements> exte
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean meetsRequirements(){
|
public boolean meetsRequirements(){
|
||||||
return meetsRequirements;
|
return !missingRequirements.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> boolean checkRequirements(Optional<R> pRecipe, Level pLevel, T pBlockEntity) {
|
public <T> boolean checkRequirements(R pRecipe) {
|
||||||
missingRequirements = new ArrayList<>();
|
missingRequirements = new ArrayList<>();
|
||||||
boolean result = true;
|
|
||||||
|
|
||||||
if(pRecipe.isEmpty() || !specifics.matchIngredients(pRecipe.get())){
|
if(!specifics.matchesIngredients(pRecipe)){
|
||||||
meetsIngredients = false;
|
|
||||||
missingRequirements.add("ingredients");
|
missingRequirements.add("ingredients");
|
||||||
blockEntity.sendData();
|
blockEntity.sendData();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
meetsIngredients = true;
|
|
||||||
|
|
||||||
|
if(!specifics.hasEnoughOutputSpace()){
|
||||||
hasEnoughOutput = specifics.hasEnoughOutputSpace();
|
|
||||||
if(!hasEnoughOutput){
|
|
||||||
missingRequirements.add("output");
|
missingRequirements.add("output");
|
||||||
result = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
meetsRequirements = checkRequirements(pRecipe.get(), pLevel, specifics);
|
missingRequirements.addAll(pRecipe.getMissingRequirements((BlockEntity) specifics));
|
||||||
if(!meetsRequirements){
|
|
||||||
result = false;
|
if(!missingRequirements.isEmpty()){
|
||||||
|
blockEntity.sendData();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//meetsRequirements = meetsRequirements(pRecipe.get().getRecipeRequirements(), specifics);
|
||||||
|
//if(!pRecipe.get().checkRequirements((BlockEntity) specifics)){
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
blockEntity.sendData();
|
blockEntity.sendData();
|
||||||
return result;
|
return true;
|
||||||
}
|
}
|
||||||
private boolean checkRequirements(R pRecipe, Level pLevel, RecipeRequirementsSpecifics<R> pSpecifics){
|
|
||||||
boolean result = true;
|
|
||||||
for( IRecipeRequirement requirement : pRecipe.getRecipeRequirements()){
|
|
||||||
if(!checkRequirement(requirement, pLevel, (BlockEntity) pSpecifics)){
|
|
||||||
missingRequirements.add(requirement.getIdString());
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
private boolean checkRequirement(IRecipeRequirement value, Level pLevel, BlockEntity pSpecifics){
|
|
||||||
return value.test(pLevel, pSpecifics);
|
|
||||||
}
|
|
||||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking, boolean added) {
|
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking, boolean added) {
|
||||||
if(missingRequirements.isEmpty())
|
if(missingRequirements.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
@@ -124,6 +103,6 @@ public class RecipeRequirementsBehaviour<R extends IRecipeWithRequirements> exte
|
|||||||
|
|
||||||
public interface RecipeRequirementsSpecifics<R extends IRecipeWithRequirements> {
|
public interface RecipeRequirementsSpecifics<R extends IRecipeWithRequirements> {
|
||||||
boolean hasEnoughOutputSpace();
|
boolean hasEnoughOutputSpace();
|
||||||
boolean matchIngredients(R recipe);
|
boolean matchesIngredients(R recipe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.data;
|
package com.oierbravo.mechanicals.foundation.data;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.tterrag.registrate.util.entry.FluidEntry;
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
import net.minecraft.core.registries.BuiltInRegistries;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.GsonHelper;
|
|
||||||
import net.neoforged.neoforge.common.conditions.ICondition;
|
import net.neoforged.neoforge.common.conditions.ICondition;
|
||||||
import net.neoforged.neoforge.common.conditions.ModLoadedCondition;
|
|
||||||
import net.neoforged.neoforge.fluids.BaseFlowingFluid;
|
|
||||||
|
|
||||||
public record FluidExistsCondition(String fluid) implements ICondition {
|
public record FluidExistsCondition(String fluid) implements ICondition {
|
||||||
public static MapCodec<FluidExistsCondition> CODEC = RecordCodecBuilder.mapCodec((builder) -> builder.group(Codec.STRING.fieldOf("fluid_exists").forGetter(FluidExistsCondition::fluid)).apply(builder, FluidExistsCondition::new));
|
public static MapCodec<FluidExistsCondition> CODEC = RecordCodecBuilder.mapCodec((builder) -> builder.group(Codec.STRING.fieldOf("fluid_exists").forGetter(FluidExistsCondition::fluid)).apply(builder, FluidExistsCondition::new));
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.energy;
|
package com.oierbravo.mechanicals.foundation.energy;
|
||||||
|
|
||||||
|
|
||||||
import net.neoforged.neoforge.energy.EnergyStorage;
|
import net.neoforged.neoforge.energy.EnergyStorage;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
@@ -8,7 +8,6 @@ import net.neoforged.neoforge.common.conditions.ICondition;
|
|||||||
|
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
@@ -21,12 +20,9 @@ public abstract class BaseRecipe<T extends RecipeInput, P extends BaseRecipePara
|
|||||||
|
|
||||||
protected ArrayList<ICondition> conditions;
|
protected ArrayList<ICondition> conditions;
|
||||||
|
|
||||||
//abstract public List<String> getEnabledRequirements();
|
|
||||||
|
|
||||||
public BaseRecipe(P params){
|
public BaseRecipe(P params){
|
||||||
this.id = params.id;
|
this.id = params.id;
|
||||||
recipeRequirements = params.recipeRequirements;
|
recipeRequirements = params.recipeRequirements;
|
||||||
//recipeRequirements.putAll(params.recipeRequirements);
|
|
||||||
this.conditions = params.conditions;
|
this.conditions = params.conditions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
|
import net.minecraft.advancements.Advancement;
|
||||||
|
import net.minecraft.advancements.AdvancementRequirements;
|
||||||
|
import net.minecraft.advancements.AdvancementRewards;
|
||||||
|
import net.minecraft.advancements.Criterion;
|
||||||
|
import net.minecraft.advancements.critereon.RecipeUnlockedTrigger;
|
||||||
|
import net.minecraft.data.recipes.RecipeOutput;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.neoforged.neoforge.common.conditions.ICondition;
|
||||||
|
import net.neoforged.neoforge.common.conditions.ModLoadedCondition;
|
||||||
|
import net.neoforged.neoforge.common.conditions.NotCondition;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public abstract class BaseRecipeBuilder<R extends BaseRecipe<?,P>, P extends BaseRecipeParams, BRB extends BaseRecipeBuilder<R,P,?>> {
|
||||||
|
protected final Map<String, Criterion<?>> criteria = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
protected P params;
|
||||||
|
protected ArrayList<IRecipeRequirement> recipeRequirements;
|
||||||
|
protected ArrayList<ICondition> recipeConditions;
|
||||||
|
|
||||||
|
public BaseRecipeBuilder( ResourceLocation id){
|
||||||
|
recipeRequirements = new ArrayList<>();
|
||||||
|
recipeConditions = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract R build();
|
||||||
|
|
||||||
|
public BRB withRequirement(IRecipeRequirement requirement){
|
||||||
|
params.recipeRequirements.add(requirement);
|
||||||
|
return (BRB) this;
|
||||||
|
}
|
||||||
|
public BRB withRequirements(List<IRecipeRequirement> pRecipeRequirements) {
|
||||||
|
params.recipeRequirements.addAll(pRecipeRequirements);
|
||||||
|
return (BRB) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BRB whenModLoaded(String modid) {
|
||||||
|
return withCondition(new ModLoadedCondition(modid));
|
||||||
|
}
|
||||||
|
|
||||||
|
public BRB whenModMissing(String modid) {
|
||||||
|
return withCondition(new NotCondition(new ModLoadedCondition(modid)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public BRB withCondition(ICondition condition) {
|
||||||
|
recipeConditions.add(condition);
|
||||||
|
return (BRB) this;
|
||||||
|
}
|
||||||
|
public void save(RecipeOutput recipeOutput, ResourceLocation resourceLocation) {
|
||||||
|
Advancement.Builder advancement = recipeOutput.advancement()
|
||||||
|
.addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(resourceLocation))
|
||||||
|
.rewards(AdvancementRewards.Builder.recipe(resourceLocation))
|
||||||
|
.requirements(AdvancementRequirements.Strategy.OR);
|
||||||
|
this.criteria.forEach(advancement::addCriterion);
|
||||||
|
|
||||||
|
recipeOutput.accept(resourceLocation, build(), advancement.build(params.id.withPrefix("recipes/")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save(RecipeOutput recipeOutput) {
|
||||||
|
save(recipeOutput, params.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,9 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.neoforged.neoforge.common.conditions.ICondition;
|
import net.neoforged.neoforge.common.conditions.ICondition;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public abstract class BaseRecipeParams implements IBaseRecipeParams {
|
public abstract class BaseRecipeParams implements IBaseRecipeParams {
|
||||||
public ResourceLocation id;
|
public ResourceLocation id;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
|
public interface IBaseRecipeParams {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.oierbravo.mechanicals.register.MechanicalRegistries;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRegistries;
|
import com.oierbravo.mechanicals.utility.LibLang;
|
||||||
import com.oierbravo.mechanical_lemon_lib.utility.LibLang;
|
import net.createmod.catnip.data.Pair;
|
||||||
import net.minecraft.network.FriendlyByteBuf;
|
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
@@ -13,15 +12,13 @@ import net.minecraft.world.level.Level;
|
|||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public interface IRecipeRequirement {
|
public interface IRecipeRequirement {
|
||||||
Codec<IRecipeRequirement> CODEC = MechanicalLemonRegistries.RECIPE_REQUIREMENT_TYPE.byNameCodec().dispatch(IRecipeRequirement::getType, RecipeRequirementType::codec);
|
Codec<IRecipeRequirement> CODEC = MechanicalRegistries.RECIPE_REQUIREMENT_TYPE.byNameCodec().dispatch(IRecipeRequirement::getType, RecipeRequirementType::codec);
|
||||||
Codec<List<IRecipeRequirement>> LIST_CODEC = CODEC.listOf();
|
Codec<List<IRecipeRequirement>> LIST_CODEC = CODEC.listOf();
|
||||||
|
|
||||||
StreamCodec<RegistryFriendlyByteBuf,IRecipeRequirement> STREAM_CODEC
|
StreamCodec<RegistryFriendlyByteBuf,IRecipeRequirement> STREAM_CODEC
|
||||||
= ByteBufCodecs.registry(MechanicalLemonRegistries.Keys.RECIPE_REQUIREMENT)
|
= ByteBufCodecs.registry(MechanicalRegistries.Keys.RECIPE_REQUIREMENT)
|
||||||
.dispatch(IRecipeRequirement::getType, RecipeRequirementType::streamCodec);
|
.dispatch(IRecipeRequirement::getType, RecipeRequirementType::streamCodec);
|
||||||
|
|
||||||
StreamCodec<RegistryFriendlyByteBuf, List<IRecipeRequirement>> LIST_STREAM_CODEC =
|
StreamCodec<RegistryFriendlyByteBuf, List<IRecipeRequirement>> LIST_STREAM_CODEC =
|
||||||
@@ -33,9 +30,10 @@ public interface IRecipeRequirement {
|
|||||||
String toString();
|
String toString();
|
||||||
RecipeRequirementType<?> getType();
|
RecipeRequirementType<?> getType();
|
||||||
|
|
||||||
default Component toTooltipComponent(){
|
default Pair<Component,Component> toTooltipComponent(){
|
||||||
//return LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip").newLine().component().append(toString());.component();
|
return Pair.of(LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip.title").component(),
|
||||||
return LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip", toString()).newLine().space().add(Component.literal(toString())).component();
|
LibLang.translate("ui.recipe_requirement." + getIdString() + ".tooltip.value", toString()).component()
|
||||||
|
);
|
||||||
};
|
};
|
||||||
default Component toMissingComponent(){
|
default Component toMissingComponent(){
|
||||||
return LibLang.translate("ui.recipe_requirement." + getIdString() + ".missing").component();
|
return LibLang.translate("ui.recipe_requirement." + getIdString() + ".missing").component();
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
|
import net.createmod.catnip.data.Pair;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface IRecipeWithRequirements {
|
||||||
|
|
||||||
|
|
||||||
|
ArrayList<IRecipeRequirement> getRecipeRequirements();
|
||||||
|
|
||||||
|
default Optional<IRecipeRequirement> getRequirement(RecipeRequirementType<?> type) {
|
||||||
|
return getRecipeRequirements().stream().filter(iRecipeRequirement -> iRecipeRequirement.getType() == type).findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
default boolean meetsRequirements(BlockEntity pBlockEntity){
|
||||||
|
for( IRecipeRequirement requirement : getRecipeRequirements()){
|
||||||
|
if(!requirement.test(pBlockEntity.getLevel(), pBlockEntity)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
default List<String> getMissingRequirements(BlockEntity pBlockEntity){
|
||||||
|
ArrayList<String> missingRequirements = new ArrayList<>();
|
||||||
|
for( IRecipeRequirement requirement : getRecipeRequirements() ){
|
||||||
|
if(!requirement.test(pBlockEntity.getLevel(), pBlockEntity)){
|
||||||
|
missingRequirements.add(requirement.getIdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return missingRequirements;
|
||||||
|
};
|
||||||
|
|
||||||
|
default List<Pair<Component,Component>> getRequirementsTooltips(){
|
||||||
|
if(getRecipeRequirements().isEmpty())
|
||||||
|
return List.of();
|
||||||
|
return getRecipeRequirements().stream().map(IRecipeRequirement::toTooltipComponent).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe;
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.oierbravo.mechanicals.foundation.recipe;
|
||||||
|
|
||||||
|
public class RecipeRequirementsUtils {
|
||||||
|
/*public static List<String> getMissingRequirements(List<IRecipeRequirement> pRecipeRequirements, BlockEntity pBlockEntity){
|
||||||
|
ArrayList<String> missingRequirements = new ArrayList<>();
|
||||||
|
for( IRecipeRequirement requirement : pRecipeRequirements ){
|
||||||
|
if(!requirement.test(pBlockEntity.getLevel(), pBlockEntity)){
|
||||||
|
missingRequirements.add(requirement.getIdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return missingRequirements;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*public static <BR extends IRecipeWithRequirements> List<Pair<Component,Component>> getRequirementsTooltips(BR recipe){
|
||||||
|
if(recipe.getRecipeRequirements().isEmpty())
|
||||||
|
return List.of();
|
||||||
|
return recipe.getRecipeRequirements().stream().map(IRecipeRequirement::toTooltipComponent).toList();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,19 +1,15 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.registries.BuiltInRegistries;
|
|
||||||
import net.minecraft.core.registries.Registries;
|
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.ResourceKey;
|
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.Level;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
@@ -58,7 +54,7 @@ public record BiomeRequirement(ResourceKey<Biome> biomeResourceKey) implements I
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.BIOME.get();
|
return MechanicalRecipeRequirementTypes.BIOME.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,26 +1,20 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
import net.minecraft.core.registries.Registries;
|
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.ResourceKey;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.tags.BiomeTags;
|
|
||||||
import net.minecraft.tags.TagKey;
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
public record BiomeTagRequirement(TagKey<Biome> tag) implements IRecipeRequirement {
|
public record BiomeTagRequirement(TagKey<Biome> tag) implements IRecipeRequirement {
|
||||||
public static String ID = "biome_tag";
|
public static String ID = "biome_tag";
|
||||||
|
|
||||||
@@ -66,7 +60,7 @@ public record BiomeTagRequirement(TagKey<Biome> tag) implements IRecipeRequireme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.BIOME_TAG.get();
|
return MechanicalRecipeRequirementTypes.BIOME_TAG.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
@@ -35,7 +35,7 @@ public record MaxSpeedRequirement(Float speed) implements IRecipeRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.MAX_SPEED.get();
|
return MechanicalRecipeRequirementTypes.MAX_SPEED.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
@@ -41,7 +41,7 @@ public record MaxYRequirement(Integer maxY) implements IRecipeRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.MAX_Y.get();
|
return MechanicalRecipeRequirementTypes.MAX_Y.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
@@ -35,7 +35,7 @@ public record MinSpeedRequirement(Float speed) implements IRecipeRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.MIN_SPEED.get();
|
return MechanicalRecipeRequirementTypes.MIN_SPEED.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements;
|
package com.oierbravo.mechanicals.foundation.recipe.requirements;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.register.MechanicalLemonRecipeRequirementTypes;
|
import com.oierbravo.mechanicals.register.MechanicalRecipeRequirementTypes;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||||
import net.minecraft.network.codec.ByteBufCodecs;
|
import net.minecraft.network.codec.ByteBufCodecs;
|
||||||
@@ -41,7 +41,7 @@ public record MinYRequirement(Integer minY) implements IRecipeRequirement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecipeRequirementType<?> getType() {
|
public RecipeRequirementType<?> getType() {
|
||||||
return MechanicalLemonRecipeRequirementTypes.MIN_Y.get();
|
return MechanicalRecipeRequirementTypes.MIN_Y.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.foundation.visual;
|
package com.oierbravo.mechanicals.foundation.visual;
|
||||||
|
|
||||||
import com.simibubi.create.AllPartialModels;
|
import com.simibubi.create.AllPartialModels;
|
||||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.oierbravo.mechanicals.foundation.visual;
|
||||||
|
|
||||||
|
import com.oierbravo.mechanicals.MechanicalPartials;
|
||||||
|
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||||
|
import com.simibubi.create.content.kinetics.base.SingleAxisRotatingVisual;
|
||||||
|
import dev.engine_room.flywheel.api.visualization.VisualizationContext;
|
||||||
|
import dev.engine_room.flywheel.lib.model.Models;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
|
||||||
|
public class QuarterShaftVisual<T extends KineticBlockEntity> extends SingleAxisRotatingVisual<T> {
|
||||||
|
public QuarterShaftVisual(VisualizationContext context, T blockEntity, float partialTick, Direction direction) {
|
||||||
|
super(context, blockEntity, partialTick, direction, Models.partial(MechanicalPartials.SHAFT_QUARTER));
|
||||||
|
}
|
||||||
|
public static <T extends KineticBlockEntity> QuarterShaftVisual<T> bottom(VisualizationContext context, T blockEntity, float partialTick) {
|
||||||
|
return new QuarterShaftVisual<>(context, blockEntity, partialTick, Direction.NORTH);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.jade;
|
package com.oierbravo.mechanicals.jade;
|
||||||
|
|
||||||
public interface IHavePercent {
|
public interface IHavePercent {
|
||||||
int getProgressPercent();
|
int getProgressPercent();
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.jade;
|
package com.oierbravo.mechanicals.jade;
|
||||||
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.utility.LibLang;
|
import com.oierbravo.mechanicals.utility.LibLang;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import snownee.jade.api.BlockAccessor;
|
import snownee.jade.api.BlockAccessor;
|
||||||
import snownee.jade.api.IBlockComponentProvider;
|
import snownee.jade.api.IBlockComponentProvider;
|
||||||
@@ -13,10 +12,10 @@ import snownee.jade.api.ui.BoxStyle;
|
|||||||
import snownee.jade.api.ui.IElementHelper;
|
import snownee.jade.api.ui.IElementHelper;
|
||||||
import snownee.jade.api.ui.ProgressStyle;
|
import snownee.jade.api.ui.ProgressStyle;
|
||||||
|
|
||||||
public class LemonProgressComponentProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
public class MechanicalProgressComponentProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||||
private final ResourceLocation UID;
|
private final ResourceLocation UID;
|
||||||
|
|
||||||
public LemonProgressComponentProvider(ResourceLocation UID){
|
public MechanicalProgressComponentProvider(ResourceLocation UID){
|
||||||
this.UID = UID;
|
this.UID = UID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,23 +1,23 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.register;
|
package com.oierbravo.mechanicals.register;
|
||||||
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.MechanicalLemonLib;
|
import com.oierbravo.mechanicals.Mechanicals;
|
||||||
|
import com.oierbravo.mechanicals.utility.LibLang;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
|
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.core.registries.Registries;
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
import net.neoforged.neoforge.registries.DeferredHolder;
|
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||||
|
|
||||||
public class LemonCreativeModeTabs {
|
public class MechanicalCreativeModeTabs {
|
||||||
|
|
||||||
private static final DeferredRegister<CreativeModeTab> TAB_REGISTER =
|
private static final DeferredRegister<CreativeModeTab> TAB_REGISTER =
|
||||||
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MechanicalLemonLib.MODID);
|
DeferredRegister.create(Registries.CREATIVE_MODE_TAB, Mechanicals.MODID);
|
||||||
|
|
||||||
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> MAIN_TAB = TAB_REGISTER.register("main",
|
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> MAIN_TAB = TAB_REGISTER.register("main",
|
||||||
() -> CreativeModeTab.builder()
|
() -> CreativeModeTab.builder()
|
||||||
.title(Component.translatable("itemGroup.mechanical_lemon_lib"))
|
.title(LibLang.translate("itemGroup.mechanicals").component())
|
||||||
.icon(() -> Items.EGG.asItem().getDefaultInstance())
|
.icon(() -> Items.EGG.asItem().getDefaultInstance())
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.register;
|
package com.oierbravo.mechanicals.register;
|
||||||
|
|
||||||
import com.mojang.serialization.MapCodec;
|
import com.mojang.serialization.MapCodec;
|
||||||
import com.oierbravo.mechanical_lemon_lib.MechanicalLemonLib;
|
import com.oierbravo.mechanicals.Mechanicals;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.IRecipeRequirement;
|
import com.oierbravo.mechanicals.foundation.recipe.IRecipeRequirement;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.requirements.*;
|
import com.oierbravo.mechanicals.foundation.recipe.requirements.*;
|
||||||
import net.minecraft.network.codec.StreamCodec;
|
import net.minecraft.network.codec.StreamCodec;
|
||||||
import net.neoforged.bus.api.IEventBus;
|
import net.neoforged.bus.api.IEventBus;
|
||||||
import net.neoforged.neoforge.registries.DeferredRegister;
|
import net.neoforged.neoforge.registries.DeferredRegister;
|
||||||
@@ -13,9 +13,9 @@ import net.minecraft.network.RegistryFriendlyByteBuf;
|
|||||||
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class MechanicalLemonRecipeRequirementTypes {
|
public class MechanicalRecipeRequirementTypes {
|
||||||
public static final DeferredRegister<RecipeRequirementType<?>> RECIPE_REQUIREMENT_TYPES =
|
public static final DeferredRegister<RecipeRequirementType<?>> RECIPE_REQUIREMENT_TYPES =
|
||||||
DeferredRegister.create(MechanicalLemonRegistries.Keys.RECIPE_REQUIREMENT, MechanicalLemonLib.MODID);
|
DeferredRegister.create(MechanicalRegistries.Keys.RECIPE_REQUIREMENT, Mechanicals.MODID);
|
||||||
|
|
||||||
public static final Supplier<RecipeRequirementType<MinSpeedRequirement>> MIN_SPEED =
|
public static final Supplier<RecipeRequirementType<MinSpeedRequirement>> MIN_SPEED =
|
||||||
register(MinSpeedRequirement.ID, MinSpeedRequirement.CODEC, MinSpeedRequirement.STREAM_CODEC);
|
register(MinSpeedRequirement.ID, MinSpeedRequirement.CODEC, MinSpeedRequirement.STREAM_CODEC);
|
||||||
@@ -1,23 +1,23 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.register;
|
package com.oierbravo.mechanicals.register;
|
||||||
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.MechanicalLemonLib;
|
import com.oierbravo.mechanicals.Mechanicals;
|
||||||
import com.oierbravo.mechanical_lemon_lib.foundation.recipe.RecipeRequirementType;
|
import com.oierbravo.mechanicals.foundation.recipe.RecipeRequirementType;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.neoforged.neoforge.registries.NewRegistryEvent;
|
import net.neoforged.neoforge.registries.NewRegistryEvent;
|
||||||
import net.neoforged.neoforge.registries.RegistryBuilder;
|
import net.neoforged.neoforge.registries.RegistryBuilder;
|
||||||
|
|
||||||
public class MechanicalLemonRegistries {
|
public class MechanicalRegistries {
|
||||||
public static Registry<RecipeRequirementType<?>> RECIPE_REQUIREMENT_TYPE;// = (new RegistryBuilder(Keys.RECIPE_REQUIREMENT_TYPES)).create();
|
public static Registry<RecipeRequirementType<?>> RECIPE_REQUIREMENT_TYPE;// = (new RegistryBuilder(Keys.RECIPE_REQUIREMENT_TYPES)).create();
|
||||||
|
|
||||||
public MechanicalLemonRegistries() {
|
public MechanicalRegistries() {
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
RECIPE_REQUIREMENT_TYPE = new RegistryBuilder<>(MechanicalLemonRegistries.Keys.RECIPE_REQUIREMENT).sync(true).create();
|
RECIPE_REQUIREMENT_TYPE = new RegistryBuilder<>(MechanicalRegistries.Keys.RECIPE_REQUIREMENT).sync(true).create();
|
||||||
}
|
}
|
||||||
public static final class Keys {
|
public static final class Keys {
|
||||||
public static final ResourceKey<Registry<RecipeRequirementType<?>>> RECIPE_REQUIREMENT = ResourceKey.createRegistryKey(MechanicalLemonLib.asResource("requirement"));
|
public static final ResourceKey<Registry<RecipeRequirementType<?>>> RECIPE_REQUIREMENT = ResourceKey.createRegistryKey(Mechanicals.asResource("requirement"));
|
||||||
|
|
||||||
}
|
}
|
||||||
public static void register(NewRegistryEvent event) {
|
public static void register(NewRegistryEvent event) {
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.utility;
|
package com.oierbravo.mechanicals.utility;
|
||||||
|
|
||||||
import com.oierbravo.mechanical_lemon_lib.MechanicalLemonLib;
|
import com.oierbravo.mechanicals.Mechanicals;
|
||||||
import net.createmod.catnip.lang.Lang;
|
import net.createmod.catnip.lang.Lang;
|
||||||
import net.createmod.catnip.lang.LangBuilder;
|
import net.createmod.catnip.lang.LangBuilder;
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@ public class LibLang extends Lang {
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
public static LangBuilder builder() {
|
public static LangBuilder builder() {
|
||||||
return new LangBuilder(MechanicalLemonLib.MODID);
|
return new LangBuilder(Mechanicals.MODID);
|
||||||
}
|
}
|
||||||
public static LangBuilder translate(String langKey, Object... args) {
|
public static LangBuilder translate(String langKey, Object... args) {
|
||||||
return builder().translate(langKey, args);
|
return builder().translate(langKey, args);
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.oierbravo.mechanical_lemon_lib.utility;
|
package com.oierbravo.mechanicals.utility;
|
||||||
|
|
||||||
import com.simibubi.create.api.stress.BlockStressValues;
|
import com.simibubi.create.api.stress.BlockStressValues;
|
||||||
import com.tterrag.registrate.util.nullness.NonNullConsumer;
|
import com.tterrag.registrate.util.nullness.NonNullConsumer;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class LemonRegistrate {
|
public class MechanicalRegistrate {
|
||||||
public static <B extends Block> @NotNull NonNullConsumer<B> setImpact(double value) {
|
public static <B extends Block> @NotNull NonNullConsumer<B> setImpact(double value) {
|
||||||
return (block) -> {
|
return (block) -> {
|
||||||
BlockStressValues.IMPACTS.register(block, () -> value);
|
BlockStressValues.IMPACTS.register(block, () -> value);
|
||||||
1
src/main/resources/META-INF/accesstransformer.cfg
Normal file
1
src/main/resources/META-INF/accesstransformer.cfg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
public-f net.minecraft.data.recipes.RecipeProvider getName()Ljava/lang/String;
|
||||||
@@ -7,7 +7,7 @@ version = "${mod_version}" #mandatory
|
|||||||
displayName = "${mod_name}" #mandatory
|
displayName = "${mod_name}" #mandatory
|
||||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
|
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
|
||||||
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
|
#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional
|
||||||
#logoFile="mechanical_lemon_lib.png" #optional
|
#logoFile="mechanicals_lib.png" #optional
|
||||||
#credits="Thanks for this example mod goes to Java" #optional
|
#credits="Thanks for this example mod goes to Java" #optional
|
||||||
authors = "${mod_author}" #optional
|
authors = "${mod_author}" #optional
|
||||||
description = '''${mod_description}'''
|
description = '''${mod_description}'''
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"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": "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"
|
|
||||||
}
|
|
||||||
25
src/main/resources/assets/mechanicals/lang/en_us.json
Normal file
25
src/main/resources/assets/mechanicals/lang/en_us.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"mechanicals.ui.progress": "Progress: %d%%",
|
||||||
|
"itemGroup.mechanicals": "Mechanicals",
|
||||||
|
"mechanicals.ui.recipe.requirements.title": "Requirements:",
|
||||||
|
"mechanicals.ui.recipe_requirement.none.tooltip": "No specific requirement",
|
||||||
|
"mechanicals.ui.recipe_requirement.biome.tooltip.title": "Biome:",
|
||||||
|
"mechanicals.ui.recipe_requirement.biome.tooltip.value": "%s",
|
||||||
|
"mechanicals.ui.recipe_requirement.biome_tag.tooltip.title": "Biome Tag:",
|
||||||
|
"mechanicals.ui.recipe_requirement.biome_tag.tooltip.value": "#%s",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_y.tooltip.title": "Min Y:",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_y.tooltip.value": "%s",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_y.tooltip.title": "Max Y:",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_y.tooltip.value": "%s",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_speed.tooltip.title": "Min Speed:",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_speed.tooltip.value": "%s RPM",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_speed.tooltip.title": "Max Speed:",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_speed.tooltip.value": "%s RPM",
|
||||||
|
"mechanicals.ui.recipe_requirement.biome.missing": "Incorrect biome",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_y.missing": "Y position Too high",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_y.missing": "Y position Too low",
|
||||||
|
"mechanicals.ui.recipe_requirement.min_speed.missing": "Not enough speed",
|
||||||
|
"mechanicals.ui.recipe_requirement.max_speed.missing": "Too fast",
|
||||||
|
"mechanicals.ui.recipe_requirement.output.missing": "Output full or incompatible",
|
||||||
|
"mechanicals.ui.recipe_requirement.ingredients.missing": "Missing ingredients"
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"parent": "block/block",
|
||||||
|
"textures": {
|
||||||
|
"0": "create:block/axis",
|
||||||
|
"1": "create:block/axis_top",
|
||||||
|
"particle": "create:block/axis"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"name": "Axis",
|
||||||
|
"from": [6, 6, 12],
|
||||||
|
"to": [10, 10, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"},
|
||||||
|
"east": {"uv": [6, 0, 10, 4], "rotation": 270, "texture": "#0"},
|
||||||
|
"south": {"uv": [6, 6, 10, 10], "texture": "#1"},
|
||||||
|
"west": {"uv": [6, 0, 10, 4], "rotation": 90, "texture": "#0"},
|
||||||
|
"up": {"uv": [6, 0, 10, 4], "rotation": 180, "texture": "#0"},
|
||||||
|
"down": {"uv": [6, 0, 10, 4], "texture": "#0"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"pack": {
|
|
||||||
"description": "mechanical_lemon_lib resources",
|
|
||||||
"pack_format": 15
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user