aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-08-28 18:50:24 +0900
committershedaniel <daniel@shedaniel.me>2022-08-28 18:50:24 +0900
commit94e323f75c17e297c33fba1d3afb5c47ae66a8ad (patch)
tree3c6cb6c1721fbda792050b96707fad50d1db64e9 /runtime/src/main/java
parentf5061d043cac7f0217bbe9d4c041b77f9ef911a1 (diff)
downloadRoughlyEnoughItems-94e323f75c17e297c33fba1d3afb5c47ae66a8ad.tar.gz
RoughlyEnoughItems-94e323f75c17e297c33fba1d3afb5c47ae66a8ad.tar.bz2
RoughlyEnoughItems-94e323f75c17e297c33fba1d3afb5c47ae66a8ad.zip
Separate EntryListWidget and FavoritesListWidget more
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java11
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/DisplayScreenStack.java23
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java208
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/dragging/CurrentDraggingStack.java312
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java12
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/AbstractMenuEntry.java77
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/Menu.java210
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuAccess.java64
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuAccessImpl.java136
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuEntry.java44
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/EmptyMenuEntry.java58
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/SeparatorMenuEntry.java53
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/SubMenuEntry.java153
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/TextMenuEntry.java70
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/ToggleMenuEntry.java144
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/AbstractScreenOverlay.java351
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/InternalOverlayBounds.java51
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java190
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java185
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java165
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java82
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayedEntryWidget.java236
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryHighlighter.java64
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java47
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/LateRenderable.java30
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CachingEntryRenderer.java102
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java87
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedStack.java60
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsingEntryListWidget.java101
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListEntries.java48
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java151
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java218
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java367
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java294
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java208
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidget.java237
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayEntry.java325
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryManager.java147
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java407
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/listeners/FavoritesRegionListener.java74
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FadingFavoritesPanelButton.java126
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FavoritesPanel.java179
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FavoritesTogglePanelButton.java75
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEmptyRow.java53
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java222
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelRow.java34
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelSectionRow.java62
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelSeparatorRow.java48
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/trash/TrashWidget.java110
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java505
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java89
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionDraggableStack.java88
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java131
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java75
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionRenderingDebugger.java80
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java46
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/util/RectangleUtils.java52
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java4
60 files changed, 73 insertions, 7722 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
index 3c1cbcb01..c132fa569 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.impl.client;
-import com.google.common.base.Suppliers;
import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.config.ConfigManager;
import me.shedaniel.rei.api.client.config.ConfigObject;
@@ -44,23 +43,12 @@ import net.minecraft.client.gui.screens.Screen;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
-import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
-import java.util.function.Supplier;
@ApiStatus.Internal
@Environment(EnvType.CLIENT)
public class ClientHelperImpl extends ClientNetworkHelperImpl implements ClientModNameHelperImpl {
- public final Supplier<Boolean> isAprilFools = Suppliers.memoize(() -> {
- try {
- LocalDateTime now = LocalDateTime.now();
- return now.getMonthValue() == 4 && now.getDayOfMonth() == 1;
- } catch (Throwable ignored) {
- }
- return false;
- });
-
/**
* @return the instance of {@link ClientHelperImpl}
* @see ClientHelper#getInstance()
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java
index 18efbbf22..746c29a06 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java
@@ -68,7 +68,7 @@ public abstract class ClientNetworkHelperImpl implements ClientHelper {
return NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_HOTBAR_PACKET);
}
- public boolean canDeleteItems() {
+ public boolean canUseDeletePackets() {
return hasPermissionToUsePackets() || Minecraft.getInstance().gameMode.hasInfiniteItems();
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
index 0c4007509..a38354ff6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java
@@ -28,7 +28,6 @@ import com.mojang.blaze3d.systems.RenderSystem;
import dev.architectury.event.EventResult;
import dev.architectury.event.events.client.ClientGuiEvent;
import dev.architectury.event.events.client.ClientTickEvent;
-import dev.architectury.platform.Platform;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.config.ConfigObject;
@@ -52,7 +51,6 @@ import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
-import java.lang.reflect.InvocationTargetException;
import java.util.Optional;
import static me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget.entrySize;
@@ -76,14 +74,7 @@ public class REIRuntimeImpl implements REIRuntime {
@Override
public Optional<ScreenOverlay> getOverlay(boolean reset, boolean init) {
if ((overlay == null && init) || reset) {
- try {
- overlay = (ScreenOverlayImpl) Class.forName(Platform.isForge() ? "me.shedaniel.rei.impl.client.gui.forge.ScreenOverlayImplForge"
- : "me.shedaniel.rei.impl.client.gui.fabric.ScreenOverlayImplFabric")
- .getDeclaredConstructor()
- .newInstance();
- } catch (InstantiationException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
- throw new RuntimeException(e);
- }
+ overlay = new ScreenOverlayImpl();
overlay.init();
overlay.getSearchField().setFocused(false);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/DisplayScreenStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/DisplayScreenStack.java
index 4b12aa5d6..9b590da56 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/DisplayScreenStack.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/DisplayScreenStack.java
@@ -1,3 +1,26 @@
+/*
+ * This file is licensed under the MIT License, part of Roughly Enough Items.
+ * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
package me.shedaniel.rei.impl.client.gui;
import com.google.common.collect.Iterables;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
deleted file mode 100644
index 1943ad379..000000000
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * This file is licensed under the MIT License, part of Roughly Enough Items.
- * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.shedaniel.rei.impl.client.gui;
-
-import com.mojang.blaze3d.platform.Window;
-import me.shedaniel.math.Rectangle;
-import me.shedaniel.rei.api.client.REIRuntime;
-import me.shedaniel.rei.api.client.config.ConfigObject;
-import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation;
-import me.shedaniel.rei.api.client.gui.widgets.TextField;
-import me.shedaniel.rei.api.client.overlay.OverlayListWidget;
-import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
-import me.shedaniel.rei.impl.client.gui.overlay.AbstractScreenOverlay;
-import me.shedaniel.rei.impl.client.gui.widget.ConfigButtonWidget;
-import me.shedaniel.rei.impl.client.gui.widget.CraftableFilterButtonWidget;
-import me.shedaniel.rei.impl.client.gui.widget.entrylist.EntryListWidget;
-import me.shedaniel.rei.impl.client.gui.widget.entrylist.PaginatedEntryListWidget;
-import me.shedaniel.rei.impl.client.gui.widget.entrylist.ScrolledEntryListWidget;
-import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidget;
-import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.components.events.GuiEventListener;
-import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Objects;
-import java.util.Optional;
-
-@ApiStatus.Internal
-public abstract class ScreenOverlayImpl extends AbstractScreenOverlay {
- private EntryListWidget entryListWidget = null;
- private FavoritesListWidget favoritesListWidget = null;
- private OverlaySearchField searchField = null;
-
- public static EntryListWidget getEntryListWidget() {
- return getInstance().getEntryList();
- }
-
- @Nullable
- public static FavoritesListWidget getFavoritesListWidget() {
- return getInstance().getFavoritesListNullable();
- }
-
- public static ScreenOverlayImpl getInstance() {
- return (ScreenOverlayImpl) REIRuntime.getInstance().getOverlay().get();
- }
-
- @Override
- public void init() {
- super.init();
-
- TextField searchField = getSearchField();
- searchField.asWidget().getBounds().setBounds(getSearchFieldArea());
- this.children().add(searchField.asWidget());
-
- if (ConfigObject.getInstance().isFavoritesEnabled()) {
- getFavoritesListWidget().favoritePanel.resetRows();
- this.children().add(getFavoritesListWidget());
- }
-
- EntryListWidget entryListWidget = getEntryListWidget();
- entryListWidget.updateArea(this.getBounds(), searchField.getText());
- this.children().add(entryListWidget);
- searchField.setResponder(s -> entryListWidget.updateSearch(s, false));
- entryListWidget.init(this);
-
- this.children().add(ConfigButtonWidget.create(this));
- if (ConfigObject.getInstance().isCraftableFilterEnabled()) {
- this.children().add(CraftableFilterButtonWidget.create(this));
- }
- }
-
- private Rectangle getSearchFieldArea() {
- int widthRemoved = 1;
- if (ConfigObject.getInstance().isCraftableFilterEnabled()) widthRemoved += 22;
- if (ConfigObject.getInstance().isLowerConfigButton()) widthRemoved += 22;
- SearchFieldLocation searchFieldLocation = REIRuntime.getInstance().getContextualSearchFieldLocation();
- return switch (searchFieldLocation) {
- case TOP_SIDE -> getTopSideSearchFieldArea(widthRemoved);
- case BOTTOM_SIDE -> getBottomSideSearchFieldArea(widthRemoved);
- case CENTER -> getCenterSearchFieldArea(widthRemoved);
- };
- }
-
- private Rectangle getTopSideSearchFieldArea(int widthRemoved) {
- return new Rectangle(getBounds().x + 2, 4, getBounds().width - 6 - widthRemoved, 18);
- }
-
- private Rectangle getBottomSideSearchFieldArea(int widthRemoved) {
- Window window = Minecraft.getInstance().getWindow();
- return new Rectangle(getBounds().x + 2, window.getGuiScaledHeight() - 22, getBounds().width - 6 - widthRemoved, 18);
- }
-
- private Rectangle getCenterSearchFieldArea(int widthRemoved) {
- Window window = Minecraft.getInstance().getWindow();
- Rectangle screenBounds = ScreenRegistry.getInstance().getScreenBounds(minecraft.screen);
- return new Rectangle(screenBounds.x, window.getGuiScaledHeight() - 22, screenBounds.width - widthRemoved, 18);
- }
-
- @Override
- protected void updateSearch() {
- getEntryListWidget().updateSearch(getSearchField().getText(), true);
- }
-
- @Override
- public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- if (super.keyPressed(keyCode, scanCode, modifiers)) return true;
- if (!hasSpace()) return false;
- if (!REIRuntime.getInstance().isOverlayVisible()) return false;
- if (ConfigObject.getInstance().getFocusSearchFieldKeybind().matchesKey(keyCode, scanCode)) {
- getSearchField().setFocused(true);
- setFocused(getSearchField());
- getSearchField().keybindFocusTime = System.currentTimeMillis();
- getSearchField().keybindFocusKey = keyCode;
- return true;
- }
- return false;
- }
-
- @Override
- public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (super.mouseClicked(mouseX, mouseY, button)) return true;
- boolean visible = REIRuntime.getInstance().isOverlayVisible();
- if (!hasSpace() || !visible) return false;
- if (ConfigObject.getInstance().getFocusSearchFieldKeybind().matchesMouse(button)) {
- getSearchField().setFocused(true);
- setFocused(getSearchField().asWidget());
- getSearchField().keybindFocusTime = -1;
- getSearchField().keybindFocusKey = -1;
- return true;
- }
- return false;
- }
-
- @Override