From 94e6085d2d49e7fe38871c9548774c4e50a2f422 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 6 Jun 2019 16:09:48 +0800 Subject: this is still not working --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 6 +- .../java/me/shedaniel/rei/api/RecipeDisplay.java | 1 + .../java/me/shedaniel/rei/api/RecipeHelper.java | 10 ++ .../java/me/shedaniel/rei/client/ConfigObject.java | 2 + .../me/shedaniel/rei/client/RecipeHelperImpl.java | 13 +++ .../java/me/shedaniel/rei/client/ScreenHelper.java | 14 +-- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 27 +++--- .../me/shedaniel/rei/gui/widget/QueuedTooltip.java | 13 +++ .../shedaniel/rei/gui/widget/RecipeBaseWidget.java | 8 ++ .../me/shedaniel/rei/gui/widget/SlotWidget.java | 29 +++++- .../me/shedaniel/rei/gui/widget/TabWidget.java | 102 ++++++++++++++++++++- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 7 ++ .../shedaniel/rei/utils/ClothScreenRegistry.java | 1 + 13 files changed, 203 insertions(+), 30 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 1e6f9e966..e967bf32c 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -42,6 +42,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; public class RoughlyEnoughItemsCore implements ClientModInitializer { @@ -206,7 +207,10 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { private void registerClothEvents() { ClothClientHooks.SYNC_RECIPES.register((minecraftClient, recipeManager, synchronizeRecipesS2CPacket) -> { - ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager); + if (RoughlyEnoughItemsCore.getConfigManager().getConfig().registerRecipesInAnotherThread) + CompletableFuture.runAsync(() -> ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager)); + else + ((RecipeHelperImpl) RoughlyEnoughItemsCore.getRecipeHelper()).recipesLoaded(recipeManager); }); ClothClientHooks.SCREEN_ADD_BUTTON.register((minecraftClient, screen, abstractButtonWidget) -> { if (RoughlyEnoughItemsCore.getConfigManager().getConfig().disableRecipeBook && screen instanceof AbstractContainerScreen && abstractButtonWidget instanceof RecipeBookButtonWidget) diff --git a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java index d77e2c9ab..cd8ab6efb 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java @@ -35,6 +35,7 @@ public interface RecipeDisplay { * * @return the list of required items */ + @Deprecated default List> getRequiredItems() { return Lists.newArrayList(); } diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java index 5cc71f013..2dbf3717a 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java @@ -52,6 +52,16 @@ public interface RecipeHelper { */ void registerCategory(RecipeCategory category); + /** + * Registers the working stations of a category + * + * @param category the category + * @param workingStations the working stations + */ + void registerWorkingStations(Identifier category, ItemStack... workingStations); + + List getWorkingStations(Identifier category); + /** * Registers a recipe display * diff --git a/src/main/java/me/shedaniel/rei/client/ConfigObject.java b/src/main/java/me/shedaniel/rei/client/ConfigObject.java index 0792d6f25..252d630f6 100644 --- a/src/main/java/me/shedaniel/rei/client/ConfigObject.java +++ b/src/main/java/me/shedaniel/rei/client/ConfigObject.java @@ -50,6 +50,8 @@ public class ConfigObject { public boolean darkTheme = false; + public boolean registerRecipesInAnotherThread = true; + public RecipeScreenType screenType = RecipeScreenType.UNSET; @Comment( diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java index 5255f2d0d..45f15d18b 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java @@ -43,6 +43,7 @@ public class RecipeHelperImpl implements RecipeHelper { private final List categories = Lists.newArrayList(); private final Map speedCraftAreaSupplierMap = Maps.newHashMap(); private final Map> speedCraftFunctionalMap = Maps.newHashMap(); + private final Map> categoryWorkingStations = Maps.newHashMap(); private final List displayVisibilityHandlers = Lists.newArrayList(); private final List liveRecipeGenerators = Lists.newArrayList(); private RecipeManager recipeManager; @@ -82,6 +83,17 @@ public class RecipeHelperImpl implements RecipeHelper { categories.add(category); categoryDisplaySettingsMap.put(category.getIdentifier(), category.getDisplaySettings()); recipeCategoryListMap.put(category.getIdentifier(), Lists.newLinkedList()); + categoryWorkingStations.put(category.getIdentifier(), Lists.newLinkedList()); + } + + @Override + public void registerWorkingStations(Identifier category, ItemStack... workingStations) { + categoryWorkingStations.get(category).addAll(Arrays.asList(workingStations)); + } + + @Override + public List getWorkingStations(Identifier category) { + return categoryWorkingStations.get(category); } @Override @@ -213,6 +225,7 @@ public class RecipeHelperImpl implements RecipeHelper { this.recipeCategoryListMap.clear(); this.categories.clear(); this.speedCraftAreaSupplierMap.clear(); + this.categoryWorkingStations.clear(); this.speedCraftFunctionalMap.clear(); this.categoryDisplaySettingsMap.clear(); this.recipeFunctions.clear(); diff --git a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java index 81c5c8df4..4b6572fd4 100644 --- a/src/main/java/me/shedaniel/rei/client/ScreenHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ScreenHelper.java @@ -66,13 +66,13 @@ public class ScreenHelper implements ClientModInitializer { } public static void drawHoveringWidget(Dimension dimension, int x, int y, TriConsumer consumer, int width, int height, float delta) { - int int_5 = x + 12; - int int_6 = y - 12; - if (int_5 + width > dimension.width) - int_5 -= 28 + width; - if (int_6 + height + 6 > dimension.height) - int_6 = dimension.height - height - 6; - consumer.accept(int_5, int_6, delta); + int actualX = Math.max(x + 12, 6); + int actualY = Math.min(y - height / 2, dimension.height - height - 6); + if (actualX + width > dimension.width) + actualX -= 24 + width; + if (actualY < 6) + actualY += 24; + consumer.accept(actualX, actualY, delta); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index fe4824ca9..c286dbec9 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -373,28 +373,24 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra QUEUED_TOOLTIPS.clear(); } + @SuppressWarnings("deprecation") public void renderTooltip(QueuedTooltip tooltip) { - renderTooltip(tooltip.getText(), tooltip.getX(), tooltip.getY()); + if (tooltip.getConsumer() == null) + renderTooltip(tooltip.getText(), tooltip.getX(), tooltip.getY()); + else + tooltip.getConsumer().accept(tooltip); } public void renderTooltip(List lines, int mouseX, int mouseY) { + if (lines.isEmpty()) + return; TextRenderer font = MinecraftClient.getInstance().textRenderer; - if (!lines.isEmpty()) { + int width = lines.stream().map(font::getStringWidth).max(Integer::compareTo).get(); + int height = lines.size() <= 1 ? 8 : lines.size() * 10; + ScreenHelper.drawHoveringWidget(mouseX, mouseY, (x, y, aFloat) -> { GlStateManager.disableRescaleNormal(); GuiLighting.disable(); GlStateManager.disableLighting(); - int width = 0; - for(String line : lines) - if (font.getStringWidth(line) > width) - width = font.getStringWidth(line); - int height = lines.size() <= 1 ? 8 : lines.size() * 10; - int x = Math.max(mouseX + 12, 6); - int y = Math.min(mouseY - 12, window.getScaledHeight() - height - 6); - if (x + width > window.getScaledWidth()) - x -= 24 + width; - if (y < 6) - y += 24; - this.blitOffset = 1000; this.fillGradient(x - 3, y - 4, x + width + 3, y - 3, -267386864, -267386864); this.fillGradient(x - 3, y + height + 3, x + width + 3, y + height + 4, -267386864, -267386864); @@ -405,7 +401,6 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra this.fillGradient(x + width + 2, y - 3 + 1, x + width + 3, y + height + 3 - 1, 1347420415, 1344798847); this.fillGradient(x - 3, y - 3, x + width + 3, y - 3 + 1, 1347420415, 1347420415); this.fillGradient(x - 3, y + height + 2, x + width + 3, y + height + 3, 1344798847, 1344798847); - int currentY = y; for(int lineIndex = 0; lineIndex < lines.size(); lineIndex++) { GlStateManager.disableDepthTest(); @@ -417,7 +412,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra GlStateManager.enableLighting(); GuiLighting.enable(); GlStateManager.enableRescaleNormal(); - } + }, width, height, 0); } private boolean hasSameListContent(List list1, List list2) { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java b/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java index f692a848f..05019cd6e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/QueuedTooltip.java @@ -12,11 +12,13 @@ import me.shedaniel.cloth.api.ClientUtils; import java.awt.*; import java.util.Collections; import java.util.List; +import java.util.function.Consumer; public class QueuedTooltip { private Point location; private List text; + private Consumer consumer = null; private QueuedTooltip(Point location, List text) { this.location = location; @@ -39,6 +41,17 @@ public class QueuedTooltip { return QueuedTooltip.create(ClientUtils.getMouseLocation(), text); } + @Deprecated + public QueuedTooltip setSpecialRenderer(Consumer consumer) { + this.consumer = consumer; + return this; + } + + @Deprecated + public Consumer getConsumer() { + return consumer; + } + public Point getLocation() { return location; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java index 41f9e042a..2ae427e19 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -28,6 +28,14 @@ public class RecipeBaseWidget extends HighlightableWidget { throw new IllegalArgumentException("Base too small, at least 8x8!"); } + public int getBlitOffset() { + return this.blitOffset; + } + + public void setBlitOffset(int offset) { + this.blitOffset = offset; + } + @Override public Rectangle getBounds() { return bounds; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java index 159962241..aaa997631 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java @@ -17,7 +17,6 @@ import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.renderables.ItemStackRenderer; import net.minecraft.client.gui.Element; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -30,8 +29,8 @@ import java.util.stream.Collectors; public class SlotWidget extends HighlightableWidget { - private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); - private static final Identifier RECIPE_GUI_DARK = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer_dark.png"); + public static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); + public static final Identifier RECIPE_GUI_DARK = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer_dark.png"); private List renderers = new LinkedList<>(); private boolean drawBackground, showToolTips, clickToMoreRecipes, drawHighlightedBackground; private int x, y; @@ -59,6 +58,22 @@ public class SlotWidget extends HighlightableWidget { this.clickToMoreRecipes = clickToMoreRecipes; } + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + public boolean isShowToolTips() { return showToolTips; } @@ -126,6 +141,14 @@ public class SlotWidget extends HighlightableWidget { } } + public int getBlitOffset() { + return this.blitOffset; + } + + public void setBlitOffset(int offset) { + this.blitOffset = offset; + } + protected void queueTooltip(ItemStack itemStack, float delta) { ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack))); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java index 1376b325e..f0df09ef5 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java @@ -5,6 +5,7 @@ package me.shedaniel.rei.gui.widget; +import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.ClientHelper; @@ -12,18 +13,27 @@ import me.shedaniel.rei.api.RecipeCategory; import me.shedaniel.rei.api.Renderer; import me.shedaniel.rei.client.ScreenHelper; import net.minecraft.ChatFormat; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.render.GuiLighting; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; +import net.minecraft.util.Pair; +import net.minecraft.util.math.MathHelper; import java.awt.*; import java.util.Collections; import java.util.List; +import java.util.function.Consumer; public class TabWidget extends HighlightableWidget { public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); public static final Identifier CHEST_GUI_TEXTURE_DARK = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer_dark.png"); + private final Consumer tooltipRenderer; + private final List slots; public boolean shown = false, selected = false; public Renderer renderer; public int id; @@ -34,15 +44,99 @@ public class TabWidget extends HighlightableWidget { public TabWidget(int id, Rectangle bounds) { this.id = id; this.bounds = bounds; + this.slots = Lists.newArrayList(); + this.tooltipRenderer = tooltip -> { + MinecraftClient client = MinecraftClient.getInstance(); + int specWidth = MathHelper.clamp(slots.size(), 1, 9) * 18 + 10; + int specHeight = Math.max(1, MathHelper.ceil(slots.size() / 9)) * 18 + 10; + List lines = tooltip.getText(); + TextRenderer font = client.textRenderer; + int width = Math.max(lines.stream().map(font::getStringWidth).max(Integer::compareTo).get(), specWidth); + int tooltipHeight = lines.size() <= 1 ? 8 : lines.size() * 10; + int height = (lines.isEmpty() ? 0 : (tooltipHeight + 10)) + specHeight; + ScreenHelper.drawHoveringWidget(tooltip.getX(), tooltip.getY(), (x, y, aFloat) -> { + int currentY = y; + if (!lines.isEmpty()) { + GlStateManager.disableRescaleNormal(); + GuiLighting.disable(); + GlStateManager.disableLighting(); + this.blitOffset = 1000; + this.fillGradient(x - 3, y - 4, x + width + 3, y - 3, -267386864, -267386864); + this.fillGradient(x - 3, y + tooltipHeight + 3, x + width + 3, y + tooltipHeight + 4, -267386864, -267386864); + this.fillGradient(x - 3, y - 3, x + width + 3, y + tooltipHeight + 3, -267386864, -267386864); + this.fillGradient(x - 4, y - 3, x - 3, y + tooltipHeight + 3, -267386864, -267386864); + this.fillGradient(x + width + 3, y - 3, x + width + 4, y + tooltipHeight + 3, -267386864, -267386864); + this.fillGradient(x - 3, y - 3 + 1, x - 3 + 1, y + tooltipHeight + 3 - 1, 1347420415, 1344798847); + this.fillGradient(x + width + 2, y - 3 + 1, x + width + 3, y + tooltipHeight + 3 - 1, 1347420415, 1344798847); + this.fillGradient(x - 3, y - 3, x + width + 3, y - 3 + 1, 1347420415, 1347420415); + this.fillGradient(x - 3, y + tooltipHeight + 2, x + width + 3, y + tooltipHeight + 3, 1344798847, 1344798847); + for(int lineIndex = 0; lineIndex < lines.size(); lineIndex++) { + GlStateManager.disableDepthTest(); + font.drawWithShadow(lines.get(lineIndex), x, currentY, -1); + GlStateManager.enableDepthTest(); + currentY += lineIndex == 0 ? 12 : 10; + } + this.blitOffset = 0; + GlStateManager.enableLighting(); + GuiLighting.enable(); + GlStateManager.enableRescaleNormal(); + currentY += 6; + } + List> pairs = Lists.newArrayList(); + GlStateManager.pushMatrix(); + GlStateManager.translatef(x, currentY, 1000f); + new CategoryBaseWidget(new Rectangle(specWidth, specHeight)).render(); + GlStateManager.popMatrix(); + GlStateManager.pushMatrix(); + GlStateManager.translatef(x, currentY, 0f); + int currentX = 5; + int currentYY = 5; + int i = 0; + this.blitOffset = 1000; + for(ItemStack itemStack : slots) { + i++; + minecraft.getTextureManager().bindTexture(RoughlyEnoughItemsCore.getConfigManager().getConfig().darkTheme ? SlotWidget.RECIPE_GUI_DARK : SlotWidget.RECIPE_GUI); + blit(currentX, currentYY, 0, 222, 18, 18); + pairs.add(new Pair<>(new Point(x + currentX + 1, currentY + currentYY + 1), itemStack)); + currentX += 18; + if (i > 9) { + i = 1; + currentX = 5; + currentYY += 18; + } + } + this.blitOffset = 0; + GlStateManager.popMatrix(); + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + pairs.forEach(pair -> { + ItemStack stack = pair.getRight(); + itemRenderer.zOffset = 1300; + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiLighting.enableForItems(); + int x1 = pair.getLeft().x; + int y1 = pair.getLeft().y; + blitOffset = 1300; + GlStateManager.disableDepthTest(); + fillGradient(x1, y1, x1 + 16, y1 + 16, 0xFFFFFFFF, 0xFFFFFFFF); + GlStateManager.enableDepthTest(); + blitOffset = 0; + itemRenderer.renderGuiItem(stack, x1, y1); + itemRenderer.renderGuiItemOverlay(font, stack, x1, y1); + itemRenderer.zOffset = 0; + }); + }, width, height, 0); + }; } public void setRenderer(RecipeCategory category, Renderer renderable, String categoryName, boolean selected) { + slots.clear(); if (renderable == null) { shown = false; this.renderer = null; } else { shown = true; this.renderer = renderable; + this.slots.addAll(RoughlyEnoughItemsCore.getRecipeHelper().getWorkingStations(category.getIdentifier())); } this.category = category; this.selected = selected; @@ -79,16 +173,18 @@ public class TabWidget extends HighlightableWidget { this.blit(bounds.x, bounds.y + 2, selected ? 28 : 0, 192, 28, (selected ? 30 : 27)); renderer.setBlitOffset(100); renderer.render((int) bounds.getCenterX(), (int) bounds.getCenterY(), mouseX, mouseY, delta); - if (isHighlighted(mouseX, mouseY)) + if (isHighlighted(mouseX, mouseY)) { drawTooltip(); + } } } + @SuppressWarnings("deprecation") private void drawTooltip() { if (this.minecraft.options.advancedItemTooltips) - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, ChatFormat.DARK_GRAY.toString() + category.getIdentifier().toString(), ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier()))); + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, ChatFormat.DARK_GRAY.toString() + category.getIdentifier().toString(), ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier())).setSpecialRenderer(tooltipRenderer)); else - ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier()))); + ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier())).setSpecialRenderer(tooltipRenderer)); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index e6dd37dfd..ce60a55a9 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -235,6 +235,13 @@ public class DefaultPlugin implements REIPluginEntry { @Override public void registerOthers(RecipeHelper recipeHelper) { + recipeHelper.registerWorkingStations(CRAFTING, Items.CRAFTING_TABLE.getDefaultStack(), Items.CAKE.getDefaultStack()); + recipeHelper.registerWorkingStations(SMELTING, Items.FURNACE.getDefaultStack()); + recipeHelper.registerWorkingStations(SMOKING, Items.SMOKER.getDefaultStack()); + recipeHelper.registerWorkingStations(BLASTING, Items.BLAST_FURNACE.getDefaultStack()); + recipeHelper.registerWorkingStations(CAMPFIRE, Items.CAMPFIRE.getDefaultStack()); + recipeHelper.registerWorkingStations(BREWING, Items.BREWING_STAND.getDefaultStack()); + recipeHelper.registerWorkingStations(STONE_CUTTING, Items.STONECUTTER.getDefaultStack()); recipeHelper.registerRecipeVisibilityHandler(new DisplayVisibilityHandler() { @Override public DisplayVisibility handleDisplay(RecipeCategory category, RecipeDisplay display) { diff --git a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java index 9796672a7..2e16d5cce 100644 --- a/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java +++ b/src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java @@ -75,6 +75,7 @@ public class ClothScreenRegistry { action.addOption(new StringListEntry("text.rei.give_command", RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand, RESET, () -> "/give {player_name} {item_identifier}{nbt} {count}", s -> RoughlyEnoughItemsCore.getConfigManager().getConfig().giveCommand = s, () -> getConfigTooltip("give_command"))); action.addOption(new StringListEntry("text.rei.gamemode_command", RoughlyEnoughItemsCore.getConfigManager().getConfig().gamemodeCommand, RESET, () -> "/gamemode {gamemode}", s -> RoughlyEnoughItemsCore.getConfigManager().getConfig().gamemodeCommand = s, () -> getConfigTooltip("gamemode_command"))); action.addOption(new StringListEntry("text.rei.weather_command", RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand, RESET, () -> "/weather {weather}", s -> RoughlyEnoughItemsCore.getConfigManager().getConfig().weatherCommand = s, () -> getConfigTooltip("weather_command"))); + action.addOption(new BooleanListEntry("text.rei.config.register_in_other_thread", RoughlyEnoughItemsCore.getConfigManager().getConfig().registerRecipesInAnotherThread, RESET, () -> true, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().registerRecipesInAnotherThread = bool, () -> getConfigTooltip("register_in_other_thread"))); ConfigScreenBuilder.CategoryBuilder modules = builder.addCategory("text.rei.config.modules"); modules.addOption(new BooleanListEntry("text.rei.config.enable_craftable_only", RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton, RESET, () -> true, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().enableCraftableOnlyButton = bool, () -> getConfigTooltip("enable_craftable_only"))); modules.addOption(new BooleanListEntry("text.rei.config.enable_util_buttons", RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons, RESET, () -> false, bool -> RoughlyEnoughItemsCore.getConfigManager().getConfig().showUtilsButtons = bool, () -> getConfigTooltip("enable_util_buttons"))); -- cgit