From 4710c557f449703362665a520bf68b85b2a7cdc1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 8 Jun 2019 20:30:53 +0800 Subject: We are going to break lots of mods --- .../java/me/shedaniel/rei/api/RecipeDisplay.java | 14 ++- .../java/me/shedaniel/rei/api/RecipeHelper.java | 25 ++--- .../me/shedaniel/rei/api/SpeedCraftFunctional.java | 37 -------- .../me/shedaniel/rei/client/RecipeHelperImpl.java | 16 ---- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 12 +-- .../rei/gui/VillagerRecipeViewingScreen.java | 5 +- .../shedaniel/rei/gui/credits/CreditsScreen.java | 33 ++++++- .../rei/gui/widget/AutoCraftingButtonWidget.java | 57 ++++++++++++ .../rei/gui/widget/SpeedCraftingButtonWidget.java | 58 ------------ .../rei/plugin/DefaultBlastingDisplay.java | 5 +- .../rei/plugin/DefaultBrewingDisplay.java | 11 +-- .../rei/plugin/DefaultCampfireDisplay.java | 5 +- .../rei/plugin/DefaultCompostingDisplay.java | 6 -- .../shedaniel/rei/plugin/DefaultCustomDisplay.java | 9 +- .../me/shedaniel/rei/plugin/DefaultPlugin.java | 103 +-------------------- .../shedaniel/rei/plugin/DefaultShapedDisplay.java | 5 +- .../rei/plugin/DefaultShapelessDisplay.java | 5 +- .../rei/plugin/DefaultSmeltingDisplay.java | 5 +- .../rei/plugin/DefaultSmokingDisplay.java | 5 +- .../rei/plugin/DefaultStoneCuttingDisplay.java | 5 +- .../assets/roughlyenoughitems/lang/bg_bg.json | 4 +- .../assets/roughlyenoughitems/lang/de_de.json | 4 +- .../assets/roughlyenoughitems/lang/en_ud.json | 4 +- .../assets/roughlyenoughitems/lang/en_us.json | 7 +- .../assets/roughlyenoughitems/lang/et_ee.json | 4 +- .../assets/roughlyenoughitems/lang/fr_fr.json | 4 +- .../assets/roughlyenoughitems/lang/lol_us.json | 4 +- .../assets/roughlyenoughitems/lang/pt_br.json | 4 +- .../assets/roughlyenoughitems/lang/zh_cn.json | 4 +- .../assets/roughlyenoughitems/lang/zh_tw.json | 4 +- src/main/resources/fabric.mod.json | 14 ++- 31 files changed, 179 insertions(+), 299 deletions(-) delete mode 100644 src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java create mode 100644 src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java delete mode 100644 src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java (limited to 'src') diff --git a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java index d77e2c9ab..26739d4cf 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeDisplay.java @@ -15,11 +15,6 @@ import java.util.Optional; public interface RecipeDisplay { - /** - * @return the optional recipe - */ - Optional getRecipe(); - /** * @return a list of items */ @@ -46,4 +41,13 @@ public interface RecipeDisplay { */ Identifier getRecipeCategory(); + /** + * Gets the recipe location from datapack + * + * @return the recipe location + */ + default Optional getRecipeLocation() { + return Optional.empty(); + } + } diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java index ca0202d1f..19d411cfd 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java @@ -126,27 +126,20 @@ public interface RecipeHelper { void registerSpeedCraftButtonArea(Identifier category, ButtonAreaSupplier rectangle); /** - * @param category the category of the button area - * @deprecated Not required anymore - */ - @Deprecated - void registerDefaultSpeedCraftButtonArea(Identifier category); - - /** - * Gets the speed crafting functional from a category + * Removes the speed crafting button * - * @param category the category of the speed crafting functional - * @return the list of speed crafting functionals + * @param category the category of the button */ - List getSpeedCraftFunctional(RecipeCategory category); + default void removeSpeedCraftButton(Identifier category) { + registerSpeedCraftButtonArea(category, bounds -> null); + } /** - * Registers a speed crafting functional - * - * @param category the category of the speed crafting functional - * @param functional the functional to be registered + * @param category the category of the button area + * @deprecated Not required anymore */ - void registerSpeedCraftFunctional(Identifier category, SpeedCraftFunctional functional); + @Deprecated + void registerDefaultSpeedCraftButtonArea(Identifier category); /** * Gets the map of all recipes visible to the player diff --git a/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java b/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java deleted file mode 100644 index 32f67438d..000000000 --- a/src/main/java/me/shedaniel/rei/api/SpeedCraftFunctional.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.api; - -import net.minecraft.client.gui.screen.Screen; - -public interface SpeedCraftFunctional { - - /** - * Gets the classes that it is functioning for - * - * @return the array of classes - */ - Class[] getFunctioningFor(); - - /** - * Performs the auto crafting - * - * @param screen the current screen - * @param recipe the current recipe - * @return whether it worked - */ - boolean performAutoCraft(Screen screen, T recipe); - - /** - * Gets if this functional accepts the auto crafting - * - * @param screen the current screen - * @param recipe the current recipe - * @return whether it is accepted - */ - boolean acceptRecipe(Screen screen, T recipe); - -} diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java index 83ee91458..64450da02 100644 --- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java @@ -43,7 +43,6 @@ public class RecipeHelperImpl implements RecipeHelper { private final Map categoryDisplaySettingsMap = Maps.newHashMap(); private final List categories = Lists.newArrayList(); private final Map speedCraftAreaSupplierMap = Maps.newHashMap(); - private final Map> speedCraftFunctionalMap = Maps.newHashMap(); private final Map>> categoryWorkingStations = Maps.newHashMap(); private final List displayVisibilityHandlers = Lists.newArrayList(); private final List liveRecipeGenerators = Lists.newArrayList(); @@ -211,20 +210,6 @@ public class RecipeHelperImpl implements RecipeHelper { registerSpeedCraftButtonArea(category, bounds -> new Rectangle((int) bounds.getMaxX() - 16, (int) bounds.getMaxY() - 16, 10, 10)); } - @Override - public List getSpeedCraftFunctional(RecipeCategory category) { - if (speedCraftFunctionalMap.get(category.getIdentifier()) == null) - return Lists.newArrayList(); - return speedCraftFunctionalMap.get(category.getIdentifier()); - } - - @Override - public void registerSpeedCraftFunctional(Identifier category, SpeedCraftFunctional functional) { - List list = speedCraftFunctionalMap.containsKey(category) ? new LinkedList<>(speedCraftFunctionalMap.get(category)) : Lists.newLinkedList(); - list.add(functional); - speedCraftFunctionalMap.put(category, list); - } - @SuppressWarnings("deprecation") public void recipesLoaded(RecipeManager recipeManager) { this.recipeCount.set(0); @@ -233,7 +218,6 @@ public class RecipeHelperImpl implements RecipeHelper { this.categories.clear(); this.speedCraftAreaSupplierMap.clear(); this.categoryWorkingStations.clear(); - this.speedCraftFunctionalMap.clear(); this.categoryDisplaySettingsMap.clear(); this.recipeFunctions.clear(); this.displayVisibilityHandlers.clear(); diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 4d0ec388a..6f3649952 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -16,7 +16,6 @@ import net.minecraft.ChatFormat; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.sound.PositionedSoundInstance; @@ -70,14 +69,6 @@ public class RecipeViewingScreen extends Screen { this.choosePageActivated = false; } - public static SpeedCraftFunctional getSpeedCraftFunctionalByCategory(AbstractContainerScreen containerScreen, RecipeCategory category) { - for(SpeedCraftFunctional functional : RecipeHelper.getInstance().getSpeedCraftFunctional(category)) - for(Class aClass : functional.getFunctioningFor()) - if (containerScreen.getClass().isAssignableFrom(aClass)) - return functional; - return null; - } - @Override public boolean keyPressed(int int_1, int int_2, int int_3) { if (int_1 == 256 && choosePageActivated) { @@ -280,7 +271,6 @@ public class RecipeViewingScreen extends Screen { } } Optional supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory); - final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(ScreenHelper.getLastContainerScreen(), selectedCategory); int recipeHeight = selectedCategory.getDisplayHeight(); List currentDisplayed = getCurrentDisplayed(); for(int i = 0; i < currentDisplayed.size(); i++) { @@ -290,7 +280,7 @@ public class RecipeViewingScreen extends Screen { final Rectangle displayBounds = new Rectangle((int) getBounds().getCenterX() - displayWidth / 2, getBounds().y + 40 + recipeHeight * i + 7 * i, displayWidth, recipeHeight); widgets.addAll(selectedCategory.setupDisplay(displaySupplier, displayBounds)); if (supplier.isPresent()) - widgets.add(new SpeedCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), functional, displaySupplier)); + widgets.add(new AutoCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier)); } if (choosePageActivated) recipeChoosePageWidget = new RecipeChoosePageWidget(this, page, getTotalPages(selectedCategory)); diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index 6a39f06d9..f6958c5be 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -38,8 +38,6 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import static me.shedaniel.rei.gui.RecipeViewingScreen.getSpeedCraftFunctionalByCategory; - public class VillagerRecipeViewingScreen extends Screen { private static final int TABS_PER_PAGE = 8; @@ -132,9 +130,8 @@ public class VillagerRecipeViewingScreen extends Screen { Rectangle recipeBounds = new Rectangle(bounds.x + 100 + (guiWidth - 100) / 2 - category.getDisplayWidth(display) / 2, bounds.y + bounds.height / 2 - category.getDisplayHeight() / 2, category.getDisplayWidth(display), category.getDisplayHeight()); this.widgets.addAll(category.setupDisplay(() -> display, recipeBounds)); Optional supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(category); - final SpeedCraftFunctional functional = getSpeedCraftFunctionalByCategory(ScreenHelper.getLastContainerScreen(), category); if (supplier.isPresent() && supplier.get().get(recipeBounds) != null) - this.widgets.add(new SpeedCraftingButtonWidget(supplier.get().get(recipeBounds), supplier.get().getButtonText(), functional, () -> display)); + this.widgets.add(new AutoCraftingButtonWidget(supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display)); int index = 0; for(RecipeDisplay recipeDisplay : categoryMap.get(category)) { diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index e54a37581..8a5ba8211 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -5,14 +5,22 @@ package me.shedaniel.rei.gui.credits; +import com.google.common.collect.Lists; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.CreditsItem; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.gui.widget.AbstractPressableButtonWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.network.chat.TextComponent; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + public class CreditsScreen extends Screen { private Screen parent; @@ -39,7 +47,30 @@ public class CreditsScreen extends Screen { protected void init() { children.add(entryListWidget = new CreditsEntryListWidget(minecraft, width, height, 32, height - 32)); entryListWidget.creditsClearEntries(); - for(String line : I18n.translate("text.rei.credit.text").split("\n")) + List translators = Lists.newArrayList(); + FabricLoader.getInstance().getModContainer("roughlyenoughitems").ifPresent(rei -> { + try { + if (rei.getMetadata().containsCustomElement("rei:translators")) { + JsonObject jsonObject = rei.getMetadata().getCustomElement("rei:translators").getAsJsonObject(); + for(Map.Entry entry : jsonObject.entrySet()) { + JsonElement value = entry.getValue(); + String behind = value.isJsonArray() ? Lists.newArrayList(value.getAsJsonArray().iterator()).stream().map(json -> json.getAsString()).sorted(String::compareToIgnoreCase).collect(Collectors.joining(", ")) : value.getAsString(); + translators.add(String.format(" %s - %s", entry.getKey(), behind)); + } + } + translators.sort(String::compareToIgnoreCase); + } catch (Exception e) { + translators.clear(); + translators.add("Failed to get translators: " + e.toString()); + for(StackTraceElement traceElement : e.getStackTrace()) + translators.add(" at " + traceElement); + e.printStackTrace(); + } + }); + List actualTranslators = Lists.newArrayList(); + int i = width - 80 - 6; + translators.forEach(s -> font.wrapStringToWidthAsList(s, i).forEach(actualTranslators::add)); + for(String line : I18n.translate("text.rei.credit.text", FabricLoader.getInstance().getModContainer("roughlyenoughitems").map(mod -> mod.getMetadata().getVersion().getFriendlyString()).orElse("Unknown"), String.join("\n", actualTranslators)).split("\n")) entryListWidget.creditsAddEntry(new CreditsItem(new TextComponent(line))); entryListWidget.creditsAddEntry(new CreditsItem(new TextComponent(""))); children.add(buttonDone = new AbstractPressableButtonWidget(width / 2 - 100, height - 26, 200, 20, I18n.translate("gui.done")) { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java new file mode 100644 index 000000000..d62ac654f --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java @@ -0,0 +1,57 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + +package me.shedaniel.rei.gui.widget; + +import me.shedaniel.rei.api.RecipeDisplay; +import me.shedaniel.rei.client.ScreenHelper; +import net.minecraft.ChatFormat; +import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.util.Identifier; + +import java.awt.*; +import java.util.Optional; +import java.util.function.Supplier; + +public class AutoCraftingButtonWidget extends ButtonWidget { + + private final Supplier displaySupplier; + private String extraTooltip; + private AbstractContainerScreen containerScreen; + + public AutoCraftingButtonWidget(Rectangle rectangle, String text, Supplier displaySupplier) { + super(rectangle, text); + this.displaySupplier = displaySupplier; + Optional recipe = displaySupplier.get().getRecipeLocation(); + extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", ChatFormat.GRAY.toString(), recipe.get().toString()) : ""; + this.containerScreen = ScreenHelper.getLastContainerScreen(); + } + + @Override + public void onPressed() { + minecraft.openScreen(containerScreen); + ScreenHelper.getLastOverlay().init(); + } + + @Override + public void render(int mouseX, int mouseY, float delta) { + this.enabled = true; + super.render(mouseX, mouseY, delta); + } + + @Override + public Optional getTooltips() { + if (this.minecraft.options.advancedItemTooltips) + if (enabled) + return Optional.ofNullable(I18n.translate("text.auto_craft.move_items") + extraTooltip); + else + return Optional.ofNullable(I18n.translate("text.auto_craft.failed_move_items") + extraTooltip); + if (enabled) + return Optional.ofNullable(I18n.translate("text.auto_craft.move_items")); + else + return Optional.ofNullable(I18n.translate("text.auto_craft.failed_move_items")); + } +} diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java deleted file mode 100644 index f2049919d..000000000 --- a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Roughly Enough Items by Danielshe. - * Licensed under the MIT License. - */ - -package me.shedaniel.rei.gui.widget; - -import me.shedaniel.rei.api.RecipeDisplay; -import me.shedaniel.rei.api.SpeedCraftFunctional; -import me.shedaniel.rei.client.ScreenHelper; -import net.minecraft.ChatFormat; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.recipe.Recipe; - -import java.awt.*; -import java.util.Optional; -import java.util.function.Supplier; - -public class SpeedCraftingButtonWidget extends ButtonWidget { - - private final Supplier displaySupplier; - private final SpeedCraftFunctional functional; - private String extraTooltip; - - public SpeedCraftingButtonWidget(Rectangle rectangle, String text, SpeedCraftFunctional functional, Supplier displaySupplier) { - super(rectangle, text); - this.displaySupplier = displaySupplier; - this.functional = functional; - Optional recipe = displaySupplier.get().getRecipe(); - extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", ChatFormat.GRAY.toString(), recipe.get().getId().toString()) : ""; - } - - @Override - public void onPressed() { - minecraft.openScreen(ScreenHelper.getLastContainerScreen()); - ScreenHelper.getLastOverlay().init(); - functional.performAutoCraft(ScreenHelper.getLastContainerScreen(), displaySupplier.get()); - } - - @Override - public void render(int mouseX, int mouseY, float delta) { - this.enabled = functional != null && functional.acceptRecipe(ScreenHelper.getLastContainerScreen(), displaySupplier.get()); - super.render(mouseX, mouseY, delta); - } - - @Override - public Optional getTooltips() { - if (this.minecraft.options.advancedItemTooltips) - if (enabled) - return Optional.ofNullable(I18n.translate("text.speed_craft.move_items") + extraTooltip); - else - return Optional.ofNullable(I18n.translate("text.speed_craft.failed_move_items") + extraTooltip); - if (enabled) - return Optional.ofNullable(I18n.translate("text.speed_craft.move_items")); - else - return Optional.ofNullable(I18n.translate("text.speed_craft.failed_move_items")); - } -} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java index 3adab1d6f..6e490c47c 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java @@ -9,6 +9,7 @@ import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.AbstractCookingRecipe; import net.minecraft.recipe.BlastingRecipe; import net.minecraft.util.Identifier; @@ -32,8 +33,8 @@ public class DefaultBlastingDisplay implements RecipeDisplay { } @Override - public Optional getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java index 792b3a78d..80c49b53e 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java @@ -10,10 +10,12 @@ import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.block.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; import net.minecraft.util.Identifier; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; public class DefaultBrewingDisplay implements RecipeDisplay { @@ -26,11 +28,6 @@ public class DefaultBrewingDisplay implements RecipeDisplay { this.output = output; } - @Override - public Optional getRecipe() { - return Optional.empty(); - } - @Override public List> getInput() { return Lists.newArrayList(Collections.singletonList(input), Arrays.asList(reactant.getStackArray())); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java index 4e910be9e..86ab7a26a 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCampfireDisplay.java @@ -7,6 +7,7 @@ package me.shedaniel.rei.plugin; import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.AbstractCookingRecipe; import net.minecraft.recipe.CampfireCookingRecipe; import net.minecraft.recipe.Ingredient; import net.minecraft.util.DefaultedList; @@ -41,8 +42,8 @@ public class DefaultCampfireDisplay implements RecipeDisplay getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java index 235bbcd06..e61e59268 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCompostingDisplay.java @@ -9,7 +9,6 @@ import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; import net.minecraft.util.Identifier; import java.util.*; @@ -34,11 +33,6 @@ public class DefaultCompostingDisplay implements RecipeDisplay { return page; } - @Override - public Optional getRecipe() { - return Optional.empty(); - } - @Override public List> getInput() { List> lists = new ArrayList<>(); diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java index 21c141906..1a434e2f4 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCustomDisplay.java @@ -8,6 +8,7 @@ package me.shedaniel.rei.plugin; import com.google.common.collect.Lists; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; +import net.minecraft.util.Identifier; import java.util.List; import java.util.Optional; @@ -41,9 +42,13 @@ public class DefaultCustomDisplay implements DefaultCraftingDisplay { this(input, output, null); } + public Recipe getPossibleRecipe() { + return possibleRecipe; + } + @Override - public Optional getRecipe() { - return Optional.ofNullable(possibleRecipe); + public Optional getRecipeLocation() { + return Optional.ofNullable(possibleRecipe).map(Recipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index c04aba51a..243a12b89 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -13,11 +13,10 @@ import me.shedaniel.rei.client.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.VillagerRecipeViewingScreen; import me.shedaniel.rei.listeners.ContainerScreenHooks; -import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import net.minecraft.block.ComposterBlock; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.*; +import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; +import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; import net.minecraft.client.recipe.book.ClientRecipeBook; import net.minecraft.container.CraftingContainer; @@ -134,7 +133,7 @@ public class DefaultPlugin implements REIPluginEntry { if (ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.isEmpty()) ComposterBlock.registerDefaultCompostableItems(); ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.keySet().forEach(itemConvertible -> { - float chance = ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.get(itemConvertible); + float chance = ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.getOrDefault(itemConvertible, 0); if (chance > 0) map.put(itemConvertible, chance); }); @@ -269,6 +268,7 @@ public class DefaultPlugin implements REIPluginEntry { recipeHelper.registerWorkingStations(STONE_CUTTING, new ItemStack(Items.STONECUTTER)); recipeHelper.registerWorkingStations(COMPOSTING, new ItemStack(Items.COMPOSTER)); recipeHelper.registerSpeedCraftButtonArea(COMPOSTING, bounds -> null); + recipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, bounds -> new Rectangle((int) bounds.getMaxX() - 16, bounds.y + 6, 10, 10)); recipeHelper.registerRecipeVisibilityHandler(new DisplayVisibilityHandler() { @Override public DisplayVisibility handleDisplay(RecipeCategory category, RecipeDisplay display) { @@ -280,101 +280,6 @@ public class DefaultPlugin implements REIPluginEntry { return -1f; } }); - recipeHelper.registerSpeedCraftButtonArea(DefaultPlugin.CAMPFIRE, bounds -> new Rectangle((int) bounds.getMaxX() - 16, bounds.y + 6, 10, 10)); - recipeHelper.registerSpeedCraftFunctional(DefaultPlugin.CRAFTING, new SpeedCraftFunctional() { - @Override - public Class[] getFunctioningFor() { - return new Class[]{InventoryScreen.class, CraftingTableScreen.class}; - } - - @Override - public boolean performAutoCraft(Screen screen, DefaultCraftingDisplay recipe) { - if (!recipe.getRecipe().isPresent()) - return false; - if (screen.getClass().isAssignableFrom(CraftingTableScreen.class)) - ((RecipeBookGuiHooks) (((CraftingTableScreen) screen).getRecipeBookGui())).rei_getGhostSlots().reset(); - else if (screen.getClass().isAssignableFrom(InventoryScreen.class)) - ((RecipeBookGuiHooks) (((InventoryScreen) screen).getRecipeBookGui())).rei_getGhostSlots().reset(); - else - return false; - MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, (Recipe) recipe.getRecipe().get(), Screen.hasShiftDown()); - return true; - } - - @Override - public boolean acceptRecipe(Screen screen, DefaultCraftingDisplay recipe) { - return screen instanceof CraftingTableScreen || (screen instanceof InventoryScreen && recipe.getHeight() < 3 && recipe.getWidth() < 3); - } - }); - recipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMELTING, new SpeedCraftFunctional() { - @Override - public Class[] getFunctioningFor() { - return new Class[]{FurnaceScreen.class}; - } - - @Override - public boolean performAutoCraft(Screen screen, DefaultSmeltingDisplay recipe) { - if (!recipe.getRecipe().isPresent()) - return false; - if (screen instanceof FurnaceScreen) - ((RecipeBookGuiHooks) (((FurnaceScreen) screen).getRecipeBookGui())).rei_getGhostSlots().reset(); - else - return false; - MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, (Recipe) recipe.getRecipe().get(), Screen.hasShiftDown()); - return true; - } - - @Override - public boolean acceptRecipe(Screen screen, DefaultSmeltingDisplay recipe) { - return screen instanceof FurnaceScreen; - } - }); - recipeHelper.registerSpeedCraftFunctional(DefaultPlugin.SMOKING, new SpeedCraftFunctional() { - @Override - public Class[] getFunctioningFor() { - return new Class[]{SmokerScreen.class}; - } - - @Override - public boolean performAutoCraft(Screen screen, DefaultSmokingDisplay recipe) { - if (!recipe.getRecipe().isPresent()) - return false; - if (screen instanceof SmokerScreen) - ((RecipeBookGuiHooks) (((SmokerScreen) screen).getRecipeBookGui())).rei_getGhostSlots().reset(); - else - return false; - MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, (Recipe) recipe.getRecipe().get(), Screen.hasShiftDown()); - return true; - } - - @Override - public boolean acceptRecipe(Screen screen, DefaultSmokingDisplay recipe) { - return screen instanceof SmokerScreen; - } - }); - recipeHelper.registerSpeedCraftFunctional(DefaultPlugin.BLASTING, new SpeedCraftFunctional() { - @Override - public Class[] getFunctioningFor() { - return new Class[]{BlastFurnaceScreen.class}; - } - - @Override - public boolean acceptRecipe(Screen screen, DefaultBlastingDisplay recipe) { - return screen instanceof BlastFurnaceScreen; - } - - @Override - public boolean performAutoCraft(Screen screen, DefaultBlastingDisplay recipe) { - if (!recipe.getRecipe().isPresent()) - return false; - if (screen instanceof BlastFurnaceScreen) - ((RecipeBookGuiHooks) (((BlastFurnaceScreen) screen).getRecipeBookGui())).rei_getGhostSlots().reset(); - else - return false; - MinecraftClient.getInstance().interactionManager.clickRecipe(MinecraftClient.getInstance().player.container.syncId, (Recipe) recipe.getRecipe().get(), Screen.hasShiftDown()); - return true; - } - }); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java index 29aae3126..7e9a3e075 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultShapedDisplay.java @@ -8,6 +8,7 @@ package me.shedaniel.rei.plugin; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.ShapedRecipe; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.Collections; @@ -28,8 +29,8 @@ public class DefaultShapedDisplay implements DefaultCraftingDisplay getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(ShapedRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java index b3c4fe323..678fcd675 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultShapelessDisplay.java @@ -7,6 +7,7 @@ package me.shedaniel.rei.plugin; import net.minecraft.item.ItemStack; import net.minecraft.recipe.ShapelessRecipe; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.Collections; @@ -27,8 +28,8 @@ public class DefaultShapelessDisplay implements DefaultCraftingDisplay { } @Override - public Optional getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(ShapelessRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java index e3d50c397..a291b1037 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java @@ -9,6 +9,7 @@ import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.AbstractCookingRecipe; import net.minecraft.recipe.SmeltingRecipe; import net.minecraft.util.Identifier; @@ -32,8 +33,8 @@ public class DefaultSmeltingDisplay implements RecipeDisplay { } @Override - public Optional getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java index a4ea4739c..d85d168f8 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java @@ -9,6 +9,7 @@ import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.AbstractCookingRecipe; import net.minecraft.recipe.SmokingRecipe; import net.minecraft.util.Identifier; @@ -32,8 +33,8 @@ public class DefaultSmokingDisplay implements RecipeDisplay { } @Override - public Optional getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(AbstractCookingRecipe::getId); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java index 80776a44c..f7d0802f4 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingDisplay.java @@ -7,6 +7,7 @@ package me.shedaniel.rei.plugin; import me.shedaniel.rei.api.RecipeDisplay; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.CuttingRecipe; import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.StonecuttingRecipe; import net.minecraft.util.DefaultedList; @@ -35,8 +36,8 @@ public class DefaultStoneCuttingDisplay implements RecipeDisplay getRecipe() { - return Optional.ofNullable(display); + public Optional getRecipeLocation() { + return Optional.ofNullable(display).map(CuttingRecipe::getId); } @Override diff --git a/src/main/resources/assets/roughlyenoughitems/lang/bg_bg.json b/src/main/resources/assets/roughlyenoughitems/lang/bg_bg.json index a247a8201..24a4daf4b 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/bg_bg.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/bg_bg.json @@ -32,8 +32,8 @@ "ordering.rei.registry": "Регистратурен ред", "ordering.rei.name": "Име", "ordering.rei.item_groups": "Групи предмети", - "text.speed_craft.failed_move_items": "§cНеуспешно местене на предмети!", - "text.speed_craft.move_items": "Премести предмети", + "text.auto_craft.failed_move_items": "§cНеуспешно местене на предмети!", + "text.auto_craft.move_items": "Премести предмети", "text.rei.config.enable_craftable_only": "Включи филтър за показване само на изработваеми предмети: ", "text.rei.showing_craftable": "Показват се само изработваеми предмети", "text.rei.showing_all": "Показват се всички предмети", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/de_de.json b/src/main/resources/assets/roughlyenoughitems/lang/de_de.json index a0be36742..8543c0b74 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/de_de.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/de_de.json @@ -23,8 +23,8 @@ "ordering.rei.descending": "Absteigend", "ordering.rei.registry": "Registrierung", "ordering.rei.item_groups": "Itemgruppen", - "text.speed_craft.failed_move_items": "§cItems können nicht bewegt werden!", - "text.speed_craft.move_items": "Items bewegen", + "text.auto_craft.failed_move_items": "§cItems können nicht bewegt werden!", + "text.auto_craft.move_items": "Items bewegen", "text.rei.config.enable_craftable_only": "Aktiviere nur Herstellen: ", "text.rei.showing_craftable": "Zeige herstellbar", "text.rei.showing_all": "Zeige alle", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json b/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json index c2eba481d..0f9723bc5 100755 --- a/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/en_ud.json @@ -29,8 +29,8 @@ "ordering.rei.registry": "ʎɹʇsᴉƃǝɹ", "ordering.rei.name": "ǝɯɐN", "ordering.rei.item_groups": "sdnoɹפ ɯǝʇI", - "text.speed_craft.failed_move_items": "§c¡sɯǝʇᴉ ǝʌoɯ ʇ,uɐƆ", - "text.speed_craft.move_items": "sɯǝʇI ǝʌoW", + "text.auto_craft.failed_move_items": "§c¡sɯǝʇᴉ ǝʌoɯ ʇ,uɐƆ", + "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", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json index 8bad0875e..29be4241e 100755 --- a/src/main/resources/assets/roughlyenoughitems/lang/en_us.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/en_us.json @@ -44,8 +44,8 @@ "ordering.rei.registry": "Registry", "ordering.rei.name": "Name", "ordering.rei.item_groups": "Item Groups", - "text.speed_craft.failed_move_items": "§cCan't move items!", - "text.speed_craft.move_items": "Move Items", + "text.auto_craft.failed_move_items": "§cCan't move items!", + "text.auto_craft.move_items": "Move Items", "text.rei.config.enable_craftable_only": "Enable Craftable Filter: ", "text.rei.showing_craftable": "Showing Craftable", "text.rei.showing_all": "Showing All", @@ -116,6 +116,5 @@ "tooltip.rei.config.light_gray_recipe_border": "Declares the appearance of the recipe border:\nYes: Light Gray\nNo: Hard Black\n \nDefaulted: No", "tooltip.rei.config.april_fools.2019": "Forcefully enables the 2019 april fools joke:\nValues: Yes / No\n \nDefaulted: No", "tooltip.rei.config.register_in_other_thread": "Requires datapacks to be reloaded.\nCan be done by rejoin the world / server", - "_comment": "Don't change / translate the credit down below if you are doing it :)", - "text.rei.credit.text": "§lRoughly Enough Items\n§7Originally a fork for Almost Enough Items.\n\n§lDevelopers\n - Originally by ZenDarva\n - Created by Danielshe\n - Plugin Support by TehNut\n\n§lLanguage Translation\n English - Danielshe\n Simplified Chinese - XuyuEre & Danielshe\n Traditional Chinese - hugoalh, gxy17886 & Danielshe\n French - Yanis48\n German - MelanX\n Estonian - Madis0\n Portuguese - thiagokenis\n LOLCAT - Danielshe\n Upside Down - Danielshe\n Brazilian Portuguese - thiagokenis\n Bulgarian - geniiii\n\n§lLicense\n§7Roughly Enough Items is using MIT." + "text.rei.credit.text": "§lRoughly Enough Items (v%s)\n§7Originally a fork for Almost Enough Items.\n\n§lDevelopers\n Originally by ZenDarva\n Continued by Danielshe\n Plugin Support by TehNut\n\n§lLanguage Translation\n%s\n\n§lLicense\n§7Roughly Enough Items is licensed with MIT." } diff --git a/src/main/resources/assets/roughlyenoughitems/lang/et_ee.json b/src/main/resources/assets/roughlyenoughitems/lang/et_ee.json index 2598f4192..af549c4ff 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/et_ee.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/et_ee.json @@ -41,8 +41,8 @@ "ordering.rei.registry": "Register", "ordering.rei.name": "Nimi", "ordering.rei.item_groups": "Esemegrupid", - "text.speed_craft.failed_move_items": "§cEsemeid ei saa liigutada!", - "text.speed_craft.move_items": "Liiguta esemeid", + "text.auto_craft.failed_move_items": "§cEsemeid ei saa liigutada!", + "text.auto_craft.move_items": "Liiguta esemeid", "text.rei.config.enable_craftable_only": "Luba meisterdatavate filter: ", "text.rei.showing_craftable": "Kuvab meisterdatavaid", "text.rei.showing_all": "Kuvab kõiki", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json b/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json index 30e6e6a3b..157eacab8 100755 --- a/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/fr_fr.json @@ -29,8 +29,8 @@ "ordering.rei.registry": "Registre", "ordering.rei.name": "Nom", "ordering.rei.item_groups": "Groupes d'objets", - "text.speed_craft.failed_move_items": "§cImpossible de déplacer les objets!", - "text.speed_craft.move_items": "Déplacer les objets", + "text.auto_craft.failed_move_items": "§cImpossible de déplacer les objets!", + "text.auto_craft.move_items": "Déplacer les objets", "text.rei.config.enable_craftable_only": "Activer les recettes réalisables uniquement : ", "text.rei.showing_craftable": "Recettes réalisables", "text.rei.showing_all": "Toutes les recettes", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json b/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json index 29f9ba8f5..2328c76f1 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/lol_us.json @@ -29,8 +29,8 @@ "ordering.rei.registry": "Registry", "ordering.rei.name": "Nam", "ordering.rei.item_groups": "Itmz groupz", - "text.speed_craft.failed_move_items": "§cKan'z m0v itemz!", - "text.speed_craft.move_items": "M0v Itemz", + "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", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json b/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json index 244063f5b..7ee588fa3 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/pt_br.json @@ -31,8 +31,8 @@ "ordering.rei.registry": "Registro", "ordering.rei.name": "Nome", "ordering.rei.item_groups": "Grupo de itens", - "text.speed_craft.failed_move_items": "§cNão pode mover os itens!", - "text.speed_craft.move_items": "Mover itens", + "text.auto_craft.failed_move_items": "§cNão pode mover os itens!", + "text.auto_craft.move_items": "Mover itens", "text.rei.config.enable_craftable_only": "Habilitar filtro de criação: ", "text.rei.showing_craftable": "Mostrando itens Criáveis", "text.rei.showing_all": "Mostrando tudo", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json b/src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json index 1fca0e9b5..275d32458 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/zh_cn.json @@ -41,8 +41,8 @@ "ordering.rei.registry": "注册", "ordering.rei.name": "名字", "ordering.rei.item_groups": "物品组", - "text.speed_craft.failed_move_items": "§c不能移动物品!", - "text.speed_craft.move_items": "移动物品", + "text.auto_craft.failed_move_items": "§c不能移动物品!", + "text.auto_craft.move_items": "移动物品", "text.rei.config.enable_craftable_only": "过滤不可合成的物品: ", "text.rei.showing_craftable": "显示可合成的物品", "text.rei.showing_all": "显示所有物品", diff --git a/src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json b/src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json index 3a1e05c06..e0c6090e7 100644 --- a/src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json +++ b/src/main/resources/assets/roughlyenoughitems/lang/zh_tw.json @@ -41,8 +41,8 @@ "ordering.rei.registry": "註冊", "ordering.rei.name": "名字", "ordering.rei.item_groups": "物品組", - "text.speed_craft.failed_move_items": "§c不能移動物品!", - "text.speed_craft.move_items": "移動物品", + "text.auto_craft.failed_move_items": "§c不能移動物品!", + "text.auto_craft.move_items": "移動物品", "text.rei.config.enable_craftable_only": "過濾不可合成的物品: ", "text.rei.showing_craftable": "顯示可合成的物品", "text.rei.showing_all": "顯示所有物品", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 259e53c39..922889e93 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -42,6 +42,18 @@ "listeners.roughlyenoughitems.mixins.json" ], "custom": { - "modmenu:clientsideOnly": true + "rei:translators": { + "English": "Danielshe", + "Simplified Chinese": ["XuyuEre", "Danielshe"], + "Traditional Chinese": ["hugoalh", "gxy17886", "Danielshe"], + "French": "Yanis48", + "German": "MelanX", + "Estonian": "Madis0", + "Portuguese": "thiagokenis", + "LOLCAT": "Danielshe", + "Upside Down English": "Danielshe", + "Brazilian Portuguese": "thiagokenis", + "Bulgarian": "geniiii" + } } } -- cgit