Merge pull request #6385 from Attack8/mc1.18/ManualOnly

Respect Manual Only Recipes
This commit is contained in:
simibubi 2024-07-18 11:12:04 +02:00 committed by GitHub
commit 649a5936ec
Failed to generate hash of commit
3 changed files with 32 additions and 10 deletions

View file

@ -143,6 +143,7 @@ public class CreateJEI implements IModPlugin {
smoking = builder(SmokingRecipe.class)
.addTypedRecipes(() -> RecipeType.SMOKING)
.removeNonAutomation()
.catalystStack(ProcessingViaFanCategory.getFan("fan_smoking"))
.doubleItemIcon(AllItems.PROPELLER.get(), Items.CAMPFIRE)
.emptyBackground(178, 72)
@ -152,6 +153,7 @@ public class CreateJEI implements IModPlugin {
.addTypedRecipesExcluding(() -> RecipeType.SMELTING, () -> RecipeType.BLASTING)
.addTypedRecipes(() -> RecipeType.BLASTING)
.removeRecipes(() -> RecipeType.SMOKING)
.removeNonAutomation()
.catalystStack(ProcessingViaFanCategory.getFan("fan_blasting"))
.doubleItemIcon(AllItems.PROPELLER.get(), Items.LAVA_BUCKET)
.emptyBackground(178, 72)
@ -257,6 +259,7 @@ public class CreateJEI implements IModPlugin {
.addTypedRecipes(AllRecipeTypes.DEPLOYING)
.addTypedRecipes(AllRecipeTypes.SANDPAPER_POLISHING::getType, DeployerApplicationRecipe::convert)
.addTypedRecipes(AllRecipeTypes.ITEM_APPLICATION::getType, ManualApplicationRecipe::asDeploying)
.removeNonAutomation()
.catalyst(AllBlocks.DEPLOYER::get)
.catalyst(AllBlocks.DEPOT::get)
.catalyst(AllItems.BELT_CONNECTOR::get)
@ -464,6 +467,11 @@ public class CreateJEI implements IModPlugin {
});
}
public CategoryBuilder<T> removeNonAutomation() {
return addRecipeListConsumer(recipes -> recipes.removeIf(recipe ->
recipe.getId().getPath().contains("_manual_only")));
}
public CategoryBuilder<T> catalystStack(Supplier<ItemStack> supplier) {
catalysts.add(supplier);
return this;

View file

@ -5,6 +5,7 @@ import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import javax.annotation.Nullable;
@ -46,9 +47,11 @@ import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.ClipContext.Block;
import net.minecraft.world.level.ClipContext.Fluid;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@ -547,8 +550,10 @@ public class DeployerBlockEntity extends KineticBlockEntity {
ItemStack heldItemMainhand = player.getMainHandItem();
if (heldItemMainhand.getItem() instanceof SandPaperItem) {
sandpaperInv.setItem(0, stack);
return AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, level)
.orElse(null);
Optional<Recipe<SandPaperInv>> sandPaperRecipe = AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, level);
if (sandPaperRecipe.isPresent() && !sandPaperRecipe.get().getId().getPath().endsWith("_manual_only"))
return sandPaperRecipe.get();
return null;
}
recipeInv.setItem(0, stack);
@ -558,13 +563,20 @@ public class DeployerBlockEntity extends KineticBlockEntity {
event.addRecipe(() -> SequencedAssemblyRecipe.getRecipe(level, event.getInventory(),
AllRecipeTypes.DEPLOYING.getType(), DeployerApplicationRecipe.class), 100);
event.addRecipe(() -> AllRecipeTypes.DEPLOYING.find(event.getInventory(), level), 50);
event.addRecipe(() -> AllRecipeTypes.ITEM_APPLICATION.find(event.getInventory(), level), 50);
event.addRecipe(() -> checkRecipe(AllRecipeTypes.DEPLOYING, event.getInventory(), level), 50);
event.addRecipe(() -> checkRecipe(AllRecipeTypes.ITEM_APPLICATION, event.getInventory(), level), 50);
MinecraftForge.EVENT_BUS.post(event);
return event.getRecipe();
}
private Optional<? extends Recipe<? extends Container>> checkRecipe(AllRecipeTypes type, RecipeWrapper inv, Level level) {
Optional<? extends Recipe<? extends Container>> opt = type.find(inv, level);
if (opt.isPresent() && !opt.get().getId().getPath().contains("_manual_only"))
return opt;
return Optional.empty();
}
public DeployerFakePlayer getPlayer() {
return player;
}

View file

@ -116,7 +116,7 @@ public class AllFanProcessingTypes {
public List<ItemStack> process(ItemStack stack, Level level) {
return null;
}
@Override
public void spawnProcessingParticles(Level level, Vec3 pos) {
}
@ -162,15 +162,17 @@ public class AllFanProcessingTypes {
Optional<SmeltingRecipe> smeltingRecipe = level.getRecipeManager()
.getRecipeFor(RecipeType.SMELTING, RECIPE_WRAPPER, level);
if (smeltingRecipe.isPresent())
return true;
if (smeltingRecipe.isPresent()) {
return !smeltingRecipe.get().getId().getPath().endsWith("_manual_only");
}
RECIPE_WRAPPER.setItem(0, stack);
Optional<BlastingRecipe> blastingRecipe = level.getRecipeManager()
.getRecipeFor(RecipeType.BLASTING, RECIPE_WRAPPER, level);
if (blastingRecipe.isPresent())
return true;
if (blastingRecipe.isPresent()) {
return !blastingRecipe.get().getId().getPath().endsWith("_manual_only");
}
return !stack.getItem()
.isFireResistant();
@ -390,7 +392,7 @@ public class AllFanProcessingTypes {
RECIPE_WRAPPER.setItem(0, stack);
Optional<SmokingRecipe> recipe = level.getRecipeManager()
.getRecipeFor(RecipeType.SMOKING, RECIPE_WRAPPER, level);
return recipe.isPresent();
return recipe.isPresent() && !recipe.get().getId().getPath().endsWith("_manual_only");
}
@Override