diff --git a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java index d565dc7f3..49307f221 100644 --- a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java +++ b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java @@ -16,8 +16,8 @@ public interface IRecipeTransferError { enum Type { /** - * Errors where the Transfer handler is broken, or does not work, or the server is not present. - * These errors will hide the recipe transfer button, but do not display anything to the user. + * Errors where the Transfer handler is broken or does not work. + * These errors will hide the recipe transfer button, and do not display anything to the user. */ INTERNAL, diff --git a/src/main/java/mezz/jei/config/Constants.java b/src/main/java/mezz/jei/config/Constants.java index f3fcfecfd..29d09965f 100644 --- a/src/main/java/mezz/jei/config/Constants.java +++ b/src/main/java/mezz/jei/config/Constants.java @@ -2,6 +2,8 @@ import java.util.Locale; +import mezz.jei.util.Translator; + public class Constants { public static final String minecraftModName = "Minecraft"; @@ -16,6 +18,8 @@ public class Constants { public static final int MAX_TOOLTIP_WIDTH = 125; + public static final String RECIPE_TRANSFER_TOOLTIP = Translator.translateToLocal("jei.tooltip.transfer"); + private Constants() { } diff --git a/src/main/java/mezz/jei/gui/RecipeTransferButton.java b/src/main/java/mezz/jei/gui/RecipeTransferButton.java index a87cbf2b4..7ff9bd611 100644 --- a/src/main/java/mezz/jei/gui/RecipeTransferButton.java +++ b/src/main/java/mezz/jei/gui/RecipeTransferButton.java @@ -3,20 +3,16 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; +import mezz.jei.api.recipe.transfer.IRecipeTransferError; +import mezz.jei.config.Constants; +import mezz.jei.transfer.RecipeTransferErrorInternal; +import mezz.jei.transfer.RecipeTransferUtil; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; - import net.minecraftforge.fml.client.config.GuiButtonExt; -import mezz.jei.api.recipe.transfer.IRecipeTransferError; -import mezz.jei.transfer.RecipeTransferErrorInternal; -import mezz.jei.transfer.RecipeTransferUtil; -import mezz.jei.util.Translator; - public class RecipeTransferButton extends GuiButtonExt { - private static final String transferTooltip = Translator.translateToLocal("jei.tooltip.transfer"); private RecipeLayout recipeLayout; private IRecipeTransferError recipeTransferError; @@ -30,7 +26,7 @@ public void init(@Nullable Container container, @Nonnull RecipeLayout recipeLayo if (container != null) { this.recipeTransferError = RecipeTransferUtil.getTransferRecipeError(container, recipeLayout, player); } else { - this.recipeTransferError = RecipeTransferErrorInternal.instance; + this.recipeTransferError = RecipeTransferErrorInternal.INSTANCE; } if (this.recipeTransferError == null) { @@ -50,7 +46,7 @@ public void drawButton(Minecraft mc, int mouseX, int mouseY) { if (recipeTransferError != null) { recipeTransferError.showError(mc, mouseX, mouseY, recipeLayout, recipeLayout.getPosX(), recipeLayout.getPosY()); } else { - TooltipRenderer.drawHoveringText(mc, transferTooltip, mouseX, mouseY); + TooltipRenderer.drawHoveringText(mc, Constants.RECIPE_TRANSFER_TOOLTIP, mouseX, mouseY); } } } diff --git a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java index df3ffc51c..527b95481 100644 --- a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java +++ b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java @@ -55,7 +55,8 @@ public IRecipeTransferError transferRecipe(@Nonnull Container container, @Nonnul StackHelper stackHelper = Internal.getStackHelper(); if (!SessionData.isJeiOnServer()) { - return handlerHelper.createInternalError(); + String tooltipMessage = Translator.translateToLocal("jei.tooltip.error.recipe.transfer.no.server"); + return handlerHelper.createUserErrorWithTooltip(tooltipMessage); } Map inventorySlots = new HashMap<>(); diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java b/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java index 73305ad9f..49641dc16 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java @@ -9,7 +9,7 @@ import mezz.jei.gui.RecipeLayout; public class RecipeTransferErrorInternal implements IRecipeTransferError { - public static final RecipeTransferErrorInternal instance = new RecipeTransferErrorInternal(); + public static final RecipeTransferErrorInternal INSTANCE = new RecipeTransferErrorInternal(); private RecipeTransferErrorInternal() { diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java b/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java index 7206962fb..24decb9c8 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java @@ -1,20 +1,23 @@ package mezz.jei.transfer; import javax.annotation.Nonnull; +import java.util.ArrayList; +import java.util.List; import mezz.jei.api.gui.IRecipeLayout; -import net.minecraft.client.Minecraft; - import mezz.jei.api.recipe.transfer.IRecipeTransferError; -import mezz.jei.gui.RecipeLayout; +import mezz.jei.config.Constants; import mezz.jei.gui.TooltipRenderer; +import net.minecraft.client.Minecraft; +import net.minecraft.util.text.TextFormatting; public class RecipeTransferErrorTooltip implements IRecipeTransferError { @Nonnull - private final String message; + private final List message = new ArrayList<>(); public RecipeTransferErrorTooltip(@Nonnull String message) { - this.message = message; + this.message.add(Constants.RECIPE_TRANSFER_TOOLTIP); + this.message.add(TextFormatting.RED + message); } @Nonnull diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferHandlerHelper.java b/src/main/java/mezz/jei/transfer/RecipeTransferHandlerHelper.java index 5775d17f5..9d314b4b6 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferHandlerHelper.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferHandlerHelper.java @@ -2,22 +2,24 @@ import javax.annotation.Nullable; import java.util.Collection; +import java.util.Collections; import mezz.jei.api.recipe.transfer.IRecipeTransferError; import mezz.jei.api.recipe.transfer.IRecipeTransferHandlerHelper; import mezz.jei.util.Log; +import mezz.jei.util.Translator; public class RecipeTransferHandlerHelper implements IRecipeTransferHandlerHelper { @Override public IRecipeTransferError createInternalError() { - return RecipeTransferErrorInternal.instance; + return RecipeTransferErrorInternal.INSTANCE; } @Override public IRecipeTransferError createUserErrorWithTooltip(@Nullable String tooltipMessage) { if (tooltipMessage == null) { Log.error("Null tooltipMessage", new NullPointerException()); - return RecipeTransferErrorInternal.instance; + tooltipMessage = Translator.translateToLocal("jei.tooltip.error.recipe.transfer.unknown"); } return new RecipeTransferErrorTooltip(tooltipMessage); } @@ -26,15 +28,13 @@ public IRecipeTransferError createUserErrorWithTooltip(@Nullable String tooltipM public IRecipeTransferError createUserErrorForSlots(@Nullable String tooltipMessage, @Nullable Collection missingItemSlots) { if (tooltipMessage == null) { Log.error("Null tooltipMessage", new NullPointerException()); - return RecipeTransferErrorInternal.instance; + tooltipMessage = Translator.translateToLocal("jei.tooltip.error.recipe.transfer.unknown"); } if (missingItemSlots == null) { Log.error("Null missingItemSlots", new NullPointerException()); - return RecipeTransferErrorInternal.instance; - } - if (missingItemSlots.isEmpty()) { + missingItemSlots = Collections.emptyList(); + } else if (missingItemSlots.isEmpty()) { Log.error("Empty missingItemSlots", new IllegalArgumentException()); - return RecipeTransferErrorInternal.instance; } return new RecipeTransferErrorSlots(tooltipMessage, missingItemSlots); diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java b/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java index 5449f37ea..398127452 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java @@ -29,7 +29,7 @@ private static IRecipeTransferError transferRecipe(@Nonnull Container container, if (doTransfer) { Log.error("No Recipe Transfer handler for container {}", container.getClass()); } - return RecipeTransferErrorInternal.instance; + return RecipeTransferErrorInternal.INSTANCE; } return transferHandler.transferRecipe(container, recipeLayout, player, maxTransfer, doTransfer); diff --git a/src/main/resources/assets/jei/lang/en_US.lang b/src/main/resources/assets/jei/lang/en_US.lang index dc8fd8972..5e71c6f36 100644 --- a/src/main/resources/assets/jei/lang/en_US.lang +++ b/src/main/resources/assets/jei/lang/en_US.lang @@ -5,7 +5,7 @@ jei.tooltip.show.all.recipes=Show All Recipes jei.tooltip.delete.item=Click to Delete jei.tooltip.liquid.amount.with.capacity=%,d / %,d mB jei.tooltip.liquid.amount=%,d mB -jei.tooltip.transfer=Transfer Items +jei.tooltip.transfer=Move Items jei.tooltip.recipe.ore.dict=Accepts any: %s jei.tooltip.item.colors=Colors: %s jei.tooltip.shapeless.recipe=Shapeless Recipe @@ -14,6 +14,8 @@ jei.tooltip.cheat.mode=Cheat Mode # Error Tooltips jei.tooltip.error.recipe.transfer.missing=Missing Items jei.tooltip.error.recipe.transfer.inventory.full=Inventory is too full +jei.tooltip.error.recipe.transfer.unknown=Unknown Error, see logs +jei.tooltip.error.recipe.transfer.no.server=The server must have JEI installed # Error Messages jei.chat.error.command.too.long=JEI must be on the server to handle this Chat Command, it is too long for Minecraft to send.