aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main/java/me/shedaniel')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java83
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java1
7 files changed, 74 insertions, 54 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 29fa87e01..926e36a91 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -33,6 +33,7 @@ import me.shedaniel.architectury.networking.NetworkManager;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.REIHelper;
+import me.shedaniel.rei.api.REIOverlay;
import me.shedaniel.rei.api.config.ConfigObject;
import me.shedaniel.rei.api.favorites.FavoriteEntry;
import me.shedaniel.rei.api.favorites.FavoriteEntryType;
@@ -65,12 +66,10 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.EditBox;
-import net.minecraft.client.gui.components.events.GuiEventListener;
+import net.minecraft.client.gui.components.ImageButton;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.gui.screens.inventory.CraftingScreen;
-import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
-import net.minecraft.client.gui.screens.inventory.InventoryScreen;
import net.minecraft.client.gui.screens.recipebook.GhostRecipe;
import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent;
import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener;
@@ -441,6 +440,7 @@ public class RoughlyEnoughItemsCore {
}
private boolean shouldReturn(Screen screen) {
+ if (!REIHelper.getInstance().getOverlay().isPresent()) return true;
if (screen == null) return true;
if (screen != Minecraft.getInstance().screen) return true;
return shouldReturn(screen.getClass());
@@ -466,92 +466,95 @@ public class RoughlyEnoughItemsCore {
final ResourceLocation recipeButtonTex = new ResourceLocation("textures/gui/recipe_button.png");
long[] lastSync = {-1};
RecipeUpdateEvent.EVENT.register(recipeManager -> syncRecipes(lastSync));
- // TODO Make Disable Recipe Book work
- /*ClothClientHooks.SCREEN_ADD_BUTTON.register((minecraftClient, screen, abstractButtonWidget) -> {
- if (ConfigObject.getInstance().doesDisableRecipeBook() && screen instanceof AbstractContainerScreen && abstractButtonWidget instanceof ImageButton)
- if (((ImageButton) abstractButtonWidget).resourceLocation.equals(recipeButtonTex))
- return InteractionResult.FAIL;
- return InteractionResult.PASS;
- });*/
GuiEvent.INIT_POST.register((screen, widgets, children) -> {
REIHelperImpl.getInstance().setPreviousScreen(screen);
- if (shouldReturn(screen))
- return;
- if (screen instanceof InventoryScreen && client.gameMode.hasInfiniteItems())
- return;
- boolean alreadyAdded = false;
- for (GuiEventListener element : Lists.newArrayList(children))
- if (ContainerScreenOverlay.class.isAssignableFrom(element.getClass()))
- if (alreadyAdded)
- children.remove(element);
- else
- alreadyAdded = true;
- if (!alreadyAdded)
- children.add(REIHelper.getInstance().getOverlay(true).get());
+ if (ConfigObject.getInstance().doesDisableRecipeBook() && screen instanceof AbstractContainerScreen) {
+ widgets.removeIf(widget -> widget instanceof ImageButton && ((ImageButton) widget).resourceLocation.equals(recipeButtonTex));
+ }
});
ClientScreenInputEvent.MOUSE_CLICKED_PRE.register((minecraftClient, screen, mouseX, mouseY, button) -> {
isLeftModePressed = true;
- if (REIHelper.getInstance().getOverlay().isPresent())
- if (screen instanceof CreativeModeInventoryScreen)
- if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseClicked(mouseX, mouseY, button)) {
- screen.setFocused(REIHelper.getInstance().getOverlay().get());
- if (button == 0)
- screen.setDragging(true);
- return InteractionResult.SUCCESS;
- }
+ if (shouldReturn(screen))
+ return InteractionResult.PASS;
+ resetFocused(screen);
+ if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseClicked(mouseX, mouseY, button)) {
+ if (button == 0) {
+ screen.setDragging(true);
+ }
+ resetFocused(screen);
+ return InteractionResult.SUCCESS;
+ }
return InteractionResult.PASS;
});
ClientScreenInputEvent.MOUSE_RELEASED_PRE.register((minecraftClient, screen, mouseX, mouseY, button) -> {
isLeftModePressed = false;
if (shouldReturn(screen))
return InteractionResult.PASS;
- if (REIHelper.getInstance().getOverlay().isPresent())
- if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseReleased(mouseX, mouseY, button)) {
- return InteractionResult.SUCCESS;
- }
+ resetFocused(screen);
+ if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseReleased(mouseX, mouseY, button)
+ && resetFocused(screen)) {
+ return InteractionResult.SUCCESS;
+ }
return InteractionResult.PASS;
});
ClientScreenInputEvent.MOUSE_SCROLLED_PRE.register((minecraftClient, screen, mouseX, mouseY, amount) -> {
if (shouldReturn(screen))
return InteractionResult.PASS;
- if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseScrolled(mouseX, mouseY, amount))
+ resetFocused(screen);
+ if (REIHelper.getInstance().isOverlayVisible() && REIHelper.getInstance().getOverlay().get().mouseScrolled(mouseX, mouseY, amount)
+ && resetFocused(screen))
return InteractionResult.SUCCESS;
return InteractionResult.PASS;
});
ClientScreenInputEvent.CHAR_TYPED_PRE.register((minecraftClient, screen, character, keyCode) -> {
if (shouldReturn(screen))
return InteractionResult.PASS;
- if (REIHelper.getInstance().getOverlay().get().charTyped(character, keyCode))
+ resetFocused(screen);
+ if (REIHelper.getInstance().getOverlay().get().charTyped(character, keyCode)
+ && resetFocused(screen))
return InteractionResult.SUCCESS;
return InteractionResult.PASS;
});
GuiEvent.RENDER_POST.register((screen, matrices, mouseX, mouseY, delta) -> {
if (shouldReturn(screen))
return;
+ resetFocused(screen);
REIHelper.getInstance().getOverlay().get().render(matrices, mouseX, mouseY, delta);
((ContainerScreenOverlay) REIHelper.getInstance().getOverlay().get()).lateRender(matrices, mouseX, mouseY, delta);
+ resetFocused(screen);
});
ClientScreenInputEvent.MOUSE_DRAGGED_PRE.register((minecraftClient, screen, mouseX1, mouseY1, button, mouseX2, mouseY2) -> {
if (shouldReturn(screen))
return InteractionResult.PASS;
- if (screen instanceof AbstractContainerScreen && REIHelper.getInstance().getOverlay().get().mouseDragged(mouseX1, mouseY1, button, mouseX2, mouseY2))
+ resetFocused(screen);
+ if (REIHelper.getInstance().getOverlay().get().mouseDragged(mouseX1, mouseY1, button, mouseX2, mouseY2)
+ && resetFocused(screen))
return InteractionResult.SUCCESS;
return InteractionResult.PASS;
});
ClientScreenInputEvent.KEY_PRESSED_PRE.register((minecraftClient, screen, i, i1, i2) -> {
if (shouldReturn(screen))
return InteractionResult.PASS;
- if (screen instanceof AbstractContainerScreen && ConfigObject.getInstance().doesDisableRecipeBook() && ConfigObject.getInstance().doesFixTabCloseContainer())
+ if (screen instanceof AbstractContainerScreen && ConfigObject.getInstance().doesDisableRecipeBook() && ConfigObject.getInstance().doesFixTabCloseContainer()) {
if (i == 258 && minecraftClient.options.keyInventory.matches(i, i1)) {
minecraftClient.player.closeContainer();
return InteractionResult.SUCCESS;
}
+ }
if (screen.getFocused() != null && screen.getFocused() instanceof EditBox || (screen.getFocused() instanceof RecipeBookComponent && ((RecipeBookComponent) screen.getFocused()).searchBox != null && ((RecipeBookComponent) screen.getFocused()).searchBox.isFocused()))
return InteractionResult.PASS;
- if (REIHelper.getInstance().getOverlay().get().keyPressed(i, i1, i2))
+ resetFocused(screen);
+ if (REIHelper.getInstance().getOverlay().get().keyPressed(i, i1, i2)
+ && resetFocused(screen))
return InteractionResult.SUCCESS;
return InteractionResult.PASS;
});
}
+ private boolean resetFocused(Screen screen) {
+ if (screen.getFocused() instanceof REIOverlay || screen.getFocused() == screen) {
+ screen.setFocused(null);
+ }
+ return true;
+ }
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
index 9eec7c84c..9a06211a2 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/OverlaySearchField.java
@@ -80,11 +80,11 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
return TextTransformations.forwardWithTransformation(text, (s, charIndex, c) -> {
byte arg = highlighter.highlighted[charIndex + index];
Style style = Style.EMPTY;
+ if (isMain && ContainerScreenOverlay.getEntryListWidget().getAllStacks().isEmpty() && !getText().isEmpty()) {
+ style = ERROR_STYLE;
+ }
if (arg > 0) {
Argument<?, ?> argument = ArgumentsRegistry.ARGUMENT_LIST.get((arg - 1) / 2);
- if (isMain && ContainerScreenOverlay.getEntryListWidget().getAllStacks().isEmpty() && !getText().isEmpty()) {
- style = ERROR_STYLE;
- }
if (!isPlain) {
style = argument.getHighlightedStyle();
}
@@ -130,7 +130,6 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
public void laterRender(PoseStack matrices, int int_1, int int_2, float float_1) {
RenderSystem.disableDepthTest();
- setEditableColor(isMain && ContainerScreenOverlay.getEntryListWidget().getAllStacks().isEmpty() && !getText().isEmpty() ? 16733525 : isHighlighting && isMain ? -852212 : (containsMouse(PointHelper.ofMouse()) || isFocused()) ? (REIHelper.getInstance().isDarkThemeEnabled() ? -17587 : -1) : -6250336);
setSuggestion(!isFocused() && getText().isEmpty() ? I18n.get("text.rei.search.field.suggestion") : null);
super.render(matrices, int_1, int_2, float_1);
RenderSystem.enableDepthTest();
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
index ccbfa51b3..798c3ac24 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java
@@ -125,7 +125,7 @@ public class CreditsScreen extends Screen {
MutableLong current = new MutableLong(0);
Minecraft.getInstance().setScreen(new TransformingScreen(true, parent,
this,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (ConfigObject.getInstance().isReducedMotion() ? -3000 : 0) : current.getValue()),
+ () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!ConfigObject.getInstance().isCreditsScreenAnimated() ? -3000 : 0) : current.getValue()),
() -> EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1))
* Minecraft.getInstance().getWindow().getGuiScaledWidth(),
() -> 0,
diff --git a/runtime/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java b/runtime/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
index db383eda7..7a6851619 100644
--- a/runtime/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/gui/widget/FavoritesListWidget.java
@@ -322,7 +322,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
entry = new Entry(favorite, entrySize);
}
- if (ConfigObject.getInstance().isReducedMotion()) entry.size.setAs(entrySize * 100);
+ if (!ConfigObject.getInstance().isFavoritesAnimated()) entry.size.setAs(entrySize * 100);
else entry.size.setTo(entrySize * 100, 300);
entries.put(entry.hashIgnoreAmount(), entry);
}
@@ -530,7 +530,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
public void remove() {
if (!hidden) {
this.hidden = true;
- if (ConfigObject.getInstance().isReducedMotion()) this.size.setAs(0);
+ if (!ConfigObject.getInstance().isFavoritesAnimated()) this.size.setAs(0);
else this.size.setTo(0, 300);
}
}
@@ -562,7 +562,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
}
public void moveTo(boolean animated, int xPos, int yPos) {
- if (animated && !ConfigObject.getInstance().isReducedMotion()) {
+ if (animated && ConfigObject.getInstance().isFavoritesAnimated()) {
x.setTo(xPos, 200);
y.setTo(yPos, 200);
} else {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
index b8edc6b5c..e69c5f3aa 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
@@ -245,7 +245,7 @@ public class ConfigManagerImpl implements ConfigManager {
MutableLong current = new MutableLong(0);
parentTranslated = new TransformingScreen(true, parent,
null,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()),
+ () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isConfigScreenAnimated() ? -3000 : 0) : current.getValue()),
() -> 0, () -> (EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
* Minecraft.getInstance().getWindow().getGuiScaledHeight(), () -> Util.getMillis() - current.getValue() > 800);
parentTranslated.setInitAfter(true);
@@ -266,7 +266,7 @@ public class ConfigManagerImpl implements ConfigManager {
CreditsScreen creditsScreen = new CreditsScreen(screen);
Minecraft.getInstance().setScreen(new TransformingScreen(false, creditsScreen,
screen,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()),
+ () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isCreditsScreenAnimated() ? -3000 : 0) : current.getValue()),
() -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
* Minecraft.getInstance().getWindow().getGuiScaledWidth() * 1.3,
() -> 0,
@@ -284,7 +284,7 @@ public class ConfigManagerImpl implements ConfigManager {
MutableLong current = new MutableLong(0);
return new TransformingScreen(false, configScreen,
parent,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0) : current.getValue()),
+ () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isConfigScreenAnimated() ? -3000 : 0) : current.getValue()),
() -> 0, () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
* Minecraft.getInstance().getWindow().getGuiScaledHeight() * 1.3, () -> Util.getMillis() - current.getValue() > 800);
} catch (Exception e) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
index ad1ea29b3..9c019f19a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/ConfigObjectImpl.java
@@ -101,8 +101,18 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
}
@Override
- public boolean isReducedMotion() {
- return basics.reducedMotion;
+ public boolean isConfigScreenAnimated() {
+ return basics.motion.configScreenAnimation;
+ }
+
+ @Override
+ public boolean isCreditsScreenAnimated() {
+ return basics.motion.creditsScreenAnimation;
+ }
+
+ @Override
+ public boolean isFavoritesAnimated() {
+ return basics.motion.favoritesAnimation;
}
@Override
@@ -400,7 +410,14 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Comment("Declares whether REI is visible.") @ConfigEntry.Gui.Excluded private boolean overlayVisible = true;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
private ItemCheatingStyle cheatingStyle = ItemCheatingStyle.GRAB;
- private boolean reducedMotion = false;
+ @ConfigEntry.Gui.CollapsibleObject
+ private Motion motion = new Motion();
+ }
+
+ public static class Motion {
+ private boolean configScreenAnimation = false;
+ private boolean creditsScreenAnimation = true;
+ private boolean favoritesAnimation = true;
}
public static class KeyBindings {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java b/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
index dea02b9c2..9e7831d23 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/InternalWidgets.java
@@ -48,6 +48,7 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Objects;