From b6f36732c933c6d406d730e11cd3b7ed390b95ae Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 18 Aug 2019 17:02:08 +0800 Subject: Speed Craft -> Auto Craft --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 3 +- .../java/me/shedaniel/rei/api/RecipeCategory.java | 1 + .../java/me/shedaniel/rei/api/RecipeHelper.java | 6 +-- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 3 +- .../rei/gui/VillagerRecipeViewingScreen.java | 2 +- .../rei/gui/widget/RecipeArrowWidget.java | 46 ++++++++++++++++++++++ .../me/shedaniel/rei/impl/RecipeHelperImpl.java | 6 +-- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 31 +-------------- .../plugin/blasting/DefaultBlastingCategory.java | 6 +-- .../rei/plugin/brewing/DefaultBrewingCategory.java | 4 +- .../plugin/campfire/DefaultCampfireCategory.java | 4 +- .../plugin/crafting/DefaultCraftingCategory.java | 2 +- .../plugin/smelting/DefaultSmeltingCategory.java | 6 +-- .../rei/plugin/smoking/DefaultSmokingCategory.java | 6 +-- 14 files changed, 74 insertions(+), 52 deletions(-) create mode 100644 src/main/java/me/shedaniel/rei/gui/widget/RecipeArrowWidget.java (limited to 'src/main/java/me') diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index e6e8ee9ca..76ecf571d 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -9,6 +9,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.cloth.hooks.ClothClientHooks; +import me.shedaniel.math.impl.PointHelper; import me.shedaniel.rei.api.*; import me.shedaniel.rei.api.plugins.REIPluginV0; import me.shedaniel.rei.gui.ContainerScreenOverlay; @@ -254,7 +255,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { }); ClothClientHooks.SCREEN_MOUSE_SCROLLED.register((minecraftClient, screen, v, v1, v2) -> { if (screen instanceof AbstractContainerScreen) - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().isInside(ClientUtils.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(v, v1, v2)) + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().isInside(PointHelper.fromMouse()) && ScreenHelper.getLastOverlay().mouseScrolled(v, v1, v2)) return ActionResult.SUCCESS; return ActionResult.PASS; }); diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index aadd126e1..233cf4553 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -117,6 +117,7 @@ public interface RecipeCategory { * * @return the amount of recipes, returns -1 if not fixed */ + @Deprecated default int getFixedRecipesPerPage() { return -1; } diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java index 5d76eb70e..3ef78f603 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java @@ -123,7 +123,7 @@ public interface RecipeHelper { * @param category the category of the display * @return the optional of speed crafting button area */ - Optional getSpeedCraftButtonArea(RecipeCategory category); + Optional getAutoCraftButtonArea(RecipeCategory category); /** * Registers a speed crafting button area @@ -131,7 +131,7 @@ public interface RecipeHelper { * @param category the category of the button area * @param rectangle the button area */ - void registerSpeedCraftButtonArea(Identifier category, ButtonAreaSupplier rectangle); + void registerAutoCraftButtonArea(Identifier category, ButtonAreaSupplier rectangle); /** * Removes the speed crafting button @@ -139,7 +139,7 @@ public interface RecipeHelper { * @param category the category of the button */ default void removeSpeedCraftButton(Identifier category) { - registerSpeedCraftButtonArea(category, bounds -> null); + registerAutoCraftButtonArea(category, bounds -> null); } /** diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 4cd8aa9c6..664c08a33 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -269,7 +269,7 @@ public class RecipeViewingScreen extends Screen { tab.setRenderer(categories.get(j), categories.get(j).getIcon(), categories.get(j).getCategoryName(), tab.getId() + categoryPages * TABS_PER_PAGE == categories.indexOf(selectedCategory)); } } - Optional supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory); + Optional supplier = RecipeHelper.getInstance().getAutoCraftButtonArea(selectedCategory); int recipeHeight = selectedCategory.getDisplayHeight(); List currentDisplayed = getCurrentDisplayed(); for (int i = 0; i < currentDisplayed.size(); i++) { @@ -346,6 +346,7 @@ public class RecipeViewingScreen extends Screen { return categoryPages; } + @SuppressWarnings("deprecation") private int getRecipesPerPage() { if (selectedCategory.getFixedRecipesPerPage() > 0) return selectedCategory.getFixedRecipesPerPage() - 1; diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index 8face20de..a2b0e86d8 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -131,7 +131,7 @@ public class VillagerRecipeViewingScreen extends Screen { Rectangle recipeBounds = new Rectangle(bounds.x + 100 + (guiWidth - 100) / 2 - category.getDisplayWidth(display) / 2, bounds.y + bounds.height / 2 - category.getDisplayHeight() / 2, category.getDisplayWidth(display), category.getDisplayHeight()); List setupDisplay = category.setupDisplay(() -> display, recipeBounds); this.widgets.addAll(setupDisplay); - Optional supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(category); + Optional supplier = RecipeHelper.getInstance().getAutoCraftButtonArea(category); if (supplier.isPresent() && supplier.get().get(recipeBounds) != null) this.widgets.add(new AutoCraftingButtonWidget(recipeBounds, supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display, setupDisplay, category)); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeArrowWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeArrowWidget.java new file mode 100644 index 000000000..daecf8e8a --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeArrowWidget.java @@ -0,0 +1,46 @@ +package me.shedaniel.rei.gui.widget; + +import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.math.api.Rectangle; +import me.shedaniel.rei.plugin.DefaultPlugin; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Element; +import net.minecraft.client.render.GuiLighting; +import net.minecraft.util.math.MathHelper; + +import java.util.Collections; +import java.util.List; + +public class RecipeArrowWidget extends WidgetWithBounds { + + private int x, y; + private boolean animated; + + public RecipeArrowWidget(int x, int y, boolean animated) { + this.x = x; + this.y = y; + this.animated = animated; + } + + @Override + public Rectangle getBounds() { + return new Rectangle(x, y, 24, 17); + } + + @Override + public void render(int mouseX, int mouseY, float delta) { + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiLighting.disable(); + MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); + blit(x, y, 106, 91, 24, 17); + if (animated) { + int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); + blit(x, y, 82, 91, width, 17); + } + } + + @Override + public List children() { + return Collections.emptyList(); + } +} diff --git a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java index 42eaba8dd..9bbdf1ed1 100644 --- a/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/RecipeHelperImpl.java @@ -195,14 +195,14 @@ public class RecipeHelperImpl implements RecipeHelper { } @Override - public Optional getSpeedCraftButtonArea(RecipeCategory category) { + public Optional getAutoCraftButtonArea(RecipeCategory category) { if (!speedCraftAreaSupplierMap.containsKey(category.getIdentifier())) return Optional.ofNullable(bounds -> new Rectangle(bounds.getMaxX() - 16, bounds.getMaxY() - 16, 10, 10)); return Optional.ofNullable(speedCraftAreaSupplierMap.get(category.getIdentifier())); } @Override - public void registerSpeedCraftButtonArea(Identifier category, ButtonAreaSupplier rectangle) { + public void registerAutoCraftButtonArea(Identifier category, ButtonAreaSupplier rectangle) { if (rectangle == null) { if (speedCraftAreaSupplierMap.containsKey(category)) speedCraftAreaSupplierMap.remove(category); @@ -213,7 +213,7 @@ public class RecipeHelperImpl implements RecipeHelper { @SuppressWarnings("deprecation") @Override public void registerDefaultSpeedCraftButtonArea(Identifier category) { - registerSpeedCraftButtonArea(category, bounds -> new Rectangle(bounds.getMaxX() - 16, bounds.getMaxY() - 16, 10, 10)); + registerAutoCraftButtonArea(category, bounds -> new Rectangle(bounds.getMaxX() - 16, bounds.getMaxY() - 16, 10, 10)); } @SuppressWarnings("deprecation") diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index edf87f39d..1a915e9bc 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -259,33 +259,6 @@ public class DefaultPlugin implements REIPluginV0 { return -1.0f; } }); - // displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler() { - // @Override - // public Class getBaseSupportedClass() { - // return CreativeInventoryScreen.class; - // } - // - // @Override - // public Rectangle getLeftBounds(CreativeInventoryScreen screen) { - // return new Rectangle(2, 0, ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() - 2, MinecraftClient.getInstance().window.getScaledHeight()); - // } - // - // @Override - // public Rectangle getRightBounds(CreativeInventoryScreen screen) { - // int startX = ScreenHelper.getLastContainerScreenHooks().rei_getContainerLeft() + ScreenHelper.getLastContainerScreenHooks().rei_getContainerWidth(); - // return new Rectangle(startX, 0, MinecraftClient.getInstance().window.getScaledWidth() - startX - 2, MinecraftClient.getInstance().window.getScaledHeight()); - // } - // - // @Override - // public Rectangle getItemListArea(Rectangle rectangle) { - // return new Rectangle(rectangle.x + 1, rectangle.y + 24, rectangle.width - 2, rectangle.height - (RoughlyEnoughItemsCore.getConfigManager().getConfig().isSideSearchField() ? 27 + 22 : 27)); - // } - // - // @Override - // public float getPriority() { - // return -0.9f; - // } - // }); } @Override @@ -301,8 +274,8 @@ public class DefaultPlugin implements REIPluginV0 { recipeHelper.registerWorkingStations(BREWING, new ItemStack(Items.BREWING_STAND)); recipeHelper.registerWorkingStations(STONE_CUTTING, new ItemStack(Items.STONECUTTER)); recipeHelper.registerWorkingStations(COMPOSTING, new ItemStack(Items.COMPOSTER)); - recipeHelper.registerSpeedCraftButtonArea(COMPOSTING, bounds -> null); - recipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, bounds -> new Rectangle(bounds.getMaxX() - 16, bounds.y + 6, 10, 10)); + recipeHelper.registerAutoCraftButtonArea(CAMPFIRE, bounds -> null); + recipeHelper.registerAutoCraftButtonArea(COMPOSTING, bounds -> null); recipeHelper.registerScreenClickArea(new Rectangle(88, 32, 28, 23), CraftingTableScreen.class, CRAFTING); recipeHelper.registerScreenClickArea(new Rectangle(137, 29, 10, 13), InventoryScreen.class, CRAFTING); recipeHelper.registerScreenClickArea(new Rectangle(97, 16, 14, 30), BrewingStandScreen.class, BREWING); diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java index 3e7e8ae05..d012f9592 100644 --- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java @@ -12,6 +12,7 @@ import me.shedaniel.math.api.Rectangle; import me.shedaniel.rei.api.Renderer; import me.shedaniel.rei.api.TransferRecipeCategory; import me.shedaniel.rei.gui.renderers.RecipeRenderer; +import me.shedaniel.rei.gui.widget.RecipeArrowWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.SlotWidget; import me.shedaniel.rei.gui.widget.Widget; @@ -68,10 +69,9 @@ public class DefaultBlastingCategory implements TransferRecipeCategory> input = recipeDisplay.getInput(); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStacks(input.get(0)), true, true, true)); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(recipeDisplay.getFuel()), true, true, true) { @@ -89,7 +89,7 @@ public class DefaultBlastingCategory implements TransferRecipeCategory getExtraItemToolTips(ItemStack stack) { return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.input")); } }); - widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 1, Renderer.fromItemStacks(recipeDisplay.getInput().get(1)), false, true, true) { + widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, Renderer.fromItemStacks(recipeDisplay.getInput().get(1)), false, true, true) { @Override protected List getExtraItemToolTips(ItemStack stack) { return Collections.singletonList(Formatting.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant")); diff --git a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java index df95334e5..8013c8f6f 100644 --- a/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java @@ -10,6 +10,7 @@ import me.shedaniel.math.api.Point; import me.shedaniel.math.api.Rectangle; import me.shedaniel.rei.api.RecipeCategory; import me.shedaniel.rei.api.Renderer; +import me.shedaniel.rei.gui.widget.RecipeArrowWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.SlotWidget; import me.shedaniel.rei.gui.widget.Widget; @@ -58,13 +59,12 @@ public class DefaultCampfireCategory implements RecipeCategory> input = recipeDisplaySupplier.get().getInput(); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStacks(input.get(0)), true, true, true)); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(recipeDisplaySupplier.get().getFuel()), true, true, true) { @@ -88,7 +88,7 @@ public class DefaultSmeltingCategory implements TransferRecipeCategory> input = recipeDisplaySupplier.get().getInput(); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Renderer.fromItemStacks(input.get(0)), true, true, true)); widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, Renderer.fromItemStacks(recipeDisplaySupplier.get().getFuel()), true, true, true) { @@ -88,7 +88,7 @@ public class DefaultSmokingCategory implements TransferRecipeCategory