aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java11
-rw-r--r--src/main/java/me/shedaniel/rei/api/PluginDisabler.java59
-rw-r--r--src/main/java/me/shedaniel/rei/api/PluginFunction.java14
-rw-r--r--src/main/java/me/shedaniel/rei/api/RecipeHelper.java11
-rw-r--r--src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java9
-rw-r--r--src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java48
-rw-r--r--src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java22
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java13
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java23
-rwxr-xr-xsrc/main/resources/assets/roughlyenoughitems/lang/en_ud.json164
-rw-r--r--src/main/resources/assets/roughlyenoughitems/lang/lol_us.json168
11 files changed, 301 insertions, 241 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 338032d5d..5a2a170c8 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -57,7 +57,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
public static final Logger LOGGER;
private static final RecipeHelper RECIPE_HELPER = new RecipeHelperImpl();
- private static final PluginDisabler PLUGIN_DISABLER = new PluginDisablerImpl();
private static final ItemRegistry ITEM_REGISTRY = new ItemRegistryImpl();
private static final DisplayHelper DISPLAY_HELPER = new DisplayHelperImpl();
private static final Map<Identifier, REIPluginEntry> plugins = Maps.newHashMap();
@@ -72,7 +71,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
return RECIPE_HELPER;
}
- public static me.shedaniel.rei.api.ConfigManager getConfigManager() {
+ public static ConfigManager getConfigManager() {
return configManager;
}
@@ -80,10 +79,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
return ITEM_REGISTRY;
}
- public static PluginDisabler getPluginDisabler() {
- return PLUGIN_DISABLER;
- }
-
public static DisplayHelper getDisplayHelper() {
return DISPLAY_HELPER;
}
@@ -189,7 +184,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
throw new IllegalArgumentException("REI plugin is too old!");
registerPlugin(reiPlugin);
if (reiPlugin instanceof REIPluginV0)
- ((REIPluginV0) reiPlugin).onFirstLoad(getPluginDisabler());
+ ((REIPluginV0) reiPlugin).onFirstLoad();
} catch (Exception e) {
e.printStackTrace();
RoughlyEnoughItemsCore.LOGGER.error("[REI] Can't load REI plugins from %s: %s", reiPlugin.getClass(), e.getLocalizedMessage());
@@ -198,7 +193,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
for (REIPluginV0 reiPlugin : FabricLoader.getInstance().getEntrypoints("rei_plugins_v0", REIPluginV0.class)) {
try {
registerPlugin(reiPlugin);
- reiPlugin.onFirstLoad(getPluginDisabler());
+ reiPlugin.onFirstLoad();
} catch (Exception e) {
e.printStackTrace();
RoughlyEnoughItemsCore.LOGGER.error("[REI] Can't load REI plugins from %s: %s", reiPlugin.getClass(), e.getLocalizedMessage());
diff --git a/src/main/java/me/shedaniel/rei/api/PluginDisabler.java b/src/main/java/me/shedaniel/rei/api/PluginDisabler.java
deleted file mode 100644
index e58a0cfd7..000000000
--- a/src/main/java/me/shedaniel/rei/api/PluginDisabler.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.api;
-
-import net.minecraft.util.Identifier;
-
-public interface PluginDisabler {
-
- /**
- * Disables multiple functions from a plugin
- *
- * @param plugin the identifier of the plugin
- * @param functions the array of functions to be disabled
- */
- default void disablePluginFunctions(Identifier plugin, PluginFunction... functions) {
- for (PluginFunction function : functions)
- disablePluginFunction(plugin, function);
- }
-
- /**
- * Enables multiple functions from a plugin
- *
- * @param plugin the identifier of the plugin
- * @param functions the array of functions to be enabled
- */
- default void enablePluginFunctions(Identifier plugin, PluginFunction... functions) {
- for (PluginFunction function : functions)
- enablePluginFunction(plugin, function);
- }
-
- /**
- * Disables a function from a plugin
- *
- * @param plugin the identifier of the plugin
- * @param function the function to be disabled
- */
- void disablePluginFunction(Identifier plugin, PluginFunction function);
-
- /**
- * Enables a function from a plugin
- *
- * @param plugin the identifier of the plugin
- * @param function the function to be enabled
- */
- void enablePluginFunction(Identifier plugin, PluginFunction function);
-
- /**
- * Checks if a plugin function has been disabled
- *
- * @param plugin the identifier of the plugin
- * @param function the function to check
- * @return whether if it has been disabled
- */
- boolean isFunctionEnabled(Identifier plugin, PluginFunction function);
-
-}
diff --git a/src/main/java/me/shedaniel/rei/api/PluginFunction.java b/src/main/java/me/shedaniel/rei/api/PluginFunction.java
deleted file mode 100644
index ec20c317a..000000000
--- a/src/main/java/me/shedaniel/rei/api/PluginFunction.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.api;
-
-public enum PluginFunction {
- REGISTER_ITEMS,
- REGISTER_CATEGORIES,
- REGISTER_RECIPE_DISPLAYS,
- REGISTER_BOUNDS,
- REGISTER_OTHERS;
-}
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
index f70f21669..9deec1c0e 100644
--- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
+++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
@@ -6,7 +6,6 @@
package me.shedaniel.rei.api;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
-import me.shedaniel.rei.client.RecipeHelperImpl;
import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Recipe;
@@ -215,6 +214,14 @@ public interface RecipeHelper {
<T extends Recipe<?>> void registerRecipes(Identifier category, Function<Recipe, Boolean> recipeFilter, Function<T, RecipeDisplay> mappingFunction);
- List<RecipeHelperImpl.ScreenClickArea> getScreenClickAreas();
+ List<RecipeHelper.ScreenClickArea> getScreenClickAreas();
+
+ interface ScreenClickArea {
+ Class<? extends AbstractContainerScreen> getScreenClass();
+
+ Rectangle getRectangle();
+
+ Identifier[] getCategories();
+ }
}
diff --git a/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java b/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
index 6211e0672..3b71a30f5 100644
--- a/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
+++ b/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
@@ -5,7 +5,10 @@
package me.shedaniel.rei.api.plugins;
-import me.shedaniel.rei.api.*;
+import me.shedaniel.rei.api.DisplayHelper;
+import me.shedaniel.rei.api.ItemRegistry;
+import me.shedaniel.rei.api.REIPluginEntry;
+import me.shedaniel.rei.api.RecipeHelper;
import net.fabricmc.loader.api.SemanticVersion;
import net.fabricmc.loader.util.version.VersionParsingException;
@@ -15,10 +18,8 @@ public interface REIPluginV0 extends REIPluginEntry {
/**
* On register of the plugin
- *
- * @param pluginDisabler the helper class to disable other plugins
*/
- default void onFirstLoad(PluginDisabler pluginDisabler) {
+ default void onFirstLoad() {
}
/**
diff --git a/src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java b/src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java
deleted file mode 100644
index c68941ab3..000000000
--- a/src/main/java/me/shedaniel/rei/client/PluginDisablerImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Roughly Enough Items by Danielshe.
- * Licensed under the MIT License.
- */
-
-package me.shedaniel.rei.client;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import me.shedaniel.rei.api.PluginDisabler;
-import me.shedaniel.rei.api.PluginFunction;
-import net.minecraft.util.Identifier;
-
-import java.util.List;
-import java.util.Map;
-
-public class PluginDisablerImpl implements PluginDisabler {
-
- private static Map<Identifier, List<PluginFunction>> pluginDisabledFunctions = Maps.newHashMap();
-
- @Override
- public void disablePluginFunction(Identifier plugin, PluginFunction function) {
- List<PluginFunction> list = Lists.newArrayList();
- if (pluginDisabledFunctions.containsKey(plugin))
- list = pluginDisabledFunctions.get(plugin);
- if (!list.contains(function))
- list.add(function);
- pluginDisabledFunctions.put(plugin, list);
- }
-
- @Override
- public void enablePluginFunction(Identifier plugin, PluginFunction function) {
- List<PluginFunction> list = Lists.newArrayList();
- if (pluginDisabledFunctions.containsKey(plugin))
- list = pluginDisabledFunctions.get(plugin);
- if (list.contains(function))
- list.remove(function);
- pluginDisabledFunctions.put(plugin, list);
- if (list.size() == 0)
- pluginDisabledFunctions.remove(plugin);
- }
-
- @Override
- public boolean isFunctionEnabled(Identifier plugin, PluginFunction function) {
- return !pluginDisabledFunctions.containsKey(plugin) || !pluginDisabledFunctions.get(plugin).contains(function);
- }
-
-}
diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
index 7592cfe03..74322ce44 100644
--- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
+++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
@@ -242,7 +242,6 @@ public class RecipeHelperImpl implements RecipeHelper {
RoughlyEnoughItemsCore.LOGGER.info("[REI] Loading %d plugins: %s", plugins.size(), plugins.stream().map(REIPluginEntry::getPluginIdentifier).map(Identifier::toString).collect(Collectors.joining(", ")));
Collections.reverse(plugins);
RoughlyEnoughItemsCore.getItemRegisterer().getModifiableItemList().clear();
- PluginDisabler pluginDisabler = RoughlyEnoughItemsCore.getPluginDisabler();
Version reiVersion = FabricLoader.getInstance().getModContainer("roughlyenoughitems").get().getMetadata().getVersion();
if (!(reiVersion instanceof SemanticVersion))
RoughlyEnoughItemsCore.LOGGER.warn("[REI] Roughly Enough Items is not using semantic versioning, will be ignoring plugins' minimum versions!");
@@ -254,16 +253,11 @@ public class RecipeHelperImpl implements RecipeHelper {
if (((REIPluginV0) plugin).getMinimumVersion().compareTo((SemanticVersion) reiVersion) > 0) {
throw new IllegalStateException("Requires " + ((REIPluginV0) plugin).getMinimumVersion().getFriendlyString() + " REI version!");
}
- if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_CATEGORIES))
- ((REIPluginV0) plugin).registerPluginCategories(this);
- if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_RECIPE_DISPLAYS))
- ((REIPluginV0) plugin).registerRecipeDisplays(this);
- if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_BOUNDS))
- ((REIPluginV0) plugin).registerBounds(RoughlyEnoughItemsCore.getDisplayHelper());
- if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_OTHERS))
- ((REIPluginV0) plugin).registerOthers(this);
- if (pluginDisabler.isFunctionEnabled(identifier, PluginFunction.REGISTER_ITEMS))
- ((REIPluginV0) plugin).registerItems(RoughlyEnoughItemsCore.getItemRegisterer());
+ ((REIPluginV0) plugin).registerPluginCategories(this);
+ ((REIPluginV0) plugin).registerRecipeDisplays(this);
+ ((REIPluginV0) plugin).registerBounds(RoughlyEnoughItemsCore.getDisplayHelper());
+ ((REIPluginV0) plugin).registerOthers(this);
+ ((REIPluginV0) plugin).registerItems(RoughlyEnoughItemsCore.getItemRegisterer());
} else {
throw new IllegalStateException("Invaild Plugin Class!");
}
@@ -381,7 +375,7 @@ public class RecipeHelperImpl implements RecipeHelper {
@Override
public void registerScreenClickArea(Rectangle rectangle, Class<? extends AbstractContainerScreen> screenClass, Identifier... categories) {
- this.screenClickAreas.add(new ScreenClickArea(screenClass, rectangle, categories));
+ this.screenClickAreas.add(new ScreenClickAreaImpl(screenClass, rectangle, categories));
}
@Override
@@ -409,12 +403,12 @@ public class RecipeHelperImpl implements RecipeHelper {
return screenClickAreas;
}
- public class ScreenClickArea {
+ private class ScreenClickAreaImpl implements ScreenClickArea {
Class<? extends AbstractContainerScreen> screenClass;
Rectangle rectangle;
Identifier[] categories;
- private ScreenClickArea(Class<? extends AbstractContainerScreen> screenClass, Rectangle rectangle, Identifier[] categories) {
+ private ScreenClickAreaImpl(Class<? extends AbstractContainerScreen> screenClass, Rectangle rectangle, Identifier[] categories) {
this.screenClass = screenClass;
this.rectangle = rectangle;
this.categories = categories;
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
index a36caf122..d8719c0fa 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java
@@ -6,8 +6,6 @@
package me.shedaniel.rei.plugin;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
-import me.shedaniel.rei.api.PluginDisabler;
-import me.shedaniel.rei.api.PluginFunction;
import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.api.plugins.REIPluginV0;
import me.shedaniel.rei.plugin.autocrafting.*;
@@ -30,17 +28,10 @@ public class DefaultAutoCraftingPlugin implements REIPluginV0 {
}
@Override
- public void onFirstLoad(PluginDisabler pluginDisabler) {
+ public void registerOthers(RecipeHelper recipeHelper) {
if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_ITEMS);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_CATEGORIES);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_RECIPE_DISPLAYS);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_OTHERS);
+ return;
}
- }
-
- @Override
- public void registerOthers(RecipeHelper recipeHelper) {
recipeHelper.registerAutoCraftingHandler(new AutoCraftingTableBookHandler());
recipeHelper.registerAutoCraftingHandler(new AutoInventoryBookHandler());
recipeHelper.registerAutoCraftingHandler(new AutoFurnaceBookHandler());
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index 83a565629..b5b124291 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
@@ -91,17 +91,10 @@ public class DefaultPlugin implements REIPluginV0 {
}
@Override
- public void onFirstLoad(PluginDisabler pluginDisabler) {
+ public void registerItems(ItemRegistry itemRegistry) {
if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_ITEMS);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_CATEGORIES);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_RECIPE_DISPLAYS);
- pluginDisabler.disablePluginFunction(PLUGIN, PluginFunction.REGISTER_OTHERS);
+ return;
}
- }
-
- @Override
- public void registerItems(ItemRegistry itemRegistry) {
Registry.ITEM.stream().forEach(item -> {
itemRegistry.registerItemStack(item.getStackForRender());
try {
@@ -122,6 +115,9 @@ public class DefaultPlugin implements REIPluginV0 {
@Override
public void registerPluginCategories(RecipeHelper recipeHelper) {
+ if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
+ return;
+ }
recipeHelper.registerCategory(new DefaultCraftingCategory());
recipeHelper.registerCategory(new DefaultSmeltingCategory());
recipeHelper.registerCategory(new DefaultSmokingCategory());
@@ -135,6 +131,9 @@ public class DefaultPlugin implements REIPluginV0 {
@Override
public void registerRecipeDisplays(RecipeHelper recipeHelper) {
+ if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
+ return;
+ }
recipeHelper.registerRecipes(CRAFTING, ShapelessRecipe.class, DefaultShapelessDisplay::new);
recipeHelper.registerRecipes(CRAFTING, ShapedRecipe.class, DefaultShapedDisplay::new);
recipeHelper.registerRecipes(SMELTING, SmeltingRecipe.class, DefaultSmeltingDisplay::new);
@@ -183,6 +182,9 @@ public class DefaultPlugin implements REIPluginV0 {
@Override
public void registerBounds(DisplayHelper displayHelper) {
+ if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
+ return;
+ }
displayHelper.getBaseBoundsHandler().registerExclusionZones(AbstractInventoryScreen.class, new DefaultPotionEffectExclusionZones());
displayHelper.getBaseBoundsHandler().registerExclusionZones(RecipeBookProvider.class, new DefaultRecipeBookExclusionZones());
displayHelper.registerBoundsHandler(new DisplayHelper.DisplayBoundsHandler<AbstractContainerScreen<?>>() {
@@ -282,6 +284,9 @@ public class DefaultPlugin implements REIPluginV0 {
@Override
public void registerOthers(RecipeHelper recipeHelper) {
+ if (!RoughlyEnoughItemsCore.getConfigManager().getConfig().loadDefaultPlugin) {
+ return;
+ }
recipeHelper.registerWorkingStations(CRAFTING, new ItemStack(Items.CRAFTING_TABLE));
recipeHelper.registerWorkingStations(SMELTING, new ItemStack(Items.FURNACE));
recipeHelper.registerWorkingStations(SMOKING, new ItemStack(Items.SMOKER));
diff --git a/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json b/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json
index 0f9723bc5..f567eb424 100755
--- a/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json
+++ b/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json
@@ -1,40 +1,134 @@
{
- "key.rei.category": "sɯǝʇI ɥƃnouƎ ʎlɥƃnoɹ",
- "key.roughlyenoughitems.recipe_keybind": "ǝdᴉɔǝɹ ʍoɥS",
- "key.roughlyenoughitems.hide_keybind": "IƎɹ ʍoɥS/ǝpᴉH",
+ "key.rei.category": "sɯǝʇI ɥbnouƎ ʎןɥbnoᴚ",
+ "key.roughlyenoughitems.recipe_keybind": "ǝdıɔǝᴚ ʍoɥS",
+ "key.roughlyenoughitems.hide_keybind": "IƎᴚ ʍoɥS/ǝpıH",
"key.roughlyenoughitems.usage_keybind": "sǝs∩ ʍoɥS",
- "text.rei.cheat": "Cheat",
- "text.rei.nocheat": "§c§mʇɐǝɥƆ",
- "category.rei.crafting": "ƃuᴉʇɟɐɹƆ",
- "category.rei.smelting": "ƃuᴉʇlǝɯS",
- "category.rei.smelting.fuel": "lǝnℲ",
- "category.rei.smoking": "ƃuᴉʞoɯS",
- "category.rei.blasting": "ƃuᴉʇsɐlq",
- "category.rei.campfire": "ǝɹᴉɟdɯɐƆ",
- "category.rei.campfire.time": "spuoɔǝS %d",
- "category.rei.stone_cutting": "ƃuᴉʇʇnƆ ǝuoʇS",
- "category.rei.brewing": "ƃuᴉʍǝɹq",
- "category.rei.brewing.input": "uoᴉʇoԀ lɐuᴉƃᴉɹO",
- "category.rei.brewing.reactant": "ʇuǝᴉpǝɹƃuI",
- "category.rei.brewing.result": "uoᴉʇoԀ pǝʇlnsǝɹ",
- "text.rei.config": "ƃᴉɟuoƆ",
- "text.rei.config.side_search_box": "xoq ɥɔɹɐǝS ǝpᴉS: ",
- "text.rei.config.mirror_rei": "sʇǝƃpᴉM IƎɹ ɹoɹɹᴉW: ",
- "text.rei.cheat_items": "˙{player_name} oʇ {item_count}x [{item_name}] uǝʌᴉפ",
- "text.rei.failed_cheat_items": "§c˙sɯǝʇᴉ ǝʌᴉƃ oʇ pǝlᴉɐℲ",
- "text.rei.config.list_ordering": "ƃuᴉɹǝpɹO ʇsᴉ˥ ɯǝʇI",
- "text.rei.config.list_ordering_button": "%s [%s]",
- "ordering.rei.ascending": "ƃuᴉpuǝɔs∀",
- "ordering.rei.descending": "ƃuᴉpuǝɔsǝp",
- "ordering.rei.registry": "ʎɹʇsᴉƃǝɹ",
+ "key.roughlyenoughitems.next_page": "ǝbɐԀ ʇxǝN",
+ "key.roughlyenoughitems.previous_page": "ǝbɐԀ snoıʌǝɹԀ",
+ "key.roughlyenoughitems.focus_search": "pןǝıℲ ɥɔɹɐǝS snɔoℲ",
+ "text.rei.config.general": "ןɐɹǝuǝƃ",
+ "text.rei.config.action": "uoıʇɔ∀",
+ "text.rei.config.cheating": ":buıʇɐǝɥϽ",
+ "text.rei.cheating": "buıʇɐǝɥϽ",
+ "text.rei.cheating_disabled": "§7pǝןqɐsıᗡ buıʇɐǝɥϽ",
+ "text.rei.cheating_enabled": "§cpǝןqɐuƎ buıʇɐǝɥϽ",
+ "text.rei.cheating_limited_enabled": "§b(spuɐɯɯoϽ buıs∩) pǝןqɐuƎ buıʇɐǝɥϽ",
+ "text.rei.cheating_enabled_no_perms": "§7(uoıssıɯɹǝԀ oN) §cpǝןqɐuƎ §7buıʇɐǝɥϽ",
+ "text.rei.no_permission_cheat": "sɯǝʇı ʇɐǝɥɔ oʇ pǝɹınbǝɹ ǝɹɐ suoıssıɯɹǝd ɹoʇɐɹǝdO",
+ "category.rei.crafting": "buıʇɟɐɹϽ",
+ "category.rei.smelting": "buıʇןǝɯS",
+ "category.rei.smelting.fuel": "ןǝnℲ",
+ "category.rei.smoking": "buıʞoɯS",
+ "category.rei.blasting": "buıʇsɐןq",
+ "category.rei.campfire": "ǝɹıɟdɯɐϽ",
+ "category.rei.campfire.time": "spuoɔǝS p%",
+ "category.rei.stone_cutting": "buıʇʇnϽ ǝuoʇS",
+ "category.rei.brewing": "buıʍǝɹq",
+ "category.rei.brewing.input": "uoıʇoԀ ןɐuıbıɹO",
+ "category.rei.brewing.reactant": "ʇuǝıpǝɹbuI",
+ "category.rei.brewing.result": "uoıʇoԀ pǝʇןnsǝᴚ",
+ "category.rei.composting": "buıʇsodɯoϽ",
+ "category.rei.stripping": "buıddıɹʇS",
+ "text.rei.composting.chance": "§eǝɔuɐɥϽ %%d%",
+ "text.rei.composting.page": "p% ǝbɐԀ",
+ "text.rei.config": "bıɟuoϽ",
+ "text.rei.config_tooltip": "uǝǝɹɔS bıɟuoϽ uǝdO\n§7ǝpoɯ ʇɐǝɥɔ ǝןbboʇ oʇ ʞɔıןϽ-ʇɟıɥS",
+ "text.rei.config.side_search_box": " :uoıʇısoԀ xoq ɥɔɹɐǝS",
+ "text.rei.config.item_list_position": " :uoıʇısoԀ ʇsı˥ ɯǝʇI",
+ "text.rei.config.item_list_position.left": "ʇɟǝ˥",
+ "text.rei.config.item_list_position.right": "ʇɥbıᴚ",
+ "text.rei.cheat_items": "§7˙{player_name} oʇ {item_count}x [{item_name}§7] ǝʌɐƃ",
+ "text.rei.failed_cheat_items": "§c˙sɯǝʇı ǝʌıb oʇ pǝןıɐℲ",
+ "text.rei.config.list_ordering": ":buıɹǝpɹO ʇsı˥ ɯǝʇI",
+ "text.rei.config.list_ordering_button": "[%2$s] %1$s",
+ "ordering.rei.ascending": "buıpuǝɔs∀",
+ "ordering.rei.descending": "buıpuǝɔsǝᗡ",
+ "ordering.rei.registry": "ʎɹʇsıbǝᴚ",
"ordering.rei.name": "ǝɯɐN",
- "ordering.rei.item_groups": "sdnoɹפ ɯǝʇI",
- "text.auto_craft.failed_move_items": "§c¡sɯǝʇᴉ ǝʌoɯ ʇ,uɐƆ",
+ "ordering.rei.item_groups": "sdnoɹƃ ɯǝʇI",
"text.auto_craft.move_items": "sɯǝʇI ǝʌoW",
- "text.rei.config.enable_craftable_only": "ɹǝʇlᴉℲ ǝlqɐʇɟɐɹƆ ǝlqɐuƎ: ",
- "text.rei.showing_craftable": "ǝlqɐʇɟɐɹƆ ƃuᴉʍoɥS",
- "text.rei.showing_all": "ll∀ ƃuᴉʍoɥS",
- "text.rei.delete_items": "§cɯǝʇI ǝʇǝlǝp",
- "text.rei.check_updates": "sǝʇɐpd∩ ʞɔǝɥƆ: ",
- "text.rei.credits": "sʇᴉpǝɹƆ"
+ "error.rei.transfer.too_small": "˙pıɹb ᄅxᄅ ɐ oʇ sɯǝʇı ǝʌoɯ oʇ ǝןqɐu∩",
+ "error.rei.not.on.server": "˙ɹǝʌɹǝs ǝɥʇ uo ʇou sı IƎᴚ",
+ "error.rei.not.enough.materials": "˙sןɐıɹǝʇɐW ɥbnouƎ ʇoN",
+ "text.rei.config.craftable_only": " :ɹǝʇןıℲ ǝןqɐʇɟɐɹϽ",
+ "text.rei.config.clickable_recipe_arrows": " :sʍoɹɹ∀ ǝdıɔǝᴚ ǝןqɐʞɔıןϽ",
+ "text.rei.config.text.true": "pǝןqɐuƎ",
+ "text.rei.config.text.false": "pǝןqɐsıᗡ",
+ "text.rei.showing_craftable": "ǝןqɐʇɟɐɹϽ buıʍoɥS",
+ "text.rei.showing_all": "ןן∀ buıʍoɥS",
+ "text.rei.delete_items": "§cɯǝʇI ǝʇǝןǝᗡ",
+ "text.rei.check_updates": " :sǝʇɐpd∩ ʞɔǝɥϽ",
+ "text.rei.config.load_default_plugin": " :uıbnןԀ ʇןnɐɟǝᗡ pɐo˥",
+ "text.rei.config.load_default_plugin.restart_tooltip": "˙sıɥʇ ǝןqɐsıp oʇ ʇuɐʍ ɹǝʌǝu ʎןqɐqoɹd noʎ\n˙buıʇʇǝs sıɥʇ ʎןddɐ oʇ ʇɟɐɹɔǝuıW ʇɹɐʇsǝᴚu",
+ "text.rei.credits": "sʇıpǝɹϽ",
+ "text.rei.left_arrow": "<",
+ "text.rei.right_arrow": ">",
+ "text.rei.give_command": ":puɐɯɯoϽ ǝʌıƃ ʇɐǝɥϽ",
+ "text.rei.gamemode_command": ":puɐɯɯoϽ ǝpoW ǝɯɐƃ",
+ "text.rei.weather_command": ":puɐɯɯoϽ ɹǝɥʇɐǝM",
+ "text.rei.give_command.tooltip": "˙buıʇɐǝɥɔ uǝɥʍ sɹǝʌɹǝs uı pǝsn ʎןuo sı puɐɯɯoɔ sıɥ⊥",
+ "text.rei.give_command.suggestion": "˙puɐɯɯoɔ ɹǝʇuƎ",
+ "text.rei.view_all_categories": "sǝıɹobǝʇɐϽ ןן∀ ʍǝıΛ",
+ "text.rei.go_back_first_page": "1 ǝbɐԀ oʇ ʞɔɐq",
+ "text.rei.config.appearance": "ǝɔuɐɹɐǝdd∀",
+ "text.rei.config.modules": "sǝןnpoW",
+ "text.rei.config.advanced": "pǝɔuɐʌp∀",
+ "text.rei.config.vanilla_recipe_book": ":ʞooq ǝdıɔǝᴚ ɐןןıuɐΛ",
+ "text.rei.choose_page": "ǝbɐԀ ǝsooɥϽ",
+ "text.rei.config.max_recipes_per_page": ":ǝbɐԀ ɥɔɐƎ sǝdıɔǝᴚ ɯnɯıxɐW",
+ "text.rei.config.util_buttons": ":suoʇʇnq sןıʇ∩",
+ "text.rei.gamemode_button.tooltip": "ǝpoW ǝɯɐƃ ɥɔʇıʍS\n§7ǝpoɯ %s oʇ ɥɔʇıʍS.\n\n§7˙ǝןɔʎɔ ǝsɹǝʌǝɹ ɐ uı ɥɔʇıʍs oʇ ʞɔıןϽ-ʇɟıɥS",
+ "text.rei.weather_button.tooltip": "ɹǝɥʇɐǝM ɥɔʇıʍS\n§7˙%s oʇ ɥɔʇıʍS.",
+ "text.rei.enabled": "sǝʎ",
+ "text.rei.disabled": "oN",
+ "text.rei.short_gamemode.survival": "S",
+ "text.rei.short_gamemode.creative": "Ͻ",
+ "text.rei.short_gamemode.adventure": "∀",
+ "text.rei.short_gamemode.spectator": "ԀS",
+ "text.rei.weather.clear": "ɹɐǝןϽ",
+ "text.rei.weather.rain": "uıɐᴚ",
+ "text.rei.weather.thunder": "ɹǝpunɥ⊥",
+ "text.rei.previous_category": "ʎɹobǝʇɐϽ snoıʌǝɹԀ",
+ "text.rei.next_category": "ʎɹobǝʇɐϽ ʇxǝN",
+ "text.rei.previous_page": "ǝbɐԀ snoıʌǝɹԀ",
+ "text.rei.next_page": "ǝbɐԀ ʇxǝN",
+ "text.rei.config.prefer_visible_recipes": " :sǝdıɔǝᴚ ǝןqısıΛ ɹǝɟǝɹԀ",
+ "text.rei.config.title": "bıɟuoϽ sɯǝʇI ɥbnouƎ ʎןɥbnoᴚ",
+ "text.rei.config.enable_legacy_speedcraft_support": " :ʇɹoddnS uıbnןԀ ʎɔɐbǝ˥ ǝןqɐuƎ",
+ "text.rei.config.april_fools": "sןooℲ ןıɹd∀",
+ "text.rei.config.april_fools.2019": " :ǝʞoظ ,sןooℲ ןıɹd∀ IƎᴚ 9102 ǝɔɹoℲ",
+ "text.rei.config.appearance_theme": ":ǝɯǝɥ⊥ ǝɔuɐɹɐǝdd∀",
+ "text.rei.config.appearance_theme.true": "ǝɯǝɥ⊥ ʞɹɐᗡ",
+ "text.rei.config.appearance_theme.false": "ǝɯǝɥ⊥ ʇɥbı˥",
+ "text.rei.config.villager_screen_permanent_scroll_bar": ":ɹɐq ןןoɹɔS uǝǝɹɔS ǝdıɔǝᴚ",
+ "text.rei.config.item_cheating_mode": ":ʇunoɯ∀ buıʇɐǝɥϽ ɯǝʇI",
+ "text.rei.config.item_cheating_mode.rei_like": "ןɐɯɹoN",
+ "text.rei.config.item_cheating_mode.jei_like": "pǝsɹǝʌǝᴚ",
+ "text.rei.config.light_gray_recipe_border": ":ɹǝpɹoq ʎɐןdsıᗡ ǝdıɔǝᴚ",
+ "text.rei.config_api_failed": "¡pǝןןɐʇsuı ʇı ǝʌɐɥ ʇ,uop noʎ ɹo pǝןıɐɟ IԀ∀ 2ʌ bıɟuoϽ ɥʇoןϽ ɟı ɹǝɥʇıǝ ǝɹǝɥ pǝʌıɹɹɐ noʎ\n˙ɹǝʞɔɐɹʇ bnq ǝɥʇ oʇ ʇɹodǝɹ puɐ IԀ∀ ǝɥʇ ןןɐʇsuI / ǝʇɐpd∩u",
+ "text.rei.back": "ʞɔɐq",
+ "text.rei.config.recipe_screen_type": ":ǝdʎ⊥ uǝǝɹɔS",
+ "text.rei.config.recipe_screen_type.unset": "ʇǝS ʇoN",
+ "text.rei.config.recipe_screen_type.original": "ןɐuıbıɹO",
+ "text.rei.config.recipe_screen_type.villager": "ɹǝbɐןןıΛ",
+ "text.rei.select": "ʇɔǝןǝS",
+ "text.rei.working_station": "uoıʇɐʇS buıʞɹoM",
+ "text.rei.recipe_id": "\n%2$s :pI ǝdıɔǝᴚ%1$s",
+ "text.rei.config.register_in_other_thread": ":pɐǝɹɥʇ ɹǝɥʇo uı sǝdıɔǝᴚ ɹǝʇsıbǝᴚ",
+ "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ıɔǝᴚ ʍǝıΛ",
+ "text.rei.config.side_search_box.text.false": "ɹǝʇuǝϽ",
+ "text.rei.config.side_search_box.text.true": "ʇɥbıᴚ / ʇɟǝ˥",
+ "text.rei.config.villager_screen_permanent_scroll_bar.text.true": "ʇuǝuɐɯɹǝԀ",
+ "text.rei.config.villager_screen_permanent_scroll_bar.text.false": "ǝpɐℲ oʇn∀",
+ "text.rei.config.light_gray_recipe_border.text.true": "ʎɐɹƃ ʇɥbı˥",
+ "text.rei.config.light_gray_recipe_border.text.false": "ʇsɐɹʇuoϽ ɥbıH",
+ "_comment": "sdıʇןoo⊥ bıɟuoϽ",
+ "tooltip.rei.config.side_search_box": "pןǝıɟ ɥɔɹɐǝs ǝɥʇ ɟo uoıʇɐɔoן ǝɥʇ sǝɹɐןɔǝᗡ",
+ "tooltip.rei.config.list_ordering": "ʇsıן ɯǝʇı ǝpıs ǝɥʇ ɟo buıɹǝpɹo ǝɥʇ sǝɹɐןɔǝᗡ",
+ "tooltip.rei.config.item_list_position": "ʇsıן ɯǝʇı ǝpıs ǝɥʇ ɟo uoıʇısod ǝɥʇ sǝɹɐןɔǝᗡ",
+ "tooltip.rei.config.max_recipes_per_page": "sǝdıɔǝɹ pǝʎɐןdsıp ǝןqıssod ɯnɯıxɐɯ ǝɥʇ sǝɹɐןɔǝᗡ",
+ "tooltip.rei.config.light_gray_recipe_border": "ɹǝpɹoq ǝdıɔǝɹ ǝɥʇ ɟo ǝɔuɐɹɐǝddɐ ǝɥʇ sǝɹɐןɔǝᗡ",
+ "text.rei.credit.text": "§l(%sʌ) sɯǝʇI ɥbnouƎ ʎןɥbnoᴚ\n§7˙sɯǝʇI ɥbnouƎ ʇsoɯן∀ ɹoɟ ʞɹoɟ ɐ ʎןןɐuıbıɹO\n\n§lsɹǝdoןǝʌǝᗡ\n ɐʌɹɐᗡuǝZ ʎq ʎןןɐuıbıɹO\n ǝɥsןǝıuɐᗡ ʎq uǝʇʇıɹʍǝᴚ\n ʇnNɥǝ⊥ ʎq ʇɹoddnS uıbnןԀ pןO\n\n§luoıʇɐןsuɐɹ⊥ ǝbɐnbuɐ˥\n%s\n\n§lǝsuǝɔı˥\n§7˙⊥IW ɥʇıʍ pǝsuǝɔıן sı sɯǝʇI ɥbnouƎ ʎןɥbnoᴚ"
} \ No newline at end of file
diff --git a/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json b/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json
index 2328c76f1..a43cfd7c0 100644
--- a/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json
+++ b/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json
@@ -1,40 +1,134 @@
{
- "key.rei.category": "Roughly Enough Items",
- "key.roughlyenoughitems.recipe_keybind": "Show Recipe",
- "key.roughlyenoughitems.hide_keybind": "Hide/Show REI",
+ "key.rei.category": "Woughwy Enough Items",
+ "key.roughlyenoughitems.recipe_keybind": "Show Wecipe",
+ "key.roughlyenoughitems.hide_keybind": "Hide/Show WEI",
"key.roughlyenoughitems.usage_keybind": "Show Uses",
- "text.rei.config.cheating": "HAX:",
- "text.rei.cheating": "HAX",
- "category.rei.crafting": "Krafting",
- "category.rei.smelting": "Smlezting",
- "category.rei.smelting.fuel": "Fuelz",
- "category.rei.smoking": "Soking",
- "category.rei.blasting": "Blazting",
- "category.rei.campfire": "Camfireh",
- "category.rei.campfire.time": "%d Secondz",
- "category.rei.stone_cutting": "Rock Kuting",
- "category.rei.brewing": "Brwing",
- "category.rei.brewing.input": "Original Poshun",
- "category.rei.brewing.reactant": "Thing",
- "category.rei.brewing.result": "Resuted Poshun",
- "text.rei.config": "Konfig",
- "text.rei.config.side_search_box": "Sie Saerhc Boz: ",
- "text.rei.config.mirror_rei": "Miror REI Widgetz: ",
- "text.rei.cheat_items": "Giv [{item_name}] x{item_count} 2 {player_name}.",
- "text.rei.failed_cheat_items": "§cFaild 2 giv itemz.",
- "text.rei.config.list_ordering": "Item lis orderin",
+ "key.roughlyenoughitems.next_page": "Next Page",
+ "key.roughlyenoughitems.previous_page": "Pwevious Page",
+ "key.roughlyenoughitems.focus_search": "Focus Seawch Fiewd",
+ "text.rei.config.general": "Genewaw",
+ "text.rei.config.action": "Action",
+ "text.rei.config.cheating": "Cheating:",
+ "text.rei.cheating": "Cheating",
+ "text.rei.cheating_disabled": "§7Cheating Disabwed",
+ "text.rei.cheating_enabled": "§cCheating Enabwed",
+ "text.rei.cheating_limited_enabled": "§bCheating Enabwed (Using Commands)",
+ "text.rei.cheating_enabled_no_perms": "§7Cheating §cEnabwed §7(No Pewmission)",
+ "text.rei.no_permission_cheat": "Opewatow pewmissions awe wequiwed to cheat items",
+ "category.rei.crafting": "Cwafting",
+ "category.rei.smelting": "Smewting",
+ "category.rei.smelting.fuel": "Fuew",
+ "category.rei.smoking": "Smoking",
+ "category.rei.blasting": "Bwasting",
+ "category.rei.campfire": "Campfiwe",
+ "category.rei.campfire.time": "%d Seconds",
+ "category.rei.stone_cutting": "Stone Cutting",
+ "category.rei.brewing": "Bwewing",
+ "category.rei.brewing.input": "Owiginaw Potion",
+ "category.rei.brewing.reactant": "Ingwedient",
+ "category.rei.brewing.result": "Wesuwted Potion",
+ "category.rei.composting": "Composting",
+ "category.rei.stripping": "Stwipping",
+ "text.rei.composting.chance": "§e%d%% Chance",
+ "text.rei.composting.page": "Page %d",
+ "text.rei.config": "Config",
+ "text.rei.config_tooltip": "Open Config Scween\n§7Shift-Cwick to toggwe cheat mode",
+ "text.rei.config.side_search_box": "Seawch Box Position: ",
+ "text.rei.config.item_list_position": "Item Wist Position: ",
+ "text.rei.config.item_list_position.left": "Weft",
+ "text.rei.config.item_list_position.right": "Wight",
+ "text.rei.cheat_items": "Gave [{item_name}§f] x{item_count} to {pwayew_name}.",
+ "text.rei.failed_cheat_items": "§cFaiwed to give items.",
+ "text.rei.config.list_ordering": "Item Wist Owdewing:",
"text.rei.config.list_ordering_button": "%s [%s]",
- "ordering.rei.ascending": "Acendin",
- "ordering.rei.descending": "Dscendin",
- "ordering.rei.registry": "Registry",
- "ordering.rei.name": "Nam",
- "ordering.rei.item_groups": "Itmz groupz",
- "text.auto_craft.failed_move_items": "§cKan'z m0v itemz!",
- "text.auto_craft.move_items": "M0v Itemz",
- "text.rei.config.enable_craftable_only": "Enabel craftabel fit3r: ",
- "text.rei.showing_craftable": "Sowin Craftabel",
- "text.rei.showing_all": "Sowin all",
- "text.rei.delete_items": "§cDel Itm",
- "text.rei.check_updates": "Chck Updatez: ",
- "text.rei.credits": "Creditz"
-}
+ "ordering.rei.ascending": "Ascending",
+ "ordering.rei.descending": "Descending",
+ "ordering.rei.registry": "Wegistwy",
+ "ordering.rei.name": "Name",
+ "ordering.rei.item_groups": "Item Gwoups",
+ "text.auto_craft.move_items": "Move Items",
+ "error.rei.transfer.too_small": "Unabwe to move items to a 2x2 gwid.",
+ "error.rei.not.on.server": "WEI is not on de sewvew.",
+ "error.rei.not.enough.materials": "Not Enough Matewiaws.",
+ "text.rei.config.craftable_only": "Cwaftabwe Fiwtew: ",
+ "text.rei.config.clickable_recipe_arrows": "Cwickabwe Wecipe Awwows: ",
+ "text.rei.config.text.true": "Enabwed",
+ "text.rei.config.text.false": "Disabwed",
+ "text.rei.showing_craftable": "Showing Cwaftabwe",
+ "text.rei.showing_all": "Showing Aww",
+ "text.rei.delete_items": "§cDewete Item",
+ "text.rei.check_updates": "Check Updates: ",
+ "text.rei.config.load_default_plugin": "Woad Defauwt Pwugin: ",
+ "text.rei.config.load_default_plugin.restart_tooltip": "You pwobabwy nevew want to disabwe dis.\nWestawt Minecwaft to appwy dis setting.",
+ "text.rei.credits": "Cwedits",
+ "text.rei.left_arrow": "<",