65 lines
2.7 KiB
Java
65 lines
2.7 KiB
Java
package net.minecraft.client.gui.screens.recipebook;
|
|
|
|
import java.util.List;
|
|
import net.minecraft.client.gui.components.WidgetSprites;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.util.context.ContextMap;
|
|
import net.minecraft.world.entity.player.StackedItemContents;
|
|
import net.minecraft.world.inventory.AbstractFurnaceMenu;
|
|
import net.minecraft.world.inventory.Slot;
|
|
import net.minecraft.world.item.crafting.display.FurnaceRecipeDisplay;
|
|
import net.minecraft.world.item.crafting.display.RecipeDisplay;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
public class FurnaceRecipeBookComponent extends RecipeBookComponent<AbstractFurnaceMenu> {
|
|
private static final WidgetSprites FILTER_SPRITES = new WidgetSprites(
|
|
ResourceLocation.withDefaultNamespace("recipe_book/furnace_filter_enabled"),
|
|
ResourceLocation.withDefaultNamespace("recipe_book/furnace_filter_disabled"),
|
|
ResourceLocation.withDefaultNamespace("recipe_book/furnace_filter_enabled_highlighted"),
|
|
ResourceLocation.withDefaultNamespace("recipe_book/furnace_filter_disabled_highlighted")
|
|
);
|
|
private final Component recipeFilterName;
|
|
|
|
public FurnaceRecipeBookComponent(AbstractFurnaceMenu p_360736_, Component p_363743_, List<RecipeBookComponent.TabInfo> p_365672_) {
|
|
super(p_360736_, p_365672_);
|
|
this.recipeFilterName = p_363743_;
|
|
}
|
|
|
|
@Override
|
|
protected void initFilterButtonTextures() {
|
|
this.filterButton.initTextureValues(FILTER_SPRITES);
|
|
}
|
|
|
|
@Override
|
|
protected boolean isCraftingSlot(Slot p_366927_) {
|
|
return switch (p_366927_.index) {
|
|
case 0, 1, 2 -> true;
|
|
default -> false;
|
|
};
|
|
}
|
|
|
|
@Override
|
|
protected void fillGhostRecipe(GhostSlots p_365891_, RecipeDisplay p_366392_, ContextMap p_365727_) {
|
|
p_365891_.setResult(this.menu.getResultSlot(), p_365727_, p_366392_.result());
|
|
if (p_366392_ instanceof FurnaceRecipeDisplay furnacerecipedisplay) {
|
|
p_365891_.setInput(this.menu.slots.get(0), p_365727_, furnacerecipedisplay.ingredient());
|
|
Slot slot = this.menu.slots.get(1);
|
|
if (slot.getItem().isEmpty()) {
|
|
p_365891_.setInput(slot, p_365727_, furnacerecipedisplay.fuel());
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected Component getRecipeFilterName() {
|
|
return this.recipeFilterName;
|
|
}
|
|
|
|
@Override
|
|
protected void selectMatchingRecipes(RecipeCollection p_361744_, StackedItemContents p_368936_) {
|
|
p_361744_.selectRecipes(p_368936_, p_362331_ -> p_362331_ instanceof FurnaceRecipeDisplay);
|
|
}
|
|
} |