From 444498268e378223b5b61b985c83b1698c95f76d Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 25 Jan 2019 20:42:58 +0800 Subject: Updated to 19w04a & Campfire Category --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 38 +++---------- .../shedaniel/rei/RoughlyEnoughItemsPlugins.java | 25 ++++---- .../rei/api/IRecipeCategoryCraftable.java | 1 - .../java/me/shedaniel/rei/api/IRecipePlugin.java | 2 - .../me/shedaniel/rei/api/SpeedCraftFunctional.java | 1 - .../java/me/shedaniel/rei/client/ClientHelper.java | 30 ++++------ .../java/me/shedaniel/rei/client/GuiHelper.java | 2 +- .../java/me/shedaniel/rei/client/REIConfig.java | 6 +- .../shedaniel/rei/client/REIItemListOrdering.java | 4 +- .../java/me/shedaniel/rei/client/RecipeHelper.java | 4 +- .../me/shedaniel/rei/gui/ContainerGuiOverlay.java | 7 ++- .../me/shedaniel/rei/gui/widget/ButtonWidget.java | 5 +- .../me/shedaniel/rei/gui/widget/ConfigWidget.java | 8 +-- .../gui/widget/CraftableToggleButtonWidget.java | 4 +- .../java/me/shedaniel/rei/gui/widget/IWidget.java | 1 - .../shedaniel/rei/gui/widget/ItemListOverlay.java | 9 ++- .../shedaniel/rei/gui/widget/ItemSlotWidget.java | 6 +- .../me/shedaniel/rei/gui/widget/LabelWidget.java | 1 - .../shedaniel/rei/gui/widget/RecipeBaseWidget.java | 1 - .../rei/gui/widget/RecipeViewingWidget.java | 6 +- .../me/shedaniel/rei/gui/widget/TabWidget.java | 4 +- .../me/shedaniel/rei/listeners/ClientLoaded.java | 7 --- .../java/me/shedaniel/rei/listeners/IListener.java | 4 -- .../rei/listeners/IMixinContainerGui.java | 2 - .../me/shedaniel/rei/listeners/RecipeSync.java | 9 --- .../rei/mixin/MixinBrewingRecipeRegistry.java | 6 +- .../rei/mixin/MixinClientPlayNetworkHandler.java | 9 +-- .../me/shedaniel/rei/mixin/MixinContainerGui.java | 25 ++++---- .../shedaniel/rei/mixin/MixinCraftingTableGui.java | 4 +- .../rei/mixin/MixinPlayerInventoryGui.java | 4 +- .../me/shedaniel/rei/mixin/MixinRecipeBookGui.java | 4 +- .../rei/plugin/DefaultBlastingCategory.java | 13 +---- .../rei/plugin/DefaultBlastingDisplay.java | 2 +- .../rei/plugin/DefaultBrewingDisplay.java | 1 - .../rei/plugin/DefaultCampfireCategory.java | 66 ++++++++++++++++++++++ .../rei/plugin/DefaultCampfireDisplay.java | 61 ++++++++++++++++++++ .../rei/plugin/DefaultCraftingCategory.java | 13 +---- .../rei/plugin/DefaultCraftingDisplay.java | 1 - .../me/shedaniel/rei/plugin/DefaultPlugin.java | 30 ++++++---- .../rei/plugin/DefaultSmeltingCategory.java | 12 +--- .../rei/plugin/DefaultSmeltingDisplay.java | 2 +- .../rei/plugin/DefaultSmokingCategory.java | 13 +---- .../rei/plugin/DefaultSmokingDisplay.java | 2 +- 43 files changed, 241 insertions(+), 214 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/listeners/ClientLoaded.java delete mode 100644 src/main/java/me/shedaniel/rei/listeners/IListener.java delete mode 100644 src/main/java/me/shedaniel/rei/listeners/RecipeSync.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java create mode 100644 src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.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 3097f9930..6c54394c7 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -1,12 +1,10 @@ package me.shedaniel.rei; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.shedaniel.rei.api.IRecipePlugin; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.ConfigHelper; import me.shedaniel.rei.client.RecipeHelper; -import me.shedaniel.rei.listeners.IListener; import me.shedaniel.rei.plugin.DefaultPlugin; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ModInitializer; @@ -25,32 +23,27 @@ import org.apache.logging.log4j.Logger; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitializer { public static final Logger LOGGER = LogManager.getFormatterLogger("REI"); public static final Identifier DELETE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "delete_item"); public static final Identifier CREATE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "create_item"); - private static final List listeners = Lists.newArrayList(); + private static final RecipeHelper RECIPE_HELPER = new RecipeHelper(); + private static final ClientHelper CLIENT_HELPER = new ClientHelper(); private static final Map plugins = Maps.newHashMap(); private static ConfigHelper configHelper; - public static List getListeners(Class listenerClass) { - return listeners.stream().filter(listener -> { - return listenerClass.isAssignableFrom(listener.getClass()); - }).map(listener -> { - return listenerClass.cast(listener); - }).collect(Collectors.toList()); + public static RecipeHelper getRecipeHelper() { + return RECIPE_HELPER; } public static ConfigHelper getConfigHelper() { return configHelper; } - private static IListener registerListener(IListener listener) { - listeners.add(listener); - return listener; + public static ClientHelper getClientHelper() { + return CLIENT_HELPER; } public static IRecipePlugin registerPlugin(Identifier identifier, IRecipePlugin plugin) { @@ -72,7 +65,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali @Override public void onInitializeClient() { - registerREIListeners(); // If pluginloader is not installed, base functionality should still remain if (!Loader.getInstance().isModLoaded("pluginloader")) { RoughlyEnoughItemsCore.LOGGER.warn("REI: Plugin Loader is not loaded! Please consider installing https://minecraft.curseforge.com/projects/pluginloader for REI plugin compatibility!"); @@ -81,18 +73,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali configHelper = new ConfigHelper(); } - private void registerREIListeners() { - registerListener(new ClientHelper()); - registerListener(new RecipeHelper()); - } - - private boolean removeListener(IListener listener) { - if (!listeners.contains(listener)) - return false; - listeners.remove(listener); - return true; - } - @Override public void onInitialize() { registerFabricPackets(); @@ -108,11 +88,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); ItemStack stack = packetByteBuf.readItemStack(); if (player.inventory.insertStack(stack.copy())) - player.sendChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items") - .replaceAll("\\{item_name}", stack.copy().getDisplayName().getFormattedText()) - .replaceAll("\\{item_count}", stack.copy().getAmount() + "") - .replaceAll("\\{player_name}", player.getEntityName()) - ), ChatMessageType.SYSTEM); + player.sendChatMessage(new StringTextComponent(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", stack.copy().getDisplayName().getFormattedText()).replaceAll("\\{item_count}", stack.copy().getAmount() + "").replaceAll("\\{player_name}", player.getEntityName())), ChatMessageType.SYSTEM); else player.sendChatMessage(new TranslatableTextComponent("text.rei.failed_cheat_items"), ChatMessageType.SYSTEM); }); diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java index 80e1bafd9..0b7bc19c0 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsPlugins.java @@ -9,22 +9,19 @@ import net.fabricmc.loader.language.LanguageAdapterException; import net.minecraft.util.Identifier; public class RoughlyEnoughItemsPlugins implements LoaderCreator { - + @Override public void createLoaders() { LanguageAdapter.Options instantiationOptions = new LanguageAdapter.Options(); - - new PluginLoaderBuilder("roughlyenoughitems") - .withValidator(ValidationStrategy.hasInterface(IRecipePlugin.class)) - .withInitializer((aClass, container) -> { - Identifier id = new Identifier(container.getOwner().getInfo().getId(), container.getInfo().getId()); - try { - IRecipePlugin plugin = (IRecipePlugin) container.getOwner().getAdapter().createInstance(aClass, instantiationOptions); - RoughlyEnoughItemsCore.registerPlugin(id, plugin); - } catch (LanguageAdapterException e) { - RoughlyEnoughItemsCore.LOGGER.error("REI: Error loading plugin %s", id, e); - } - }) - .build(); + + new PluginLoaderBuilder("roughlyenoughitems").withValidator(ValidationStrategy.hasInterface(IRecipePlugin.class)).withInitializer((aClass, container) -> { + Identifier id = new Identifier(container.getOwner().getInfo().getId(), container.getInfo().getId()); + try { + IRecipePlugin plugin = (IRecipePlugin) container.getOwner().getAdapter().createInstance(aClass, instantiationOptions); + RoughlyEnoughItemsCore.registerPlugin(id, plugin); + } catch (LanguageAdapterException e) { + RoughlyEnoughItemsCore.LOGGER.error("REI: Error loading plugin %s", id, e); + } + }).build(); } } diff --git a/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java b/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java index 49156a943..f782ccadd 100644 --- a/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java +++ b/src/main/java/me/shedaniel/rei/api/IRecipeCategoryCraftable.java @@ -1,7 +1,6 @@ package me.shedaniel.rei.api; import me.shedaniel.rei.gui.widget.IWidget; -import me.shedaniel.rei.gui.widget.RecipeViewingWidget; import me.shedaniel.rei.listeners.IMixinContainerGui; import net.minecraft.client.gui.Gui; diff --git a/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java b/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java index b14e598ee..064f20abe 100644 --- a/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java +++ b/src/main/java/me/shedaniel/rei/api/IRecipePlugin.java @@ -1,7 +1,5 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.listeners.IListener; - public interface IRecipePlugin { public void registerPluginCategories(); diff --git a/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java b/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java index 6dd998d47..e2ed4b83d 100644 --- a/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java +++ b/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java @@ -1,6 +1,5 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.plugin.DefaultCraftingDisplay; import net.minecraft.client.gui.Gui; public interface SpeedCraftFunctional { diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelper.java b/src/main/java/me/shedaniel/rei/client/ClientHelper.java index 5e8ba2585..86b099bc3 100644 --- a/src/main/java/me/shedaniel/rei/client/ClientHelper.java +++ b/src/main/java/me/shedaniel/rei/client/ClientHelper.java @@ -9,7 +9,6 @@ import me.shedaniel.rei.api.IRecipeDisplay; import me.shedaniel.rei.gui.ContainerGuiOverlay; import me.shedaniel.rei.gui.widget.ConfigWidget; import me.shedaniel.rei.gui.widget.RecipeViewingWidget; -import me.shedaniel.rei.listeners.ClientLoaded; import me.shedaniel.rei.listeners.IMixinContainerGui; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding; @@ -36,7 +35,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class ClientHelper implements ClientLoaded, ClientModInitializer { +public class ClientHelper implements ClientModInitializer { private static final Identifier RECIPE_KEYBIND = new Identifier("roughlyenoughitems", "recipe_keybind"); private static final Identifier USAGE_KEYBIND = new Identifier("roughlyenoughitems", "usage_keybind"); @@ -56,16 +55,13 @@ public class ClientHelper implements ClientLoaded, ClientModInitializer { String modid = location.getNamespace(); if (modid.equalsIgnoreCase("minecraft")) return "Minecraft"; - return FabricLoader.INSTANCE.getModContainers().stream() - .map(modContainer -> { - return modContainer.getInfo(); - }) - .filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))) - .findFirst().map(modInfo -> { - if (modInfo.getName() != null) - return modInfo.getName(); - return modid; - }).orElse(modid); + return FabricLoader.INSTANCE.getModContainers().stream().map(modContainer -> { + return modContainer.getInfo(); + }).filter(modInfo -> modInfo.getId().equals(modid) || (modInfo.getName() != null && modInfo.getName().equals(modid))).findFirst().map(modInfo -> { + if (modInfo.getName() != null) + return modInfo.getName(); + return modid; + }).orElse(modid); } return ""; } @@ -112,11 +108,9 @@ public class ClientHelper implements ClientLoaded, ClientModInitializer { } else { Identifier location = Registry.ITEM.getId(cheatedStack.getItem()); String tagMessage = cheatedStack.copy().getTag() != null && !cheatedStack.copy().getTag().isEmpty() ? cheatedStack.copy().getTag().asString() : ""; - String madeUpCommand = RoughlyEnoughItemsCore.getConfigHelper().getGiveCommandPrefix() + " " + MinecraftClient.getInstance().player.getEntityName() + " " + - location.toString() + tagMessage + (cheatedStack.getAmount() != 1 ? " " + cheatedStack.getAmount() : ""); + String madeUpCommand = RoughlyEnoughItemsCore.getConfigHelper().getGiveCommandPrefix() + " " + MinecraftClient.getInstance().player.getEntityName() + " " + location.toString() + tagMessage + (cheatedStack.getAmount() != 1 ? " " + cheatedStack.getAmount() : ""); if (madeUpCommand.length() > 256) - madeUpCommand = RoughlyEnoughItemsCore.getConfigHelper().getGiveCommandPrefix() + " " + MinecraftClient.getInstance().player.getEntityName() + " " + - location.toString() + (cheatedStack.getAmount() != 1 ? " " + cheatedStack.getAmount() : ""); + madeUpCommand = RoughlyEnoughItemsCore.getConfigHelper().getGiveCommandPrefix() + " " + MinecraftClient.getInstance().player.getEntityName() + " " + location.toString() + (cheatedStack.getAmount() != 1 ? " " + cheatedStack.getAmount() : ""); MinecraftClient.getInstance().player.sendChatMessage(madeUpCommand); return true; } @@ -141,8 +135,7 @@ public class ClientHelper implements ClientLoaded, ClientModInitializer { } public static List getInventoryItemsTypes() { - List> field_7543 = ImmutableList.of(MinecraftClient.getInstance().player.inventory.main, MinecraftClient.getInstance().player.inventory.armor - , MinecraftClient.getInstance().player.inventory.offHand); + List> field_7543 = ImmutableList.of(MinecraftClient.getInstance().player.inventory.main, MinecraftClient.getInstance().player.inventory.armor, MinecraftClient.getInstance().player.inventory.offHand); List inventoryStacks = new ArrayList<>(); field_7543.forEach(itemStacks -> itemStacks.forEach(itemStack -> { if (!itemStack.getItem().equals(Items.AIR)) @@ -151,7 +144,6 @@ public class ClientHelper implements ClientLoaded, ClientModInitializer { return inventoryStacks; } - @Override public void clientLoaded() { Registry.ITEM.forEach(item -> { if (!item.equals(Items.ENCHANTED_BOOK)) diff --git a/src/main/java/me/shedaniel/rei/client/GuiHelper.java b/src/main/java/me/shedaniel/rei/client/GuiHelper.java index bae2d852a..6fbb6a2a8 100644 --- a/src/main/java/me/shedaniel/rei/client/GuiHelper.java +++ b/src/main/java/me/shedaniel/rei/client/GuiHelper.java @@ -24,7 +24,7 @@ public class GuiHelper { overlayVisible = !overlayVisible; } - public static ContainerGuiOverlay getOverlay(ContainerGui lastGui) { + public static ContainerGuiOverlay getOverlay(IMixinContainerGui lastGui) { if (overlay == null) { overlay = new ContainerGuiOverlay(lastGui); overlay.onInitialized(); diff --git a/src/main/java/me/shedaniel/rei/client/REIConfig.java b/src/main/java/me/shedaniel/rei/client/REIConfig.java index db14b282f..49ccb1dec 100644 --- a/src/main/java/me/shedaniel/rei/client/REIConfig.java +++ b/src/main/java/me/shedaniel/rei/client/REIConfig.java @@ -3,13 +3,9 @@ package me.shedaniel.rei.client; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import java.awt.event.KeyEvent; - public class REIConfig { - public static Gson GSON = new GsonBuilder() - .setPrettyPrinting() - .create(); + public static Gson GSON = new GsonBuilder().setPrettyPrinting().create(); public REIItemListOrdering itemListOrdering = REIItemListOrdering.REGISTRY; public boolean isAscending = true; diff --git a/src/main/java/me/shedaniel/rei/client/REIItemListOrdering.java b/src/main/java/me/shedaniel/rei/client/REIItemListOrdering.java index b0167d352..8f9e317eb 100644 --- a/src/main/java/me/shedaniel/rei/client/REIItemListOrdering.java +++ b/src/main/java/me/shedaniel/rei/client/REIItemListOrdering.java @@ -4,9 +4,7 @@ import com.google.gson.annotations.SerializedName; public enum REIItemListOrdering { - @SerializedName("registry") REGISTRY("ordering.rei.registry"), - @SerializedName("name") NAME("ordering.rei.name"), - @SerializedName("item_groups") ITEM_GROUPS("ordering.rei.item_groups"); + @SerializedName("registry") REGISTRY("ordering.rei.registry"), @SerializedName("name") NAME("ordering.rei.name"), @SerializedName("item_groups") ITEM_GROUPS("ordering.rei.item_groups"); private String nameTranslationKey; diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java index 32d4f0ba5..378eb2f59 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelper.java @@ -4,7 +4,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.*; -import me.shedaniel.rei.listeners.RecipeSync; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeManager; import net.minecraft.util.Identifier; @@ -14,7 +13,7 @@ import java.util.*; import java.util.List; import java.util.stream.Collectors; -public class RecipeHelper implements RecipeSync { +public class RecipeHelper { private static Map> recipeCategoryListMap; private static List categories; @@ -145,7 +144,6 @@ public class RecipeHelper implements RecipeSync { speedCraftFunctionalMap.put(category, list); } - @Override public void recipesLoaded(RecipeManager recipeManager) { this.recipeManager = recipeManager; this.recipeCategoryListMap.clear(); diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java index a1e0a4cf9..206080582 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerGuiOverlay.java @@ -36,9 +36,9 @@ public class ContainerGuiOverlay extends Gui { private ButtonWidget buttonLeft, buttonRight; private int lastLeft; - public ContainerGuiOverlay(ContainerGui containerGui) { + public ContainerGuiOverlay(IMixinContainerGui containerGui) { this.queuedTooltips = new ArrayList<>(); - this.containerGui = (IMixinContainerGui) containerGui; + this.containerGui = containerGui; this.widgets = new ArrayList<>(); } @@ -242,7 +242,8 @@ public class ContainerGuiOverlay extends Gui { buttonLeft.onPressed(0, 0, 0); else if (amount < 0 && buttonRight.enabled) buttonRight.onPressed(0, 0, 0); - else return false; + else + return false; return true; } for(IWidget widget : widgets) diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index 7d2cfb4ab..96fbc54b3 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -5,7 +5,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.audio.PositionedSoundInstance; import net.minecraft.client.font.FontRenderer; import net.minecraft.client.gui.Drawable; -import net.minecraft.client.render.GuiLighting; import net.minecraft.sound.SoundEvents; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; @@ -76,8 +75,8 @@ public abstract class ButtonWidget extends Drawable implements IWidget { this.hovered = bounds.contains(mouseX, mouseY); int textureOffset = this.getTextureId(this.hovered); GlStateManager.enableBlend(); - GlStateManager.blendFuncSeparate(GlStateManager.class_1033.SRC_ALPHA, GlStateManager.class_1027.ONE_MINUS_SRC_ALPHA, GlStateManager.class_1033.ONE, GlStateManager.class_1027.ZERO); - GlStateManager.blendFunc(GlStateManager.class_1033.SRC_ALPHA, GlStateManager.class_1027.ONE_MINUS_SRC_ALPHA); + GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); //Four Corners this.drawTexturedRect(this.x, this.y, 0, 46 + textureOffset * 20, 4, 4); this.drawTexturedRect(this.x + this.width - 4, this.y, 196, 46 + textureOffset * 20, 4, 4); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java index ed09025c9..25f46c802 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java @@ -9,7 +9,6 @@ import net.minecraft.client.gui.GuiEventListener; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.Window; -import org.apache.logging.log4j.core.Core; import java.io.IOException; import java.util.Arrays; @@ -51,7 +50,7 @@ public class ConfigWidget extends Gui { e.printStackTrace(); } } - + @Override public void draw(int mouseX, int mouseY, float partialTicks) { text = getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().sideSearchField()); @@ -97,12 +96,11 @@ public class ConfigWidget extends Gui { e.printStackTrace(); } } - + @Override public void draw(int int_1, int int_2, float float_1) { GuiLighting.disable(); - this.text = I18n.translate("text.rei.list_ordering_button", I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering().getNameTranslationKey()), - I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().isAscending() ? "ordering.rei.ascending" : "ordering.rei.descending")); + this.text = I18n.translate("text.rei.list_ordering_button", I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering().getNameTranslationKey()), I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().isAscending() ? "ordering.rei.ascending" : "ordering.rei.descending")); String t = I18n.translate("text.rei.list_ordering") + ": "; drawString(MinecraftClient.getInstance().fontRenderer, t, parent.width / 2 - 95 - MinecraftClient.getInstance().fontRenderer.getStringWidth(t), 90 + 6, -1); super.draw(int_1, int_2, float_1); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java index 7532ed4a6..ec6c732b5 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java @@ -51,9 +51,7 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { } private void drawTooltip() { - GuiHelper.getLastOverlay() - .addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() - ? "text.rei.showing_craftable" : "text.rei.showing_all")))); + GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() ? "text.rei.showing_craftable" : "text.rei.showing_all")))); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java index 2b0735d4a..b84f5e292 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java @@ -1,6 +1,5 @@ package me.shedaniel.rei.gui.widget; -import com.google.common.collect.Lists; import net.minecraft.client.gui.GuiEventListener; import java.util.List; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java index 7db52a27d..ab4f7f2c8 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -3,7 +3,6 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.*; -import me.shedaniel.rei.listeners.ClientLoaded; import me.shedaniel.rei.listeners.IMixinContainerGui; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Drawable; @@ -47,7 +46,7 @@ public class ItemListOverlay extends Drawable implements IWidget { widgets.forEach(widget -> widget.draw(int_1, int_2, float_1)); ClientPlayerEntity player = MinecraftClient.getInstance().player; if (rectangle.contains(ClientHelper.getMouseLocation()) && ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) - GuiHelper.getOverlay(containerGui.getContainerGui()).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); + GuiHelper.getOverlay(containerGui).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); } public void updateList(int page, String searchTerm) { @@ -57,7 +56,7 @@ public class ItemListOverlay extends Drawable implements IWidget { public void updateList(Rectangle rect, int page, String searchTerm) { this.rectangle = rect; if (ClientHelper.getItemList().isEmpty()) - RoughlyEnoughItemsCore.getListeners(ClientLoaded.class).forEach(ClientLoaded::clientLoaded); + RoughlyEnoughItemsCore.getClientHelper().clientLoaded(); currentDisplayed = processSearchTerm(searchTerm, ClientHelper.getItemList(), GuiHelper.inventoryStacks); this.widgets.clear(); this.page = page; @@ -87,9 +86,9 @@ public class ItemListOverlay extends Drawable implements IWidget { } } else { if (button == 0) - return ClientHelper.executeRecipeKeyBind(GuiHelper.getOverlay(containerGui.getContainerGui()), getCurrentStack().copy(), containerGui); + return ClientHelper.executeRecipeKeyBind(GuiHelper.getOverlay(containerGui), getCurrentStack().copy(), containerGui); else if (button == 1) - return ClientHelper.executeUsageKeyBind(GuiHelper.getOverlay(containerGui.getContainerGui()), getCurrentStack().copy(), containerGui); + return ClientHelper.executeUsageKeyBind(GuiHelper.getOverlay(containerGui), getCurrentStack().copy(), containerGui); } } return false; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java index 3b9f54e67..2fb78119e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -81,7 +81,7 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget { protected void drawToolTip(ItemStack itemStack) { List toolTip = getTooltip(itemStack); - GuiHelper.getOverlay(containerGui.getContainerGui()).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), toolTip)); + GuiHelper.getOverlay(containerGui).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), toolTip)); } protected List getTooltip(ItemStack itemStack) { @@ -127,9 +127,9 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget { return false; if (getBounds().contains(mouseX, mouseY)) { if (button == 0) - return ClientHelper.executeRecipeKeyBind(GuiHelper.getOverlay(containerGui.getContainerGui()), getCurrentStack().copy(), containerGui); + return ClientHelper.executeRecipeKeyBind(GuiHelper.getOverlay(containerGui), getCurrentStack().copy(), containerGui); else if (button == 1) - return ClientHelper.executeUsageKeyBind(GuiHelper.getOverlay(containerGui.getContainerGui()), getCurrentStack().copy(), containerGui); + return ClientHelper.executeUsageKeyBind(GuiHelper.getOverlay(containerGui), getCurrentStack().copy(), containerGui); } return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java index e959c5623..034b41d67 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/LabelWidget.java @@ -2,7 +2,6 @@ package me.shedaniel.rei.gui.widget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.GuiEventListener; import java.util.ArrayList; import java.util.List; 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 5e9cb4dc3..0229e4ef4 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -1,7 +1,6 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Drawable; import net.minecraft.client.render.GuiLighting; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java index 4640a14e8..52d2cd34f 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java @@ -239,9 +239,9 @@ public class RecipeViewingWidget extends Gui { } } - GuiHelper.getOverlay(parent.getContainerGui()).onInitialized(); + GuiHelper.getOverlay(parent).onInitialized(); listeners.addAll(tabs); - listeners.add(GuiHelper.getOverlay(parent.getContainerGui())); + listeners.add(GuiHelper.getOverlay(parent)); listeners.addAll(widgets); } @@ -266,7 +266,7 @@ public class RecipeViewingWidget extends Gui { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.draw(mouseX, mouseY, partialTicks)); - GuiHelper.getOverlay(parent.getContainerGui()).render(mouseX, mouseY, partialTicks); + GuiHelper.getOverlay(parent).render(mouseX, mouseY, partialTicks); } @Override 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 30f9d7cda..2c8a0206c 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java @@ -71,7 +71,7 @@ public class TabWidget extends Drawable implements HighlightableWidget { public void draw(int mouseX, int mouseY, float partialTicks) { if (shown) { int l = (int) this.bounds.getCenterX() - 8, i1 = (int) this.bounds.getCenterY() - 6; - + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); @@ -90,7 +90,7 @@ public class TabWidget extends Drawable implements HighlightableWidget { } private void drawTooltip() { - GuiHelper.getOverlay(recipeViewingWidget.getParent().getContainerGui()).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(categoryName))); + GuiHelper.getOverlay(recipeViewingWidget.getParent()).addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(categoryName))); } @Override diff --git a/src/main/java/me/shedaniel/rei/listeners/ClientLoaded.java b/src/main/java/me/shedaniel/rei/listeners/ClientLoaded.java deleted file mode 100644 index 0d370d620..000000000 --- a/src/main/java/me/shedaniel/rei/listeners/ClientLoaded.java +++ /dev/null @@ -1,7 +0,0 @@ -package me.shedaniel.rei.listeners; - -public interface ClientLoaded extends IListener { - - public void clientLoaded(); - -} diff --git a/src/main/java/me/shedaniel/rei/listeners/IListener.java b/src/main/java/me/shedaniel/rei/listeners/IListener.java deleted file mode 100644 index a26b13c62..000000000 --- a/src/main/java/me/shedaniel/rei/listeners/IListener.java +++ /dev/null @@ -1,4 +0,0 @@ -package me.shedaniel.rei.listeners; - -public interface IListener { -} diff --git a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java b/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java index 812bf70dc..113b4f95c 100644 --- a/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java +++ b/src/main/java/me/shedaniel/rei/listeners/IMixinContainerGui.java @@ -5,8 +5,6 @@ import net.minecraft.client.gui.ContainerGui; import net.minecraft.container.Slot; import net.minecraft.item.ItemStack; -import java.util.List; - public interface IMixinContainerGui { public int getContainerLeft(); diff --git a/src/main/java/me/shedaniel/rei/listeners/RecipeSync.java b/src/main/java/me/shedaniel/rei/listeners/RecipeSync.java deleted file mode 100644 index 98125999e..000000000 --- a/src/main/java/me/shedaniel/rei/listeners/RecipeSync.java +++ /dev/null @@ -1,9 +0,0 @@ -package me.shedaniel.rei.listeners; - -import net.minecraft.recipe.RecipeManager; - -public interface RecipeSync extends IListener { - - public void recipesLoaded(RecipeManager recipeManager); - -} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java index 15ea467dc..5023ccf69 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java @@ -48,8 +48,7 @@ public class MixinBrewingRecipeRegistry { registerPotionType(potion_2); SELF_POTION_TYPES.forEach(ingredient -> { for(ItemStack stack : ingredient.getStackArray()) { - DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), potion_1), Ingredient.ofItems(new ItemProvider[]{item_1}), - PotionUtil.setPotion(stack.copy(), potion_2))); + DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), potion_1), Ingredient.ofItems(new ItemProvider[]{item_1}), PotionUtil.setPotion(stack.copy(), potion_2))); } }); } @@ -57,8 +56,7 @@ public class MixinBrewingRecipeRegistry { private static void registerPotionType(Potion potion) { REGISTERED_POTION_TYPES.add(potion); SELF_ITEM_RECIPES.forEach(recipe -> { - DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(recipe.input.getDefaultStack(), potion), recipe.ingredient, - PotionUtil.setPotion(recipe.output.getDefaultStack(), potion))); + DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(recipe.input.getDefaultStack(), potion), recipe.ingredient, PotionUtil.setPotion(recipe.output.getDefaultStack(), potion))); }); } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java b/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java index dd388d090..660029d8c 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinClientPlayNetworkHandler.java @@ -1,14 +1,9 @@ package me.shedaniel.rei.mixin; import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.listeners.RecipeSync; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.packet.SynchronizeRecipesClientPacket; -import net.minecraft.recipe.RecipeManager; -import org.apache.logging.log4j.core.Core; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -16,11 +11,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ClientPlayNetworkHandler.class) public class MixinClientPlayNetworkHandler { - @Shadow @Final private RecipeManager recipeManager; - @Inject(method = "onSynchronizeRecipes", at = @At("RETURN")) private void onUpdateRecipes(SynchronizeRecipesClientPacket packetIn, CallbackInfo ci) { - RoughlyEnoughItemsCore.getListeners(RecipeSync.class).forEach(recipeSync -> recipeSync.recipesLoaded(this.recipeManager)); + RoughlyEnoughItemsCore.getRecipeHelper().recipesLoaded(((ClientPlayNetworkHandler) ((Object) this)).getRecipeManager()); } } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java index 64d5eae97..c293fd786 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerGui.java @@ -1,6 +1,5 @@ package me.shedaniel.rei.mixin; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; import me.shedaniel.rei.gui.ContainerGuiOverlay; @@ -66,7 +65,7 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui { @Inject(method = "onInitialized()V", at = @At("RETURN")) protected void onInitialized(CallbackInfo info) { GuiHelper.resetOverlay(); - this.listeners.add(GuiHelper.getOverlay(lastGui)); + this.listeners.add(GuiHelper.getOverlay((IMixinContainerGui) lastGui)); } @Inject(method = "draw(IIF)V", at = @At("RETURN")) @@ -78,7 +77,7 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui { } if (MinecraftClient.getInstance().currentGui instanceof ContainerGui) this.lastGui = (ContainerGui) MinecraftClient.getInstance().currentGui; - GuiHelper.getOverlay(lastGui).render(int_1, int_2, float_1); + GuiHelper.getOverlay((IMixinContainerGui) lastGui).render(int_1, int_2, float_1); } @Override @@ -91,15 +90,6 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui { return lastGui; } - @Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true) - public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable ci) { - for(GuiEventListener entry : this.getEntries()) - if (entry.keyPressed(int_1, int_2, int_3)) { - ci.cancel(); - ci.setReturnValue(true); - } - } - @Override public Slot getHoveredSlot() { return focusedSlot; @@ -107,7 +97,7 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui { @Override public boolean mouseScrolled(double double_1) { - ContainerGuiOverlay overlay = GuiHelper.getOverlay(lastGui); + ContainerGuiOverlay overlay = GuiHelper.getOverlay((IMixinContainerGui) lastGui); if (GuiHelper.isOverlayVisible() && overlay.getRectangle().contains(ClientHelper.getMouseLocation())) for(GuiEventListener entry : this.getEntries()) if (entry.mouseScrolled(double_1)) @@ -115,4 +105,13 @@ public class MixinContainerGui extends Gui implements IMixinContainerGui { return super.mouseScrolled(double_1); } + @Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true) + public void keyPressed(int int_1, int int_2, int int_3, CallbackInfoReturnable ci) { + for(GuiEventListener entry : this.getEntries()) + if (entry.keyPressed(int_1, int_2, int_3)) { + ci.setReturnValue(true); + ci.cancel(); + } + } + } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableGui.java index 1c2554e1a..88e68b72b 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableGui.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableGui.java @@ -17,7 +17,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CraftingTableGui.class) public abstract class MixinCraftingTableGui extends ContainerGui { - @Shadow @Final private RecipeBookGui recipeBookGui; + @Shadow + @Final + private RecipeBookGui recipeBookGui; public MixinCraftingTableGui(Container container_1, PlayerInventory playerInventory_1, TextComponent textComponent_1) { super(container_1, playerInventory_1, textComponent_1); diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryGui.java index 99f1cfb30..35e81ab78 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryGui.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryGui.java @@ -18,7 +18,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PlayerInventoryGui.class) public abstract class MixinPlayerInventoryGui extends AbstractPlayerInventoryGui implements RecipeBookProvider { - @Shadow @Final private RecipeBookGui recipeBook; + @Shadow + @Final + private RecipeBookGui recipeBook; public MixinPlayerInventoryGui(PlayerContainer container_1, PlayerInventory playerInventory_1, TextComponent textComponent_1) { super(container_1, playerInventory_1, textComponent_1); diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java b/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java index 8dbe39700..cbd370ab8 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinRecipeBookGui.java @@ -10,7 +10,9 @@ import org.spongepowered.asm.mixin.Shadow; @Mixin(RecipeBookGui.class) public class MixinRecipeBookGui implements IMixinRecipeBookGui { - @Shadow @Final protected RecipeBookGhostSlots ghostSlots; + @Shadow + @Final + protected RecipeBookGhostSlots ghostSlots; @Override public RecipeBookGhostSlots getGhostSlots() { diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java index 69cafd573..75c35407c 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java @@ -1,20 +1,13 @@ package me.shedaniel.rei.plugin; -import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.api.IRecipeCategoryCraftable; -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; -import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.ItemSlotWidget; +import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.listeners.IMixinContainerGui; -import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ContainerGui; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.container.BlastFurnaceGui; -import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java index bb6b03696..54e8708e3 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java @@ -22,7 +22,7 @@ public class DefaultBlastingDisplay implements IRecipeDisplay { this.display = recipe; List fuel = Lists.newArrayList(); this.input = Lists.newArrayList(); - fuel.addAll(FurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); + fuel.addAll(FurnaceBlockEntity.createFuelTimeMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList())); recipe.getPreviewInputs().forEach(ingredient -> { input.add(Arrays.asList(ingredient.getStackArray())); }); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java index 187ee4d67..a8ca6a2db 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java @@ -1,6 +1,5 @@ package me.shedaniel.rei.plugin; -import com.google.common.collect.Lists; import me.shedaniel.rei.api.IRecipeDisplay; import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java new file mode 100644 index 000000000..9041b12ae --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java @@ -0,0 +1,66 @@ +package me.shedaniel.rei.plugin; + +import com.mojang.blaze3d.platform.GlStateManager; +import me.shedaniel.rei.api.IRecipeCategory; +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.ItemSlotWidget; +import me.shedaniel.rei.gui.widget.RecipeBaseWidget; +import me.shedaniel.rei.listeners.IMixinContainerGui; +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; + +public class DefaultCampfireCategory implements IRecipeCategory { + + private static final Identifier DISPLAY_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/display.png"); + + @Override + public Identifier getIdentifier() { + return DefaultPlugin.CAMPFIRE; + } + + @Override + public ItemStack getCategoryIcon() { + return new ItemStack(Blocks.CAMPFIRE); + } + + @Override + public String getCategoryName() { + return I18n.translate("category.rei.campfire"); + } + + @Override + public List setupDisplay(IMixinContainerGui containerGui, DefaultCampfireDisplay recipeDisplay, 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 draw(int mouseX, int mouseY, float partialTicks) { + super.draw(mouseX, mouseY, partialTicks); + GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); + GuiLighting.disable(); + MinecraftClient.getInstance().getTextureManager().bindTexture(DISPLAY_TEXTURE); + drawTexturedRect(startPoint.x, startPoint.y, 0, 167, 82, 54); + int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f); + drawTexturedRect(startPoint.x + 2, startPoint.y + 31 + (14 - height), 82, 77 + (14 - height), 14, height); + int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); + drawTexturedRect(startPoint.x + 24, startPoint.y + 19, 82, 92, width, 17); + String text = I18n.translate("category.rei.campfire.time", MathHelper.floor(recipeDisplay.getCookTime() / 20d)); + int length = MinecraftClient.getInstance().fontRenderer.getStringWidth(text); + MinecraftClient.getInstance().fontRenderer.drawWithShadow(text, bounds.x + bounds.width - length - 4, startPoint.y + 54 - 8, -1); + } + })); + widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 11, recipeDisplay.getInput().get(0), true, true, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, containerGui, 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 new file mode 100644 index 000000000..ebd156daa --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java @@ -0,0 +1,61 @@ +package me.shedaniel.rei.plugin; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.IRecipeDisplay; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.cooking.CampfireCookingRecipe; +import net.minecraft.util.DefaultedList; +import net.minecraft.util.Identifier; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class DefaultCampfireDisplay implements IRecipeDisplay { + + private List inputs, output; + private int cookTime; + + public DefaultCampfireDisplay(CampfireCookingRecipe recipe) { + this(recipe.getPreviewInputs(), recipe.getOutput(), recipe.getCookTime()); + } + + public DefaultCampfireDisplay(DefaultedList ingredients, ItemStack output, int cookTime) { + this.inputs = Lists.newArrayList(); + ingredients.stream().map(ingredient -> ingredient.getStackArray()).forEach(itemStacks -> Collections.addAll(inputs, itemStacks)); + this.output = Arrays.asList(output); + this.cookTime = cookTime; + } + + public int getCookTime() { + return cookTime; + } + + @Override + public Recipe getRecipe() { + return null; + } + + @Override + public List> getInput() { + return Arrays.asList(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/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java index b7bd87d06..ded3e3087 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java @@ -2,20 +2,13 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.api.IRecipeCategoryCraftable; -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; -import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.ItemSlotWidget; +import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.listeners.IMixinContainerGui; -import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ContainerGui; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.container.CraftingTableGui; -import net.minecraft.client.gui.ingame.PlayerInventoryGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java index 8be0c9aee..5f3f88595 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingDisplay.java @@ -2,7 +2,6 @@ package me.shedaniel.rei.plugin; import me.shedaniel.rei.api.IRecipeDisplay; import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.crafting.ShapelessRecipe; import net.minecraft.util.Identifier; public interface DefaultCraftingDisplay extends IRecipeDisplay { diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 280692ea1..3cabab0ec 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -14,6 +14,7 @@ import net.minecraft.client.gui.container.SmokerGui; import net.minecraft.client.gui.ingame.PlayerInventoryGui; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.cooking.BlastingRecipe; +import net.minecraft.recipe.cooking.CampfireCookingRecipe; import net.minecraft.recipe.cooking.SmeltingRecipe; import net.minecraft.recipe.cooking.SmokingRecipe; import net.minecraft.recipe.crafting.ShapedRecipe; @@ -24,13 +25,14 @@ import java.util.List; public class DefaultPlugin implements IRecipePlugin { - static final Identifier CRAFTING = new Identifier("roughlyenoughitems", "plugins/crafting"); - static final Identifier SMELTING = new Identifier("roughlyenoughitems", "plugins/smelting"); - static final Identifier SMOKING = new Identifier("roughlyenoughitems", "plugins/smoking"); - static final Identifier BLASTING = new Identifier("roughlyenoughitems", "plugins/blasting"); - static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing"); + public static final Identifier CRAFTING = new Identifier("roughlyenoughitems", "plugins/crafting"); + public static final Identifier SMELTING = new Identifier("roughlyenoughitems", "plugins/smelting"); + public static final Identifier SMOKING = new Identifier("roughlyenoughitems", "plugins/smoking"); + public static final Identifier BLASTING = new Identifier("roughlyenoughitems", "plugins/blasting"); + public static final Identifier CAMPFIRE = new Identifier("roughlyenoughitems", "plugins/campfire"); + public static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing"); - static final List BREWING_DISPLAYS = Lists.newArrayList(); + private static final List BREWING_DISPLAYS = Lists.newArrayList(); public static void registerBrewingDisplay(DefaultBrewingDisplay display) { BREWING_DISPLAYS.add(display); @@ -42,6 +44,7 @@ public class DefaultPlugin implements IRecipePlugin { RecipeHelper.registerCategory(new DefaultSmeltingCategory()); RecipeHelper.registerCategory(new DefaultSmokingCategory()); RecipeHelper.registerCategory(new DefaultBlastingCategory()); + RecipeHelper.registerCategory(new DefaultCampfireCategory()); RecipeHelper.registerCategory(new DefaultBrewingCategory()); } @@ -58,11 +61,14 @@ public class DefaultPlugin implements IRecipePlugin { RecipeHelper.registerRecipe(SMOKING, new DefaultSmokingDisplay((SmokingRecipe) value)); else if (value instanceof BlastingRecipe) RecipeHelper.registerRecipe(BLASTING, new DefaultBlastingDisplay((BlastingRecipe) value)); + else if (value instanceof CampfireCookingRecipe) + RecipeHelper.registerRecipe(CAMPFIRE, new DefaultCampfireDisplay((CampfireCookingRecipe) value)); BREWING_DISPLAYS.forEach(display -> RecipeHelper.registerRecipe(BREWING, display)); } @Override public void registerSpeedCraft() { + RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, null); RecipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.BREWING, null); RecipeHelper.registerSpeedCraftFunctional(DefaultPlugin.CRAFTING, new SpeedCraftFunctional() { @Override @@ -76,7 +82,8 @@ public class DefaultPlugin implements IRecipePlugin { ((IMixinRecipeBookGui) (((CraftingTableGui) gui).getRecipeBookGui())).getGhostSlots().reset(); else if (gui.getClass().isAssignableFrom(PlayerInventoryGui.class)) ((IMixinRecipeBookGui) (((PlayerInventoryGui) gui).getRecipeBookGui())).getGhostSlots().reset(); - else return false; + else + return false; MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); return true; } @@ -96,7 +103,8 @@ public class DefaultPlugin implements IRecipePlugin { public boolean performAutoCraft(Gui gui, DefaultSmeltingDisplay recipe) { if (gui instanceof FurnaceGui) ((IMixinRecipeBookGui) (((FurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); - else return false; + else + return false; MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); return true; } @@ -116,7 +124,8 @@ public class DefaultPlugin implements IRecipePlugin { public boolean performAutoCraft(Gui gui, DefaultSmokingDisplay recipe) { if (gui instanceof SmokerGui) ((IMixinRecipeBookGui) (((SmokerGui) gui).getRecipeBookGui())).getGhostSlots().reset(); - else return false; + else + return false; MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); return true; } @@ -136,7 +145,8 @@ public class DefaultPlugin implements IRecipePlugin { public boolean performAutoCraft(Gui gui, DefaultBlastingDisplay recipe) { if (gui instanceof BlastFurnaceGui) ((IMixinRecipeBookGui) (((BlastFurnaceGui) gui).getRecipeBookGui())).getGhostSlots().reset(); - else return false; + else + return false; MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, recipe.getRecipe(), Gui.isShiftPressed()); return true; } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java index 97481b953..f8dc2961a 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java @@ -1,19 +1,13 @@ package me.shedaniel.rei.plugin; -import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.api.IRecipeCategory; -import me.shedaniel.rei.api.IRecipeCategoryCraftable; -import me.shedaniel.rei.client.ClientHelper; -import me.shedaniel.rei.client.GuiHelper; -import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.gui.widget.IWidget; +import me.shedaniel.rei.gui.widget.ItemSlotWidget; +import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.listeners.IMixinContainerGui; -import me.shedaniel.rei.listeners.IMixinRecipeBookGui; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.ContainerGui; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.container.FurnaceGui; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java index e132535aa..61c790da0 100644 --- a/src/main/java/me/shedaniel/rei/p