aboutsummaryrefslogtreecommitdiff
path: root/runtime-frontend
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-10-22 01:11:04 +0800
committershedaniel <daniel@shedaniel.me>2022-10-22 01:12:32 +0800
commit0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1 (patch)
treef6f38140f94fa98adcad5b880fdc2aa3bd4df844 /runtime-frontend
parentbb7920e447d599d23abfac3b67d8823cf24f8150 (diff)
downloadRoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.tar.gz
RoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.tar.bz2
RoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.zip
Make it not crash
Diffstat (limited to 'runtime-frontend')
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java5
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/paginated/PaginatedEntryListWidget.java2
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java14
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java11
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java9
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java34
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java11
7 files changed, 46 insertions, 40 deletions
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java
index c9c4b3d85..66b47ffdb 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java
@@ -44,6 +44,7 @@ import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.client.search.SearchFilter;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
+import me.shedaniel.rei.api.common.networking.NetworkModule;
import me.shedaniel.rei.api.common.networking.NetworkingHelper;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.client.config.ConfigManagerInternal;
@@ -165,7 +166,7 @@ public abstract class EntryListWidgetImpl extends WidgetWithBounds implements En
debugger.render(matrices, bounds.x, bounds.y, delta);
- if (containsChecked(mouseX, mouseY, false) && ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && !minecraft.player.containerMenu.getCarried().isEmpty() && NetworkingHelper.getInstance().client().canUseDeletePackets()) {
+ if (containsChecked(mouseX, mouseY, false) && ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && !minecraft.player.containerMenu.getCarried().isEmpty() && (NetworkingHelper.getInstance().has(NetworkModule.DELETE_ITEM) || Minecraft.getInstance().gameMode.hasInfiniteItems())) {
EntryStack<?> stack = EntryStacks.of(minecraft.player.containerMenu.getCarried().copy());
if (stack.getType() != VanillaEntryTypes.ITEM) {
EntryStack<ItemStack> cheatsAs = stack.cheatsAs();
@@ -245,7 +246,7 @@ public abstract class EntryListWidgetImpl extends WidgetWithBounds implements En
public boolean mouseReleased(double mouseX, double mouseY, int button) {
if (containsChecked(mouseX, mouseY, false)) {
LocalPlayer player = minecraft.player;
- if (ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && player != null && player.containerMenu != null && !player.containerMenu.getCarried().isEmpty() && NetworkingHelper.getInstance().client().canUseDeletePackets()) {
+ if (ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && player != null && player.containerMenu != null && !player.containerMenu.getCarried().isEmpty() && (NetworkingHelper.getInstance().has(NetworkModule.DELETE_ITEM) || Minecraft.getInstance().gameMode.hasInfiniteItems())) {
EntryStack<?> stack = EntryStacks.of(minecraft.player.containerMenu.getCarried().copy());
if (stack.getType() != VanillaEntryTypes.ITEM) {
EntryStack<ItemStack> cheatsAs = stack.cheatsAs();
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/paginated/PaginatedEntryListWidget.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/paginated/PaginatedEntryListWidget.java
index c00ed0d62..12516999d 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/paginated/PaginatedEntryListWidget.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/paginated/PaginatedEntryListWidget.java
@@ -240,7 +240,7 @@ public class PaginatedEntryListWidget extends CollapsingEntryListWidget {
.containsMousePredicate((button, point) -> button.getBounds().contains(point) && overlay.isNotInExclusionZones(point.x, point.y))
.tooltipLine(new TranslatableComponent("text.rei.changelog.title"))
.focusable(false);*/
- this.additionalWidgets.add(changelogButton);
+ // this.additionalWidgets.add(changelogButton);
/*this.additionalWidgets.add(Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> {
helper.setBlitOffset(helper.getBlitOffset() + 1);
RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE);
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java
index eef3e2686..032b76d46 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java
@@ -39,6 +39,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Button;
import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
+import me.shedaniel.rei.api.common.networking.NetworkModule;
import me.shedaniel.rei.api.common.networking.NetworkingHelper;
import me.shedaniel.rei.impl.client.config.ConfigManagerInternal;
import me.shedaniel.rei.impl.client.gui.InternalTextures;
@@ -52,17 +53,16 @@ import net.minecraft.network.chat.TranslatableComponent;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
-import java.util.function.UnaryOperator;
public class ConfigButtonWidgetProvider implements OverlayWidgetProvider {
private static final UUID CONFIG_MENU_UUID = UUID.fromString("4357bc36-0a4e-47d2-8e07-ddc220df4a0f");
@Override
- public List<Widget> provide(ScreenOverlay overlay, MenuAccess access, TextFieldSink textFieldSink, UnaryOperator<Widget> lateRenderable) {
- return List.of(create(overlay, access, lateRenderable));
+ public void provide(ScreenOverlay overlay, MenuAccess access, WidgetSink sink) {
+ sink.acceptLateRendered(create(overlay, access));
}
- public static Widget create(ScreenOverlay overlay, MenuAccess access, UnaryOperator<Widget> lateRenderable) {
+ public static Widget create(ScreenOverlay overlay, MenuAccess access) {
Rectangle bounds = getConfigButtonBounds();
Button configButton = Widgets.createButton(bounds, NarratorChatListener.NO_TITLE)
.onClick(button -> {
@@ -74,7 +74,7 @@ public class ConfigButtonWidgetProvider implements OverlayWidgetProvider {
})
.onRender((matrices, button) -> {
if (ClientHelper.getInstance().isCheating() && !(Minecraft.getInstance().screen instanceof DisplayScreen) && NetworkingHelper.getInstance().client().hasOperatorPermission()) {
- button.setTint(NetworkingHelper.getInstance().client().hasPermissionToUsePackets() ? 721354752 : 1476440063);
+ button.setTint(NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_GIVE) ? 721354752 : 1476440063);
} else {
button.removeTint();
}
@@ -89,7 +89,7 @@ public class ConfigButtonWidgetProvider implements OverlayWidgetProvider {
helper.blit(matrices, bounds.x + 3, bounds.y + 3, 0, 0, 14, 14);
helper.setBlitOffset(helper.getBlitOffset() - 1);
});
- return lateRenderable.apply(Widgets.concat(configButton, overlayWidget));
+ return Widgets.concat(configButton, overlayWidget);
}
private static Collection<FavoriteMenuEntry> menuEntries() {
@@ -108,7 +108,7 @@ public class ConfigButtonWidgetProvider implements OverlayWidgetProvider {
if (Minecraft.getInstance().gameMode.hasInfiniteItems())
return new TranslatableComponent("text.rei.cheating_limited_creative_enabled");
else return new TranslatableComponent("text.rei.cheating_enabled_no_perms");
- } else if (NetworkingHelper.getInstance().client().hasPermissionToUsePackets())
+ } else if (NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_GIVE))
return new TranslatableComponent("text.rei.cheating_enabled");
else
return new TranslatableComponent("text.rei.cheating_limited_enabled");
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java
index b470678b0..121c0e964 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java
@@ -51,21 +51,18 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Blocks;
import java.util.*;
-import java.util.function.UnaryOperator;
public class CraftableFilterButtonWidgetProvider implements OverlayWidgetProvider {
public static final UUID FILTER_MENU_UUID = UUID.fromString("2839e998-1679-4f9e-a257-37411d16f1e6");
@Override
- public List<Widget> provide(ScreenOverlay overlay, MenuAccess access, TextFieldSink textFieldSink, UnaryOperator<Widget> lateRenderable) {
+ public void provide(ScreenOverlay overlay, MenuAccess access, WidgetSink sink) {
if (ConfigObject.getInstance().isCraftableFilterEnabled()) {
- return List.of(create(overlay, access, lateRenderable));
- } else {
- return List.of();
+ sink.acceptLateRendered(create(overlay, access));
}
}
- private static Widget create(ScreenOverlay overlay, MenuAccess access, UnaryOperator<Widget> lateRenderable) {
+ private static Widget create(ScreenOverlay overlay, MenuAccess access) {
Rectangle bounds = getCraftableFilterBounds();
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
ItemStack icon = new ItemStack(Blocks.CRAFTING_TABLE);
@@ -89,7 +86,7 @@ public class CraftableFilterButtonWidgetProvider implements OverlayWidgetProvide
itemRenderer.renderGuiItem(icon, (int) vector.x(), (int) vector.y());
itemRenderer.blitOffset = 0.0F;
});
- return lateRenderable.apply(Widgets.concat(filterButton, overlayWidget));
+ return Widgets.concat(filterButton, overlayWidget);
}
private static Collection<FavoriteMenuEntry> menuEntries() {
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java
index 2e0f1b848..c1197074e 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java
@@ -27,28 +27,23 @@ 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.widgets.Widget;
import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.impl.client.gui.menu.MenuAccess;
import me.shedaniel.rei.impl.client.gui.overlay.widgets.search.OverlaySearchField;
import net.minecraft.client.Minecraft;
-import java.util.List;
-import java.util.function.UnaryOperator;
-
public class SearchFieldWidgetProvider implements OverlayWidgetProvider {
private OverlaySearchField searchField;
@Override
- public List<Widget> provide(ScreenOverlay overlay, MenuAccess access, TextFieldSink textFieldSink, UnaryOperator<Widget> lateRenderable) {
+ public void provide(ScreenOverlay overlay, MenuAccess access, WidgetSink sink) {
if (searchField == null) {
searchField = new OverlaySearchField(access);
}
searchField.getBounds().setBounds(getSearchFieldArea(overlay));
- textFieldSink.accept(searchField, searchField::isHighlighting);
- return List.of(lateRenderable.apply(searchField));
+ sink.acceptTextField(searchField, searchField::isHighlighting);
}
private Rectangle getSearchFieldArea(ScreenOverlay overlay) {
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
index f4d8a1875..6245a1730 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java
@@ -55,10 +55,6 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
private TextField searchField = null;
private BooleanSupplier isHighlighted = null;
- public ScreenOverlayImpl() {
- this.init();
- }
-
@Override
public void init() {
super.init();
@@ -74,22 +70,36 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
EntryListWidget entryListWidget = getEntryList();
entryListWidget.initBounds(this.getBounds());
- entryListWidget.initSearch(searchField.getText(), true);
this.children().add(entryListWidget.asWidget());
- searchField.setResponder(s -> entryListWidget.initSearch(s, false));
entryListWidget.init(this);
for (OverlayWidgetProvider provider : OverlayWidgetProvider.PROVIDERS) {
- provider.provide(this, menuAccess(), (textField, isHighlighted) -> {
- this.searchField = textField;
- this.isHighlighted = isHighlighted;
- }, LateRenderableWidget::new);
+ provider.provide(this, menuAccess(), new OverlayWidgetProvider.WidgetSink() {
+ @Override
+ public void accept(Widget widget) {
+ ScreenOverlayImpl.this.children().add(widget);
+ }
+
+ @Override
+ public void acceptLateRendered(Widget widget) {
+ accept(new LateRenderableWidget(widget));
+ }
+
+ @Override
+ public void acceptTextField(TextField textField, BooleanSupplier isHighlighted) {
+ ScreenOverlayImpl.this.searchField = textField;
+ ScreenOverlayImpl.this.isHighlighted = isHighlighted;
+ }
+ });
}
if (this.searchField != null) {
- this.children().add(this.searchField.asWidget());
+ this.children().add(new LateRenderableWidget(this.searchField.asWidget()));
+ this.searchField.setResponder(s -> entryListWidget.initSearch(s, false));
+ entryListWidget.initSearch(searchField.getText(), true);
} else {
InternalLogger.getInstance().warn("Search Field is not found! This might cause problems!");
+ entryListWidget.initSearch("", true);
}
}
@@ -143,7 +153,7 @@ public final class ScreenOverlayImpl extends AbstractScreenOverlay {
current = provider.getEntryList();
if (current != null) break;
}
- if (current != null) throw new IllegalStateException("No Entry List available!");
+ if (current == null) throw new IllegalStateException("No Entry List available!");
if (current != entryListWidget) {
entryListWidget = current;
current.initBounds(Objects.requireNonNullElse(getBounds(), new Rectangle()));
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
index 3c19aa6b7..0c159ebb3 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/OverlayWidgetProvider.java
@@ -31,14 +31,17 @@ import me.shedaniel.rei.impl.client.gui.menu.MenuAccess;
import java.util.List;
import java.util.function.BooleanSupplier;
-import java.util.function.UnaryOperator;
public interface OverlayWidgetProvider {
List<OverlayWidgetProvider> PROVIDERS = ClientInternals.resolveServices(OverlayWidgetProvider.class);
- List<Widget> provide(ScreenOverlay overlay, MenuAccess access, TextFieldSink textFieldSink, UnaryOperator<Widget> lateRenderable);
+ void provide(ScreenOverlay overlay, MenuAccess access, WidgetSink sink);
- interface TextFieldSink {
- void accept(TextField textField, BooleanSupplier isHighlighted);
+ interface WidgetSink {
+ void accept(Widget widget);
+
+ void acceptLateRendered(Widget widget);
+
+ void acceptTextField(TextField textField, BooleanSupplier isHighlighted);
}
}