aboutsummaryrefslogtreecommitdiff
path: root/default-plugin/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-20 17:20:54 +0800
committershedaniel <daniel@shedaniel.me>2021-03-20 17:20:54 +0800
commit0292fa5317106c46a39cd39e9664936f807b6270 (patch)
treef92cf071d1361be177af6c966148b8fd1c26613a /default-plugin/src/main/java
parent2cd3f0737b2008e37f8eaadf479312c60d36e7bc (diff)
downloadRoughlyEnoughItems-0292fa5317106c46a39cd39e9664936f807b6270.tar.gz
RoughlyEnoughItems-0292fa5317106c46a39cd39e9664936f807b6270.tar.bz2
RoughlyEnoughItems-0292fa5317106c46a39cd39e9664936f807b6270.zip
Refactor exclusion zones, wrap JEI exclusion zones
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'default-plugin/src/main/java')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultPotionEffectExclusionZones.java22
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/DefaultRecipeBookExclusionZones.java15
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;
}
-
}