diff options
Diffstat (limited to 'src/main/java/me')
11 files changed, 94 insertions, 30 deletions
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<BrewingRecipe> SELF_ITEM_RECIPES = Lists.newArrayList(); + private static final List<Potion> REGISTERED_POTION_TYPES = Lists.newArrayList(); + private static final List<Ingredient> 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<Boolean> ci) { + public void mouseScrolled(double i, double j, double amount, CallbackInfoReturnable<Boolean> 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<DefaultBrewingDisplay> 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<ItemStack> arrowStack = Arrays.asList(Items.ARROW.getDefaultStack()); RoughlyEnoughItemsCore.getItemRegisterer().getItemList().stream().filter(stack -> stack.getItem().equals(Items.LINGERING_POTION)).forEach(stack -> { List<List<ItemStack>> input = new ArrayList<>(); |
