Danielshe преди 5 години
родител
ревизия
de582cdbac

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=3.1.6-unstable
+mod_version=3.1.8-unstable
 minecraft_version=19w41a
 yarn_version=19w41a+build.3
 fabricloader_version=0.6.3+build.167

+ 43 - 1
src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java

@@ -134,6 +134,11 @@ public class ContainerScreenOverlay extends Widget {
                 public boolean changeFocus(boolean boolean_1) {
                     return false;
                 }
+    
+                @Override
+                public boolean containsMouse(double mouseX, double mouseY) {
+                    return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+                }
             });
             widgets.add(buttonRight = new ButtonWidget(rectangle.x + rectangle.width - 18, rectangle.y + (RoughlyEnoughItemsCore.getConfigManager().getConfig().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 5, 16, 16, new TranslatableText("text.rei.right_arrow")) {
                 @Override
@@ -153,6 +158,11 @@ public class ContainerScreenOverlay extends Widget {
                 public boolean changeFocus(boolean boolean_1) {
                     return false;
                 }
+    
+                @Override
+                public boolean containsMouse(double mouseX, double mouseY) {
+                    return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+                }
             });
         }
         
@@ -203,6 +213,11 @@ public class ContainerScreenOverlay extends Widget {
             public boolean changeFocus(boolean boolean_1) {
                 return false;
             }
+    
+            @Override
+            public boolean containsMouse(double mouseX, double mouseY) {
+                return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+            }
         });
         if (RoughlyEnoughItemsCore.getConfigManager().getConfig().doesShowUtilsButtons()) {
             widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? window.getScaledWidth() - 55 : 35, 10, 20, 20, "") {
@@ -226,6 +241,11 @@ public class ContainerScreenOverlay extends Widget {
                 public boolean changeFocus(boolean boolean_1) {
                     return false;
                 }
+    
+                @Override
+                public boolean containsMouse(double mouseX, double mouseY) {
+                    return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+                }
             });
             int xxx = RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? window.getScaledWidth() - 30 : 10;
             for (Weather weather : Weather.values()) {
@@ -253,6 +273,11 @@ public class ContainerScreenOverlay extends Widget {
                     public boolean changeFocus(boolean boolean_1) {
                         return false;
                     }
+                    
+                    @Override
+                    public boolean containsMouse(double mouseX, double mouseY) {
+                        return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+                    }
                 });
                 xxx += RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? -25 : 25;
             }
@@ -307,6 +332,11 @@ public class ContainerScreenOverlay extends Widget {
                     setBlitOffset(300);
                     super.lateRender(mouseX, mouseY, delta);
                 }
+    
+                @Override
+                public boolean containsMouse(double mouseX, double mouseY) {
+                    return isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+                }
             });
         else
             toggleButtonWidget = null;
@@ -594,7 +624,7 @@ public class ContainerScreenOverlay extends Widget {
     public boolean isInside(double mouseX, double mouseY) {
         if (!rectangle.contains(mouseX, mouseY))
             return false;
-        for (DisplayHelper.DisplayBoundsHandler handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
+        for (DisplayHelper.DisplayBoundsHandler<?> handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
             ActionResult in = handler.isInZone(!RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel(), mouseX, mouseY);
             if (in != ActionResult.PASS)
                 return in == ActionResult.SUCCESS;
@@ -602,6 +632,18 @@ public class ContainerScreenOverlay extends Widget {
         return true;
     }
     
+    public boolean isNotInExclusionZones(double mouseX, double mouseY) {
+        for (DisplayHelper.DisplayBoundsHandler<?> handler : RoughlyEnoughItemsCore.getDisplayHelper().getSortedBoundsHandlers(MinecraftClient.getInstance().currentScreen.getClass())) {
+            ActionResult in = handler.isInZone(true, mouseX, mouseY);
+            if (in != ActionResult.PASS)
+                return in == ActionResult.SUCCESS;
+            in = handler.isInZone(false, mouseX, mouseY);
+            if (in != ActionResult.PASS)
+                return in == ActionResult.SUCCESS;
+        }
+        return true;
+    }
+    
     public boolean isInside(Point point) {
         return isInside(point.getX(), point.getY());
     }

+ 2 - 1
src/main/java/me/shedaniel/rei/gui/credits/CreditsEntryListWidget.java

@@ -5,12 +5,13 @@
 
 package me.shedaniel.rei.gui.credits;
 
+import me.shedaniel.clothconfig2.gui.widget.DynamicNewSmoothScrollingEntryListWidget;
 import me.shedaniel.clothconfig2.gui.widget.DynamicSmoothScrollingEntryListWidget;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.gui.DrawableHelper;
 import net.minecraft.text.Text;
 
-public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidget<CreditsEntryListWidget.CreditsItem> {
+public class CreditsEntryListWidget extends DynamicNewSmoothScrollingEntryListWidget<CreditsEntryListWidget.CreditsItem> {
     
     private boolean inFocus;
     

+ 1 - 1
src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java

@@ -123,7 +123,7 @@ public abstract class ButtonWidget extends WidgetWithBounds {
     
     @Override
     public boolean mouseClicked(double mouseX, double mouseY, int button) {
-        if (bounds.contains(mouseX, mouseY) && enabled && button == 0) {
+        if (isMouseOver(mouseX, mouseY) && enabled && button == 0) {
             minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
             onPressed();
             return true;

+ 7 - 0
src/main/java/me/shedaniel/rei/gui/widget/SearchFieldWidget.java

@@ -6,7 +6,9 @@
 package me.shedaniel.rei.gui.widget;
 
 import com.mojang.blaze3d.systems.RenderSystem;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.impl.ScreenHelper;
 import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.render.GuiLighting;
 import net.minecraft.client.resource.language.I18n;
@@ -83,6 +85,11 @@ public class SearchFieldWidget extends TextFieldWidget {
         return super.charTyped(char_1, int_1);
     }
     
+    @Override
+    public boolean containsMouse(double mouseX, double mouseY) {
+        return ScreenHelper.getLastOverlay().isNotInExclusionZones(mouseX, mouseY) && super.containsMouse(mouseX, mouseY);
+    }
+    
     @Override
     public void render(int int_1, int int_2, float float_1) {
     }

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/bg_bg.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Next Page",
   "key.roughlyenoughitems.previous_page": "Previous Page",
   "key.roughlyenoughitems.focus_search": "Focus Search Field",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Мамене",
   "text.rei.cheating_disabled": "§7Cheating Disabled",
   "text.rei.cheating_enabled": "§cCheating Enabled",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Recipe Screen Type Selection",
   "text.rei.recipe_screen_type.selection.sub": "You can always edit this setting again via the config screen.",
   "text.rei.view_recipes_for": "View Recipes for %s",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Config Tooltips",
   "config.roughlyenoughitems.title": "Roughly Enough Items Config",
   "config.roughlyenoughitems.!general": "General",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Normal",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Inverted",
   "config.roughlyenoughitems.appendModNames": "Append Mod Names:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Entry List Action:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Scrolled",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Paginated",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/de_de.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Nächste Seite",
   "key.roughlyenoughitems.previous_page": "Vorherige Seite",
   "key.roughlyenoughitems.focus_search": "Suchfeld fokussieren",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Schummeln",
   "text.rei.cheating_disabled": "§7Schummeln Deaktiviert",
   "text.rei.cheating_enabled": "§cSchummeln Aktiviert",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Darstellung Rezept-Bildschirm",
   "text.rei.recipe_screen_type.selection.sub": "Du kannst diese Einstellung jederzeit über den Konfigurationsbildschirm wieder bearbeiten.",
   "text.rei.view_recipes_for": "Rezepte für %s anzeigen",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Konfigurations-Tooltips",
   "config.roughlyenoughitems.title": "Roughly Enough Items Konfiguration",
   "config.roughlyenoughitems.!general": "Allgemein",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Normal",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Umgekehrt",
   "config.roughlyenoughitems.appendModNames": "Mod-Namen anhängen:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Darstellung der Gegenstandsliste:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Bildlauf",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Mehrere Seiten",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/en_ud.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "ǝbɐԀ ʇxǝN",
   "key.roughlyenoughitems.previous_page": "ǝbɐԀ snoıʌǝɹԀ",
   "key.roughlyenoughitems.focus_search": "pןǝıℲ ɥɔɹɐǝS snɔoℲ",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "buıʇɐǝɥϽ",
   "text.rei.cheating_disabled": "§7pǝןqɐsıᗡ buıʇɐǝɥϽ",
   "text.rei.cheating_enabled": "§cpǝןqɐuƎ buıʇɐǝɥϽ",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "uoıʇɔǝןǝS ǝdʎ⊥ uǝǝɹɔS ǝdıɔǝᴚ",
   "text.rei.recipe_screen_type.selection.sub": "˙uǝǝɹɔs bıɟuoɔ ǝɥʇ ɐıʌ uıɐbɐ buıʇʇǝs sıɥʇ ʇıpǝ sʎɐʍןɐ uɐɔ noʎ",
   "text.rei.view_recipes_for": "s% ɹoɟ sǝdıɔǝᴚ ʍǝıΛ",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "sdıʇןoo⊥ bıɟuoϽ",
   "config.roughlyenoughitems.title": "ƃıɟuoↃ sɯǝʇI ɥbnouƎ ʎןɥbnoᴚ",
   "config.roughlyenoughitems.!general": "lɐɹǝuǝ⅁",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "lɐɯɹoN",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "pǝʇɹǝʌuI",
   "config.roughlyenoughitems.appendModNames": ":sǝɯɐN poW puǝdd∀",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": ":uoᴉʇɔ∀ ʇsᴉ˥ ʎɹʇuƎ",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "pǝlloɹɔS",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "pǝʇɐuᴉƃɐԀ",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/et_ee.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Järgmine leht",
   "key.roughlyenoughitems.previous_page": "Eelmine leht",
   "key.roughlyenoughitems.focus_search": "Fookusta otsingukast",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Sohitegemine",
   "text.rei.cheating_disabled": "§7Sohitegemine keelatud",
   "text.rei.cheating_enabled": "§cSohitegemine lubatud",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Retseptide kuvatüübi valik",
   "text.rei.recipe_screen_type.selection.sub": "Sa saad seda seadistust alati seadistuskuvalt muuta.",
   "text.rei.view_recipes_for": "Vaata %s retsepte",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Seadistuse vihjetekstid",
   "config.roughlyenoughitems.title": "Roughly Enough Items seadistus",
   "config.roughlyenoughitems.!general": "Üldine",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Tavaline",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Pööratud",
   "config.roughlyenoughitems.appendModNames": "Lisa juurde modinimed:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Esemenimekirja tegevus:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Keritav",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Lehekülgedega",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Page suivante",
   "key.roughlyenoughitems.previous_page": "Page précédente",
   "key.roughlyenoughitems.focus_search": "Focus Search Field",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Tricherie",
   "text.rei.cheating_disabled": "§7Cheating Disabled",
   "text.rei.cheating_enabled": "§cCheating Enabled",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Écran de sélection du type d'affichage des recettes",
   "text.rei.recipe_screen_type.selection.sub": "Vous pouvez toujours changer cette option dans l'écran de configuration.",
   "text.rei.view_recipes_for": "View Recipes for %s",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Config Tooltips",
   "config.roughlyenoughitems.title": "Roughly Enough Items Config",
   "config.roughlyenoughitems.!general": "General",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Normal",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Inversé",
   "config.roughlyenoughitems.appendModNames": "Append Mod Names:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Entry List Action:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Scrolled",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Paginated",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/ja_jp.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "次のページ",
   "key.roughlyenoughitems.previous_page": "前のページ",
   "key.roughlyenoughitems.focus_search": "フォーカス検索欄",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "チートモード",
   "text.rei.cheating_disabled": "§7チートモードを使わない",
   "text.rei.cheating_enabled": "§cチートモードを使う",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "レシピ画面タイプの選択",
   "text.rei.recipe_screen_type.selection.sub": "設定画面でいつでも設定を変更できます。",
   "text.rei.view_recipes_for": "%sのレシピを表示",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Tooltipsの設定",
   "config.roughlyenoughitems.title": "Roughly Enough Itemsの設定",
   "config.roughlyenoughitems.!general": "一般",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "普通",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "反転",
   "config.roughlyenoughitems.appendModNames": "Mod名称の表示:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "リストの表示形式:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "スクロール",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "ページ",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/lol_us.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Next Page",
   "key.roughlyenoughitems.previous_page": "Pwevious Page",
   "key.roughlyenoughitems.focus_search": "Focus Seawch Fiewd",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Cheating",
   "text.rei.cheating_disabled": "§7Cheating Disabwed",
   "text.rei.cheating_enabled": "§cCheating Enabwed",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Wecipe Scween Type Sewection",
   "text.rei.recipe_screen_type.selection.sub": "You can awways edit dis setting again via de config scween.",
   "text.rei.view_recipes_for": "View Wecipes fow %s",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Config Toowtips",
   "config.roughlyenoughitems.title": "Roughly Enough Items Config",
   "config.roughlyenoughitems.!general": "General",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Normal",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Inverted",
   "config.roughlyenoughitems.appendModNames": "Append Mod Names:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Entry List Action:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Scrolled",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Paginated",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/pt_br.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Próxima página",
   "key.roughlyenoughitems.previous_page": "Página anterior",
   "key.roughlyenoughitems.focus_search": "Focus Search Field",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Trapaça",
   "text.rei.cheating_disabled": "§7Trapaças desativada",
   "text.rei.cheating_enabled": "§cTrapaças ativada",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Seleção do tipo do menu de receitas",
   "text.rei.recipe_screen_type.selection.sub": "Você sempre pode editar essa opção denovo através do menu de configuração.",
   "text.rei.view_recipes_for": "View Recipes for %s",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Don't change / translate the credit down below if you are doing it :)",
   "config.roughlyenoughitems.title": "Roughly Enough Items Config",
   "config.roughlyenoughitems.!general": "General",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "Normal",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "Inverted",
   "config.roughlyenoughitems.appendModNames": "Append Mod Names:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Entry List Action:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Scrolled",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Paginated",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/ru_ru.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "Следующая страница",
   "key.roughlyenoughitems.previous_page": "Предыдущая страница",
   "key.roughlyenoughitems.focus_search": "Фокус поля поиска",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "Мошенничество",
   "text.rei.cheating_disabled": "§7Мошенничество выключено",
   "text.rei.cheating_enabled": "§cМошенничество включено",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "Выбор типа экрана рецепта",
   "text.rei.recipe_screen_type.selection.sub": "Вы всегда можете изменить эту настройку через окно конфигурации.",
   "text.rei.view_recipes_for": "Посмотреть рецепты на %s",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "Конфигурация подсказок",
   "config.roughlyenoughitems.title": "Конфигурация Roughly Enough Items",
   "config.roughlyenoughitems.!general": "Главное",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "x1",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "x64",
   "config.roughlyenoughitems.appendModNames": "Показывать название мода:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "Режим списка предметов:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "Прокрутка",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "Кнопки",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "下一页",
   "key.roughlyenoughitems.previous_page": "上一页",
   "key.roughlyenoughitems.focus_search": "选择搜索框",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "作弊",
   "text.rei.cheating_disabled": "§7作弊已禁用",
   "text.rei.cheating_enabled": "§c作弊已启用",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "合成界面类型选择",
   "text.rei.recipe_screen_type.selection.sub": "你始终可以通过配置界面再次编辑此设置.",
   "text.rei.view_recipes_for": "查看 %s 的配方",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "配置提示",
   "config.roughlyenoughitems.title": "配置",
   "config.roughlyenoughitems.!general": "常规​​​​​",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "标准",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "反转",
   "config.roughlyenoughitems.appendModNames": "附加模组名称:",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "条目列表操作:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "滚动",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "分页",

+ 4 - 0
src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json

@@ -6,6 +6,7 @@
   "key.roughlyenoughitems.next_page": "下一頁",
   "key.roughlyenoughitems.previous_page": "上一頁",
   "key.roughlyenoughitems.focus_search": "選擇搜索框",
+  "key.roughlyenoughitems.copy_recipe_id": "Copy Recipe Identifier",
   "text.rei.cheating": "作弊",
   "text.rei.cheating_disabled": "§7作弊已禁用",
   "text.rei.cheating_enabled": "§c作弊已啟用",
@@ -78,6 +79,8 @@
   "text.rei.recipe_screen_type.selection": "合成介面選擇",
   "text.rei.recipe_screen_type.selection.sub": "你可以在設置中改變合成介面.",
   "text.rei.view_recipes_for": "顯示%s的所有合成",
+  "msg.rei.copied_recipe_id": "Copied Recipe Identifier",
+  "msg.rei.recipe_id_details": "Recipe ID: %s",
   "_comment": "設置提示",
   "config.roughlyenoughitems.title": "Roughly Enough Items 設置",
   "config.roughlyenoughitems.!general": "一般",
@@ -134,6 +137,7 @@
   "config.roughlyenoughitems.itemCheatingMode.rei_like": "正常",
   "config.roughlyenoughitems.itemCheatingMode.jei_like": "倒置",
   "config.roughlyenoughitems.appendModNames": "Append Mod Names",
+  "config.roughlyenoughitems.toastDisplayedOnCopyIdentifier": "Copy Identifier Toast:",
   "config.roughlyenoughitems.scrollingEntryListWidget": "項目列表操作:",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.true": "滾動",
   "config.roughlyenoughitems.scrollingEntryListWidget.boolean.false": "分頁",