aboutsummaryrefslogtreecommitdiff
path: root/runtime-frontend
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-09-12 23:05:35 +0800
committershedaniel <daniel@shedaniel.me>2022-09-18 02:09:37 +0800
commitd70b8353a6db5fc5d835af5d662372952703d2fd (patch)
tree3240993c382a2ae27f6d328a8852261ce6c619d7 /runtime-frontend
parent229b1fecdac427d3debe68f52ed7276e54a11cd0 (diff)
downloadRoughlyEnoughItems-d70b8353a6db5fc5d835af5d662372952703d2fd.tar.gz
RoughlyEnoughItems-d70b8353a6db5fc5d835af5d662372952703d2fd.tar.bz2
RoughlyEnoughItems-d70b8353a6db5fc5d835af5d662372952703d2fd.zip
Obfuscate REI Internals
Diffstat (limited to 'runtime-frontend')
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidgetImpl.java2
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java59
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/plugin/FavoritesEntriesBuiltinPlugin.java52
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachedEntryListRender.java21
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachingEntryRenderer.java1
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java23
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.java23
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.java23
8 files changed, 198 insertions, 6 deletions
diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidgetImpl.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidgetImpl.java
index 8a3dace66..ecc652dd1 100644
--- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidgetImpl.java
+++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/FavoritesListWidgetImpl.java
@@ -66,7 +66,7 @@ public class FavoritesListWidgetImpl extends WidgetWithBounds implements Favorit
public Rectangle fullBounds;
public Rectangle excludedBounds;
public Rectangle favoritesBounds;
- private EntryStacksRegionWidget<FavoriteEntry> region = new EntryStacksRegionWidget<>(new FavoritesRegionListener(this));
+ private final EntryStacksRegionWidget<FavoriteEntry> region = new EntryStacksRegionWidget<>(new FavoritesRegionListener(this));
public final FavoritesPanel favoritePanel = new FavoritesPanel(this, region);
public final TrashWidget trash = new TrashWidget(this);
diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
index d67235f18..14523a20d 100644
--- a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
+++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java
@@ -40,10 +40,10 @@ import me.shedaniel.rei.api.client.gui.drag.DraggingContext;
import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponent;
import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentProviderWidget;
import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentVisitorWidget;
+import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds;
import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.common.display.Display;
-import me.shedaniel.rei.impl.client.gui.widget.DisplayCompositeWidget;
import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidgetImpl;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.Screen;
@@ -297,7 +297,7 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC
DisplayHistoryManager.INSTANCE.removeEntry(entry);
scroll.setAs(scroll.target() - getBounds().getWidth());
scroll.setTo(scroll.target() + getBounds().getWidth(), 800);
- DisplayCompositeWidget.DisplayDraggableComponent component = new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
+ DisplayDraggableComponent component = new DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
entry.getBounds().clone(),
new Rectangle(0, 0, entry.getSize().width, entry.getSize().height));
DraggingContext.getInstance().renderToVoid(component);
@@ -330,7 +330,7 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC
DisplayHistoryManager.INSTANCE.removeEntry(entry);
scroll.setAs(scroll.target() - getBounds().getWidth());
scroll.setTo(scroll.target() + getBounds().getWidth(), 800);
- DisplayCompositeWidget.DisplayDraggableComponent component = new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
+ DisplayDraggableComponent component = new DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
entry.getBounds().clone(),
new Rectangle(0, 0, entry.getSize().width, entry.getSize().height));
DraggingContext.getInstance().renderToVoid(component);
@@ -380,7 +380,7 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC
}
}
- return (DraggableComponent<Object>) (DraggableComponent<?>) new DisplayCompositeWidget.DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
+ return (DraggableComponent<Object>) (DraggableComponent<?>) new DisplayDraggableComponent(Widgets.concat(entry.getWidgets()), entry.getDisplay(),
entry.getBounds().clone(),
new Rectangle(0, 0, entry.getSize().width, entry.getSize().height)) {
@Override
@@ -404,4 +404,55 @@ public class DisplayHistoryWidget extends WidgetWithBounds implements DraggableC
return null;
}
+
+ public static class DisplayDraggableComponent implements DraggableComponent<Display> {
+ private final Widget widget;
+ private final Display display;
+ private final Rectangle originBounds;
+ private final Rectangle bounds;
+
+ public DisplayDraggableComponent(Widget widget, Display display, Rectangle originBounds, Rectangle bounds) {
+ this.widget = widget;
+ this.display = display;
+ this.originBounds = originBounds;
+ this.bounds = bounds;
+ }
+
+ @Override
+ public int getWidth() {
+ return bounds.width;
+ }
+
+ @Override
+ public int getHeight() {
+ return bounds.height;
+ }
+
+ @Override
+ public Display get() {
+ return display;
+ }
+
+ @Override
+ public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ matrices.pushPose();
+ matrices.translate(bounds.getX(), bounds.getY(), 0);
+ matrices.scale(bounds.width / (float) this.bounds.getWidth(), bounds.height / (float) this.bounds.getHeight(), 1);
+ matrices.translate(-this.bounds.getX(), -this.bounds.getY(), 0);
+ widget.render(matrices, -1000, -1000, delta);
+ matrices.popPose();
+ }
+
+ @Override
+ public void release(DraggedAcceptorResult result) {
+ if (result == DraggedAcceptorResult.PASS) {
+ DraggingContext.getInstance().renderBack(this, DraggingContext.getInstance().getCurrentBounds(), () -> originBounds);
+ }
+ }
+
+ @Override
+ public Rectangle getOriginBounds(Point mouse) {
+ return originBounds.clone();
+ }
+ }
}
diff --git a/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/plugin/FavoritesEntriesBuiltinPlugin.java b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/plugin/FavoritesEntriesBuiltinPlugin.java
new file mode 100644
index 000000000..418d45d93
--- /dev/null
+++ b/runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/plugin/FavoritesEntriesBuiltinPlugin.java
@@ -0,0 +1,52 @@
+/*
+ * 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.widget.plugin;
+
+import me.shedaniel.rei.api.client.overlay.OverlayListWidget;
+import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
+import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
+import me.shedaniel.rei.api.client.registry.screen.ExclusionZones;
+import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
+import me.shedaniel.rei.impl.client.gui.widget.favorites.FavoritesListWidgetImpl;
+import net.minecraft.client.gui.screens.Screen;
+
+import java.util.Collections;
+import java.util.List;
+
+public class FavoritesEntriesBuiltinPlugin implements REIClientPlugin {
+ @Override
+ public void registerScreens(ScreenRegistry registry) {
+ ExclusionZones zones = registry.exclusionZones();
+ zones.register(Screen.class, screen -> {
+ if (ScreenOverlay.getInstance().isEmpty()) return List.of();
+ OverlayListWidget widget = ScreenOverlay.getInstance().get().getFavoritesList().orElse(null);
+ if (widget instanceof FavoritesListWidgetImpl impl) {
+ if (impl.togglePanelButton.isVisible()) {
+ return Collections.singletonList(impl.togglePanelButton.bounds);
+ }
+ }
+ return Collections.emptyList();
+ });
+ }
+}
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachedEntryListRender.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachedEntryListRender.java
index 6de0aa09e..a10a7c70e 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachedEntryListRender.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachedEntryListRender.java
@@ -41,6 +41,9 @@ import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
+import me.shedaniel.rei.api.common.plugins.PluginManager;
+import me.shedaniel.rei.api.common.registry.ReloadStage;
+import me.shedaniel.rei.api.common.registry.Reloadable;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.common.InternalLogger;
import net.minecraft.client.Minecraft;
@@ -66,6 +69,24 @@ public class CachedEntryListRender {
.setShaderState(new RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexShader))
.createCompositeState(false)));
+ static {
+ PluginManager.getInstance().registerReloadable(new Reloadable<>() {
+ @Override
+ public void startReload() {
+ startReload(null);
+ }
+
+ @Override
+ public void startReload(ReloadStage stage) {
+ if (!RenderSystem.isOnRenderThread()) {
+ RenderSystem.recordRenderCall(CachedEntryListRender::refresh);
+ } else {
+ CachedEntryListRender.refresh();
+ }
+ }
+ });
+ }
+
public static class Sprite {
public final float u0;
public final float u1;
diff --git a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachingEntryRenderer.java b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachingEntryRenderer.java
index 76e299632..f29d78bdc 100644
--- a/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachingEntryRenderer.java
+++ b/runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/cache/CachingEntryRenderer.java
@@ -32,7 +32,6 @@ import me.shedaniel.rei.api.client.entry.renderer.BatchedEntryRenderer;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.gui.widgets.TooltipContext;
import me.shedaniel.rei.api.common.entry.EntryStack;
-import me.shedaniel.rei.impl.client.gui.widget.CachedEntryListRender;
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
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 85d305568..2e0f1b848 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
@@ -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.overlay.widgets;
import com.mojang.blaze3d.platform.Window;
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.java
index 0f7adad5e..e844ebafc 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.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.overlay;
import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
diff --git a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.java b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.java
index 367f16c46..ae21ca415 100644
--- a/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.java
+++ b/runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.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.overlay.menu.provider;
import me.shedaniel.rei.api.client.favorites.FavoriteMenuEntry;