diff options
Diffstat (limited to 'default-plugin/src/main/java/me')
3 files changed, 18 insertions, 25 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 121ca47ba..585d13dc9 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -387,10 +387,10 @@ public class DefaultPlugin implements REIPlugin, BuiltinPlugin { public Rectangle getScreenBounds(AbstractContainerScreen<?> screen) { return new Rectangle(screen.leftPos, screen.topPos, screen.imageWidth, screen.imageHeight); } - + @Override - public Class<? extends Screen> getBaseSupportedClass() { - return AbstractContainerScreen.class; + public <R extends Screen> boolean isHandingScreen(Class<R> screen) { + return AbstractContainerScreen.class.isAssignableFrom(screen); } }); diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java index f46d5433b..49f8bad48 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java @@ -25,11 +25,10 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Ordering; import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.registry.screen.ExclusionZonesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen; import net.minecraft.world.effect.MobEffectInstance; @@ -37,29 +36,26 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.function.Supplier; @Environment(EnvType.CLIENT) -public class DefaultPotionEffectExclusionZones implements Supplier<List<Rectangle>> { +public class DefaultPotionEffectExclusionZones implements ExclusionZonesProvider<EffectRenderingInventoryScreen<?>> { @Override - public List<Rectangle> get() { - Screen screen = Minecraft.getInstance().screen; - if (!(screen instanceof EffectRenderingInventoryScreen) || !((EffectRenderingInventoryScreen<?>) screen).doRenderEffects) + public Collection<Rectangle> provide(EffectRenderingInventoryScreen<?> screen) { + if (!screen.doRenderEffects) return Collections.emptyList(); Collection<MobEffectInstance> activePotionEffects = Minecraft.getInstance().player.getActiveEffects(); if (activePotionEffects.isEmpty()) return Collections.emptyList(); - AbstractContainerScreen<?> containerScreen = (AbstractContainerScreen<?>) screen; - List<Rectangle> list = new ArrayList<>(); - int x = containerScreen.leftPos - 124; - int y = containerScreen.topPos; + List<Rectangle> zones = new ArrayList<>(); + int x = screen.leftPos - 124; + int y = screen.topPos; int height = 33; if (activePotionEffects.size() > 5) height = 132 / (activePotionEffects.size() - 1); for (MobEffectInstance instance : Ordering.natural().sortedCopy(activePotionEffects)) { - list.add(new Rectangle(x, y, 166, height)); + zones.add(new Rectangle(x, y, 166, height)); y += height; } - return list; + return zones; } } diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java index 7702c923a..0e3b3c956 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java @@ -25,29 +25,27 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.registry.screen.ExclusionZonesProvider; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener; import net.minecraft.world.inventory.RecipeBookMenu; +import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.function.Supplier; @Environment(EnvType.CLIENT) -public class DefaultRecipeBookExclusionZones implements Supplier<List<Rectangle>> { - +public class DefaultRecipeBookExclusionZones implements ExclusionZonesProvider<RecipeUpdateListener> { @Override - public List<Rectangle> get() { - Screen screen = Minecraft.getInstance().screen; - if (!(screen instanceof RecipeUpdateListener) || !(screen instanceof AbstractContainerScreen) || !(((AbstractContainerScreen<?>) screen).getMenu() instanceof RecipeBookMenu) || + public Collection<Rectangle> provide(RecipeUpdateListener screen) { + if (!(screen instanceof AbstractContainerScreen) || !(((AbstractContainerScreen<?>) screen).getMenu() instanceof RecipeBookMenu) || !Minecraft.getInstance().player.getRecipeBook().isOpen(((RecipeBookMenu<?>) ((AbstractContainerScreen<?>) screen).getMenu()).getRecipeBookType())) return Collections.emptyList(); - RecipeBookComponent recipeBookWidget = ((RecipeUpdateListener) screen).getRecipeBookComponent(); + RecipeBookComponent recipeBookWidget = screen.getRecipeBookComponent(); AbstractContainerScreen<?> containerScreen = (AbstractContainerScreen<?>) screen; List<Rectangle> l = Lists.newArrayList(new Rectangle(containerScreen.leftPos - 4 - 145, containerScreen.topPos, 4 + 145 + 30, containerScreen.imageHeight)); int size = recipeBookWidget.tabButtons.size(); @@ -55,5 +53,4 @@ public class DefaultRecipeBookExclusionZones implements Supplier<List<Rectangle> l.add(new Rectangle(containerScreen.leftPos - 4 - 145 - 30, containerScreen.topPos, 30, size * 27)); return l; } - } |
