aboutsummaryrefslogtreecommitdiff
path: root/runtime
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
parentbb7920e447d599d23abfac3b67d8823cf24f8150 (diff)
downloadRoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.tar.gz
RoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.tar.bz2
RoughlyEnoughItems-0ef0f8b21df4b9a603aaa2ab4a35d395ef6437c1.zip
Make it not crash
Diffstat (limited to 'runtime')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java1
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java49
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java124
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientNetworkHelperImpl.java59
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/CopyRecipeIdentifierToast.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java10
7 files changed, 27 insertions, 228 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 018cd2eeb..4010edd6a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -47,6 +47,5 @@ public class RoughlyEnoughItemsCore {
detector.detectCommonPlugins();
detector.detectServerPlugins();
}
- RoughlyEnoughItemsNetwork.onInitialize();
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index e0e68828a..140b28eb6 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -28,7 +28,6 @@ import com.mojang.serialization.DataResult;
import dev.architectury.event.EventResult;
import dev.architectury.event.events.client.ClientGuiEvent;
import dev.architectury.event.events.client.ClientScreenInputEvent;
-import dev.architectury.networking.NetworkManager;
import dev.architectury.platform.Platform;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.REIRuntime;
@@ -46,7 +45,6 @@ import me.shedaniel.rei.api.client.registry.screen.ClickArea;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.api.common.util.ImmutableTextComponent;
import me.shedaniel.rei.impl.client.ClientInternals;
import me.shedaniel.rei.impl.client.REIRuntimeImpl;
@@ -63,21 +61,12 @@ import net.minecraft.client.gui.components.EditBox;
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.recipebook.GhostRecipe;
import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent;
-import net.minecraft.client.resources.language.I18n;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
-import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.inventory.CraftingMenu;
-import net.minecraft.world.inventory.Slot;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.Items;
import net.minecraft.world.item.TooltipFlag;
-import net.minecraft.world.item.crafting.Ingredient;
import org.apache.commons.lang3.function.TriFunction;
import org.jetbrains.annotations.Nullable;
@@ -165,44 +154,6 @@ public class RoughlyEnoughItemsCoreClient {
detector.detectClientPlugins().get().run();
}
- Minecraft client = Minecraft.getInstance();
- NetworkManager.registerReceiver(NetworkManager.s2c(), RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (buf, context) -> {
- ItemStack stack = buf.readItem();
- String player = buf.readUtf(32767);
- if (client.player != null) {
- client.player.displayClientMessage(new TextComponent(I18n.get("text.rei.cheat_items").replaceAll("\\{item_name}", EntryStacks.of(stack.copy()).asFormattedText().getString()).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false);
- }
- });
- NetworkManager.registerReceiver(NetworkManager.s2c(), RoughlyEnoughItemsNetwork.NOT_ENOUGH_ITEMS_PACKET, (buf, context) -> {
- Screen currentScreen = Minecraft.getInstance().screen;
- if (currentScreen instanceof CraftingScreen craftingScreen) {
- RecipeBookComponent recipeBookGui = craftingScreen.getRecipeBookComponent();
- GhostRecipe ghostSlots = recipeBookGui.ghostRecipe;
- ghostSlots.clear();
-
- List<List<ItemStack>> input = Lists.newArrayList();
- int mapSize = buf.readInt();
- for (int i = 0; i < mapSize; i++) {
- List<ItemStack> list = Lists.newArrayList();
- int count = buf.readInt();
- for (int j = 0; j < count; j++) {
- list.add(buf.readItem());
- }
- input.add(list);
- }
-
- ghostSlots.addIngredient(Ingredient.of(Items.STONE), 381203812, 12738291);
- CraftingMenu container = craftingScreen.getMenu();
- for (int i = 0; i < input.size(); i++) {
- List<ItemStack> stacks = input.get(i);
- if (!stacks.isEmpty()) {
- Slot slot = container.getSlot(i + container.getResultSlotIndex() + 1);
- ghostSlots.addIngredient(Ingredient.of(stacks.toArray(new ItemStack[0])), slot.x, slot.y);
- }
- }
- }
- });
-
Platform.getMod("roughlyenoughitems").registerConfigurationScreen(ConfigManager.getInstance()::getConfigScreen);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
deleted file mode 100644
index 037fa0fc9..000000000
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java
+++ /dev/null
@@ -1,124 +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;
-
-import dev.architectury.networking.NetworkManager;
-import dev.architectury.networking.transformers.SplitPacketTransformer;
-import io.netty.buffer.Unpooled;
-import me.shedaniel.rei.impl.common.Internals;
-import me.shedaniel.rei.impl.common.networking.NetworkModule;
-import net.minecraft.ChatFormatting;
-import net.minecraft.network.FriendlyByteBuf;
-import net.minecraft.network.chat.TranslatableComponent;
-import net.minecraft.resources.ResourceLocation;
-import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.util.Mth;
-import net.minecraft.world.inventory.AbstractContainerMenu;
-import net.minecraft.world.item.ItemStack;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-public class RoughlyEnoughItemsNetwork {
- private static final Map<Object, NetworkModule> MODULES = new HashMap<>();
- public static final ResourceLocation DELETE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "delete_item");
- public static final ResourceLocation CREATE_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "create_item");
- public static final ResourceLocation CREATE_ITEMS_HOTBAR_PACKET = new ResourceLocation("roughlyenoughitems", "create_item_hotbar");
- public static final ResourceLocation CREATE_ITEMS_GRAB_PACKET = new ResourceLocation("roughlyenoughitems", "create_item_grab");
- public static final ResourceLocation CREATE_ITEMS_MESSAGE_PACKET = new ResourceLocation("roughlyenoughitems", "ci_msg");
- public static final ResourceLocation NOT_ENOUGH_ITEMS_PACKET = new ResourceLocation("roughlyenoughitems", "og_not_enough");
-
- public static boolean canUse(Object key) {
- return MODULES.containsKey(key) && MODULES.get(key).canUse();
- }
-
- public static void onInitialize() {
- for (NetworkModule module : Internals.resolveServices(NetworkModule.class)) {
- MODULES.put(module.getKey(), module);
- }
-
- NetworkManager.registerReceiver(NetworkManager.c2s(), DELETE_ITEMS_PACKET, Collections.singletonList(new SplitPacketTransformer()), (buf, context) -> {
- ServerPlayer player = (ServerPlayer) context.getPlayer();
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
- return;
- }
- AbstractContainerMenu menu = player.containerMenu;
- if (!menu.getCarried().isEmpty()) {
- menu.setCarried(ItemStack.EMPTY);
- menu.broadcastChanges();
- }
- });
- NetworkManager.registerReceiver(NetworkManager.c2s(), CREATE_ITEMS_PACKET, Collections.singletonList(new SplitPacketTransformer()), (buf, context) -> {
- ServerPlayer player = (ServerPlayer) context.getPlayer();
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
- return;
- }
- ItemStack stack = buf.readItem();
- if (player.getInventory().add(stack.copy())) {
- NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767));
- } else {
- player.displayClientMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
- }
- });
- NetworkManager.registerReceiver(NetworkManager.c2s(), CREATE_ITEMS_GRAB_PACKET, Collections.singletonList(new SplitPacketTransformer()), (buf, context) -> {
- ServerPlayer player = (ServerPlayer) context.getPlayer();
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
- return;
- }
-
- AbstractContainerMenu menu = player.containerMenu;
- ItemStack itemStack = buf.readItem();
- ItemStack stack = itemStack.copy();
- if (!menu.getCarried().isEmpty() && ItemStack.isSameIgnoreDurability(menu.getCarried(), stack) && ItemStack.tagMatches(menu.getCarried(), stack)) {
- stack.setCount(Mth.clamp(stack.getCount() + menu.getCarried().getCount(), 1, stack.getMaxStackSize()));
- } else if (!menu.getCarried().isEmpty()) {
- return;
- }
- menu.setCarried(stack.copy());
- menu.broadcastChanges();
- NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(itemStack.copy()).writeUtf(player.getScoreboardName(), 32767));
- });
- NetworkManager.registerReceiver(NetworkManager.c2s(), CREATE_ITEMS_HOTBAR_PACKET, Collections.singletonList(new SplitPacketTransformer()), (buf, context) -> {
- ServerPlayer player = (ServerPlayer) context.getPlayer();
- if (player.getServer().getProfilePermissions(player.getGameProfile()) < player.getServer().getOperatorUserPermissionLevel()) {
- player.displayClientMessage(new TranslatableComponent("text.rei.no_permission_cheat").withStyle(ChatFormatting.RED), false);
- return;
- }
- ItemStack stack = buf.readItem();
- int hotbarSlotId = buf.readVarInt();
- if (hotbarSlotId >= 0 && hotbarSlotId < 9) {
- AbstractContainerMenu menu = player.containerMenu;
- player.getInventory().items.set(hotbarSlotId, stack.copy());
- menu.broadcastChanges();
- NetworkManager.sendToPlayer(player, RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.copy()).writeUtf(player.getScoreboardName(), 32767));
- } else {
- player.displayClientMessage(new TranslatableComponent("text.rei.failed_cheat_items"), false);
- }
- });
- }
-}
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 746c29a06..e2a9e0cf3 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
@@ -23,55 +23,27 @@
package me.shedaniel.rei.impl.client;
-import dev.architectury.networking.NetworkManager;
-import io.netty.buffer.Unpooled;
-import me.shedaniel.rei.RoughlyEnoughItemsNetwork;
import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.config.ConfigObject;
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.NetworkModuleKey;
+import me.shedaniel.rei.api.common.networking.NetworkingHelper;
import me.shedaniel.rei.api.common.util.EntryStacks;
-import me.shedaniel.rei.impl.common.networking.NetworkModule;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
-import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
+import net.minecraft.util.Unit;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.ItemStack;
+import java.util.AbstractMap;
+
public abstract class ClientNetworkHelperImpl implements ClientHelper {
- public boolean hasPermissionToUsePackets() {
- try {
- Minecraft.getInstance().getConnection().getSuggestionsProvider().hasPermission(0);
- return hasOperatorPermission() && canUsePackets();
- } catch (NullPointerException e) {
- return true;
- }
- }
-
- public boolean hasOperatorPermission() {
- try {
- return Minecraft.getInstance().getConnection().getSuggestionsProvider().hasPermission(1);
- } catch (NullPointerException e) {
- return true;
- }
- }
-
- public boolean canUsePackets() {
- return NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET) && NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_GRAB_PACKET) && NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET);
- }
-
- public boolean canUseHotbarPackets() {
- return NetworkManager.canServerReceive(RoughlyEnoughItemsNetwork.CREATE_ITEMS_HOTBAR_PACKET);
- }
-
- public boolean canUseDeletePackets() {
- return hasPermissionToUsePackets() || Minecraft.getInstance().gameMode.hasInfiniteItems();
- }
-
@Override
public void sendDeletePacket() {
if (Minecraft.getInstance().screen instanceof CreativeModeInventoryScreen inventoryScreen) {
@@ -79,7 +51,7 @@ public abstract class ClientNetworkHelperImpl implements ClientHelper {
inventoryScreen.isQuickCrafting = false;
return;
}
- NetworkManager.sendToServer(RoughlyEnoughItemsNetwork.DELETE_ITEMS_PACKET, new FriendlyByteBuf(Unpooled.buffer()));
+ NetworkingHelper.getInstance().sendToServer(NetworkModule.DELETE_ITEM, Unit.INSTANCE);
if (Minecraft.getInstance().screen instanceof AbstractContainerScreen<?> containerScreen) {
containerScreen.isQuickCrafting = false;
}
@@ -103,14 +75,18 @@ public abstract class ClientNetworkHelperImpl implements ClientHelper {
}
menu.setCarried(stack.getValue().copy());
return true;
- } else if (ClientHelperImpl.getInstance().canUsePackets()) {
+ } else if (NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_GIVE)
+ || NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_GRAB)) {
AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu;
EntryStack<ItemStack> stack = entry.copy();
if (!menu.getCarried().isEmpty() && !EntryStacks.equalsExact(EntryStacks.of(menu.getCarried()), stack)) {
return false;
}
try {
- NetworkManager.sendToServer(ConfigObject.getInstance().isGrabbingItems() ? RoughlyEnoughItemsNetwork.CREATE_ITEMS_GRAB_PACKET : RoughlyEnoughItemsNetwork.CREATE_ITEMS_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(cheatedStack));
+ NetworkModuleKey<ItemStack> key = ConfigObject.getInstance().isGrabbingItems()
+ && NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_GRAB)
+ ? NetworkModule.CHEAT_GRAB : NetworkModule.CHEAT_GIVE;
+ NetworkingHelper.getInstance().sendToServer(key, cheatedStack);
return true;
} catch (Exception exception) {
return false;
@@ -148,23 +124,18 @@ public abstract class ClientNetworkHelperImpl implements ClientHelper {
return true;
}
}
- if (ClientHelperImpl.getInstance().canUseHotbarPackets()) {
+ if (NetworkingHelper.getInstance().canUse(NetworkModule.CHEAT_HOTBAR)) {
AbstractContainerMenu menu = Minecraft.getInstance().player.containerMenu;
EntryStack<ItemStack> stack = entry.copy();
if (!menu.getCarried().isEmpty()) {
return false;
}
try {
- NetworkManager.sendToServer(RoughlyEnoughItemsNetwork.CREATE_ITEMS_HOTBAR_PACKET, new FriendlyByteBuf(Unpooled.buffer()).writeItem(stack.getValue().copy()).writeVarInt(hotbarSlotId));
+ NetworkingHelper.getInstance().sendToServer(NetworkModule.CHEAT_HOTBAR, new AbstractMap.SimpleEntry<>(stack.getValue().copy(), hotbarSlotId));
return true;
} catch (Exception exception) {
return false;
}
} else return false;
}
-
- @Override
- public boolean canUseMovePackets() {
- return RoughlyEnoughItemsNetwork.canUse(NetworkModule.TRANSFER);
- }
}
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 7173da20c..d577df670 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
@@ -48,6 +48,7 @@ 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.util.InternalEntryBounds.entrySize;
@@ -72,6 +73,11 @@ public class REIRuntimeImpl implements REIRuntime {
public Optional<ScreenOverlay> getOverlay(boolean reset, boolean init) {
if ((overlay == null && init) || reset) {
overlay = ClientInternals.getNewOverlay();
+ try {
+ overlay.getClass().getMethod("init").invoke(overlay);
+ } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
+ throw new RuntimeException(e);
+ }
overlay.getSearchField().setFocused(false);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/CopyRecipeIdentifierToast.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/CopyRecipeIdentifierToast.java
index 4a8891696..8a7ab2163 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/CopyRecipeIdentifierToast.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/CopyRecipeIdentifierToast.java
@@ -25,17 +25,15 @@ package me.shedaniel.rei.impl.client.gui.toast;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
+import me.shedaniel.rei.impl.client.gui.InternalTextures;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.toasts.Toast;
import net.minecraft.client.gui.components.toasts.ToastComponent;
-import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@ApiStatus.Internal
public class CopyRecipeIdentifierToast implements Toast {
-
- protected static final ResourceLocation TEXTURE = new ResourceLocation("roughlyenoughitems", "textures/gui/toasts.png");
private String title;
private String subtitle;
private long startTime;
@@ -51,7 +49,7 @@ public class CopyRecipeIdentifierToast implements Toast {
@Override
public Visibility render(PoseStack matrices, ToastComponent toastManager, long var2) {
- RenderSystem.setShaderTexture(0, TEXTURE);
+ RenderSystem.setShaderTexture(0, InternalTextures.TOASTS);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
toastManager.blit(matrices, 0, 0, 0, 0, 160, 32);
if (this.subtitle == null) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java
index cd763c1f3..ac622e849 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/toast/ExportRecipeIdentifierToast.java
@@ -25,19 +25,17 @@ package me.shedaniel.rei.impl.client.gui.toast;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
+import me.shedaniel.rei.impl.client.gui.InternalTextures;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.toasts.Toast;
import net.minecraft.client.gui.components.toasts.ToastComponent;
-import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@ApiStatus.Internal
public class ExportRecipeIdentifierToast implements Toast {
-
- protected static final ResourceLocation TEXTURE = new ResourceLocation("roughlyenoughitems", "textures/gui/toasts.png");
- private String title;
- private String subtitle;
+ private final String title;
+ private final String subtitle;
private long startTime;
public ExportRecipeIdentifierToast(String title, @Nullable String subtitleNullable) {
@@ -51,7 +49,7 @@ public class ExportRecipeIdentifierToast implements Toast {
@Override
public Visibility render(PoseStack matrices, ToastComponent toastManager, long var2) {
- RenderSystem.setShaderTexture(0, TEXTURE);
+ RenderSystem.setShaderTexture(0, InternalTextures.TOASTS);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
toastManager.blit(matrices, 0, 0, 0, 0, 160, 32);
if (this.subtitle == null) {