From b004addc44b1fff0fd83cf998aa618443e4e37ca Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 14 Mar 2019 22:21:10 +0800 Subject: Update to 19w11a --- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 4 +- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 12 ++--- .../me/shedaniel/rei/gui/config/ConfigScreen.java | 8 +-- .../shedaniel/rei/gui/credits/CreditsScreen.java | 8 +-- .../java/me/shedaniel/rei/gui/widget/IWidget.java | 4 +- .../rei/mixin/MixinBrewingRecipeRegistry.java | 59 ++++++++++++++++++++++ .../shedaniel/rei/mixin/MixinContainerScreen.java | 8 +-- .../rei/mixin/MixinCraftingTableScreen.java | 4 +- .../mixin/MixinCreativePlayerInventoryScreen.java | 4 +- .../rei/mixin/MixinPlayerInventoryScreen.java | 4 +- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 9 +++- .../minecraft/recipe/REIBrewingRecipeRegistry.java | 56 -------------------- .../net/minecraft/recipe/REIPotionRecipeUtils.java | 36 ------------- 13 files changed, 94 insertions(+), 122 deletions(-) create mode 100644 src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java delete mode 100644 src/main/java/net/minecraft/recipe/REIBrewingRecipeRegistry.java delete mode 100644 src/main/java/net/minecraft/recipe/REIPotionRecipeUtils.java (limited to 'src/main/java') diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index 0fafdda42..e50b7d9c9 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -364,7 +364,7 @@ public class ContainerScreenOverlay extends ScreenComponent { } @Override - public boolean mouseScrolled(double amount) { + public boolean mouseScrolled(double i, double j, double amount) { if (!ScreenHelper.isOverlayVisible()) return false; if (rectangle.contains(ClientHelper.getMouseLocation())) { @@ -377,7 +377,7 @@ public class ContainerScreenOverlay extends ScreenComponent { return true; } for(IWidget widget : widgets) - if (widget.mouseScrolled(amount)) + if (widget.mouseScrolled(i, j, amount)) return true; return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index e3bf000fd..68fde8422 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -348,9 +348,9 @@ public class RecipeViewingScreen extends Screen { } @Override - public boolean mouseScrolled(double amount) { + public boolean mouseScrolled(double i, double j, double amount) { for(InputListener listener : listeners) - if (listener.mouseScrolled(amount)) + if (listener.mouseScrolled(i, j, amount)) return true; if (getBounds().contains(ClientHelper.getMouseLocation())) { if (amount > 0 && recipeBack.enabled) @@ -364,7 +364,7 @@ public class RecipeViewingScreen extends Screen { else if (amount < 0 && categoryNext.enabled) categoryNext.onPressed(0, 0, 0); } - return super.mouseScrolled(amount); + return super.mouseScrolled(i, j, amount); } @Override @@ -389,11 +389,11 @@ public class RecipeViewingScreen extends Screen { return false; } - @Override - public InputListener getFocused() { + @Override //getFocused + public InputListener method_19357() { if (choosePageActivated) return recipeChoosePageWidget; - return super.getFocused(); + return super.method_19357(); } } diff --git a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java index cc3d63135..c1f0f885d 100644 --- a/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/config/ConfigScreen.java @@ -7,10 +7,10 @@ import me.shedaniel.rei.client.ItemListOrdering; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.widget.QueuedTooltip; import me.shedaniel.rei.gui.widget.TextFieldWidget; +import net.minecraft.class_4185; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.TranslatableTextComponent; @@ -334,9 +334,9 @@ public class ConfigScreen extends Screen { return false; } })); - addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { + addButton(new class_4185(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { @Override - public void onPressed(double double_1, double double_2) { + public void method_1826() { try { RoughlyEnoughItemsCore.getConfigManager().saveConfig(); } catch (IOException e) { @@ -372,7 +372,7 @@ public class ConfigScreen extends Screen { } @Override - public InputListener getFocused() { + public InputListener method_19357() { return entryListWidget; } diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index 40e4aed80..b2b241225 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -1,10 +1,10 @@ package me.shedaniel.rei.gui.credits; import me.shedaniel.rei.client.ScreenHelper; +import net.minecraft.class_4185; import net.minecraft.client.gui.ContainerScreen; import net.minecraft.client.gui.InputListener; import net.minecraft.client.gui.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.StringTextComponent; @@ -34,9 +34,9 @@ public class CreditsScreen extends Screen { for(String line : I18n.translate("text.rei.credit.text").split("\n")) entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(line))); entryListWidget.creditsAddEntry(new CreditsEntry(new StringTextComponent(""))); - addButton(new ButtonWidget(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { + addButton(new class_4185(screenWidth / 2 - 100, screenHeight - 26, I18n.translate("gui.done")) { @Override - public void onPressed(double double_1, double double_2) { + public void method_1826() { CreditsScreen.this.client.openScreen(parent); ScreenHelper.getLastOverlay().onInitialized(); } @@ -58,7 +58,7 @@ public class CreditsScreen extends Screen { } @Override - public InputListener getFocused() { + public InputListener method_19357() { return entryListWidget; } 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 2d9b97250..59446f8bd 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/IWidget.java @@ -28,11 +28,11 @@ public interface IWidget extends InputListener, Drawable { } @Override - default boolean mouseScrolled(double amount) { + default boolean mouseScrolled(double i, double j, double amount) { if (onMouseScrolled(amount)) return true; for(IWidget widget : getListeners()) - if (widget.mouseScrolled(amount)) + if (widget.mouseScrolled(i, j, amount)) return true; return false; } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java new file mode 100644 index 000000000..5c3e10461 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/mixin/MixinBrewingRecipeRegistry.java @@ -0,0 +1,59 @@ +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.DefaultPlugin; +import net.minecraft.item.Item; +import net.minecraft.item.ItemProvider; +import net.minecraft.item.PotionItem; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionUtil; +import net.minecraft.recipe.BrewingRecipeRegistry; +import net.minecraft.recipe.Ingredient; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Arrays; +import java.util.List; + +@Mixin(BrewingRecipeRegistry.class) +public class MixinBrewingRecipeRegistry { + + private static final List SELF_ITEM_RECIPES = Lists.newArrayList(); + private static final List REGISTERED_POTION_TYPES = Lists.newArrayList(); + private static final List SELF_POTION_TYPES = Lists.newArrayList(); + + @Inject(method = "registerPotionType", at = @At("RETURN")) + private static void method_8080(Item item_1, CallbackInfo ci) { + if (item_1 instanceof PotionItem) + SELF_POTION_TYPES.add(Ingredient.ofItems(new ItemProvider[]{item_1})); + } + + @Inject(method = "registerItemRecipe", at = @At("RETURN")) + private static void method_8071(Item item_1, Item item_2, Item item_3, CallbackInfo ci) { + if (item_1 instanceof PotionItem && item_3 instanceof PotionItem) + SELF_ITEM_RECIPES.add(new BrewingRecipe(item_1, Ingredient.ofItems(new ItemProvider[]{item_2}), item_3)); + } + + @Inject(method = "registerPotionRecipe", at = @At("RETURN")) + private static void registerPotionRecipe(Potion potion_1, Item item_1, Potion potion_2, CallbackInfo ci) { + if (!REGISTERED_POTION_TYPES.contains(potion_1)) + rei_registerPotionType(potion_1); + if (!REGISTERED_POTION_TYPES.contains(potion_2)) + rei_registerPotionType(potion_2); + SELF_POTION_TYPES.stream().map(Ingredient::getStackArray).forEach(itemStacks -> Arrays.stream(itemStacks).forEach(stack -> { + DefaultPlugin.registerBrewingDisplay(new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), potion_1), Ingredient.ofItems(new ItemProvider[]{item_1}), PotionUtil.setPotion(stack.copy(), potion_2))); + })); + } + + private static void rei_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))); + }); + } + +} diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java index 5371ca545..f07ce83ff 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinContainerScreen.java @@ -57,17 +57,17 @@ public class MixinContainerScreen extends Screen implements ContainerScreenHooks } @Override - public boolean mouseScrolled(double double_1) { + public boolean mouseScrolled(double i, double j, double double_1) { if (MinecraftClient.getInstance().currentScreen instanceof CreativePlayerInventoryScreen) { TabGetter tabGetter = (TabGetter) MinecraftClient.getInstance().currentScreen; if (tabGetter.rei_getSelectedTab() != ItemGroup.INVENTORY.getIndex()) - return super.mouseScrolled(double_1); + return super.mouseScrolled(i, j, double_1); } ContainerScreenOverlay overlay = ScreenHelper.getLastOverlay(); if (ScreenHelper.isOverlayVisible() && overlay.getRectangle().contains(ClientHelper.getMouseLocation())) - if (overlay.mouseScrolled(double_1)) + if (overlay.mouseScrolled(i, j, double_1)) return true; - return super.mouseScrolled(double_1); + return super.mouseScrolled(i, j, double_1); } @Inject(method = "keyPressed(III)Z", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java index 0ff01ec3c..a4093d09f 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinCraftingTableScreen.java @@ -26,8 +26,8 @@ public abstract class MixinCraftingTableScreen extends ContainerScreen { } @Override - public InputListener getFocused() { - return super.getFocused(); + public InputListener method_19357() { + return super.method_19357(); } @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java index 51eb3947b..a7c06c689 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java @@ -29,9 +29,9 @@ public abstract class MixinCreativePlayerInventoryScreen extends AbstractPlayerI protected abstract boolean doRenderScrollBar(); @Inject(method = "mouseScrolled", at = @At("HEAD"), cancellable = true) - public void mouseScrolled(double amount, CallbackInfoReturnable ci) { + public void mouseScrolled(double i, double j, double amount, CallbackInfoReturnable ci) { if (!doRenderScrollBar() && selectedTab == ItemGroup.INVENTORY.getIndex()) - if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientHelper.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(amount)) { + if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().getRectangle().contains(ClientHelper.getMouseLocation()) && ScreenHelper.getLastOverlay().mouseScrolled(i, j, amount)) { ci.setReturnValue(true); ci.cancel(); } diff --git a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryScreen.java b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryScreen.java index fef58b38d..c47d55f6a 100644 --- a/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryScreen.java +++ b/src/main/java/me/shedaniel/rei/mixin/MixinPlayerInventoryScreen.java @@ -27,8 +27,8 @@ public abstract class MixinPlayerInventoryScreen extends AbstractPlayerInventory } @Override - public InputListener getFocused() { - return super.getFocused(); + public InputListener method_19357() { + return super.method_19357(); } @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 6e54c55e5..b74f97911 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -16,7 +16,6 @@ import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.potion.PotionUtil; -import net.minecraft.recipe.REIBrewingRecipeRegistry; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.StonecuttingRecipe; import net.minecraft.recipe.cooking.BlastingRecipe; @@ -41,6 +40,12 @@ public class DefaultPlugin implements REIPlugin { public static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing"); public static final Identifier PLUGIN = new Identifier("roughlyenoughitems", "default_plugin"); + private static final List BREWING_DISPLAYS = Lists.newArrayList(); + + public static void registerBrewingDisplay(DefaultBrewingDisplay display) { + BREWING_DISPLAYS.add(display); + } + @Override public void onFirstLoad(PluginDisabler pluginDisabler) { if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) { @@ -99,7 +104,7 @@ public class DefaultPlugin implements REIPlugin { recipeHelper.registerDisplay(CAMPFIRE, new DefaultCampfireDisplay((CampfireCookingRecipe) recipe)); else if (recipe instanceof StonecuttingRecipe) recipeHelper.registerDisplay(STONE_CUTTING, new DefaultStoneCuttingDisplay((StonecuttingRecipe) recipe)); - REIBrewingRecipeRegistry.registerDisplays(recipeHelper); + BREWING_DISPLAYS.stream().forEachOrdered(display -> recipeHelper.registerDisplay(BREWING, display)); List arrowStack = Arrays.asList(Items.ARROW.getDefaultStack()); RoughlyEnoughItemsCore.getItemRegisterer().getItemList().stream().filter(stack -> stack.getItem().equals(Items.LINGERING_POTION)).forEach(stack -> { List> input = new ArrayList<>(); diff --git a/src/main/java/net/minecraft/recipe/REIBrewingRecipeRegistry.java b/src/main/java/net/minecraft/recipe/REIBrewingRecipeRegistry.java deleted file mode 100644 index 0622afa6e..000000000 --- a/src/main/java/net/minecraft/recipe/REIBrewingRecipeRegistry.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.minecraft.recipe; - -import com.google.common.collect.Lists; -import me.shedaniel.rei.api.RecipeHelper; -import me.shedaniel.rei.plugin.BrewingRecipe; -import me.shedaniel.rei.plugin.DefaultBrewingDisplay; -import me.shedaniel.rei.plugin.DefaultPlugin; -import net.minecraft.item.Item; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionUtil; - -import java.util.Arrays; -import java.util.List; - -public class REIBrewingRecipeRegistry { - - public static void registerDisplays(RecipeHelper recipeHelper) { - List registeredPotionTypes = Lists.newArrayList(); - List potionItemConversions = Lists.newArrayList(); - List potionItems = REIPotionRecipeUtils.getPotionTypes(); - REIPotionRecipeUtils.getItemRecipes().forEach(o -> { - try { - Item input = (Item) REIPotionRecipeUtils.getInputFromRecipe(o); - Item output = (Item) REIPotionRecipeUtils.getOutputFromRecipe(o); - Ingredient reagent = REIPotionRecipeUtils.getIngredientFromRecipe(o); - potionItemConversions.add(new BrewingRecipe(input, reagent, output)); - } catch (Throwable throwable) { - throwable.printStackTrace(); - } - }); - REIPotionRecipeUtils.getPotionRecipes().forEach(o -> { - try { - Potion input = (Potion) REIPotionRecipeUtils.getInputFromRecipe(o); - Potion output = (Potion) REIPotionRecipeUtils.getOutputFromRecipe(o); - Ingredient ingredient = REIPotionRecipeUtils.getIngredientFromRecipe(o); - if (!registeredPotionTypes.contains(input)) - registerPotionType(recipeHelper, registeredPotionTypes, potionItemConversions, input); - if (!registeredPotionTypes.contains(output)) - registerPotionType(recipeHelper, registeredPotionTypes, potionItemConversions, output); - potionItems.stream().map(Ingredient::getStackArray).forEach(itemStacks -> Arrays.stream(itemStacks).forEach(stack -> { - recipeHelper.registerDisplay(DefaultPlugin.BREWING, new DefaultBrewingDisplay(PotionUtil.setPotion(stack.copy(), input), ingredient, PotionUtil.setPotion(stack.copy(), output))); - })); - } catch (Throwable throwable) { - throwable.printStackTrace(); - } - }); - } - - private static void registerPotionType(RecipeHelper recipeHelper, List list, List potionItemConversions, Potion potion) { - list.add(potion); - potionItemConversions.forEach(recipe -> { - recipeHelper.registerDisplay(DefaultPlugin.BREWING, new DefaultBrewingDisplay(PotionUtil.setPotion(recipe.input.getDefaultStack(), potion), recipe.ingredient, PotionUtil.setPotion(recipe.output.getDefaultStack(), potion))); - }); - } - -} diff --git a/src/main/java/net/minecraft/recipe/REIPotionRecipeUtils.java b/src/main/java/net/minecraft/recipe/REIPotionRecipeUtils.java deleted file mode 100644 index cc3bc6508..000000000 --- a/src/main/java/net/minecraft/recipe/REIPotionRecipeUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.minecraft.recipe; - -import com.google.common.collect.Lists; -import me.shedaniel.cloth.api.ReflectionUtils; -import net.minecraft.item.Item; -import net.minecraft.potion.Potion; - -import java.util.List; - -public class REIPotionRecipeUtils { - - public static Object getInputFromRecipe(BrewingRecipeRegistry.Recipe o) throws Throwable { - return ReflectionUtils.getField(o, Object.class, 0).orElseThrow(ReflectionUtils.ReflectionException::new); - } - - public static Object getOutputFromRecipe(Object o) throws Throwable { - return ReflectionUtils.getField(o, Object.class, 2).orElseThrow(ReflectionUtils.ReflectionException::new); - } - - public static Ingredient getIngredientFromRecipe(Object o) throws Throwable { - return ReflectionUtils.getField(o, Ingredient.class, 1).orElseThrow(ReflectionUtils.ReflectionException::new); - } - - public static List> getItemRecipes() { - return ReflectionUtils.getStaticField(BrewingRecipeRegistry.class, List.class, 1).orElse(Lists.newArrayList()); - } - - public static List> getPotionRecipes() { - return ReflectionUtils.getStaticField(BrewingRecipeRegistry.class, List.class, 0).orElse(Lists.newArrayList()); - } - - public static List getPotionTypes() { - return ReflectionUtils.getStaticField(BrewingRecipeRegistry.class, List.class, 2).orElse(Lists.newArrayList()); - } - -} -- cgit