From 69a531030df74768d86025cd5668e0418a3c1f07 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Jun 2019 22:10:42 +0800 Subject: stuff --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 2 - .../me/shedaniel/rei/api/BaseBoundsHandler.java | 4 +- .../java/me/shedaniel/rei/api/PluginFunction.java | 1 - src/main/java/me/shedaniel/rei/api/REIPlugin.java | 21 ---- .../java/me/shedaniel/rei/api/REIPluginEntry.java | 9 -- .../java/me/shedaniel/rei/api/RecipeDisplay.java | 7 ++ .../rei/client/BaseBoundsHandlerImpl.java | 12 +- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 2 +- .../rei/gui/widget/AutoCraftingButtonWidget.java | 6 +- .../listeners/AbstractInventoryScreenHooks.java | 11 ++ .../rei/mixin/MixinBrewingRecipeRegistry.java | 4 +- .../me/shedaniel/rei/plugin/BrewingRecipe.java | 23 ---- .../rei/plugin/DefaultAutoCraftingPlugin.java | 34 ++++++ .../rei/plugin/DefaultBlastingCategory.java | 84 -------------- .../rei/plugin/DefaultBlastingDisplay.java | 64 ----------- .../rei/plugin/DefaultBrewingCategory.java | 104 ----------------- .../rei/plugin/DefaultBrewingDisplay.java | 59 ---------- .../rei/plugin/DefaultCampfireCategory.java | 71 ------------ .../rei/plugin/DefaultCampfireDisplay.java | 69 ------------ .../rei/plugin/DefaultCompostingCategory.java | 123 -------------------- .../rei/plugin/DefaultCompostingDisplay.java | 68 ----------- .../rei/plugin/DefaultCraftingCategory.java | 107 ------------------ .../rei/plugin/DefaultCraftingDisplay.java | 27 ----- .../shedaniel/rei/plugin/DefaultCustomDisplay.java | 79 ------------- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 34 +++--- .../plugin/DefaultPotionEffectExclusionZones.java | 39 +++++++ .../plugin/DefaultRecipeBookExclusionZones.java | 30 +++++ .../shedaniel/rei/plugin/DefaultShapedDisplay.java | 61 ---------- .../rei/plugin/DefaultShapelessDisplay.java | 64 ----------- .../rei/plugin/DefaultSmeltingCategory.java | 83 -------------- .../rei/plugin/DefaultSmeltingDisplay.java | 64 ----------- .../rei/plugin/DefaultSmokingCategory.java | 83 -------------- .../rei/plugin/DefaultSmokingDisplay.java | 64 ----------- .../rei/plugin/DefaultStoneCuttingCategory.java | 84 -------------- .../rei/plugin/DefaultStoneCuttingDisplay.java | 63 ----------- .../plugin/blasting/DefaultBlastingCategory.java | 85 ++++++++++++++ .../plugin/blasting/DefaultBlastingDisplay.java | 65 +++++++++++ .../rei/plugin/brewing/BrewingRecipe.java | 23 ++++ .../rei/plugin/brewing/DefaultBrewingCategory.java | 105 +++++++++++++++++ .../rei/plugin/brewing/DefaultBrewingDisplay.java | 60 ++++++++++ .../plugin/campfire/DefaultCampfireCategory.java | 72 ++++++++++++ .../plugin/campfire/DefaultCampfireDisplay.java | 70 ++++++++++++ .../composting/DefaultCompostingCategory.java | 124 +++++++++++++++++++++ .../composting/DefaultCompostingDisplay.java | 69 ++++++++++++ .../plugin/crafting/DefaultCraftingCategory.java | 108 ++++++++++++++++++ .../plugin/crafting/DefaultCraftingDisplay.java | 28 +++++ .../rei/plugin/crafting/DefaultCustomDisplay.java | 79 +++++++++++++ .../rei/plugin/crafting/DefaultShapedDisplay.java | 60 ++++++++++ .../plugin/crafting/DefaultShapelessDisplay.java | 64 +++++++++++ .../plugin/smelting/DefaultSmeltingCategory.java | 84 ++++++++++++++ .../plugin/smelting/DefaultSmeltingDisplay.java | 65 +++++++++++ .../rei/plugin/smoking/DefaultSmokingCategory.java | 84 ++++++++++++++ .../rei/plugin/smoking/DefaultSmokingDisplay.java | 65 +++++++++++ .../stonecutting/DefaultStoneCuttingCategory.java | 85 ++++++++++++++ .../stonecutting/DefaultStoneCuttingDisplay.java | 64 +++++++++++ 55 files changed, 1615 insertions(+), 1504 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/api/REIPlugin.java create mode 100644 src/main/java/me/shedaniel/rei/listeners/AbstractInventoryScreenHooks.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCompostingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingCategory.java delete mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/brewing/BrewingRecipe.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/campfire/DefaultCampfireDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCraftingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/crafting/DefaultCustomDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapedDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/crafting/DefaultShapelessDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingDisplay.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/stonecutting/DefaultStoneCuttingDisplay.java (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 24991284b..ca1bef9b0 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -147,8 +147,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { private void discoverPluginEntries() { for(REIPluginEntry reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins", REIPluginEntry.class)) { try { - if (reiPlugin instanceof REIPlugin) - throw new IllegalStateException("REI Plugins on Entry Points should not implement REIPlugin"); registerPlugin(reiPlugin.getPluginIdentifier(), reiPlugin); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java b/src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java index 3dea674fe..7d311609f 100644 --- a/src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java +++ b/src/main/java/me/shedaniel/rei/api/BaseBoundsHandler.java @@ -18,7 +18,7 @@ public interface BaseBoundsHandler extends DisplayHelper.DisplayBoundsHandler getCurrentExclusionZones(Class currentScreenClass, boolean isOnRightSide); + List getCurrentExclusionZones(Class currentScreenClass, boolean isOnRightSide); /** * Register an exclusion zone @@ -26,7 +26,7 @@ public interface BaseBoundsHandler extends DisplayHelper.DisplayBoundsHandler screenClass, ExclusionZoneSupplier supplier); + void registerExclusionZones(Class screenClass, ExclusionZoneSupplier supplier); public static interface ExclusionZoneSupplier { /** diff --git a/src/main/java/me/shedaniel/rei/api/PluginFunction.java b/src/main/java/me/shedaniel/rei/api/PluginFunction.java index 30844767f..ec20c317a 100644 --- a/src/main/java/me/shedaniel/rei/api/PluginFunction.java +++ b/src/main/java/me/shedaniel/rei/api/PluginFunction.java @@ -9,7 +9,6 @@ public enum PluginFunction { REGISTER_ITEMS, REGISTER_CATEGORIES, REGISTER_RECIPE_DISPLAYS, - REGISTER_SPEED_CRAFT, REGISTER_BOUNDS, REGISTER_OTHERS; } diff --git a/src/main/java/me/shedaniel/rei/api/REIPlugin.java b/src/main/java/me/shedaniel/rei/api/REIPlugin.java deleted file mode 100644 index 77ee28d9d..000000000 --- a/src/main/java/me/shedaniel/rei/api/REIPlugin.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.api; - -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import net.minecraft.util.Identifier; - -/** - * Get base class of a REI plugin. - * This class has been replaced by {@link REIPluginEntry} - */ -@Deprecated -public interface REIPlugin extends REIPluginEntry { - @Override - default Identifier getPluginIdentifier() { - return RoughlyEnoughItemsCore.getPluginIdentifier(this).orElse(Identifier.ofNullable("null")); - } -} diff --git a/src/main/java/me/shedaniel/rei/api/REIPluginEntry.java b/src/main/java/me/shedaniel/rei/api/REIPluginEntry.java index 87876b46e..2d0b2f236 100644 --- a/src/main/java/me/shedaniel/rei/api/REIPluginEntry.java +++ b/src/main/java/me/shedaniel/rei/api/REIPluginEntry.java @@ -40,15 +40,6 @@ public interface REIPluginEntry { */ default void registerRecipeDisplays(RecipeHelper recipeHelper) {} - /** - * Not called anymore! - * - * @param recipeHelper the helper class - * @see REIPluginEntry#registerOthers(RecipeHelper) - */ - @Deprecated - default void registerSpeedCraft(RecipeHelper recipeHelper) {} - /** * Registers bounds handlers * diff --git a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java index 26739d4cf..302667efd 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java @@ -50,4 +50,11 @@ public interface RecipeDisplay { return Optional.empty(); } + /** + * @return the optional recipe + * @deprecated stop + */ + @Deprecated + default Optional getRecipe() {return null;} + } diff --git a/src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java b/src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java index 972fba8b3..426ccd926 100644 --- a/src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java +++ b/src/main/java/me/shedaniel/rei/client/BaseBoundsHandlerImpl.java @@ -24,15 +24,15 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { private static final Function RECTANGLE_STRING_FUNCTION = rectangle -> rectangle.x + "," + rectangle.y + "," + rectangle.width + "," + rectangle.height; private static final Comparator RECTANGLE_COMPARATOR = BaseBoundsHandlerImpl::compare; - private static final Comparator, Float>, ExclusionZoneSupplier>> LIST_PAIR_COMPARATOR; + private static final Comparator, Float>, ExclusionZoneSupplier>> LIST_PAIR_COMPARATOR; static { - Comparator, Float>, ExclusionZoneSupplier>> comparator = Comparator.comparingDouble(value -> value.getLeft().getRight()); + Comparator, Float>, ExclusionZoneSupplier>> comparator = Comparator.comparingDouble(value -> value.getLeft().getRight()); LIST_PAIR_COMPARATOR = comparator.reversed(); } private String lastArea = null; - private List, Float>, ExclusionZoneSupplier>> list = Lists.newArrayList(); + private List, Float>, ExclusionZoneSupplier>> list = Lists.newArrayList(); private static int compare(Rectangle o1, Rectangle o2) {return RECTANGLE_STRING_FUNCTION.apply(o1).compareTo(RECTANGLE_STRING_FUNCTION.apply(o2));} @@ -93,8 +93,8 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { return ActionResult.PASS; } - public List getCurrentExclusionZones(Class currentScreenClass, boolean isOnRightSide) { - List, Float>, ExclusionZoneSupplier>> only = list.stream().filter(pair -> pair.getLeft().getLeft().isAssignableFrom(currentScreenClass)).collect(Collectors.toList()); + public List getCurrentExclusionZones(Class currentScreenClass, boolean isOnRightSide) { + List, Float>, ExclusionZoneSupplier>> only = list.stream().filter(pair -> pair.getLeft().getLeft().isAssignableFrom(currentScreenClass)).collect(Collectors.toList()); only.sort(LIST_PAIR_COMPARATOR); List rectangles = Lists.newArrayList(); only.forEach(pair -> rectangles.addAll(pair.getRight().apply(isOnRightSide))); @@ -102,7 +102,7 @@ public class BaseBoundsHandlerImpl implements BaseBoundsHandler { } @Override - public void registerExclusionZones(Class screenClass, ExclusionZoneSupplier supplier) { + public void registerExclusionZones(Class screenClass, ExclusionZoneSupplier supplier) { list.add(new Pair<>(new Pair<>(screenClass, 0f), supplier)); } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index cda1acb3e..d28f2c9f1 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -280,7 +280,7 @@ public class RecipeViewingScreen extends Screen { final Rectangle displayBounds = new Rectangle((int) getBounds().getCenterX() - displayWidth / 2, getBounds().y + 40 + recipeHeight * i + 7 * i, displayWidth, recipeHeight); widgets.addAll(selectedCategory.setupDisplay(displaySupplier, displayBounds)); if (supplier.isPresent() && supplier.get().get(displayBounds) != null) - widgets.add(new SpeedCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), functional, displaySupplier)); + widgets.add(new AutoCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier)); } if (choosePageActivated) recipeChoosePageWidget = new RecipeChoosePageWidget(this, page, getTotalPages(selectedCategory)); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java index d62ac654f..2af5b1ea7 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java @@ -18,13 +18,13 @@ import java.util.function.Supplier; public class AutoCraftingButtonWidget extends ButtonWidget { - private final Supplier displaySupplier; + private final Supplier> displaySupplier; private String extraTooltip; - private AbstractContainerScreen containerScreen; + private AbstractContainerScreen containerScreen; public AutoCraftingButtonWidget(Rectangle rectangle, String text, Supplier displaySupplier) { super(rectangle, text); - this.displaySupplier = displaySupplier; + this.displaySupplier = () -> displaySupplier.get(); Optional recipe = displaySupplier.get().getRecipeLocation(); extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", ChatFormat.GRAY.toString(), recipe.get().toString()) : ""; this.containerScreen = ScreenHelper.getLastContainerScreen(); diff --git a/src/main/java/me/shedaniel/rei/listeners/AbstractInventoryScreenHooks.java b/src/main/java/me/shedaniel/rei/listeners/AbstractInventoryScreenHooks.java new file mode 100644 index 000000000..abc9a3288 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/listeners/AbstractInventoryScreenHooks.java @@ -0,0 +1,11 @@ +package me.shedaniel.rei.listeners; + +import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AbstractInventoryScreen.class) +public interface AbstractInventoryScreenHooks { + @Accessor("offsetGuiForEffects") + boolean rei_doesOffsetGuiForEffects(); +} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java index e7644c0ca..993782324 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java @@ -6,8 +6,8 @@ package me.shedaniel.rei.mixin; import com.google.common.collect.Lists; -import me.shedaniel.rei.plugin.BrewingRecipe; -import me.shedaniel.rei.plugin.DefaultBrewingDisplay; +import me.shedaniel.rei.plugin.brewing.BrewingRecipe; +import me.shedaniel.rei.plugin.brewing.DefaultBrewingDisplay; import me.shedaniel.rei.plugin.DefaultPlugin; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; diff --git a/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java b/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java deleted file mode 100644 index b38f2b6a8..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import net.minecraft.item.Item; -import net.minecraft.recipe.Ingredient; - -public class BrewingRecipe { - - public final Item input; - public final Ingredient ingredient; - public final Item output; - - public BrewingRecipe(Item object_1, Ingredient ingredient_1, Item object_2) { - this.input = object_1; - this.ingredient = ingredient_1; - this.output = object_2; - } - -} \ No newline at end of file diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java new file mode 100644 index 000000000..34c088c52 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java @@ -0,0 +1,34 @@ +package me.shedaniel.rei.plugin; + +import me.shedaniel.rei.RoughlyEnoughItemsCore; +import me.shedaniel.rei.api.PluginDisabler; +import me.shedaniel.rei.api.PluginFunction; +import me.shedaniel.rei.api.REIPluginEntry; +import me.shedaniel.rei.api.RecipeHelper; +import net.minecraft.util.Identifier; + +public class DefaultAutoCraftingPlugin implements REIPluginEntry { + + public static final Identifier PLUGIN = new Identifier("roughlyenoughitems", "default_auto_crafting_plugin"); + + @Override + public Identifier getPluginIdentifier() { + return PLUGIN; + } + + @Override + public void onFirstLoad(PluginDisabler pluginDisabler) { + if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) { + pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_ITEMS); + pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_CATEGORIES); + pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_RECIPE_DISPLAYS); + pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_OTHERS); + } + } + + @Override + public void registerOthers(RecipeHelper recipeHelper) { + + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java deleted file mode 100644 index 9455eb65a..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.RecipeCategory; -import me.shedaniel.rei.api.Renderable; -import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.gui.renderables.RecipeRenderer; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; -import me.shedaniel.rei.gui.widget.SlotWidget; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.ChatFormat; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; - -import java.awt.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Supplier; - -public class DefaultBlastingCategory implements RecipeCategory { - - @Override - public Identifier getIdentifier() { - return DefaultPlugin.BLASTING; - } - - @Override - public Renderer getIcon() { - return Renderable.fromItemStack(new ItemStack(Blocks.BLAST_FURNACE)); - } - - @Override - public String getCategoryName() { - return I18n.translate("category.rei.blasting"); - } - - @Override - public RecipeRenderer getSimpleRenderer(DefaultBlastingDisplay recipe) { - return Renderable.fromRecipe(() -> Arrays.asList(recipe.getInput().get(0)), recipe::getOutput); - } - - @Override - public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { - final DefaultBlastingDisplay recipeDisplay = recipeDisplaySupplier.get(); - Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27); - List widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) { - @Override - public void render(int mouseX, int mouseY, float delta) { - super.render(mouseX, mouseY, delta); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); - blit(startPoint.x, startPoint.y, 0, 54, 82, 54); - int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f); - blit(startPoint.x + 2, startPoint.y + 21 + (14 - height), 82, 77 + (14 - height), 14, height); - int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); - blit(startPoint.x + 24, startPoint.y + 18, 82, 91, width, 17); - } - })); - List> input = recipeDisplay.getInput(); - widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, input.get(0), true, true, true)); - widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, recipeDisplay.getFuel(), true, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.smelting.fuel")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, true)); - return widgets; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java deleted file mode 100644 index 6e490c47c..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import me.shedaniel.rei.api.RecipeDisplay; -import net.minecraft.block.entity.FurnaceBlockEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.AbstractCookingRecipe; -import net.minecraft.recipe.BlastingRecipe; -import net.minecraft.util.Identifier; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -public class DefaultBlastingDisplay implements RecipeDisplay { - - private BlastingRecipe display; - private List> input; - private List output; - - public DefaultBlastingDisplay(BlastingRecipe recipe) { - this.display = recipe; - this.input = recipe.getPreviewInputs().stream().map(i -> Arrays.asList(i.getStackArray())).collect(Collectors.toList()); - this.input.add(FurnaceBlockEntity.createFuelTimeMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); - this.output = Collections.singletonList(recipe.getOutput()); - } - - @Override - public Optional getRecipeLocation() { - return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); - } - - @Override - public List> getInput() { - return input; - } - - public List getFuel() { - return input.get(1); - } - - @Override - public List getOutput() { - return output; - } - - @Override - public Identifier getRecipeCategory() { - return DefaultPlugin.BLASTING; - } - - @Override - public List> getRequiredItems() { - return input; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java deleted file mode 100644 index df96cb8b8..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.RecipeCategory; -import me.shedaniel.rei.api.Renderable; -import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; -import me.shedaniel.rei.gui.widget.SlotWidget; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.ChatFormat; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; - -import java.awt.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Supplier; - -public class DefaultBrewingCategory implements RecipeCategory { - - @Override - public Identifier getIdentifier() { - return DefaultPlugin.BREWING; - } - - @Override - public Renderer getIcon() { - return Renderable.fromItemStack(new ItemStack(Blocks.BREWING_STAND)); - } - - @Override - public String getCategoryName() { - return I18n.translate("category.rei.brewing"); - } - - @Override - public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { - final DefaultBrewingDisplay recipeDisplay = recipeDisplaySupplier.get(); - Point startPoint = new Point((int) bounds.getCenterX() - 52, (int) bounds.getCenterY() - 29); - List widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) { - @Override - public void render(int mouseX, int mouseY, float delta) { - super.render(mouseX, mouseY, delta); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); - blit(startPoint.x, startPoint.y, 0, 108, 103, 59); - int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 18d) / 1f); - blit(startPoint.x + 44, startPoint.y + 28, 103, 163, width, 4); - } - })); - widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Arrays.asList(new ItemStack(Items.BLAZE_POWDER)), false, true, true)); - widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, recipeDisplay.getInput().get(0), false, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.brewing.input")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 1, recipeDisplay.getInput().get(1), false, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.brewing.reactant")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 40, startPoint.y + 35, recipeDisplay.getOutput(0), false, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 42, recipeDisplay.getOutput(1), false, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); - widgets.add(new SlotWidget(startPoint.x + 86, startPoint.y + 35, recipeDisplay.getOutput(2), false, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - return Collections.singletonList(ChatFormat.YELLOW.toString() + I18n.translate("category.rei.brewing.result")); - } - }); - return widgets; - } - - @Override - public boolean checkTags() { - return true; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java deleted file mode 100644 index 80c49b53e..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.google.common.collect.Lists; -import me.shedaniel.rei.api.RecipeDisplay; -import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import net.minecraft.util.Identifier; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class DefaultBrewingDisplay implements RecipeDisplay { - - private ItemStack input, output; - private Ingredient reactant; - - public DefaultBrewingDisplay(ItemStack input, Ingredient reactant, ItemStack output) { - this.input = input; - this.reactant = reactant; - this.output = output; - } - - @Override - public List> getInput() { - return Lists.newArrayList(Collections.singletonList(input), Arrays.asList(reactant.getStackArray())); - } - - @Override - public List getOutput() { - return Collections.singletonList(output); - } - - @Override - public Identifier getRecipeCategory() { - return DefaultPlugin.BREWING; - } - - public List getOutput(int slot) { - List stack = new ArrayList<>(); - for(int i = 0; i < slot * 2; i++) - stack.add(new ItemStack(Blocks.AIR)); - for(int i = 0; i < 6 - slot * 2; i++) - stack.addAll(getOutput()); - return stack; - } - - @Override - public List> getRequiredItems() { - return Collections.singletonList(Collections.singletonList(ItemStack.EMPTY)); - } -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java deleted file mode 100644 index c725ad7a5..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.RecipeCategory; -import me.shedaniel.rei.api.Renderable; -import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; -import me.shedaniel.rei.gui.widget.SlotWidget; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; - -import java.awt.*; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Supplier; - -public class DefaultCampfireCategory implements RecipeCategory { - - @Override - public Identifier getIdentifier() { - return DefaultPlugin.CAMPFIRE; - } - - @Override - public Renderer getIcon() { - return Renderable.fromItemStack(new ItemStack(Blocks.CAMPFIRE)); - } - - @Override - public String getCategoryName() { - return I18n.translate("category.rei.campfire"); - } - - @Override - public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { - Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27); - List widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) { - @Override - public void render(int mouseX, int mouseY, float delta) { - super.render(mouseX, mouseY, delta); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); - blit(startPoint.x, startPoint.y, 0, 167, 82, 54); - int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f); - blit(startPoint.x + 2, startPoint.y + 31 + (14 - height), 82, 77 + (14 - height), 14, height); - int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); - blit(startPoint.x + 24, startPoint.y + 18, 82, 91, width, 17); - String text = I18n.translate("category.rei.campfire.time", MathHelper.floor(recipeDisplaySupplier.get().getCookTime() / 20d)); - int length = MinecraftClient.getInstance().textRenderer.getStringWidth(text); - MinecraftClient.getInstance().textRenderer.draw(text, bounds.x + bounds.width - length - 5, startPoint.y + 54 - 8, 4210752); - } - })); - widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 11, recipeDisplaySupplier.get().getInput().get(0), true, true, true)); - widgets.add(new SlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplaySupplier.get().getOutput(), false, true, true)); - return widgets; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java deleted file mode 100644 index 86ab7a26a..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import me.shedaniel.rei.api.RecipeDisplay; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.AbstractCookingRecipe; -import net.minecraft.recipe.CampfireCookingRecipe; -import net.minecraft.recipe.Ingredient; -import net.minecraft.util.DefaultedList; -import net.minecraft.util.Identifier; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -public class DefaultCampfireDisplay implements RecipeDisplay { - - private List> inputs; - private List output; - private int cookTime; - private CampfireCookingRecipe display; - - public DefaultCampfireDisplay(CampfireCookingRecipe recipe) { - this(recipe.getPreviewInputs(), recipe.getOutput(), recipe.getCookTime()); - this.display = recipe; - } - - public DefaultCampfireDisplay(DefaultedList ingredients, ItemStack output, int cookTime) { - this.inputs = ingredients.stream().map(i -> Arrays.asList(i.getStackArray())).collect(Collectors.toList()); - this.output = Collections.singletonList(output); - this.cookTime = cookTime; - } - - public int getCookTime() { - return cookTime; - } - - @Override - public Optional getRecipeLocation() { - return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); - } - - @Override - public List> getInput() { - return inputs; - } - - @Override - public List getOutput() { - return this.output; - } - - @Override - public Identifier getRecipeCategory() { - return DefaultPlugin.CAMPFIRE; - } - - @Override - public List> getRequiredItems() { - return getInput(); - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingCategory.java deleted file mode 100644 index 39c4be7f1..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingCategory.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.google.common.collect.Lists; -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.*; -import me.shedaniel.rei.gui.renderables.RecipeRenderer; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; -import me.shedaniel.rei.gui.widget.SlotWidget; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; - -import java.awt.*; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Supplier; - -public class DefaultCompostingCategory implements RecipeCategory { - - @Override - public Identifier getIdentifier() { - return DefaultPlugin.COMPOSTING; - } - - @Override - public Renderer getIcon() { - return Renderable.fromItemStack(new ItemStack(Blocks.COMPOSTER)); - } - - @Override - public String getCategoryName() { - return I18n.translate("category.rei.composting"); - } - - @Override - public RecipeRenderer getSimpleRenderer(DefaultCompostingDisplay recipe) { - return new RecipeRenderer() { - @Override - public int getHeight() { - return 10 + MinecraftClient.getInstance().textRenderer.fontHeight; - } - - @Override - public void render(int x, int y, double mouseX, double mouseY, float delta) { - MinecraftClient.getInstance().textRenderer.draw(I18n.translate("text.rei.composting.page", recipe.getPage() + 1), x + 5, y + 6, -1); - } - }; - } - - @Override - public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { - List widgets = Lists.newArrayList(); - Point startingPoint = new Point(bounds.x + bounds.width - 55, bounds.y + 110); - widgets.add(new RecipeBaseWidget(bounds) { - @Override - public void render(int mouseX, int mouseY, float partialTicks) { - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); - this.blit(startingPoint.x, startingPoint.y, 28, 221, 55, 26); - } - }); - List stacks = new LinkedList<>(recipeDisplaySupplier.get().getItemsByOrder()); - int i = 0; - for(int y = 0; y < 6; y++) - for(int x = 0; x < 8; x++) { - widgets.add(new SlotWidget((int) bounds.getCenterX() - 72 + x * 18, bounds.y + y * 18, stacks.size() > i ? Arrays.asList(stacks.get(i).asItem().getDefaultStack()) : Lists.newArrayList(), true, true, true) { - @Override - protected List getExtraToolTips(ItemStack stack) { - final List[] thing = new List[]{null}; - recipeDisplaySupplier.get().getInputMap().forEach((itemProvider, aFloat) -> { - if (itemProvider.asItem().equals(stack.getItem())) - thing[0] = Arrays.asList(I18n.translate("text.rei.composting.chance", MathHelper.fastFloor(aFloat * 100))); - }); - if (thing[0] != null) - return thing[0]; - return super.getExtraToolTips(stack); - } - }); - i++; - } - widgets.add(new SlotWidget((int) startingPoint.x + 34, startingPoint.y + 5, recipeDisplaySupplier.get().getOutput(), false, true, true)); - return widgets; - } - - @Override - public DisplaySettings getDisplaySettings() { - return new DisplaySettings() { - @Override - public int getDisplayHeight(RecipeCategory iRecipeCategory) { - return 140; - } - - @Override - public int getDisplayWidth(RecipeCategory iRecipeCategory, RecipeDisplay display) { - return 150; - } - - @Override - public int getMaximumRecipePerPage(RecipeCategory iRecipeCategory) { - return -1; - } - - @Override - public int getFixedRecipesPerPage() { - return 1; - } - }; - } - -} \ No newline at end of file diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java deleted file mode 100644 index e61e59268..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import me.shedaniel.rei.api.RecipeDisplay; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; - -import java.util.*; -import java.util.stream.Collectors; - -public class DefaultCompostingDisplay implements RecipeDisplay { - - private List order, allItems; - private Map inputMap; - private ItemStack[] output; - private int page; - - public DefaultCompostingDisplay(int page, List order, Map inputMap, List allItems, ItemStack[] output) { - this.page = page; - this.order = order; - this.inputMap = inputMap; - this.output = output; - this.allItems = allItems; - } - - public int getPage() { - return page; - } - - @Override - public List> getInput() { - List> lists = new ArrayList<>(); - allItems.stream().forEachOrdered(itemProvider -> { - lists.add(Arrays.asList(itemProvider.asItem().getDefaultStack())); - }); - return lists; - } - - public Map getInputMap() { - return inputMap; - } - - @Override - public List getOutput() { - return Arrays.asList(output); - } - - @Override - public Identifier getRecipeCategory() { - return DefaultPlugin.COMPOSTING; - } - - @Override - public List> getRequiredItems() { - return Arrays.asList(new LinkedList<>(allItems.stream().map(ItemConvertible::asItem).map(Item::getDefaultStack).collect(Collectors.toList()))); - } - - public List getItemsByOrder() { - return order; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java deleted file mode 100644 index 7bc144c6d..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.google.common.collect.Lists; -import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.RecipeCategory; -import me.shedaniel.rei.api.Renderable; -import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.gui.widget.RecipeBaseWidget; -import me.shedaniel.rei.gui.widget.SlotWidget; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.ChatFormat; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; - -import java.awt.*; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Supplier; - -public class DefaultCraftingCategory implements RecipeCategory { - - @Override - public Identifier getIdentifier() { - return DefaultPlugin.CRAFTING; - } - - @Override - public Renderer getIcon() { - return Renderable.fromItemStack(new ItemStack(Blocks.CRAFTING_TABLE)); - } - - @Override - public String getCategoryName() { - return I18n.translate("category.rei.crafting"); - } - - @Override - public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { - Point startPoint = new Point((int) bounds.getCenterX() - 58, (int) bounds.getCenterY() - 27); - List widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) { - @Override - public void render(int mouseX, int mouseY, float delta) { - super.render(mouseX, mouseY, delta); - GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); - GuiLighting.disable(); - MinecraftClient.getInstance().getTextureManager().bindTexture(DefaultPlugin.getDisplayTexture()); - blit(startPoint.x, startPoint.y, 0, 0, 116, 54); - } - })); - List> input = recipeDisplaySupplier.get().getInput(); - List slots = Lists.newArrayList(); - for(int y = 0; y < 3; y++) - for(int x = 0; x < 3; x++) - slots.add(new SlotWidget(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18, Lists.newArrayList(), true, true, true)); - for(int i = 0; i < input.size(); i++) { - if (recipeDisplaySupplier.get() instanceof DefaultShapedDisplay) { - if (!input.get(i).isEmpty()) - slots.get(getSlotWithSize(recipeDisplaySupplier.get(), i)).setItemList(input.get(i)); - } else if (!input.get(i).isEmpty()) - slots.get(i).setItemList(input.get(i)); - } - widgets.addAll(slots); - widgets.add(new SlotWidget(startPoint.x + 95, startPoint.y + 19, recipeDisplaySupplier.get().getOutput(), false, true, true) { - @Override - protected String getItemCountOverlay(ItemStack currentStack) { - if (currentStack.getAmount() == 1) - return ""; - if (currentStack.getAmount() < 1) - return ChatFormat.RED.toString() + currentStack.getAmount(); - return currentStack.getAmount() + ""; - } - }); - return widgets; - } - - private int getSlotWithSize(DefaultCraftingDisplay recipeDisplay, int num) { - if (recipeDisplay.getWidth() == 1) { - if (num == 1) - return 3; - if (num == 2) - return 6; - } - - if (recipeDisplay.getWidth() == 2) { - if (num == 2) - return 3; - if (num == 3) - return 4; - if (num == 4) - return 6; - if (num == 5) - return 7; - } - return num; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java deleted file mode 100644 index adc000178..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import me.shedaniel.rei.api.RecipeDisplay; -import net.minecraft.recipe.Recipe; -import net.minecraft.util.Identifier; - -public interface DefaultCraftingDisplay extends RecipeDisplay { - - @Override - default Identifier getRecipeCategory() { - return DefaultPlugin.CRAFTING; - } - - default public int getWidth() { - return 2; - } - - default public int getHeight() { - return 2; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java deleted file mode 100644 index 1a434e2f4..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.plugin; - -import com.google.common.collect.Lists; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; -import net.minecraft.util.Identifier; - -import java.util.List; -import java.util.Optional; - -public class DefaultCustomDisplay implements DefaultCraftingDisplay { - - private List> input; - private List output; - private Recipe possibleRecipe; - private int width, height; - - public DefaultCustomDisplay(List> input, List output, Recipe possibleRecipe) { - this.input = input; - this.output = output; - this.possibleRecipe = possibleRecipe; - List row = Lists.newArrayList(false, false, false); - List column = Lists.newArrayList(false, false, false); - for(int i = 0; i < 9; i++) - if (i < input.size()) { - List stacks = input.get(i); - if (stacks.stream().filter(stack -> !stack.isEmpty()).count() > 0) { - row.set((i - (i % 3)) / 3, true); - column.set(i % 3, true); - } - } - this.width = (int) column.stream().filter(Boolean::booleanValue).count(); - this.height = (int) row.stream().filter(Boolean::booleanValue).count(); - } - - public DefaultCustomDisplay(List> input, List output) { - this(input, output, null); - } - - public Recipe getPossibleRecipe() { - return possibleRecipe; - } - - @Override - public Optional getRecipeLocation() { - return Optional.ofNullable(possibleRecipe).map(Recipe::getId); - } - - @Override - public List> getInput() { - return input; - } - - @Override - public List getOutput() { - return output; - } - - @Override - public List> getRequiredItems() { - return input; - } - - @Override - public int getWidth() { - return width; - } - - @Override - public int getHeight() { - return height; - } - -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 243a12b89..8b095e88d 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -12,14 +12,30 @@ import me.shedaniel.rei.api.*; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.VillagerRecipeViewingScreen; -import me.shedaniel.rei.listeners.ContainerScreenHooks; +import me.shedaniel.rei.plugin.blasting.DefaultBlastingCategory; +import me.shedaniel.rei.plugin.blasting.DefaultBlastingDisplay; +import me.shedaniel.rei.plugin.brewing.DefaultBrewingCategory; +import me.shedaniel.rei.plugin.brewing.DefaultBrewingDisplay; +import me.shedaniel.rei.plugin.campfire.DefaultCampfireCategory; +import me.shedaniel.rei.plugin.campfire.DefaultCampfireDisplay; +import me.shedaniel.rei.plugin.composting.DefaultCompostingCategory; +import me.shedaniel.rei.plugin.composting.DefaultCompostingDisplay; +import me.shedaniel.rei.plugin.crafting.DefaultCraftingCategory; +import me.shedaniel.rei.plugin.crafting.DefaultCustomDisplay; +import me.shedaniel.rei.plugin.crafting.DefaultShapedDisplay; +import me.shedaniel.rei.plugin.crafting.DefaultShapelessDisplay; +import me.shedaniel.rei.plugin.smelting.DefaultSmeltingCategory; +import me.shedaniel.rei.plugin.smelting.DefaultSmeltingDisplay; +import me.shedaniel.rei.plugin.smoking.DefaultSmokingCategory; +import me.shedaniel.rei.plugin.smoking.DefaultSmokingDisplay; +import me.shedaniel.rei.plugin.stonecutting.DefaultStoneCuttingCategory; +import me.shedaniel.rei.plugin.stonecutting.DefaultStoneCuttingDisplay; import net.minecraft.block.ComposterBlock; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; +import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; -import net.minecraft.client.recipe.book.ClientRecipeBook; -import net.minecraft.container.CraftingContainer; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.item.ItemConvertible; @@ -152,16 +168,8 @@ public class DefaultPlugin implements REIPluginEntry { @Override public void registerBounds(DisplayHelper displayHelper) { - displayHelper.getBaseBoundsHandler().registerExclusionZones(AbstractContainerScreen.class, isOnRightSide -> { - if (isOnRightSide || !MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() || !(MinecraftClient.getInstance().currentScreen instanceof RecipeBookProvider) || !(ScreenHelper.getLastContainerScreen().getContainer() instanceof CraftingContainer)) - return Collections.emptyList(); - ContainerScreenHooks screenHooks = ScreenHelper.getLastContainerScreenHooks(); - List l = Lists.newArrayList(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145, screenHooks.rei_getContainerTop(), 4 + 145 + 30, screenHooks.rei_getContainerHeight())); - int size = ClientRecipeBook.getGroupsForContainer((CraftingContainer) ScreenHelper.getLastContainerScreen().getContainer()).size(); - if (size > 0) - l.add(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145 - 30, screenHooks.rei_getContainerTop(), 30, (size - 1) * 27)); - return l; - }); + displayHelper.getBaseBoundsHandler().registerExclusionZones(AbstractInventoryScreen.class, new DefaultPotionEffectExclusionZones()); + displayHelper.getBaseBoundsHandler().registerExclusionZones(RecipeBookProvider.class, new DefaultRecipeBookExclusionZones()); displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler() { @Override public Class getBaseSupportedClass() { diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java new file mode 100644 index 000000000..60df54dc0 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java @@ -0,0 +1,39 @@ +package me.shedaniel.rei.plugin; + +import com.google.common.collect.Ordering; +import me.shedaniel.rei.api.BaseBoundsHandler; +import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.listeners.AbstractInventoryScreenHooks; +import me.shedaniel.rei.listeners.ContainerScreenHooks; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; +import net.minecraft.entity.effect.StatusEffectInstance; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +public class DefaultPotionEffectExclusionZones implements BaseBoundsHandler.ExclusionZoneSupplier { + @Override + public List apply(boolean isOnRightSide) { + if (isOnRightSide || !(ScreenHelper.getLastContainerScreen() instanceof AbstractInventoryScreen) || !((AbstractInventoryScreenHooks) ScreenHelper.getLastContainerScreen()).rei_doesOffsetGuiForEffects()) + return Collections.emptyList(); + Collection activePotionEffects = MinecraftClient.getInstance().player.getStatusEffects(); + if (activePotionEffects.isEmpty()) + return Collections.emptyList(); + ContainerScreenHooks hooks = ScreenHelper.getLastContainerScreenHooks(); + List list = new ArrayList<>(); + int x = hooks.rei_getContainerLeft() - 124; + int y = hooks.rei_getContainerTop(); + int height = 33; + if (activePotionEffects.size() > 5) + height = 132 / (activePotionEffects.size() - 1); + for(StatusEffectInstance instance : Ordering.natural().sortedCopy(activePotionEffects)) { + list.add(new Rectangle(x, y, 166, height)); + y += height; + } + return list; + } +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java new file mode 100644 index 000000000..ef7c9a07a --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java @@ -0,0 +1,30 @@ +package me.shedaniel.rei.plugin; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.BaseBoundsHandler; +import me.shedaniel.rei.client.ScreenHelper; +import me.shedaniel.rei.listeners.ContainerScreenHooks; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; +import net.minecraft.client.recipe.book.ClientRecipeBook; +import net.minecraft.container.CraftingContainer; + +import java.awt.*; +import java.util.Collections; +import java.util.List; + +public class DefaultRecipeBookExclusionZones implements BaseBoundsHandler.ExclusionZoneSupplier { + + @Override + public List apply(boolean isOnRightSide) { + if (isOnRightSide || !MinecraftClient.getInstance().player.getRecipeBook().isGuiOpen() || !(MinecraftClient.getInstance().currentScreen instanceof RecipeBookProvider) || !(ScreenHelper.getLastContainerScreen().getContainer() instanceof CraftingContainer)) + return Collections.emptyList(); + ContainerScreenHooks screenHooks = ScreenHelper.getLastContainerScreenHooks(); + List l = Lists.newArrayList(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145, screenHooks.rei_getContainerTop(), 4 + 145 + 30, screenHooks.rei_getContainerHeight())); + int size = ClientRecipeBook.getGroupsForContainer((CraftingContainer) ScreenHelper.getLastContainerScreen().getContainer()).size(); + if (size > 0) + l.add(new Rectangle(screenHooks.rei_getContainerLeft() - 4 - 145 - 30, screenHooks.rei_getContainerTop(), 30, size * 27)); + return l; + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java deleted file mode 100644 index 7e9a3e075..000000000 --- a/src/main/java/me/shedaniel/rei/plugin/Defaul