From 9bb41476be968ea211592094e58e17f447058c2f Mon Sep 17 00:00:00 2001 From: mezz Date: Mon, 19 Sep 2016 23:57:54 -0700 Subject: [PATCH] Add package annotations for default Nonnull, fix up inspection warnings --- src/main/java/mezz/jei/GuiEventHandler.java | 19 ++- src/main/java/mezz/jei/Internal.java | 18 ++- src/main/java/mezz/jei/ItemBlacklist.java | 2 - src/main/java/mezz/jei/ItemFilter.java | 25 ++- src/main/java/mezz/jei/ItemRegistry.java | 39 ++--- .../java/mezz/jei/ItemRegistryFactory.java | 9 +- src/main/java/mezz/jei/JeiHelpers.java | 18 +-- src/main/java/mezz/jei/JeiRuntime.java | 5 - src/main/java/mezz/jei/JustEnoughItems.java | 11 +- src/main/java/mezz/jei/ProxyCommon.java | 14 +- src/main/java/mezz/jei/ProxyCommonClient.java | 15 +- src/main/java/mezz/jei/RecipeRegistry.java | 39 ++--- src/main/java/mezz/jei/SubtypeRegistry.java | 5 +- .../java/mezz/jei/api/BlankModPlugin.java | 6 +- src/main/java/mezz/jei/api/IGuiHelper.java | 18 +-- .../java/mezz/jei/api/IItemBlacklist.java | 8 +- .../java/mezz/jei/api/IItemListOverlay.java | 11 +- src/main/java/mezz/jei/api/IItemRegistry.java | 16 +- src/main/java/mezz/jei/api/IJeiHelpers.java | 7 - src/main/java/mezz/jei/api/IJeiRuntime.java | 5 - src/main/java/mezz/jei/api/IModPlugin.java | 6 +- src/main/java/mezz/jei/api/IModRegistry.java | 13 +- .../java/mezz/jei/api/INbtIgnoreList.java | 5 +- src/main/java/mezz/jei/api/INbtRegistry.java | 17 +- .../java/mezz/jei/api/IRecipeRegistry.java | 39 ++--- src/main/java/mezz/jei/api/IRecipesGui.java | 11 +- .../java/mezz/jei/api/ISubtypeRegistry.java | 9 +- .../mezz/jei/api/gui/IAdvancedGuiHandler.java | 2 - .../mezz/jei/api/gui/ICraftingGridHelper.java | 7 +- src/main/java/mezz/jei/api/gui/IDrawable.java | 6 +- .../mezz/jei/api/gui/IDrawableStatic.java | 4 +- .../mezz/jei/api/gui/IGuiFluidStackGroup.java | 7 +- .../java/mezz/jei/api/gui/IGuiIngredient.java | 6 +- .../mezz/jei/api/gui/IGuiIngredientGroup.java | 7 +- .../mezz/jei/api/gui/IGuiItemStackGroup.java | 11 +- .../java/mezz/jei/api/gui/IRecipeLayout.java | 4 - .../java/mezz/jei/api/gui/package-info.java | 7 + src/main/java/mezz/jei/api/package-info.java | 7 +- .../jei/api/recipe/BlankRecipeCategory.java | 6 +- .../jei/api/recipe/BlankRecipeWrapper.java | 17 +- src/main/java/mezz/jei/api/recipe/IFocus.java | 2 - .../mezz/jei/api/recipe/IRecipeCategory.java | 11 +- .../mezz/jei/api/recipe/IRecipeHandler.java | 12 +- .../mezz/jei/api/recipe/IRecipeWrapper.java | 13 +- .../mezz/jei/api/recipe/IStackHelper.java | 8 +- .../mezz/jei/api/recipe/package-info.java | 7 + .../recipe/transfer/IRecipeTransferError.java | 5 +- .../transfer/IRecipeTransferHandler.java | 6 +- .../IRecipeTransferHandlerHelper.java | 5 +- .../transfer/IRecipeTransferRegistry.java | 8 +- .../jei/api/recipe/transfer/package-info.java | 7 + .../wrapper/ICraftingRecipeWrapper.java | 7 +- .../jei/api/recipe/wrapper/package-info.java | 7 + src/main/java/mezz/jei/config/Config.java | 50 +++--- .../java/mezz/jei/config/JEIModConfigGui.java | 8 +- .../mezz/jei/config/JEIModGuiFactory.java | 3 - .../java/mezz/jei/config/KeyBindings.java | 10 -- .../java/mezz/jei/config/package-info.java | 7 + .../java/mezz/jei/debug/package-info.java | 7 + .../java/mezz/jei/gui/CraftingGridHelper.java | 12 +- .../java/mezz/jei/gui/DrawableAnimated.java | 9 +- src/main/java/mezz/jei/gui/DrawableBlank.java | 11 +- .../java/mezz/jei/gui/DrawableResource.java | 17 +- src/main/java/mezz/jei/gui/Focus.java | 9 +- src/main/java/mezz/jei/gui/GuiHelper.java | 11 +- src/main/java/mezz/jei/gui/GuiProperties.java | 13 +- .../java/mezz/jei/gui/IRecipeGuiLogic.java | 6 +- .../java/mezz/jei/gui/ItemListOverlay.java | 42 +++-- src/main/java/mezz/jei/gui/MasterFocus.java | 58 +++---- .../gui/RecipeCategoryCraftingItemsArea.java | 10 +- .../mezz/jei/gui/RecipeClickableArea.java | 5 +- .../java/mezz/jei/gui/RecipeGuiLogic.java | 39 +++-- src/main/java/mezz/jei/gui/RecipeLayout.java | 19 +-- .../mezz/jei/gui/RecipeTransferButton.java | 3 +- src/main/java/mezz/jei/gui/RecipesGui.java | 43 ++++-- .../java/mezz/jei/gui/TooltipRenderer.java | 17 +- .../jei/gui/ingredients/FluidStackHelper.java | 8 +- .../gui/ingredients/FluidStackRenderer.java | 12 +- .../gui/ingredients/GuiFluidStackGroup.java | 3 +- .../jei/gui/ingredients/GuiIngredient.java | 24 ++- .../gui/ingredients/GuiIngredientGroup.java | 15 +- .../jei/gui/ingredients/GuiItemStackFast.java | 38 ++--- .../gui/ingredients/GuiItemStackFastList.java | 3 +- .../gui/ingredients/GuiItemStackGroup.java | 7 +- .../gui/ingredients/IIngredientHelper.java | 8 +- .../gui/ingredients/IIngredientRenderer.java | 10 +- .../jei/gui/ingredients/ItemStackHelper.java | 8 +- .../gui/ingredients/ItemStackRenderer.java | 18 +-- .../jei/gui/ingredients/package-info.java | 7 + src/main/java/mezz/jei/gui/package-info.java | 7 + .../java/mezz/jei/input/InputHandler.java | 20 +-- .../java/mezz/jei/input/package-info.java | 7 + .../java/mezz/jei/network/PacketHandler.java | 17 +- .../java/mezz/jei/network/package-info.java | 7 + .../packets/PacketDeletePlayerItem.java | 10 +- .../network/packets/PacketGiveItemStack.java | 5 +- .../mezz/jei/network/packets/PacketJEI.java | 17 +- .../network/packets/PacketRecipeTransfer.java | 5 +- .../jei/network/packets/package-info.java | 7 + src/main/java/mezz/jei/package-info.java | 7 + .../jei/plugins/jei/JEIInternalPlugin.java | 18 +-- .../jei/plugins/jei/debug/DebugRecipe.java | 16 +- .../jei/debug/DebugRecipeCategory.java | 27 ++-- .../plugins/jei/debug/DebugRecipeHandler.java | 12 +- .../jei/plugins/jei/debug/package-info.java | 7 + .../description/ItemDescriptionRecipe.java | 22 +-- .../ItemDescriptionRecipeCategory.java | 10 +- .../ItemDescriptionRecipeHandler.java | 11 +- .../plugins/jei/description/package-info.java | 7 + .../mezz/jei/plugins/jei/package-info.java | 7 + .../jei/plugins/vanilla/VanillaPlugin.java | 7 +- .../brewing/BrewingRecipeCategory.java | 22 +-- .../vanilla/brewing/BrewingRecipeHandler.java | 13 +- .../vanilla/brewing/BrewingRecipeMaker.java | 2 - .../vanilla/brewing/BrewingRecipeWrapper.java | 7 +- .../brewing/PotionSubtypeInterpreter.java | 3 +- .../plugins/vanilla/brewing/package-info.java | 7 + .../AbstractShapelessRecipeWrapper.java | 13 +- .../crafting/CraftingRecipeCategory.java | 12 +- .../crafting/ShapedOreRecipeHandler.java | 11 +- .../crafting/ShapedOreRecipeWrapper.java | 12 +- .../crafting/ShapedRecipesHandler.java | 12 +- .../crafting/ShapedRecipesWrapper.java | 11 +- .../crafting/ShapelessOreRecipeHandler.java | 14 +- .../crafting/ShapelessOreRecipeWrapper.java | 12 +- .../crafting/ShapelessRecipesHandler.java | 15 +- .../crafting/ShapelessRecipesWrapper.java | 12 +- .../crafting/TippedArrowRecipeHandler.java | 12 +- .../crafting/TippedArrowRecipeWrapper.java | 15 +- .../vanilla/crafting/package-info.java | 7 + .../plugins/vanilla/furnace/FuelRecipe.java | 13 +- .../vanilla/furnace/FuelRecipeHandler.java | 12 +- .../vanilla/furnace/FuelRecipeMaker.java | 4 +- .../vanilla/furnace/FurnaceFuelCategory.java | 10 +- .../furnace/FurnaceRecipeCategory.java | 4 - .../furnace/FurnaceSmeltingCategory.java | 12 +- .../vanilla/furnace/SmeltingRecipe.java | 11 +- .../furnace/SmeltingRecipeHandler.java | 12 +- .../vanilla/furnace/SmeltingRecipeMaker.java | 2 - .../plugins/vanilla/furnace/package-info.java | 7 + .../jei/plugins/vanilla/package-info.java | 7 + .../transfer/BasicRecipeTransferHandler.java | 22 ++- .../BasicRecipeTransferHandlerServer.java | 22 +-- .../transfer/RecipeTransferErrorInternal.java | 9 +- .../transfer/RecipeTransferErrorSlots.java | 5 +- .../transfer/RecipeTransferErrorTooltip.java | 7 +- .../mezz/jei/transfer/RecipeTransferUtil.java | 24 ++- .../java/mezz/jei/transfer/package-info.java | 7 + .../mezz/jei/util/AnnotatedInstanceUtil.java | 5 +- src/main/java/mezz/jei/util/Commands.java | 9 +- src/main/java/mezz/jei/util/CycleTimer.java | 2 + src/main/java/mezz/jei/util/ErrorUtil.java | 7 +- .../java/mezz/jei/util/ItemStackElement.java | 41 ++--- src/main/java/mezz/jei/util/Java6Helper.java | 4 +- src/main/java/mezz/jei/util/ModList.java | 7 +- src/main/java/mezz/jei/util/ModRegistry.java | 74 ++++++--- .../jei/util/RecipeCategoryComparator.java | 7 +- src/main/java/mezz/jei/util/RecipeMap.java | 23 +-- src/main/java/mezz/jei/util/StackHelper.java | 145 ++++++++---------- .../jei/util/UniqueItemStackListBuilder.java | 4 +- .../java/mezz/jei/util/color/ColorGetter.java | 18 +-- .../java/mezz/jei/util/color/ColorNamer.java | 14 +- .../java/mezz/jei/util/color/ColorThief.java | 19 +-- .../java/mezz/jei/util/color/ColorUtil.java | 7 +- src/main/java/mezz/jei/util/color/MMCQ.java | 19 +-- .../mezz/jei/util/color/package-info.java | 7 + src/main/java/mezz/jei/util/package-info.java | 7 + 167 files changed, 961 insertions(+), 1262 deletions(-) create mode 100644 src/main/java/mezz/jei/api/gui/package-info.java create mode 100644 src/main/java/mezz/jei/api/recipe/package-info.java create mode 100644 src/main/java/mezz/jei/api/recipe/transfer/package-info.java create mode 100644 src/main/java/mezz/jei/api/recipe/wrapper/package-info.java create mode 100644 src/main/java/mezz/jei/config/package-info.java create mode 100644 src/main/java/mezz/jei/debug/package-info.java create mode 100644 src/main/java/mezz/jei/gui/ingredients/package-info.java create mode 100644 src/main/java/mezz/jei/gui/package-info.java create mode 100644 src/main/java/mezz/jei/input/package-info.java create mode 100644 src/main/java/mezz/jei/network/package-info.java create mode 100644 src/main/java/mezz/jei/network/packets/package-info.java create mode 100644 src/main/java/mezz/jei/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/jei/debug/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/jei/description/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/jei/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/vanilla/brewing/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/vanilla/crafting/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/vanilla/furnace/package-info.java create mode 100644 src/main/java/mezz/jei/plugins/vanilla/package-info.java create mode 100644 src/main/java/mezz/jei/transfer/package-info.java create mode 100644 src/main/java/mezz/jei/util/color/package-info.java create mode 100644 src/main/java/mezz/jei/util/package-info.java diff --git a/src/main/java/mezz/jei/GuiEventHandler.java b/src/main/java/mezz/jei/GuiEventHandler.java index e8f538c44..7d75967ec 100644 --- a/src/main/java/mezz/jei/GuiEventHandler.java +++ b/src/main/java/mezz/jei/GuiEventHandler.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.config.Config; @@ -18,7 +17,6 @@ import org.lwjgl.input.Mouse; public class GuiEventHandler { - @Nonnull private static final String showRecipesText = Translator.translateToLocal("jei.tooltip.show.recipes"); @Nullable private InputHandler inputHandler; @@ -26,7 +24,7 @@ public class GuiEventHandler { private GuiContainer previousGui = null; @SubscribeEvent - public void onGuiInit(@Nonnull GuiScreenEvent.InitGuiEvent.Post event) { + public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) { JeiRuntime runtime = Internal.getRuntime(); if (runtime == null) { return; @@ -38,8 +36,9 @@ public void onGuiInit(@Nonnull GuiScreenEvent.InitGuiEvent.Post event) { GuiContainer guiContainer = (GuiContainer) gui; itemListOverlay.initGui(guiContainer); - RecipesGui recipesGui = new RecipesGui(); - inputHandler = new InputHandler(recipesGui, itemListOverlay); + RecipeRegistry recipeRegistry = runtime.getRecipeRegistry(); + RecipesGui recipesGui = new RecipesGui(recipeRegistry); + inputHandler = new InputHandler(recipeRegistry, recipesGui, itemListOverlay); } else if (gui instanceof RecipesGui) { if (inputHandler != null) { inputHandler.onScreenResized(); @@ -50,7 +49,7 @@ public void onGuiInit(@Nonnull GuiScreenEvent.InitGuiEvent.Post event) { } @SubscribeEvent - public void onGuiOpen(@Nonnull GuiOpenEvent event) { + public void onGuiOpen(GuiOpenEvent event) { JeiRuntime runtime = Internal.getRuntime(); if (runtime == null) { return; @@ -74,7 +73,7 @@ public void onGuiOpen(@Nonnull GuiOpenEvent event) { } @SubscribeEvent - public void onDrawBackgroundEventPost(@Nonnull GuiScreenEvent.BackgroundDrawnEvent event) { + public void onDrawBackgroundEventPost(GuiScreenEvent.BackgroundDrawnEvent event) { JeiRuntime runtime = Internal.getRuntime(); if (runtime == null) { return; @@ -89,7 +88,7 @@ public void onDrawBackgroundEventPost(@Nonnull GuiScreenEvent.BackgroundDrawnEve } @SubscribeEvent - public void onDrawScreenEventPost(@Nonnull GuiScreenEvent.DrawScreenEvent.Post event) { + public void onDrawScreenEventPost(GuiScreenEvent.DrawScreenEvent.Post event) { JeiRuntime runtime = Internal.getRuntime(); if (runtime == null) { return; @@ -98,7 +97,7 @@ public void onDrawScreenEventPost(@Nonnull GuiScreenEvent.DrawScreenEvent.Post e GuiScreen gui = event.getGui(); if (gui instanceof GuiContainer) { GuiContainer guiContainer = (GuiContainer) gui; - RecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); + RecipeRegistry recipeRegistry = runtime.getRecipeRegistry(); if (recipeRegistry.getRecipeClickableArea(guiContainer, event.getMouseX() - guiContainer.guiLeft, event.getMouseY() - guiContainer.guiTop) != null) { TooltipRenderer.drawHoveringText(guiContainer.mc, showRecipesText, event.getMouseX(), event.getMouseY()); } @@ -111,7 +110,7 @@ public void onDrawScreenEventPost(@Nonnull GuiScreenEvent.DrawScreenEvent.Post e } @SubscribeEvent - public void onClientTick(@Nonnull TickEvent.ClientTickEvent event) { + public void onClientTick(TickEvent.ClientTickEvent event) { JeiRuntime runtime = Internal.getRuntime(); if (runtime == null) { return; diff --git a/src/main/java/mezz/jei/Internal.java b/src/main/java/mezz/jei/Internal.java index 0cb053610..af26b9247 100644 --- a/src/main/java/mezz/jei/Internal.java +++ b/src/main/java/mezz/jei/Internal.java @@ -1,47 +1,50 @@ package mezz.jei; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import mezz.jei.util.StackHelper; import mezz.jei.util.color.ColorNamer; /** For JEI internal use only, these are normally accessed from the API. */ public class Internal { - @Nonnull private static JeiHelpers helpers = new JeiHelpers(); + @Nullable private static JeiRuntime runtime; + @Nullable private static ItemRegistry itemRegistry; + @Nullable private static ColorNamer colorNamer; private Internal() { } - @Nonnull public static JeiHelpers getHelpers() { return helpers; } - public static void setHelpers(@Nonnull JeiHelpers helpers) { + public static void setHelpers(JeiHelpers helpers) { Internal.helpers = helpers; } - @Nonnull public static StackHelper getStackHelper() { return helpers.getStackHelper(); } + @Nullable public static JeiRuntime getRuntime() { return runtime; } public static void setRuntime(JeiRuntime runtime) { - if (Internal.runtime != null) { - Internal.runtime.close(); + JeiRuntime jeiRuntime = Internal.runtime; + if (jeiRuntime != null) { + jeiRuntime.close(); } Internal.runtime = runtime; } + @Nullable public static ItemRegistry getItemRegistry() { return itemRegistry; } @@ -50,6 +53,7 @@ public static void setItemRegistry(ItemRegistry itemRegistry) { Internal.itemRegistry = itemRegistry; } + @Nullable public static ColorNamer getColorNamer() { return colorNamer; } diff --git a/src/main/java/mezz/jei/ItemBlacklist.java b/src/main/java/mezz/jei/ItemBlacklist.java index c870b41d4..b52e33bdc 100644 --- a/src/main/java/mezz/jei/ItemBlacklist.java +++ b/src/main/java/mezz/jei/ItemBlacklist.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.HashSet; import java.util.List; @@ -12,7 +11,6 @@ import net.minecraft.item.ItemStack; public class ItemBlacklist implements IItemBlacklist { - @Nonnull private final Set itemBlacklist = new HashSet(); @Override diff --git a/src/main/java/mezz/jei/ItemFilter.java b/src/main/java/mezz/jei/ItemFilter.java index 025194547..469030d02 100644 --- a/src/main/java/mezz/jei/ItemFilter.java +++ b/src/main/java/mezz/jei/ItemFilter.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; @@ -30,9 +29,7 @@ public class ItemFilter { /** A cache for fast searches while typing or using backspace. Maps filterText to filteredItemMaps */ - @Nonnull private final LoadingCache> filteredItemMapsCache; - @Nonnull private final ImmutableList baseList; public ItemFilter(final IItemRegistry itemRegistry) { @@ -50,7 +47,6 @@ public void reset() { this.filteredItemMapsCache.invalidateAll(); } - @Nonnull public ImmutableList getItemList() { String[] filters = Config.getFilterText().split("\\|"); @@ -70,11 +66,9 @@ public ImmutableList getItemList() { /** * {@link #getItemStacks()} is slow, so cache the previous value in case someone requests it often. */ - @Nonnull private ImmutableList itemStacksCached = ImmutableList.of(); private String filterCached; - @Nonnull public ImmutableList getItemStacks() { if (!Config.getFilterText().equals(filterCached)) { ImmutableList.Builder filteredStacks = ImmutableList.builder(); @@ -91,7 +85,6 @@ public int size() { return getItemList().size(); } - @Nonnull private static ImmutableList createBaseList(IItemRegistry itemRegistry) { ItemStackChecker itemStackChecker = new ItemStackChecker(); @@ -101,11 +94,11 @@ private static ImmutableList createBaseList(IItemRegistry item continue; } - if (itemStackChecker.isItemStackHidden(itemStack)) { + if (itemStackChecker.isItemStackHidden(itemStack, itemRegistry)) { continue; } - ItemStackElement itemStackElement = ItemStackElement.create(itemStack); + ItemStackElement itemStackElement = ItemStackElement.create(itemStack, itemRegistry); if (itemStackElement != null) { baseList.add(itemStackElement); } @@ -115,7 +108,7 @@ private static ImmutableList createBaseList(IItemRegistry item int count = brokenItem.getCount(); if (count > 1) { Item item = brokenItem.getElement(); - String modName = Internal.getItemRegistry().getModNameForItem(item); + String modName = itemRegistry.getModNameForItem(item); Log.error("Couldn't get ItemModel for {} item {}. Suppressed {} similar errors.", modName, item, count); } } @@ -124,14 +117,14 @@ private static ImmutableList createBaseList(IItemRegistry item } private static class OneWeigher implements Weigher> { - public int weigh(@Nonnull String key, @Nonnull ImmutableList value) { + public int weigh(String key, ImmutableList value) { return 1; } } private class ItemFilterCacheLoader extends CacheLoader> { @Override - public ImmutableList load(@Nonnull final String filterText) throws Exception { + public ImmutableList load(final String filterText) throws Exception { if (filterText.length() == 0) { return baseList; } @@ -167,7 +160,7 @@ public ItemStackChecker() { missingModel = itemModelMesher.getModelManager().getMissingModel(); } - public boolean isItemStackHidden(@Nonnull ItemStack itemStack) { + public boolean isItemStackHidden(ItemStack itemStack, IItemRegistry itemRegistry) { if (isItemHiddenByBlacklist(itemStack)) { return true; } @@ -182,13 +175,13 @@ public boolean isItemStackHidden(@Nonnull ItemStack itemStack) { try { itemModel = renderItem.getItemModelWithOverrides(itemStack, null, null); } catch (RuntimeException e) { - String modName = Internal.getItemRegistry().getModNameForItem(item); + String modName = itemRegistry.getModNameForItem(item); String stackInfo = ErrorUtil.getItemStackInfo(itemStack); Log.error("Couldn't get ItemModel for {} itemStack {}", modName, stackInfo, e); brokenItems.add(item); return true; } catch (LinkageError e) { - String modName = Internal.getItemRegistry().getModNameForItem(item); + String modName = itemRegistry.getModNameForItem(item); String stackInfo = ErrorUtil.getItemStackInfo(itemStack); Log.error("Couldn't get ItemModel for {} itemStack {}", modName, stackInfo, e); brokenItems.add(item); @@ -213,7 +206,7 @@ public Multiset getBrokenItems() { return brokenItems; } - private boolean isItemHiddenByBlacklist(@Nonnull ItemStack itemStack) { + private boolean isItemHiddenByBlacklist(ItemStack itemStack) { try { if (!itemBlacklist.isItemBlacklisted(itemStack)) { return false; diff --git a/src/main/java/mezz/jei/ItemRegistry.java b/src/main/java/mezz/jei/ItemRegistry.java index 27f4d8c45..a5f4612b7 100644 --- a/src/main/java/mezz/jei/ItemRegistry.java +++ b/src/main/java/mezz/jei/ItemRegistry.java @@ -1,36 +1,28 @@ package mezz.jei; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableListMultimap; - -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Locale; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; import mezz.jei.api.IItemRegistry; import mezz.jei.util.Log; import mezz.jei.util.ModList; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; public class ItemRegistry implements IItemRegistry { - @Nonnull private final ImmutableList itemList; - @Nonnull private final ImmutableListMultimap itemsByModId; - @Nonnull private final ImmutableList potionIngredients; - @Nonnull private final ImmutableList fuels; - @Nonnull private final ModList modList; - public ItemRegistry(@Nonnull ImmutableList itemList, - @Nonnull ImmutableListMultimap itemsByModId, - @Nonnull ImmutableList potionIngredients, - @Nonnull ImmutableList fuels, - @Nonnull ModList modList) { + public ItemRegistry(ImmutableList itemList, + ImmutableListMultimap itemsByModId, + ImmutableList potionIngredients, + ImmutableList fuels, + ModList modList) { this.itemList = itemList; this.itemsByModId = itemsByModId; this.potionIngredients = potionIngredients; @@ -39,24 +31,20 @@ public ItemRegistry(@Nonnull ImmutableList itemList, } @Override - @Nonnull public ImmutableList getItemList() { return itemList; } @Override - @Nonnull public ImmutableList getFuels() { return fuels; } @Override - @Nonnull public ImmutableList getPotionIngredients() { return potionIngredients; } - @Nonnull @Override public String getModNameForItem(@Nullable Item item) { if (item == null) { @@ -66,12 +54,15 @@ public String getModNameForItem(@Nullable Item item) { return modList.getModNameForItem(item); } - @Nonnull - public String getModNameForModId(@Nonnull String modId) { + @Override + public String getModNameForModId(@Nullable String modId) { + if (modId == null) { + Log.error("Null modId", new NullPointerException()); + return ""; + } return modList.getModNameForModId(modId); } - @Nonnull @Override public ImmutableList getItemListForModId(@Nullable String modId) { if (modId == null) { diff --git a/src/main/java/mezz/jei/ItemRegistryFactory.java b/src/main/java/mezz/jei/ItemRegistryFactory.java index d74a3c3b6..073020545 100644 --- a/src/main/java/mezz/jei/ItemRegistryFactory.java +++ b/src/main/java/mezz/jei/ItemRegistryFactory.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -27,19 +26,13 @@ import net.minecraftforge.fml.common.registry.ForgeRegistries; public class ItemRegistryFactory { - @Nonnull private final Set itemNameSet = new HashSet(); - @Nonnull private final List itemList = new ArrayList(); - @Nonnull private final List fuels = new ArrayList(); - @Nonnull private final List potionIngredients = new ArrayList(); - @Nonnull private final Set itemWildcardNameSet = new HashSet(); /** The order that items were added, using wildcard. Used to keep similar items together. */ - @Nonnull private final List itemAddedOrder = new ArrayList(); public ItemRegistry createItemRegistry() { @@ -146,7 +139,7 @@ private void addBlockAndSubBlocks(@Nullable Block block) { } } - private void addItemStack(@Nonnull ItemStack stack) { + private void addItemStack(ItemStack stack) { StackHelper stackHelper = Internal.getStackHelper(); try { final String itemKey = stackHelper.getUniqueIdentifierForStack(stack, StackHelper.UidMode.FULL); diff --git a/src/main/java/mezz/jei/JeiHelpers.java b/src/main/java/mezz/jei/JeiHelpers.java index 78fdda06d..bda4aa47e 100644 --- a/src/main/java/mezz/jei/JeiHelpers.java +++ b/src/main/java/mezz/jei/JeiHelpers.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.IJeiHelpers; @@ -13,17 +12,11 @@ import net.minecraft.item.ItemStack; public class JeiHelpers implements IJeiHelpers { - @Nonnull private final GuiHelper guiHelper; - @Nonnull private final StackHelper stackHelper; - @Nonnull private final ItemBlacklist itemBlacklist; - @Nonnull private final NbtIgnoreList nbtIgnoreList; - @Nonnull private final SubtypeRegistry subtypeRegistry; - @Nonnull private final RecipeTransferHandlerHelper recipeTransferHandlerHelper; public JeiHelpers() { @@ -35,25 +28,21 @@ public JeiHelpers() { this.recipeTransferHandlerHelper = new RecipeTransferHandlerHelper(); } - @Nonnull @Override public GuiHelper getGuiHelper() { return guiHelper; } - @Nonnull @Override public StackHelper getStackHelper() { return stackHelper; } - @Nonnull @Override public ItemBlacklist getItemBlacklist() { return itemBlacklist; } - @Nonnull @Override @Deprecated public NbtIgnoreList getNbtIgnoreList() { @@ -69,24 +58,23 @@ public ISubtypeRegistry getSubtypeRegistry() { public INbtRegistry getNbtRegistry() { return new INbtRegistry() { @Override - public void useNbtForSubtypes(@Nonnull Item... items) { + public void useNbtForSubtypes(Item... items) { } @Override - public void registerNbtInterpreter(@Nonnull Item item, @Nonnull INbtInterpreter nbtInterpreter) { + public void registerNbtInterpreter(Item item, INbtInterpreter nbtInterpreter) { } @Nullable @Override - public String getSubtypeInfoFromNbt(@Nonnull ItemStack itemStack) { + public String getSubtypeInfoFromNbt(ItemStack itemStack) { return null; } }; } - @Nonnull @Override public RecipeTransferHandlerHelper recipeTransferHandlerHelper() { return recipeTransferHandlerHelper; diff --git a/src/main/java/mezz/jei/JeiRuntime.java b/src/main/java/mezz/jei/JeiRuntime.java index 0e8f42d6d..de243a8cb 100644 --- a/src/main/java/mezz/jei/JeiRuntime.java +++ b/src/main/java/mezz/jei/JeiRuntime.java @@ -5,8 +5,6 @@ import mezz.jei.gui.ItemListOverlay; import mezz.jei.gui.RecipesGui; -import javax.annotation.Nonnull; - public class JeiRuntime implements IJeiRuntime { private final RecipeRegistry recipeRegistry; @@ -28,19 +26,16 @@ public void close() { } } - @Nonnull @Override public RecipeRegistry getRecipeRegistry() { return recipeRegistry; } - @Nonnull @Override public ItemListOverlay getItemListOverlay() { return itemListOverlay; } - @Nonnull @Override public IRecipesGui getRecipesGui() { return recipesGui; diff --git a/src/main/java/mezz/jei/JustEnoughItems.java b/src/main/java/mezz/jei/JustEnoughItems.java index bb2e5d1ee..9081c7caa 100644 --- a/src/main/java/mezz/jei/JustEnoughItems.java +++ b/src/main/java/mezz/jei/JustEnoughItems.java @@ -1,5 +1,7 @@ package mezz.jei; +import java.util.Map; + import mezz.jei.config.Config; import mezz.jei.config.Constants; import mezz.jei.config.SessionData; @@ -15,9 +17,6 @@ import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; -import javax.annotation.Nonnull; -import java.util.Map; - @Mod(modid = Constants.MOD_ID, name = Constants.NAME, version = Constants.VERSION, @@ -49,7 +48,7 @@ public boolean checkModLists(Map modList, Side side) { } @Mod.EventHandler - public void preInit(@Nonnull FMLPreInitializationEvent event) { + public void preInit(FMLPreInitializationEvent event) { packetHandler = new PacketHandler(); proxy.preInit(event); @@ -63,12 +62,12 @@ public void preInit(@Nonnull FMLPreInitializationEvent event) { } @Mod.EventHandler - public void init(@Nonnull FMLInitializationEvent event) { + public void init(FMLInitializationEvent event) { proxy.init(event); } @Mod.EventHandler - public void postInit(@Nonnull FMLPostInitializationEvent event) { + public void postInit(FMLPostInitializationEvent event) { proxy.postInit(event); } } diff --git a/src/main/java/mezz/jei/ProxyCommon.java b/src/main/java/mezz/jei/ProxyCommon.java index dbcbd5f33..ceefb6c47 100644 --- a/src/main/java/mezz/jei/ProxyCommon.java +++ b/src/main/java/mezz/jei/ProxyCommon.java @@ -1,29 +1,25 @@ package mezz.jei; -import javax.annotation.Nonnull; - +import mezz.jei.network.packets.PacketJEI; +import mezz.jei.util.Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; - import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; -import mezz.jei.network.packets.PacketJEI; -import mezz.jei.util.Log; - public class ProxyCommon { - public void preInit(@Nonnull FMLPreInitializationEvent event) { + public void preInit(FMLPreInitializationEvent event) { } - public void init(@Nonnull FMLInitializationEvent event) { + public void init(FMLInitializationEvent event) { } - public void postInit(@Nonnull FMLPostInitializationEvent event) { + public void postInit(FMLPostInitializationEvent event) { } diff --git a/src/main/java/mezz/jei/ProxyCommonClient.java b/src/main/java/mezz/jei/ProxyCommonClient.java index f3426be6b..861860113 100644 --- a/src/main/java/mezz/jei/ProxyCommonClient.java +++ b/src/main/java/mezz/jei/ProxyCommonClient.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Arrays; import java.util.Iterator; @@ -57,7 +56,7 @@ private static void initVersionChecker() { } @Override - public void preInit(@Nonnull FMLPreInitializationEvent event) { + public void preInit(FMLPreInitializationEvent event) { Config.preInit(event); initVersionChecker(); @@ -78,7 +77,7 @@ public void preInit(@Nonnull FMLPreInitializationEvent event) { } @Nullable - private IModPlugin getVanillaPlugin(@Nonnull List modPlugins) { + private IModPlugin getVanillaPlugin(List modPlugins) { for (IModPlugin modPlugin : modPlugins) { if (modPlugin instanceof VanillaPlugin) { return modPlugin; @@ -88,7 +87,7 @@ private IModPlugin getVanillaPlugin(@Nonnull List modPlugins) { } @Nullable - private IModPlugin getJeiInternalPlugin(@Nonnull List modPlugins) { + private IModPlugin getJeiInternalPlugin(List modPlugins) { for (IModPlugin modPlugin : modPlugins) { if (modPlugin instanceof JEIInternalPlugin) { return modPlugin; @@ -98,7 +97,7 @@ private IModPlugin getJeiInternalPlugin(@Nonnull List modPlugins) { } @Override - public void init(@Nonnull FMLInitializationEvent event) { + public void init(FMLInitializationEvent event) { KeyBindings.init(); MinecraftForge.EVENT_BUS.register(this); @@ -109,7 +108,7 @@ public void init(@Nonnull FMLInitializationEvent event) { } @Override - public void postInit(@Nonnull FMLPostInitializationEvent event) { + public void postInit(FMLPostInitializationEvent event) { // Reload when resources change Minecraft minecraft = Minecraft.getMinecraft(); IReloadableResourceManager reloadableResourceManager = (IReloadableResourceManager) minecraft.getResourceManager(); @@ -184,7 +183,7 @@ private void startJEI() { itemFilter = new ItemFilter(itemRegistry); ItemListOverlay itemListOverlay = new ItemListOverlay(itemFilter, advancedGuiHandlers); - RecipesGui recipesGui = new RecipesGui(); + RecipesGui recipesGui = new RecipesGui(recipeRegistry); JeiRuntime jeiRuntime = new JeiRuntime(recipeRegistry, itemListOverlay, recipesGui); Internal.setRuntime(jeiRuntime); @@ -231,7 +230,7 @@ public void sendPacketToServer(PacketJEI packet) { // subscribe to event with low priority so that addon mods that use the config can do their stuff first @SubscribeEvent(priority = EventPriority.LOW) - public void onConfigChanged(@Nonnull ConfigChangedEvent.OnConfigChangedEvent eventArgs) { + public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { if (!Constants.MOD_ID.equals(eventArgs.getModID())) { return; } diff --git a/src/main/java/mezz/jei/RecipeRegistry.java b/src/main/java/mezz/jei/RecipeRegistry.java index f134bf1ca..20235253b 100644 --- a/src/main/java/mezz/jei/RecipeRegistry.java +++ b/src/main/java/mezz/jei/RecipeRegistry.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -49,12 +48,12 @@ public class RecipeRegistry implements IRecipeRegistry { private final Set unhandledRecipeClasses; public RecipeRegistry( - @Nonnull List recipeCategories, - @Nonnull List recipeHandlers, - @Nonnull List recipeTransferHandlers, - @Nonnull List recipes, - @Nonnull Multimap, RecipeClickableArea> recipeClickableAreasMap, - @Nonnull Multimap craftItemsForCategories + List recipeCategories, + List recipeHandlers, + List recipeTransferHandlers, + List recipes, + Multimap, RecipeClickableArea> recipeClickableAreasMap, + Multimap craftItemsForCategories ) { this.recipeCategoriesMap = buildRecipeCategoriesMap(recipeCategories); this.recipeTransferHandlers = buildRecipeTransferHandlerTable(recipeTransferHandlers); @@ -92,7 +91,7 @@ public RecipeRegistry( this.categoriesForCraftItemKeys = categoriesForCraftItemKeysBuilder.build(); } - private static ImmutableMap buildRecipeCategoriesMap(@Nonnull List recipeCategories) { + private static ImmutableMap buildRecipeCategoriesMap(List recipeCategories) { ImmutableMap.Builder mapBuilder = ImmutableMap.builder(); for (IRecipeCategory recipeCategory : recipeCategories) { mapBuilder.put(recipeCategory.getUid(), recipeCategory); @@ -100,7 +99,7 @@ private static ImmutableMap buildRecipeCategoriesMap(@N return mapBuilder.build(); } - private static ImmutableList buildRecipeHandlersList(@Nonnull List recipeHandlers) { + private static ImmutableList buildRecipeHandlersList(List recipeHandlers) { ImmutableList.Builder listBuilder = ImmutableList.builder(); Set recipeHandlerClasses = new HashSet(); for (IRecipeHandler recipeHandler : recipeHandlers) { @@ -120,7 +119,7 @@ private static ImmutableList buildRecipeHandlersList(@Nonnull Li return listBuilder.build(); } - private static ImmutableTable buildRecipeTransferHandlerTable(@Nonnull List recipeTransferHandlers) { + private static ImmutableTable buildRecipeTransferHandlerTable(List recipeTransferHandlers) { ImmutableTable.Builder builder = ImmutableTable.builder(); for (IRecipeTransferHandler recipeTransferHelper : recipeTransferHandlers) { builder.put(recipeTransferHelper.getContainerClass(), recipeTransferHelper.getRecipeCategoryUid(), recipeTransferHelper); @@ -148,7 +147,7 @@ public void addRecipe(@Nullable Object recipe) { addRecipe(recipe, recipe.getClass()); } - private void addRecipe(@Nonnull T recipe, Class recipeClass) { + private void addRecipe(T recipe, Class recipeClass) { IRecipeHandler recipeHandler = getRecipeHandler(recipeClass); if (recipeHandler == null) { if (!unhandledRecipeClasses.contains(recipeClass)) { @@ -202,7 +201,7 @@ private void addRecipe(@Nonnull T recipe, Class recipeClass) { } } - private void addRecipeUnchecked(@Nonnull T recipe, IRecipeCategory recipeCategory, IRecipeHandler recipeHandler) { + private void addRecipeUnchecked(T recipe, IRecipeCategory recipeCategory, IRecipeHandler recipeHandler) { StackHelper stackHelper = Internal.getStackHelper(); IRecipeWrapper recipeWrapper = recipeHandler.getRecipeWrapper(recipe); @@ -229,7 +228,6 @@ private void addRecipeUnchecked(@Nonnull T recipe, IRecipeCategory recipeCat recipesForCategories.put(recipeCategory, recipe); } - @Nonnull @Override public ImmutableList getRecipeCategories() { ImmutableList.Builder builder = ImmutableList.builder(); @@ -241,7 +239,6 @@ public ImmutableList getRecipeCategories() { return builder.build(); } - @Nonnull @Override public ImmutableList getRecipeCategories(@Nullable List recipeCategoryUids) { if (recipeCategoryUids == null) { @@ -278,7 +275,7 @@ public IRecipeHandler getRecipeHandler(@Nullable Class recip } @Nullable - public RecipeClickableArea getRecipeClickableArea(@Nonnull GuiContainer gui, int mouseX, int mouseY) { + public RecipeClickableArea getRecipeClickableArea(GuiContainer gui, int mouseX, int mouseY) { ImmutableCollection recipeClickableAreas = recipeClickableAreasMap.get(gui.getClass()); for (RecipeClickableArea recipeClickableArea : recipeClickableAreas) { if (recipeClickableArea.checkHover(mouseX, mouseY)) { @@ -288,7 +285,6 @@ public RecipeClickableArea getRecipeClickableArea(@Nonnull GuiContainer gui, int return null; } - @Nonnull @Override public ImmutableList getRecipeCategoriesWithInput(@Nullable ItemStack input) { if (input == null) { @@ -298,7 +294,6 @@ public ImmutableList getRecipeCategoriesWithInput(@Nullable Ite return recipeInputMap.getRecipeCategories(input); } - @Nonnull @Override public ImmutableList getRecipeCategoriesWithInput(@Nullable FluidStack input) { if (input == null) { @@ -308,7 +303,6 @@ public ImmutableList getRecipeCategoriesWithInput(@Nullable Flu return recipeInputMap.getRecipeCategories(input); } - @Nonnull @Override public ImmutableList getRecipeCategoriesWithOutput(@Nullable ItemStack output) { if (output == null) { @@ -318,7 +312,6 @@ public ImmutableList getRecipeCategoriesWithOutput(@Nullable It return recipeOutputMap.getRecipeCategories(output); } - @Nonnull @Override public ImmutableList getRecipeCategoriesWithOutput(@Nullable FluidStack output) { if (output == null) { @@ -328,7 +321,6 @@ public ImmutableList getRecipeCategoriesWithOutput(@Nullable Fl return recipeOutputMap.getRecipeCategories(output); } - @Nonnull @Override public List getRecipesWithInput(@Nullable IRecipeCategory recipeCategory, @Nullable ItemStack input) { if (recipeCategory == null) { @@ -359,7 +351,6 @@ public List getRecipesWithInput(@Nullable IRecipeCategory recipeCategory return recipes; } - @Nonnull @Override public List getRecipesWithInput(@Nullable IRecipeCategory recipeCategory, @Nullable FluidStack input) { if (recipeCategory == null) { @@ -372,7 +363,6 @@ public List getRecipesWithInput(@Nullable IRecipeCategory recipeCategory return recipeInputMap.getRecipes(recipeCategory, input); } - @Nonnull @Override public ImmutableList getRecipesWithOutput(@Nullable IRecipeCategory recipeCategory, @Nullable ItemStack output) { if (recipeCategory == null) { @@ -385,7 +375,6 @@ public ImmutableList getRecipesWithOutput(@Nullable IRecipeCategory reci return recipeOutputMap.getRecipes(recipeCategory, output); } - @Nonnull @Override public List getRecipesWithOutput(@Nullable IRecipeCategory recipeCategory, @Nullable FluidStack output) { if (recipeCategory == null) { @@ -397,7 +386,6 @@ public List getRecipesWithOutput(@Nullable IRecipeCategory recipeCategor return recipeOutputMap.getRecipes(recipeCategory, output); } - @Nonnull @Override public List getRecipes(@Nullable IRecipeCategory recipeCategory) { if (recipeCategory == null) { @@ -407,9 +395,8 @@ public List getRecipes(@Nullable IRecipeCategory recipeCategory) { return Collections.unmodifiableList(recipesForCategories.get(recipeCategory)); } - @Nonnull @Override - public ImmutableCollection getCraftingItems(@Nonnull IRecipeCategory recipeCategory) { + public ImmutableCollection getCraftingItems(IRecipeCategory recipeCategory) { return craftItemsForCategories.get(recipeCategory); } diff --git a/src/main/java/mezz/jei/SubtypeRegistry.java b/src/main/java/mezz/jei/SubtypeRegistry.java index bad74bd45..370d923ed 100644 --- a/src/main/java/mezz/jei/SubtypeRegistry.java +++ b/src/main/java/mezz/jei/SubtypeRegistry.java @@ -1,6 +1,5 @@ package mezz.jei; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.HashMap; import java.util.Map; @@ -20,7 +19,7 @@ public class SubtypeRegistry implements ISubtypeRegistry { private final Map interpreters = new HashMap(); @Override - public void useNbtForSubtypes(@Nonnull Item... items) { + public void useNbtForSubtypes(Item... items) { for (Item item : items) { registerNbtInterpreter(item, AllNbt.INSTANCE); } @@ -93,7 +92,7 @@ private AllNbt() { } @Nullable @Override - public String getSubtypeInfo(@Nonnull ItemStack itemStack) { + public String getSubtypeInfo(ItemStack itemStack) { NBTTagCompound nbtTagCompound = itemStack.getTagCompound(); if (nbtTagCompound == null || nbtTagCompound.hasNoTags()) { return null; diff --git a/src/main/java/mezz/jei/api/BlankModPlugin.java b/src/main/java/mezz/jei/api/BlankModPlugin.java index 956273afa..01107f155 100644 --- a/src/main/java/mezz/jei/api/BlankModPlugin.java +++ b/src/main/java/mezz/jei/api/BlankModPlugin.java @@ -1,19 +1,17 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - /** * An {@link IModPlugin} that does nothing, inherit from this to avoid implementing methods you don't need. * IModPlugin implementations must have the {@link JEIPlugin} annotation to get loaded by JEI. */ public abstract class BlankModPlugin implements IModPlugin { @Override - public void register(@Nonnull IModRegistry registry) { + public void register(IModRegistry registry) { } @Override - public void onRuntimeAvailable(@Nonnull IJeiRuntime jeiRuntime) { + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { } } diff --git a/src/main/java/mezz/jei/api/IGuiHelper.java b/src/main/java/mezz/jei/api/IGuiHelper.java index c1c81a5b0..2866e257f 100644 --- a/src/main/java/mezz/jei/api/IGuiHelper.java +++ b/src/main/java/mezz/jei/api/IGuiHelper.java @@ -1,13 +1,10 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - -import net.minecraft.util.ResourceLocation; - import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IDrawableAnimated; import mezz.jei.api.gui.IDrawableStatic; import mezz.jei.api.gui.ITickTimer; +import net.minecraft.util.ResourceLocation; /** * Helps with the implementation of GUIs. @@ -15,11 +12,9 @@ */ public interface IGuiHelper { - @Nonnull - IDrawableStatic createDrawable(@Nonnull ResourceLocation resourceLocation, int u, int v, int width, int height); + IDrawableStatic createDrawable(ResourceLocation resourceLocation, int u, int v, int width, int height); - @Nonnull - IDrawableStatic createDrawable(@Nonnull ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight); + IDrawableStatic createDrawable(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight); /** * Creates an animated texture for a gui, revealing the texture over time. @@ -29,26 +24,22 @@ public interface IGuiHelper { * @param startDirection the direction that the animation starts drawing the texture * @param inverted when inverted is true, the texture will start fully drawn and be hidden over time */ - @Nonnull - IDrawableAnimated createAnimatedDrawable(@Nonnull IDrawableStatic drawable, int ticksPerCycle, @Nonnull IDrawableAnimated.StartDirection startDirection, boolean inverted); + IDrawableAnimated createAnimatedDrawable(IDrawableStatic drawable, int ticksPerCycle, IDrawableAnimated.StartDirection startDirection, boolean inverted); /** * Returns a slot drawable for drawing extra slots on guis */ - @Nonnull IDrawableStatic getSlotDrawable(); /** * Returns a blank drawable for using as a blank recipe background. */ - @Nonnull IDrawableStatic createBlankDrawable(int width, int height); /** * Create a crafting grid helper. * Helps set crafting-grid-style GuiItemStackGroup. */ - @Nonnull ICraftingGridHelper createCraftingGridHelper(int craftInputSlot1, int craftOutputSlot); /** @@ -58,6 +49,5 @@ public interface IGuiHelper { * @param maxValue the number to count up to before starting over at 0 * @param countDown if true, the tick timer will count backwards from maxValue */ - @Nonnull ITickTimer createTickTimer(int ticksPerCycle, int maxValue, boolean countDown); } diff --git a/src/main/java/mezz/jei/api/IItemBlacklist.java b/src/main/java/mezz/jei/api/IItemBlacklist.java index 7b82c5881..5323152ec 100644 --- a/src/main/java/mezz/jei/api/IItemBlacklist.java +++ b/src/main/java/mezz/jei/api/IItemBlacklist.java @@ -1,7 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -15,17 +13,17 @@ public interface IItemBlacklist { * Use {@link OreDictionary#WILDCARD_VALUE} meta for wildcard. * Items blacklisted with this API can't be seen in the config or in edit mode. */ - void addItemToBlacklist(@Nonnull ItemStack itemStack); + void addItemToBlacklist(ItemStack itemStack); /** * Undo blacklisting an item. * This is for mods that hide items initially and reveal them when certain conditions are met. * Items blacklisted by the user in the config will remain hidden. */ - void removeItemFromBlacklist(@Nonnull ItemStack itemStack); + void removeItemFromBlacklist(ItemStack itemStack); /** * Returns true if the item is blacklisted and will not be displayed in the item list. */ - boolean isItemBlacklisted(@Nonnull ItemStack itemStack); + boolean isItemBlacklisted(ItemStack itemStack); } diff --git a/src/main/java/mezz/jei/api/IItemListOverlay.java b/src/main/java/mezz/jei/api/IItemListOverlay.java index 19576c723..fc062c297 100644 --- a/src/main/java/mezz/jei/api/IItemListOverlay.java +++ b/src/main/java/mezz/jei/api/IItemListOverlay.java @@ -1,13 +1,11 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.Collection; import com.google.common.collect.ImmutableList; import net.minecraft.item.ItemStack; -import java.util.Collection; - /** * The IItemListOverlay is JEI's gui that displays all the items next to an open container gui. * Use this interface to get information from and interact with it. @@ -24,29 +22,26 @@ public interface IItemListOverlay { /** * Set the search filter string for the item list. */ - void setFilterText(@Nonnull String filterText); + void setFilterText(String filterText); /** * @return the current search filter string for the item list */ - @Nonnull String getFilterText(); /** * @return a list containing all stacks that match the current filter. * For the list of all ItemStacks known to JEI, see {@link IItemRegistry#getItemList()}. */ - @Nonnull ImmutableList getFilteredStacks(); /** * @return a list containing all currently visible stacks. If JEI is hidden, the list will be empty. */ - @Nonnull ImmutableList getVisibleStacks(); /** * Tells JEI which stacks to highlight */ - void highlightStacks(@Nonnull Collection stacks); + void highlightStacks(Collection stacks); } diff --git a/src/main/java/mezz/jei/api/IItemRegistry.java b/src/main/java/mezz/jei/api/IItemRegistry.java index 25e606c00..451e62a8d 100644 --- a/src/main/java/mezz/jei/api/IItemRegistry.java +++ b/src/main/java/mezz/jei/api/IItemRegistry.java @@ -4,8 +4,6 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import javax.annotation.Nonnull; - /** * The IItemRegistry is provided by JEI and has some useful functions related to items. * Get the instance from {@link IModRegistry#getItemRegistry()}. @@ -15,30 +13,30 @@ public interface IItemRegistry { /** * Returns a list of all the ItemStacks known to JEI, including their sub-items. */ - @Nonnull ImmutableList getItemList(); /** * Returns a list of all the ItemStacks that can be used as fuel in a vanilla furnace. */ - @Nonnull ImmutableList getFuels(); /** * Returns a list of all the ItemStacks that return true to isPotionIngredient. */ - @Nonnull ImmutableList getPotionIngredients(); /** * Returns a mod name for the given item. */ - @Nonnull - String getModNameForItem(@Nonnull Item item); + String getModNameForItem(Item item); + + /** + * Returns a mod name for the given mod id. + */ + String getModNameForModId(String modId); /** * Returns all the items registered by a specific mod. */ - @Nonnull - ImmutableList getItemListForModId(@Nonnull String modId); + ImmutableList getItemListForModId(String modId); } diff --git a/src/main/java/mezz/jei/api/IJeiHelpers.java b/src/main/java/mezz/jei/api/IJeiHelpers.java index 07929dd6b..e387f6405 100644 --- a/src/main/java/mezz/jei/api/IJeiHelpers.java +++ b/src/main/java/mezz/jei/api/IJeiHelpers.java @@ -1,7 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IStackHelper; import mezz.jei.api.recipe.transfer.IRecipeTransferHandlerHelper; @@ -13,26 +11,22 @@ public interface IJeiHelpers { /** * Helps with the implementation of GUIs. */ - @Nonnull IGuiHelper getGuiHelper(); /** * Helps with getting itemStacks from recipes. */ - @Nonnull IStackHelper getStackHelper(); /** * Used to stop JEI from displaying a specific item in the item list. */ - @Nonnull IItemBlacklist getItemBlacklist(); /** * Used to tell JEI to ignore NBT tags when comparing items for recipes. * @deprecated all nbt is now ignored by default. If you have nbt that is used to identify your item's subtype, see {@link #getSubtypeRegistry()}. */ - @Nonnull @Deprecated INbtIgnoreList getNbtIgnoreList(); @@ -50,7 +44,6 @@ public interface IJeiHelpers { /** * Helps with the implementation of Recipe Transfer Handlers */ - @Nonnull IRecipeTransferHandlerHelper recipeTransferHandlerHelper(); /** diff --git a/src/main/java/mezz/jei/api/IJeiRuntime.java b/src/main/java/mezz/jei/api/IJeiRuntime.java index 6186e76a3..9d876b453 100644 --- a/src/main/java/mezz/jei/api/IJeiRuntime.java +++ b/src/main/java/mezz/jei/api/IJeiRuntime.java @@ -1,21 +1,16 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - /** * Gives access to JEI functions that are available once everything has loaded. * The IJeiRuntime instance is passed to your mod plugin in {@link IModPlugin#onRuntimeAvailable(IJeiRuntime)}. */ public interface IJeiRuntime { - @Nonnull IRecipeRegistry getRecipeRegistry(); - @Nonnull IItemListOverlay getItemListOverlay(); /** * @since JEI 3.2.12 */ - @Nonnull IRecipesGui getRecipesGui(); } diff --git a/src/main/java/mezz/jei/api/IModPlugin.java b/src/main/java/mezz/jei/api/IModPlugin.java index b368f7809..3e6a2d132 100644 --- a/src/main/java/mezz/jei/api/IModPlugin.java +++ b/src/main/java/mezz/jei/api/IModPlugin.java @@ -1,7 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; - /** * The main class to implement to create a JEI plugin. Everything communicated between a mod and JEI is through this class. * IModPlugins must have the {@link JEIPlugin} annotation to get loaded by JEI. @@ -14,11 +12,11 @@ public interface IModPlugin { * Register this mod plugin with the mod registry. * Called when the player joins the world and any time JEI reloads (like for a config change). */ - void register(@Nonnull IModRegistry registry); + void register(IModRegistry registry); /** * Called when jei's runtime features are available, after all mods have registered. * @since JEI 2.23.0 */ - void onRuntimeAvailable(@Nonnull IJeiRuntime jeiRuntime); + void onRuntimeAvailable(IJeiRuntime jeiRuntime); } diff --git a/src/main/java/mezz/jei/api/IModRegistry.java b/src/main/java/mezz/jei/api/IModRegistry.java index 81bdfe42f..d9deb1947 100644 --- a/src/main/java/mezz/jei/api/IModRegistry.java +++ b/src/main/java/mezz/jei/api/IModRegistry.java @@ -1,5 +1,7 @@ package mezz.jei.api; +import java.util.List; + import mezz.jei.api.gui.IAdvancedGuiHandler; import mezz.jei.api.recipe.IRecipeCategory; import mezz.jei.api.recipe.IRecipeHandler; @@ -7,9 +9,6 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; -import javax.annotation.Nonnull; -import java.util.List; - /** * Entry point for the JEI API, functions for registering recipes are available from here. * The IModRegistry instance is passed to your mod plugin in {@link IModPlugin#register(IModRegistry)}. @@ -20,14 +19,12 @@ public interface IModRegistry { * Get helpers and tools for implementing JEI plugins. * @since JEI 2.27.0 */ - @Nonnull IJeiHelpers getJeiHelpers(); /** * Get useful functions relating to items. * @since JEI 2.27.0 */ - @Nonnull IItemRegistry getItemRegistry(); /** @@ -57,7 +54,7 @@ public interface IModRegistry { * @param height the height of the clickable area. * @param recipeCategoryUids the recipe categories that JEI should display. */ - void addRecipeClickArea(@Nonnull Class guiContainerClass, int xPos, int yPos, int width, int height, @Nonnull String... recipeCategoryUids); + void addRecipeClickArea(Class guiContainerClass, int xPos, int yPos, int width, int height, String... recipeCategoryUids); /** * Add an association between an item and what it can craft. (i.e. Furnace ItemStack -> Smelting and Fuel Recipes) @@ -68,13 +65,13 @@ public interface IModRegistry { * * @since JEI 3.3.0 */ - void addRecipeCategoryCraftingItem(@Nonnull ItemStack craftingItem, @Nonnull String... recipeCategoryUids); + void addRecipeCategoryCraftingItem(ItemStack craftingItem, String... recipeCategoryUids); /** * Add a handler to give JEI extra information about how to layout the item list next to a specific type of GuiContainer. * Used for guis with tabs on the side that would normally intersect with JEI's item list. */ - void addAdvancedGuiHandlers(@Nonnull IAdvancedGuiHandler... advancedGuiHandlers); + void addAdvancedGuiHandlers(IAdvancedGuiHandler... advancedGuiHandlers); /** * Add a description page for an itemStack. diff --git a/src/main/java/mezz/jei/api/INbtIgnoreList.java b/src/main/java/mezz/jei/api/INbtIgnoreList.java index 076478024..fcc9eef45 100644 --- a/src/main/java/mezz/jei/api/INbtIgnoreList.java +++ b/src/main/java/mezz/jei/api/INbtIgnoreList.java @@ -1,6 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.item.Item; @@ -18,7 +17,7 @@ public interface INbtIgnoreList { * @deprecated since 3.6.0. all nbt is now ignored by default. See {@link ISubtypeRegistry}. */ @Deprecated - void ignoreNbtTagNames(@Nonnull Item item, String... nbtTagNames); + void ignoreNbtTagNames(Item item, String... nbtTagNames); /** * Tell JEI to ignore NBT tags when comparing items for recipes. @@ -36,5 +35,5 @@ public interface INbtIgnoreList { */ @Deprecated @Nullable - NBTTagCompound getNbt(@Nonnull ItemStack itemStack); + NBTTagCompound getNbt(ItemStack itemStack); } diff --git a/src/main/java/mezz/jei/api/INbtRegistry.java b/src/main/java/mezz/jei/api/INbtRegistry.java index cd799af09..242c88192 100644 --- a/src/main/java/mezz/jei/api/INbtRegistry.java +++ b/src/main/java/mezz/jei/api/INbtRegistry.java @@ -1,6 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.item.Item; @@ -23,30 +22,38 @@ public interface INbtRegistry { /** * Tells JEI to treat all NBT as relevant to these items' subtypes. + * @deprecated since 3.6.4. Use {@link ISubtypeRegistry} */ - void useNbtForSubtypes(@Nonnull Item... items); + @Deprecated + void useNbtForSubtypes(Item... items); /** * Add an nbt interpreter to turn nbt into data that can be used to compare item subtypes. * * @param item the item that uses nbt to tell subtypes apart. * @param nbtInterpreter the nbt interpreter for the item. + * @deprecated since 3.6.4. Use {@link ISubtypeRegistry} */ - void registerNbtInterpreter(@Nonnull Item item, @Nonnull INbtInterpreter nbtInterpreter); + @Deprecated + void registerNbtInterpreter(Item item, INbtInterpreter nbtInterpreter); /** * Get the data from an itemStack that is relevant to comparing and telling subtypes apart. * Returns null if the itemStack has no NBT or the NBT is not used for subtypes. + * @deprecated since 3.6.4. Use {@link ISubtypeRegistry} */ + @Deprecated @Nullable - String getSubtypeInfoFromNbt(@Nonnull ItemStack itemStack); + String getSubtypeInfoFromNbt(ItemStack itemStack); interface INbtInterpreter { /** * Get the data from an itemStack that is relevant to telling subtypes apart. * Returns null if the NBT has no data used for subtypes. + * @deprecated since 3.6.4. Use {@link ISubtypeRegistry} */ + @Deprecated @Nullable - String getSubtypeInfoFromNbt(@Nonnull NBTTagCompound nbtTagCompound); + String getSubtypeInfoFromNbt(NBTTagCompound nbtTagCompound); } } diff --git a/src/main/java/mezz/jei/api/IRecipeRegistry.java b/src/main/java/mezz/jei/api/IRecipeRegistry.java index 07d9192f6..fcbb1c4ee 100644 --- a/src/main/java/mezz/jei/api/IRecipeRegistry.java +++ b/src/main/java/mezz/jei/api/IRecipeRegistry.java @@ -1,6 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.List; @@ -19,51 +18,40 @@ public interface IRecipeRegistry { /** Returns the IRecipeHandler associated with the recipeClass or null if there is none */ @Nullable - IRecipeHandler getRecipeHandler(@Nonnull Class recipeClass); + IRecipeHandler getRecipeHandler(Class recipeClass); /** Returns an unmodifiable list of all Recipe Categories */ - @Nonnull List getRecipeCategories(); /** Returns an unmodifiable list of Recipe Categories */ - @Nonnull - List getRecipeCategories(@Nonnull List recipeCategoryUids); + List getRecipeCategories(List recipeCategoryUids); /** Returns an unmodifiable list of Recipe Categories that have the ItemStack as an input */ - @Nonnull - List getRecipeCategoriesWithInput(@Nonnull ItemStack input); + List getRecipeCategoriesWithInput(ItemStack input); /** Returns an unmodifiable list of Recipe Categories that have the Fluid as an input */ - @Nonnull - List getRecipeCategoriesWithInput(@Nonnull FluidStack input); + List getRecipeCategoriesWithInput(FluidStack input); /** Returns an unmodifiable list of Recipe Categories that have the ItemStack as an output */ - @Nonnull - List getRecipeCategoriesWithOutput(@Nonnull ItemStack output); + List getRecipeCategoriesWithOutput(ItemStack output); /** Returns an unmodifiable list of Recipe Categories that have the Fluid as an output */ - @Nonnull - List getRecipeCategoriesWithOutput(@Nonnull FluidStack output); + List getRecipeCategoriesWithOutput(FluidStack output); /** Returns an unmodifiable list of Recipes of recipeCategory that have the ItemStack as an input */ - @Nonnull - List getRecipesWithInput(@Nonnull IRecipeCategory recipeCategory, @Nonnull ItemStack input); + List getRecipesWithInput(IRecipeCategory recipeCategory, ItemStack input); /** Returns an unmodifiable list of Recipes of recipeCategory that have the Fluid as an input */ - @Nonnull - List getRecipesWithInput(@Nonnull IRecipeCategory recipeCategory, @Nonnull FluidStack input); + List getRecipesWithInput(IRecipeCategory recipeCategory, FluidStack input); /** Returns an unmodifiable list of Recipes of recipeCategory that have the ItemStack as an output */ - @Nonnull - List getRecipesWithOutput(@Nonnull IRecipeCategory recipeCategory, @Nonnull ItemStack output); + List getRecipesWithOutput(IRecipeCategory recipeCategory, ItemStack output); /** Returns an unmodifiable list of Recipes of recipeCategory that have the Fluid as an output */ - @Nonnull - List getRecipesWithOutput(@Nonnull IRecipeCategory recipeCategory, @Nonnull FluidStack output); + List getRecipesWithOutput(IRecipeCategory recipeCategory, FluidStack output); /** Returns an unmodifiable list of Recipes in recipeCategory */ - @Nonnull - List getRecipes(@Nonnull IRecipeCategory recipeCategory); + List getRecipes(IRecipeCategory recipeCategory); /** * Returns an unmodifiable collection of ItemStacks that can craft recipes from recipeCategory. @@ -71,8 +59,7 @@ public interface IRecipeRegistry { * * @since JEI 3.3.0 */ - @Nonnull - Collection getCraftingItems(@Nonnull IRecipeCategory recipeCategory); + Collection getCraftingItems(IRecipeCategory recipeCategory); /** * Add a new recipe while the game is running. @@ -80,5 +67,5 @@ public interface IRecipeRegistry { * Use your IRecipeHandler.isValid to determine which recipes are hidden, and when a recipe becomes valid you can add it here. * (note that IRecipeHandler.isValid must be true when the recipe is added here for it to work) */ - void addRecipe(@Nonnull Object recipe); + void addRecipe(Object recipe); } diff --git a/src/main/java/mezz/jei/api/IRecipesGui.java b/src/main/java/mezz/jei/api/IRecipesGui.java index 1d1b05d2c..96fa2cf62 100644 --- a/src/main/java/mezz/jei/api/IRecipesGui.java +++ b/src/main/java/mezz/jei/api/IRecipesGui.java @@ -1,6 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import java.util.List; import net.minecraft.item.ItemStack; @@ -19,7 +18,7 @@ public interface IRecipesGui { * * @param focus the {@link ItemStack} result. */ - void showRecipes(@Nonnull ItemStack focus); + void showRecipes(ItemStack focus); /** * Show recipes for a {@link FluidStack}. @@ -27,7 +26,7 @@ public interface IRecipesGui { * * @param focus the {@link FluidStack} result. */ - void showRecipes(@Nonnull FluidStack focus); + void showRecipes(FluidStack focus); /** * Show recipes that use an {@link ItemStack} as an ingredient. @@ -35,7 +34,7 @@ public interface IRecipesGui { * * @param focus the {@link ItemStack} ingredient. */ - void showUses(@Nonnull ItemStack focus); + void showUses(ItemStack focus); /** * Show recipes that use a {@link FluidStack} as an ingredient. @@ -43,12 +42,12 @@ public interface IRecipesGui { * * @param focus the {@link FluidStack} ingredient. */ - void showUses(@Nonnull FluidStack focus); + void showUses(FluidStack focus); /** * Show entire categories of recipes. * * @param recipeCategoryUids a list of categories to display, in order. Must not be empty. */ - void showCategories(@Nonnull List recipeCategoryUids); + void showCategories(List recipeCategoryUids); } diff --git a/src/main/java/mezz/jei/api/ISubtypeRegistry.java b/src/main/java/mezz/jei/api/ISubtypeRegistry.java index 3629a25ce..3ae0db3c2 100644 --- a/src/main/java/mezz/jei/api/ISubtypeRegistry.java +++ b/src/main/java/mezz/jei/api/ISubtypeRegistry.java @@ -1,6 +1,5 @@ package mezz.jei.api; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.item.Item; @@ -25,7 +24,7 @@ public interface ISubtypeRegistry { /** * Tells JEI to treat all NBT as relevant to these items' subtypes. */ - void useNbtForSubtypes(@Nonnull Item... items); + void useNbtForSubtypes(Item... items); /** * Add an interpreter to compare item subtypes. @@ -33,14 +32,14 @@ public interface ISubtypeRegistry { * @param item the item that has subtypes. * @param interpreter the interpreter for the item. */ - void registerNbtInterpreter(@Nonnull Item item, @Nonnull ISubtypeInterpreter interpreter); + void registerNbtInterpreter(Item item, ISubtypeInterpreter interpreter); /** * Get the data from an itemStack that is relevant to comparing and telling subtypes apart. * Returns null if the itemStack has no information used for subtypes. */ @Nullable - String getSubtypeInfo(@Nonnull ItemStack itemStack); + String getSubtypeInfo(ItemStack itemStack); interface ISubtypeInterpreter { /** @@ -48,6 +47,6 @@ interface ISubtypeInterpreter { * Returns null if there is no data used for subtypes. */ @Nullable - String getSubtypeInfo(@Nonnull ItemStack itemStack); + String getSubtypeInfo(ItemStack itemStack); } } diff --git a/src/main/java/mezz/jei/api/gui/IAdvancedGuiHandler.java b/src/main/java/mezz/jei/api/gui/IAdvancedGuiHandler.java index 9fa6efd5d..42fdaf597 100644 --- a/src/main/java/mezz/jei/api/gui/IAdvancedGuiHandler.java +++ b/src/main/java/mezz/jei/api/gui/IAdvancedGuiHandler.java @@ -1,6 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.awt.Rectangle; import java.util.List; @@ -16,7 +15,6 @@ public interface IAdvancedGuiHandler { /** * @return the class that this IAdvancedGuiHandler handles. */ - @Nonnull Class getGuiContainerClass(); /** diff --git a/src/main/java/mezz/jei/api/gui/ICraftingGridHelper.java b/src/main/java/mezz/jei/api/gui/ICraftingGridHelper.java index 78944ab55..aedb3de14 100644 --- a/src/main/java/mezz/jei/api/gui/ICraftingGridHelper.java +++ b/src/main/java/mezz/jei/api/gui/ICraftingGridHelper.java @@ -1,6 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import java.util.List; import mezz.jei.api.IGuiHelper; @@ -13,10 +12,10 @@ */ public interface ICraftingGridHelper { - void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List input); + void setInput(IGuiItemStackGroup guiItemStacks, List input); - void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List input, int width, int height); + void setInput(IGuiItemStackGroup guiItemStacks, List input, int width, int height); - void setOutput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List output); + void setOutput(IGuiItemStackGroup guiItemStacks, List output); } diff --git a/src/main/java/mezz/jei/api/gui/IDrawable.java b/src/main/java/mezz/jei/api/gui/IDrawable.java index 5022202d2..08702cfe8 100644 --- a/src/main/java/mezz/jei/api/gui/IDrawable.java +++ b/src/main/java/mezz/jei/api/gui/IDrawable.java @@ -1,7 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; - import mezz.jei.api.IGuiHelper; import mezz.jei.api.recipe.IRecipeCategory; import mezz.jei.api.recipe.IRecipeWrapper; @@ -21,8 +19,8 @@ public interface IDrawable { int getHeight(); - void draw(@Nonnull Minecraft minecraft); + void draw(Minecraft minecraft); - void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset); + void draw(Minecraft minecraft, int xOffset, int yOffset); } diff --git a/src/main/java/mezz/jei/api/gui/IDrawableStatic.java b/src/main/java/mezz/jei/api/gui/IDrawableStatic.java index 5cb2b5126..00263d7d8 100644 --- a/src/main/java/mezz/jei/api/gui/IDrawableStatic.java +++ b/src/main/java/mezz/jei/api/gui/IDrawableStatic.java @@ -1,7 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; - import net.minecraft.client.Minecraft; /** @@ -9,5 +7,5 @@ */ public interface IDrawableStatic extends IDrawable { /** Draw only part of the image, by masking off parts of it */ - void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight); + void draw(Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight); } diff --git a/src/main/java/mezz/jei/api/gui/IGuiFluidStackGroup.java b/src/main/java/mezz/jei/api/gui/IGuiFluidStackGroup.java index b6e3d0b2e..a23486a68 100644 --- a/src/main/java/mezz/jei/api/gui/IGuiFluidStackGroup.java +++ b/src/main/java/mezz/jei/api/gui/IGuiFluidStackGroup.java @@ -1,6 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; @@ -31,11 +30,11 @@ public interface IGuiFluidStackGroup extends IGuiIngredientGroup { void init(int slotIndex, boolean input, int xPosition, int yPosition, int width, int height, int capacityMb, boolean showCapacity, @Nullable IDrawable overlay); @Override - void set(int slotIndex, @Nonnull Collection fluidStacks); + void set(int slotIndex, Collection fluidStacks); @Override - void set(int slotIndex, @Nonnull FluidStack fluidStack); + void set(int slotIndex, FluidStack fluidStack); @Override - void addTooltipCallback(@Nonnull ITooltipCallback tooltipCallback); + void addTooltipCallback(ITooltipCallback tooltipCallback); } diff --git a/src/main/java/mezz/jei/api/gui/IGuiIngredient.java b/src/main/java/mezz/jei/api/gui/IGuiIngredient.java index 76fff9867..ebe91867a 100644 --- a/src/main/java/mezz/jei/api/gui/IGuiIngredient.java +++ b/src/main/java/mezz/jei/api/gui/IGuiIngredient.java @@ -1,8 +1,7 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; import java.util.Collection; import java.util.List; @@ -28,7 +27,6 @@ public interface IGuiIngredient { * All ingredient variations that can be shown. * For ingredients that rotate through several values, this will have them all even if a focus is set. */ - @Nonnull List getAllIngredients(); /** @@ -42,5 +40,5 @@ public interface IGuiIngredient { * * @see IRecipeTransferHandlerHelper#createUserErrorForSlots(String, Collection). */ - void drawHighlight(@Nonnull Minecraft minecraft, Color color, int xOffset, int yOffset); + void drawHighlight(Minecraft minecraft, Color color, int xOffset, int yOffset); } diff --git a/src/main/java/mezz/jei/api/gui/IGuiIngredientGroup.java b/src/main/java/mezz/jei/api/gui/IGuiIngredientGroup.java index 0ed2273a2..aeffc0106 100644 --- a/src/main/java/mezz/jei/api/gui/IGuiIngredientGroup.java +++ b/src/main/java/mezz/jei/api/gui/IGuiIngredientGroup.java @@ -1,6 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Map; @@ -20,17 +19,17 @@ public interface IGuiIngredientGroup { /** * Set the ingredient at slotIndex to a rotating collection of ingredients. */ - void set(int slotIndex, @Nonnull Collection ingredients); + void set(int slotIndex, Collection ingredients); /** * Set the ingredient at slotIndex to a specific ingredient. */ - void set(int slotIndex, @Nonnull T ingredient); + void set(int slotIndex, T ingredient); /** * Add a callback to alter the tooltip for these ingredients. */ - void addTooltipCallback(@Nonnull ITooltipCallback tooltipCallback); + void addTooltipCallback(ITooltipCallback tooltipCallback); /** * The current search focus. Set by the player when they look up the recipe. The object being looked up is the focus. diff --git a/src/main/java/mezz/jei/api/gui/IGuiItemStackGroup.java b/src/main/java/mezz/jei/api/gui/IGuiItemStackGroup.java index 3bda4ae4b..30c5fc342 100644 --- a/src/main/java/mezz/jei/api/gui/IGuiItemStackGroup.java +++ b/src/main/java/mezz/jei/api/gui/IGuiItemStackGroup.java @@ -1,6 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.List; @@ -29,19 +28,19 @@ public interface IGuiItemStackGroup extends IGuiIngredientGroup { /** * Takes a list of ingredients from IRecipeWrapper getInputs or getOutputs */ - void setFromRecipe(int slotIndex, @Nonnull List ingredients); + void setFromRecipe(int slotIndex, List ingredients); /** * Takes an Object from IRecipeWrapper getInputs or getOutputs */ - void setFromRecipe(int slotIndex, @Nonnull Object ingredients); + void setFromRecipe(int slotIndex, Object ingredients); @Override - void set(int slotIndex, @Nonnull Collection itemStacks); + void set(int slotIndex, Collection itemStacks); @Override - void set(int slotIndex, @Nonnull ItemStack itemStack); + void set(int slotIndex, ItemStack itemStack); @Override - void addTooltipCallback(@Nonnull ITooltipCallback tooltipCallback); + void addTooltipCallback(ITooltipCallback tooltipCallback); } diff --git a/src/main/java/mezz/jei/api/gui/IRecipeLayout.java b/src/main/java/mezz/jei/api/gui/IRecipeLayout.java index 40d4d8fa2..13c271239 100644 --- a/src/main/java/mezz/jei/api/gui/IRecipeLayout.java +++ b/src/main/java/mezz/jei/api/gui/IRecipeLayout.java @@ -1,7 +1,5 @@ package mezz.jei.api.gui; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeCategory; import mezz.jei.api.recipe.IRecipeWrapper; @@ -15,14 +13,12 @@ public interface IRecipeLayout { * Contains all the itemStacks displayed on this recipe layout. * Init and set them in your recipe category. */ - @Nonnull IGuiItemStackGroup getItemStacks(); /** * Contains all the fluidStacks displayed on this recipe layout. * Init and set them in your recipe category. */ - @Nonnull IGuiFluidStackGroup getFluidStacks(); /** diff --git a/src/main/java/mezz/jei/api/gui/package-info.java b/src/main/java/mezz/jei/api/gui/package-info.java new file mode 100644 index 000000000..3293f9a35 --- /dev/null +++ b/src/main/java/mezz/jei/api/gui/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.api.gui; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/api/package-info.java b/src/main/java/mezz/jei/api/package-info.java index 6f2bfdadf..0ecd46e10 100644 --- a/src/main/java/mezz/jei/api/package-info.java +++ b/src/main/java/mezz/jei/api/package-info.java @@ -1,4 +1,9 @@ -@API(apiVersion = "4.2.0", owner = "JEI", provides = "JustEnoughItemsAPI") +@API(apiVersion = "4.3.0", owner = "JEI", provides = "JustEnoughItemsAPI") +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault package mezz.jei.api; +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; import net.minecraftforge.fml.common.API; diff --git a/src/main/java/mezz/jei/api/recipe/BlankRecipeCategory.java b/src/main/java/mezz/jei/api/recipe/BlankRecipeCategory.java index ae94a7589..452a19ed7 100644 --- a/src/main/java/mezz/jei/api/recipe/BlankRecipeCategory.java +++ b/src/main/java/mezz/jei/api/recipe/BlankRecipeCategory.java @@ -2,19 +2,17 @@ import net.minecraft.client.Minecraft; -import javax.annotation.Nonnull; - /** * An {@link IRecipeCategory} that does nothing, inherit from this to avoid implementing methods you don't need. */ public abstract class BlankRecipeCategory implements IRecipeCategory { @Override - public void drawExtras(@Nonnull Minecraft minecraft) { + public void drawExtras(Minecraft minecraft) { } @Override - public void drawAnimations(@Nonnull Minecraft minecraft) { + public void drawAnimations(Minecraft minecraft) { } } diff --git a/src/main/java/mezz/jei/api/recipe/BlankRecipeWrapper.java b/src/main/java/mezz/jei/api/recipe/BlankRecipeWrapper.java index 9998ec821..1da52d3a2 100644 --- a/src/main/java/mezz/jei/api/recipe/BlankRecipeWrapper.java +++ b/src/main/java/mezz/jei/api/recipe/BlankRecipeWrapper.java @@ -1,48 +1,43 @@ package mezz.jei.api.recipe; -import net.minecraft.client.Minecraft; -import net.minecraftforge.fluids.FluidStack; - -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collections; import java.util.List; +import net.minecraft.client.Minecraft; +import net.minecraftforge.fluids.FluidStack; + /** * An {@link IRecipeWrapper} that does nothing, inherit from this to avoid implementing methods you don't need. */ public abstract class BlankRecipeWrapper implements IRecipeWrapper { @Override - @Nonnull public List getInputs() { return Collections.emptyList(); } @Override - @Nonnull public List getOutputs() { return Collections.emptyList(); } @Override - @Nonnull public List getFluidInputs() { return Collections.emptyList(); } @Override - @Nonnull public List getFluidOutputs() { return Collections.emptyList(); } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { } @Override - public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { + public void drawAnimations(Minecraft minecraft, int recipeWidth, int recipeHeight) { } @@ -53,7 +48,7 @@ public List getTooltipStrings(int mouseX, int mouseY) { } @Override - public boolean handleClick(@Nonnull Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { + public boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { return false; } } diff --git a/src/main/java/mezz/jei/api/recipe/IFocus.java b/src/main/java/mezz/jei/api/recipe/IFocus.java index 06ad01d0a..52260d776 100644 --- a/src/main/java/mezz/jei/api/recipe/IFocus.java +++ b/src/main/java/mezz/jei/api/recipe/IFocus.java @@ -1,6 +1,5 @@ package mezz.jei.api.recipe; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.gui.IGuiIngredient; @@ -30,6 +29,5 @@ enum Mode { * When a player looks up the uses for an item, that item is an {@link Mode#INPUT} focus. * When the mode is {@link Mode#NONE} there is no focus, the recipe is being browsed as part of a category. */ - @Nonnull Mode getMode(); } diff --git a/src/main/java/mezz/jei/api/recipe/IRecipeCategory.java b/src/main/java/mezz/jei/api/recipe/IRecipeCategory.java index 6e71b08fd..078bee9e2 100644 --- a/src/main/java/mezz/jei/api/recipe/IRecipeCategory.java +++ b/src/main/java/mezz/jei/api/recipe/IRecipeCategory.java @@ -6,8 +6,6 @@ import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; -import javax.annotation.Nonnull; - /** * Defines a category of recipe, (i.e. Crafting Table Recipe, Furnace Recipe). * Handles setting up the GUI for its recipe category in {@link #setRecipe(IRecipeLayout, IRecipeWrapper)}. @@ -24,20 +22,17 @@ public interface IRecipeCategory { * @see IRecipeHandler#getRecipeCategoryUid(Object) * @see VanillaRecipeCategoryUid */ - @Nonnull String getUid(); /** * Returns the localized name for this recipe type. * Drawn at the top of the recipe GUI pages for this category. */ - @Nonnull String getTitle(); /** * Returns the drawable background for a single recipe in this category. */ - @Nonnull IDrawable getBackground(); /** @@ -45,7 +40,7 @@ public interface IRecipeCategory { * @see IDrawable for a simple class for drawing things. * @see IGuiHelper for useful functions. */ - void drawExtras(@Nonnull Minecraft minecraft); + void drawExtras(Minecraft minecraft); /** * Draw any animations like progress bars or flashy effects. @@ -53,11 +48,11 @@ public interface IRecipeCategory { * @see IDrawableAnimated for a simple class for drawing animated things. * @see IGuiHelper for useful functions. */ - void drawAnimations(@Nonnull Minecraft minecraft); + void drawAnimations(Minecraft minecraft); /** * Set the {@link IRecipeLayout} properties from the {@link IRecipeWrapper}. */ - void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull T recipeWrapper); + void setRecipe(IRecipeLayout recipeLayout, T recipeWrapper); } diff --git a/src/main/java/mezz/jei/api/recipe/IRecipeHandler.java b/src/main/java/mezz/jei/api/recipe/IRecipeHandler.java index e36e475aa..fdc700d68 100644 --- a/src/main/java/mezz/jei/api/recipe/IRecipeHandler.java +++ b/src/main/java/mezz/jei/api/recipe/IRecipeHandler.java @@ -1,7 +1,5 @@ package mezz.jei.api.recipe; -import javax.annotation.Nonnull; - import mezz.jei.api.IModRegistry; import mezz.jei.api.IRecipeRegistry; @@ -19,7 +17,6 @@ public interface IRecipeHandler { /** * Returns the class of the Recipe handled by this IRecipeHandler. */ - @Nonnull Class getRecipeClass(); /** @@ -28,7 +25,6 @@ public interface IRecipeHandler { * @deprecated since 3.5.0. Use {@link #getRecipeCategoryUid(Object)} */ @Deprecated - @Nonnull String getRecipeCategoryUid(); /** @@ -39,17 +35,15 @@ public interface IRecipeHandler { * @see IRecipeCategory#getUid() * @see VanillaRecipeCategoryUid */ - @Nonnull - String getRecipeCategoryUid(@Nonnull T recipe); + String getRecipeCategoryUid(T recipe); /** * Returns a recipe wrapper for the given recipe. */ - @Nonnull - IRecipeWrapper getRecipeWrapper(@Nonnull T recipe); + IRecipeWrapper getRecipeWrapper(T recipe); /** * Returns true if a recipe is valid and can be used. */ - boolean isRecipeValid(@Nonnull T recipe); + boolean isRecipeValid(T recipe); } diff --git a/src/main/java/mezz/jei/api/recipe/IRecipeWrapper.java b/src/main/java/mezz/jei/api/recipe/IRecipeWrapper.java index 7f4f62b37..ae51194f7 100644 --- a/src/main/java/mezz/jei/api/recipe/IRecipeWrapper.java +++ b/src/main/java/mezz/jei/api/recipe/IRecipeWrapper.java @@ -1,15 +1,14 @@ package mezz.jei.api.recipe; +import javax.annotation.Nullable; +import java.util.List; + import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; import net.minecraft.client.Minecraft; import net.minecraftforge.fluids.FluidStack; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.List; - /** * A wrapper around a normal recipe with methods that allow JEI can make sense of it. * Plugins implement these to wrap each type of recipe they have. @@ -53,14 +52,14 @@ public interface IRecipeWrapper { * @see IDrawable for a simple class for drawing things. * @see IGuiHelper for useful functions. */ - void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY); + void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY); /** * Draw animations involving the recipe. Can be disabled in the config. * @see IDrawableAnimated for a simple class for drawing animated things. * @see IGuiHelper for useful functions. */ - void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight); + void drawAnimations(Minecraft minecraft, int recipeWidth, int recipeHeight); /** * Get the tooltip for whatever's under the mouse. @@ -83,5 +82,5 @@ public interface IRecipeWrapper { * @return true if the click was handled, false otherwise * @since JEI 2.19.0 */ - boolean handleClick(@Nonnull Minecraft minecraft, int mouseX, int mouseY, int mouseButton); + boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton); } diff --git a/src/main/java/mezz/jei/api/recipe/IStackHelper.java b/src/main/java/mezz/jei/api/recipe/IStackHelper.java index 825c98b75..1dc29fe24 100644 --- a/src/main/java/mezz/jei/api/recipe/IStackHelper.java +++ b/src/main/java/mezz/jei/api/recipe/IStackHelper.java @@ -1,6 +1,5 @@ package mezz.jei.api.recipe; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; @@ -15,19 +14,16 @@ public interface IStackHelper { /** * Returns all the subtypes of itemStack if it has a wildcard meta value. */ - @Nonnull - List getSubtypes(@Nonnull ItemStack itemStack); + List getSubtypes(ItemStack itemStack); /** * Expands an Iterable, which may contain ItemStacks or more Iterables, and * returns all the subtypes of itemStacks if they have wildcard meta value. */ - @Nonnull - List getAllSubtypes(@Nonnull Iterable stacks); + List getAllSubtypes(Iterable stacks); /** * Flattens ItemStacks, OreDict Strings, and Iterables into a list of ItemStacks. */ - @Nonnull List toItemStackList(@Nullable Object stacks); } diff --git a/src/main/java/mezz/jei/api/recipe/package-info.java b/src/main/java/mezz/jei/api/recipe/package-info.java new file mode 100644 index 000000000..e6658865f --- /dev/null +++ b/src/main/java/mezz/jei/api/recipe/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.api.recipe; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file 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 49307f221..60fcbaf25 100644 --- a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java +++ b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferError.java @@ -1,7 +1,5 @@ package mezz.jei.api.recipe.transfer; -import javax.annotation.Nonnull; - import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; @@ -28,11 +26,10 @@ enum Type { USER_FACING } - @Nonnull Type getType(); /** * Called on {@link Type#USER_FACING} errors. */ - void showError(@Nonnull Minecraft minecraft, int mouseX, int mouseY, @Nonnull IRecipeLayout recipeLayout, int recipeX, int recipeY); + void showError(Minecraft minecraft, int mouseX, int mouseY, IRecipeLayout recipeLayout, int recipeX, int recipeY); } diff --git a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandler.java b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandler.java index cb6f55d4e..aa7a8c9e2 100644 --- a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandler.java +++ b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandler.java @@ -1,13 +1,11 @@ package mezz.jei.api.recipe.transfer; -import javax.annotation.Nonnull; import javax.annotation.Nullable; +import mezz.jei.api.gui.IRecipeLayout; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import mezz.jei.api.gui.IRecipeLayout; - /** * A recipe transfer handler moves items into a crafting area, based on the items in a recipe. * @@ -37,5 +35,5 @@ public interface IRecipeTransferHandler { * @since JEI 2.20.0 */ @Nullable - IRecipeTransferError transferRecipe(@Nonnull C container, @Nonnull IRecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer, boolean doTransfer); + IRecipeTransferError transferRecipe(C container, IRecipeLayout recipeLayout, EntityPlayer player, boolean maxTransfer, boolean doTransfer); } diff --git a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandlerHelper.java b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandlerHelper.java index 307651779..e3ee3e5dd 100644 --- a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandlerHelper.java +++ b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferHandlerHelper.java @@ -1,6 +1,5 @@ package mezz.jei.api.recipe.transfer; -import javax.annotation.Nonnull; import java.util.Collection; import mezz.jei.api.IJeiHelpers; @@ -23,7 +22,7 @@ public interface IRecipeTransferHandlerHelper { * * @param tooltipMessage the message to show on the tooltip for the recipe transfer button. */ - IRecipeTransferError createUserErrorWithTooltip(@Nonnull String tooltipMessage); + IRecipeTransferError createUserErrorWithTooltip(String tooltipMessage); /** * Create an error with type {@link Type#USER_FACING} that shows a tooltip and highlights missing item slots. @@ -32,5 +31,5 @@ public interface IRecipeTransferHandlerHelper { * @param missingItemSlots the slot indexes for items that are missing. Must not be empty. * Slots are indexed according to {@link IGuiItemStackGroup#getGuiIngredients()}. */ - IRecipeTransferError createUserErrorForSlots(@Nonnull String tooltipMessage, @Nonnull Collection missingItemSlots); + IRecipeTransferError createUserErrorForSlots(String tooltipMessage, Collection missingItemSlots); } diff --git a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferRegistry.java b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferRegistry.java index 65394fa45..82060f4ed 100644 --- a/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferRegistry.java +++ b/src/main/java/mezz/jei/api/recipe/transfer/IRecipeTransferRegistry.java @@ -1,7 +1,5 @@ package mezz.jei.api.recipe.transfer; -import javax.annotation.Nonnull; - import mezz.jei.api.IModRegistry; import net.minecraft.inventory.Container; @@ -20,19 +18,19 @@ public interface IRecipeTransferRegistry { * @param inventorySlotStart the first slot of the available inventory (usually player inventory) * @param inventorySlotCount the number of slots of the available inventory */ - void addRecipeTransferHandler(@Nonnull Class containerClass, @Nonnull String recipeCategoryUid, int recipeSlotStart, int recipeSlotCount, int inventorySlotStart, int inventorySlotCount); + void addRecipeTransferHandler(Class containerClass, String recipeCategoryUid, int recipeSlotStart, int recipeSlotCount, int inventorySlotStart, int inventorySlotCount); /** * Advanced method for adding a recipe transfer handler. * * Use this when recipe slots or inventory slots are spread out in different number ranges. */ - void addRecipeTransferHandler(@Nonnull IRecipeTransferInfo recipeTransferInfo); + void addRecipeTransferHandler(IRecipeTransferInfo recipeTransferInfo); /** * Complete control over recipe transfer. * * Use this when the container has a non-standard inventory or crafting area. */ - void addRecipeTransferHandler(@Nonnull IRecipeTransferHandler recipeTransferHandler); + void addRecipeTransferHandler(IRecipeTransferHandler recipeTransferHandler); } diff --git a/src/main/java/mezz/jei/api/recipe/transfer/package-info.java b/src/main/java/mezz/jei/api/recipe/transfer/package-info.java new file mode 100644 index 000000000..a40ef1db7 --- /dev/null +++ b/src/main/java/mezz/jei/api/recipe/transfer/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.api.recipe.transfer; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/api/recipe/wrapper/ICraftingRecipeWrapper.java b/src/main/java/mezz/jei/api/recipe/wrapper/ICraftingRecipeWrapper.java index 919cd42e5..a4ec8794a 100644 --- a/src/main/java/mezz/jei/api/recipe/wrapper/ICraftingRecipeWrapper.java +++ b/src/main/java/mezz/jei/api/recipe/wrapper/ICraftingRecipeWrapper.java @@ -1,12 +1,11 @@ package mezz.jei.api.recipe.wrapper; +import java.util.List; + import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import net.minecraft.item.ItemStack; -import javax.annotation.Nonnull; -import java.util.List; - /** * Implement this interface instead of just {@link IRecipeWrapper} to have your recipe wrapper work as part of the * {@link VanillaRecipeCategoryUid#CRAFTING} recipe category as a shapeless recipe. @@ -15,11 +14,9 @@ */ public interface ICraftingRecipeWrapper extends IRecipeWrapper { - @Nonnull @Override List getInputs(); - @Nonnull @Override List getOutputs(); diff --git a/src/main/java/mezz/jei/api/recipe/wrapper/package-info.java b/src/main/java/mezz/jei/api/recipe/wrapper/package-info.java new file mode 100644 index 000000000..7d2b633d4 --- /dev/null +++ b/src/main/java/mezz/jei/api/recipe/wrapper/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.api.recipe.wrapper; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/config/Config.java b/src/main/java/mezz/jei/config/Config.java index 6ea72f2cf..3c61661fa 100644 --- a/src/main/java/mezz/jei/config/Config.java +++ b/src/main/java/mezz/jei/config/Config.java @@ -1,7 +1,7 @@ package mezz.jei.config; -import javax.annotation.Nonnull; -import java.awt.*; +import javax.annotation.Nullable; +import java.awt.Color; import java.io.File; import java.util.Collections; import java.util.HashSet; @@ -29,6 +29,7 @@ public class Config { public static final String CATEGORY_SEARCH_COLORS = "searchColors"; private static LocalizedConfiguration config; + @Nullable private static Configuration worldConfig; private static LocalizedConfiguration itemBlacklistConfig; private static LocalizedConfiguration searchColorsConfig; @@ -56,7 +57,6 @@ public class Config { private static boolean overlayEnabled = defaultOverlayEnabled; private static boolean cheatItemsEnabled = defaultCheatItemsEnabled; private static boolean editModeEnabled = defaultEditModeEnabled; - @Nonnull private static String filterText = defaultFilterText; // item blacklist @@ -74,12 +74,14 @@ public static boolean isOverlayEnabled() { public static void toggleOverlayEnabled() { overlayEnabled = !overlayEnabled; - final String worldCategory = SessionData.getWorldUid(); - Property property = worldConfig.get(worldCategory, "overlayEnabled", overlayEnabled); - property.set(overlayEnabled); + if (worldConfig != null) { + final String worldCategory = SessionData.getWorldUid(); + Property property = worldConfig.get(worldCategory, "overlayEnabled", overlayEnabled); + property.set(overlayEnabled); - if (worldConfig.hasChanged()) { - worldConfig.save(); + if (worldConfig.hasChanged()) { + worldConfig.save(); + } } } @@ -139,7 +141,7 @@ public static boolean isPrefixRequiredForColorSearch() { return prefixRequiredForColorSearch; } - public static boolean setFilterText(@Nonnull String filterText) { + public static boolean setFilterText(String filterText) { String lowercaseFilterText = filterText.toLowerCase(); if (Config.filterText.equals(lowercaseFilterText)) { return false; @@ -149,18 +151,19 @@ public static boolean setFilterText(@Nonnull String filterText) { return true; } - @Nonnull public static String getFilterText() { return filterText; } public static void saveFilterText() { - final String worldCategory = SessionData.getWorldUid(); - Property property = worldConfig.get(worldCategory, "filterText", defaultFilterText); - property.set(Config.filterText); + if (worldConfig != null) { + final String worldCategory = SessionData.getWorldUid(); + Property property = worldConfig.get(worldCategory, "filterText", defaultFilterText); + property.set(Config.filterText); - if (worldConfig.hasChanged()) { - worldConfig.save(); + if (worldConfig.hasChanged()) { + worldConfig.save(); + } } } @@ -168,11 +171,12 @@ public static LocalizedConfiguration getConfig() { return config; } + @Nullable public static Configuration getWorldConfig() { return worldConfig; } - public static void preInit(@Nonnull FMLPreInitializationEvent event) { + public static void preInit(FMLPreInitializationEvent event) { jeiConfigurationDir = new File(event.getModConfigurationDirectory(), Constants.MOD_ID); if (!jeiConfigurationDir.exists()) { @@ -344,6 +348,10 @@ private static boolean syncItemBlacklistConfig() { } private static boolean syncWorldConfig() { + if (worldConfig == null) { + return false; + } + boolean needsReload = false; final String worldCategory = SessionData.getWorldUid(); @@ -422,21 +430,21 @@ private static boolean updateBlacklist() { return changed; } - public static void addItemToConfigBlacklist(@Nonnull ItemStack itemStack, @Nonnull ItemBlacklistType blacklistType) { + public static void addItemToConfigBlacklist(ItemStack itemStack, ItemBlacklistType blacklistType) { final String uid = getItemStackUid(itemStack, blacklistType); if (itemBlacklist.add(uid)) { updateBlacklist(); } } - public static void removeItemFromConfigBlacklist(@Nonnull ItemStack itemStack, @Nonnull ItemBlacklistType blacklistType) { + public static void removeItemFromConfigBlacklist(ItemStack itemStack, ItemBlacklistType blacklistType) { final String uid = getItemStackUid(itemStack, blacklistType); if (itemBlacklist.remove(uid)) { updateBlacklist(); } } - public static boolean isItemOnConfigBlacklist(@Nonnull ItemStack itemStack) { + public static boolean isItemOnConfigBlacklist(ItemStack itemStack) { for (ItemBlacklistType itemBlacklistType : ItemBlacklistType.VALUES) { if (isItemOnConfigBlacklist(itemStack, itemBlacklistType)) { return true; @@ -445,12 +453,12 @@ public static boolean isItemOnConfigBlacklist(@Nonnull ItemStack itemStack) { return false; } - public static boolean isItemOnConfigBlacklist(@Nonnull ItemStack itemStack, @Nonnull ItemBlacklistType blacklistType) { + public static boolean isItemOnConfigBlacklist(ItemStack itemStack, ItemBlacklistType blacklistType) { final String uid = getItemStackUid(itemStack, blacklistType); return itemBlacklist.contains(uid); } - private static String getItemStackUid(@Nonnull ItemStack itemStack, @Nonnull ItemBlacklistType blacklistType) { + private static String getItemStackUid(ItemStack itemStack, ItemBlacklistType blacklistType) { StackHelper stackHelper = Internal.getStackHelper(); switch (blacklistType) { case ITEM: diff --git a/src/main/java/mezz/jei/config/JEIModConfigGui.java b/src/main/java/mezz/jei/config/JEIModConfigGui.java index 4ed228c8f..86f1952ab 100644 --- a/src/main/java/mezz/jei/config/JEIModConfigGui.java +++ b/src/main/java/mezz/jei/config/JEIModConfigGui.java @@ -7,6 +7,7 @@ import mezz.jei.util.Translator; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.ConfigElement; import net.minecraftforge.common.config.Configuration; @@ -23,7 +24,12 @@ public JEIModConfigGui(GuiScreen parent) { /** Don't return to a RecipesGui, it will not be valid after configs are changed. */ private static GuiScreen getParent(GuiScreen parent) { if (parent instanceof RecipesGui) { - return ((RecipesGui) parent).getParentScreen(); + GuiScreen parentScreen = ((RecipesGui) parent).getParentScreen(); + if (parentScreen != null) { + return parentScreen; + } else { + return new GuiInventory(parent.mc.thePlayer); + } } return parent; } diff --git a/src/main/java/mezz/jei/config/JEIModGuiFactory.java b/src/main/java/mezz/jei/config/JEIModGuiFactory.java index c338725f2..07c9242c9 100644 --- a/src/main/java/mezz/jei/config/JEIModGuiFactory.java +++ b/src/main/java/mezz/jei/config/JEIModGuiFactory.java @@ -1,12 +1,10 @@ package mezz.jei.config; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Set; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; - import net.minecraftforge.fml.client.IModGuiFactory; public class JEIModGuiFactory implements IModGuiFactory { @@ -15,7 +13,6 @@ public void initialize(Minecraft minecraftInstance) { } - @Nonnull @Override public Class mainConfigGuiClass() { return JEIModConfigGui.class; diff --git a/src/main/java/mezz/jei/config/KeyBindings.java b/src/main/java/mezz/jei/config/KeyBindings.java index c2523fcfb..a3de57ec5 100644 --- a/src/main/java/mezz/jei/config/KeyBindings.java +++ b/src/main/java/mezz/jei/config/KeyBindings.java @@ -1,29 +1,19 @@ package mezz.jei.config; -import javax.annotation.Nonnull; - import net.minecraft.client.settings.KeyBinding; - import net.minecraftforge.client.settings.KeyConflictContext; import net.minecraftforge.client.settings.KeyModifier; import net.minecraftforge.fml.client.registry.ClientRegistry; - import org.lwjgl.input.Keyboard; public class KeyBindings { private static final String categoryName = Constants.MOD_ID + " (" + Constants.NAME + ')'; - @Nonnull public static final KeyBinding toggleOverlay = new KeyBinding("key.jei.toggleOverlay", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_O, categoryName); - @Nonnull public static final KeyBinding focusSearch = new KeyBinding("key.jei.focusSearch", KeyConflictContext.GUI, KeyModifier.CONTROL, Keyboard.KEY_F, categoryName); - @Nonnull public static final KeyBinding showRecipe = new KeyBinding("key.jei.showRecipe", KeyConflictContext.GUI, Keyboard.KEY_R, categoryName); - @Nonnull public static final KeyBinding showUses = new KeyBinding("key.jei.showUses", KeyConflictContext.GUI, Keyboard.KEY_U, categoryName); - @Nonnull public static final KeyBinding recipeBack = new KeyBinding("key.jei.recipeBack", KeyConflictContext.GUI, Keyboard.KEY_BACK, categoryName); - @Nonnull public static final KeyBinding toggleCheatMode = new KeyBinding("key.jei.toggleCheatMode", KeyConflictContext.GUI, Keyboard.KEY_NONE, categoryName); public static void init() { diff --git a/src/main/java/mezz/jei/config/package-info.java b/src/main/java/mezz/jei/config/package-info.java new file mode 100644 index 000000000..4f4de5593 --- /dev/null +++ b/src/main/java/mezz/jei/config/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.config; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/debug/package-info.java b/src/main/java/mezz/jei/debug/package-info.java new file mode 100644 index 000000000..8236ceea4 --- /dev/null +++ b/src/main/java/mezz/jei/debug/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.debug; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/gui/CraftingGridHelper.java b/src/main/java/mezz/jei/gui/CraftingGridHelper.java index 3d3050948..e1a9caf9a 100644 --- a/src/main/java/mezz/jei/gui/CraftingGridHelper.java +++ b/src/main/java/mezz/jei/gui/CraftingGridHelper.java @@ -1,14 +1,12 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.List; -import net.minecraft.item.ItemStack; - import mezz.jei.Internal; import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IGuiItemStackGroup; +import net.minecraft.item.ItemStack; public class CraftingGridHelper implements ICraftingGridHelper { @@ -21,7 +19,7 @@ public CraftingGridHelper(int craftInputSlot1, int craftOutputSlot) { } @Override - public void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List input) { + public void setInput(IGuiItemStackGroup guiItemStacks, List input) { int width, height; if (input.size() > 4) { width = height = 3; @@ -35,7 +33,7 @@ public void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List in } @Override - public void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List input, int width, int height) { + public void setInput(IGuiItemStackGroup guiItemStacks, List input, int width, int height) { for (int i = 0; i < input.size(); i++) { Object recipeItem = input.get(i); int index = getCraftingIndex(i, width, height); @@ -74,11 +72,11 @@ private int getCraftingIndex(int i, int width, int height) { } @Override - public void setOutput(@Nonnull IGuiItemStackGroup guiItemStacks, @Nonnull List output) { + public void setOutput(IGuiItemStackGroup guiItemStacks, List output) { guiItemStacks.set(craftOutputSlot, output); } - private void setInput(@Nonnull IGuiItemStackGroup guiItemStacks, int inputIndex, @Nonnull Collection input) { + private void setInput(IGuiItemStackGroup guiItemStacks, int inputIndex, Collection input) { guiItemStacks.set(craftInputSlot1 + inputIndex, input); } diff --git a/src/main/java/mezz/jei/gui/DrawableAnimated.java b/src/main/java/mezz/jei/gui/DrawableAnimated.java index e696820fd..63662c75c 100644 --- a/src/main/java/mezz/jei/gui/DrawableAnimated.java +++ b/src/main/java/mezz/jei/gui/DrawableAnimated.java @@ -1,12 +1,9 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; - -import net.minecraft.client.Minecraft; - import mezz.jei.api.gui.IDrawableAnimated; import mezz.jei.api.gui.IDrawableStatic; import mezz.jei.api.gui.ITickTimer; +import net.minecraft.client.Minecraft; public class DrawableAnimated implements IDrawableAnimated { private final IDrawableStatic drawable; @@ -30,12 +27,12 @@ public int getHeight() { } @Override - public void draw(@Nonnull Minecraft minecraft) { + public void draw(Minecraft minecraft) { draw(minecraft, 0, 0); } @Override - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset) { + public void draw(Minecraft minecraft, int xOffset, int yOffset) { int maskLeft = 0; int maskRight = 0; int maskTop = 0; diff --git a/src/main/java/mezz/jei/gui/DrawableBlank.java b/src/main/java/mezz/jei/gui/DrawableBlank.java index ba273df2f..455a2e997 100644 --- a/src/main/java/mezz/jei/gui/DrawableBlank.java +++ b/src/main/java/mezz/jei/gui/DrawableBlank.java @@ -1,11 +1,8 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; - -import net.minecraft.client.Minecraft; - import mezz.jei.api.gui.IDrawableAnimated; import mezz.jei.api.gui.IDrawableStatic; +import net.minecraft.client.Minecraft; public class DrawableBlank implements IDrawableStatic, IDrawableAnimated { private final int width; @@ -27,17 +24,17 @@ public int getHeight() { } @Override - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight) { + public void draw(Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight) { } @Override - public void draw(@Nonnull Minecraft minecraft) { + public void draw(Minecraft minecraft) { } @Override - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset) { + public void draw(Minecraft minecraft, int xOffset, int yOffset) { } } diff --git a/src/main/java/mezz/jei/gui/DrawableResource.java b/src/main/java/mezz/jei/gui/DrawableResource.java index 1b41c2f8f..9ff3d32e9 100644 --- a/src/main/java/mezz/jei/gui/DrawableResource.java +++ b/src/main/java/mezz/jei/gui/DrawableResource.java @@ -1,17 +1,12 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; - +import mezz.jei.api.gui.IDrawableStatic; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; - import net.minecraftforge.fml.client.config.GuiUtils; -import mezz.jei.api.gui.IDrawableStatic; - public class DrawableResource implements IDrawableStatic { - @Nonnull private final ResourceLocation resourceLocation; private final int u; private final int v; @@ -22,11 +17,11 @@ public class DrawableResource implements IDrawableStatic { private final int paddingLeft; private final int paddingRight; - public DrawableResource(@Nonnull ResourceLocation resourceLocation, int u, int v, int width, int height) { + public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height) { this(resourceLocation, u, v, width, height, 0, 0, 0, 0); } - public DrawableResource(@Nonnull ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) { + public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) { this.resourceLocation = resourceLocation; this.u = u; @@ -51,17 +46,17 @@ public int getHeight() { } @Override - public void draw(@Nonnull Minecraft minecraft) { + public void draw(Minecraft minecraft) { draw(minecraft, 0, 0); } @Override - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset) { + public void draw(Minecraft minecraft, int xOffset, int yOffset) { draw(minecraft, xOffset, yOffset, 0, 0, 0, 0); } @Override - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight) { + public void draw(Minecraft minecraft, int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight) { minecraft.getTextureManager().bindTexture(this.resourceLocation); int x = xOffset + this.paddingLeft + maskLeft; diff --git a/src/main/java/mezz/jei/gui/Focus.java b/src/main/java/mezz/jei/gui/Focus.java index 8d808b381..5aa150f89 100644 --- a/src/main/java/mezz/jei/gui/Focus.java +++ b/src/main/java/mezz/jei/gui/Focus.java @@ -1,15 +1,13 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.recipe.IFocus; public class Focus implements IFocus { - @Nonnull - private Mode mode; + private final Mode mode; @Nullable - private V value; + private final V value; private boolean allowsCheating; public Focus(@Nullable V value) { @@ -17,7 +15,7 @@ public Focus(@Nullable V value) { this.value = value; } - public Focus(@Nonnull Mode mode, @Nullable V value) { + public Focus(Mode mode, @Nullable V value) { this.mode = mode; this.value = value; } @@ -28,7 +26,6 @@ public V getValue() { return value; } - @Nonnull @Override public Mode getMode() { return mode; diff --git a/src/main/java/mezz/jei/gui/GuiHelper.java b/src/main/java/mezz/jei/gui/GuiHelper.java index beb676e90..bd433360d 100644 --- a/src/main/java/mezz/jei/gui/GuiHelper.java +++ b/src/main/java/mezz/jei/gui/GuiHelper.java @@ -1,10 +1,7 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import net.minecraft.util.ResourceLocation; - import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IDrawableAnimated; @@ -12,6 +9,7 @@ import mezz.jei.api.gui.ITickTimer; import mezz.jei.util.Log; import mezz.jei.util.TickTimer; +import net.minecraft.util.ResourceLocation; public class GuiHelper implements IGuiHelper { private final IDrawableStatic slotDrawable; @@ -21,7 +19,6 @@ public GuiHelper() { slotDrawable = createDrawable(location, 55, 16, 18, 18); } - @Nonnull @Override public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocation, int u, int v, int width, int height) { if (resourceLocation == null) { @@ -31,7 +28,6 @@ public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocatio return new DrawableResource(resourceLocation, u, v, width, height); } - @Nonnull @Override public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) { if (resourceLocation == null) { @@ -41,7 +37,6 @@ public IDrawableStatic createDrawable(@Nullable ResourceLocation resourceLocatio return new DrawableResource(resourceLocation, u, v, width, height, paddingTop, paddingBottom, paddingLeft, paddingRight); } - @Nonnull @Override public IDrawableAnimated createAnimatedDrawable(@Nullable IDrawableStatic drawable, int ticksPerCycle, @Nullable IDrawableAnimated.StartDirection startDirection, boolean inverted) { if (drawable == null) { @@ -75,25 +70,21 @@ public IDrawableAnimated createAnimatedDrawable(@Nullable IDrawableStatic drawab return new DrawableAnimated(drawable, tickTimer, startDirection); } - @Nonnull @Override public IDrawableStatic getSlotDrawable() { return slotDrawable; } - @Nonnull @Override public IDrawableStatic createBlankDrawable(int width, int height) { return new DrawableBlank(width, height); } - @Nonnull @Override public ICraftingGridHelper createCraftingGridHelper(int craftInputSlot1, int craftOutputSlot) { return new CraftingGridHelper(craftInputSlot1, craftOutputSlot); } - @Nonnull @Override public ITickTimer createTickTimer(int ticksPerCycle, int maxValue, boolean countDown) { return new TickTimer(ticksPerCycle, maxValue, countDown); diff --git a/src/main/java/mezz/jei/gui/GuiProperties.java b/src/main/java/mezz/jei/gui/GuiProperties.java index 797cd0940..a1d368af1 100644 --- a/src/main/java/mezz/jei/gui/GuiProperties.java +++ b/src/main/java/mezz/jei/gui/GuiProperties.java @@ -1,13 +1,11 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; public class GuiProperties { - @Nonnull private final Class guiClass; private final int guiLeft; private final int guiTop; @@ -17,7 +15,7 @@ public class GuiProperties { private final int screenHeight; @Nullable - public static GuiProperties create(@Nonnull GuiScreen guiScreen) { + public static GuiProperties create(GuiScreen guiScreen) { if (guiScreen instanceof RecipesGui) { return create((RecipesGui) guiScreen); } else if (guiScreen instanceof GuiContainer) { @@ -27,8 +25,7 @@ public static GuiProperties create(@Nonnull GuiScreen guiScreen) { } } - @Nonnull - public static GuiProperties create(@Nonnull GuiContainer guiContainer) { + public static GuiProperties create(GuiContainer guiContainer) { return new GuiProperties( guiContainer.getClass(), guiContainer.guiLeft, @@ -40,8 +37,7 @@ public static GuiProperties create(@Nonnull GuiContainer guiContainer) { ); } - @Nonnull - public static GuiProperties create(@Nonnull RecipesGui recipesGui) { + public static GuiProperties create(RecipesGui recipesGui) { return new GuiProperties( recipesGui.getClass(), recipesGui.getGuiLeft(), @@ -53,7 +49,7 @@ public static GuiProperties create(@Nonnull RecipesGui recipesGui) { ); } - private GuiProperties(@Nonnull Class guiClass, int guiLeft, int guiTop, int guiXSize, int guiYSize, int screenWidth, int screenHeight) { + private GuiProperties(Class guiClass, int guiLeft, int guiTop, int guiXSize, int guiYSize, int screenWidth, int screenHeight) { this.guiClass = guiClass; this.guiLeft = guiLeft; this.guiTop = guiTop; @@ -63,7 +59,6 @@ private GuiProperties(@Nonnull Class guiClass, int guiLeft, int guiTop, int guiX this.screenHeight = screenHeight; } - @Nonnull public Class getGuiClass() { return guiClass; } diff --git a/src/main/java/mezz/jei/gui/IRecipeGuiLogic.java b/src/main/java/mezz/jei/gui/IRecipeGuiLogic.java index 7fb8df6a2..d9d685b56 100644 --- a/src/main/java/mezz/jei/gui/IRecipeGuiLogic.java +++ b/src/main/java/mezz/jei/gui/IRecipeGuiLogic.java @@ -1,6 +1,5 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.List; @@ -10,7 +9,6 @@ public interface IRecipeGuiLogic { - @Nonnull String getPageString(); void setRecipesPerPage(int recipesPerPage); @@ -29,7 +27,7 @@ public interface IRecipeGuiLogic { void nextPage(); - boolean setFocus(@Nonnull MasterFocus focus); + boolean setFocus(MasterFocus focus); boolean back(); @@ -45,9 +43,7 @@ public interface IRecipeGuiLogic { @Nullable IRecipeCategory getRecipeCategory(); - @Nonnull Collection getRecipeCategoryCraftingItems(); - @Nonnull List getRecipeWidgets(int posX, int posY, int spacingY); } diff --git a/src/main/java/mezz/jei/gui/ItemListOverlay.java b/src/main/java/mezz/jei/gui/ItemListOverlay.java index 5613a49aa..36ffd2a64 100644 --- a/src/main/java/mezz/jei/gui/ItemListOverlay.java +++ b/src/main/java/mezz/jei/gui/ItemListOverlay.java @@ -1,8 +1,8 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -66,11 +66,8 @@ public class ItemListOverlay implements IItemListOverlay, IShowsRecipeFocuses, I private static final int itemStackHeight = GuiItemStackGroup.getHeight(itemStackPadding); private static int firstItemIndex = 0; - @Nonnull private final ItemFilter itemFilter; - @Nonnull private final List> advancedGuiHandlers; - @Nonnull private final Set highlightedStacks = new HashSet(); private final GuiItemStackFastList guiItemStacks = new GuiItemStackFastList(); @@ -93,17 +90,16 @@ public class ItemListOverlay implements IItemListOverlay, IShowsRecipeFocuses, I private GuiProperties guiProperties; @Nullable private List guiAreas; - @Nonnull private List> activeAdvancedGuiHandlers = Collections.emptyList(); private boolean open = false; - public ItemListOverlay(@Nonnull ItemFilter itemFilter, @Nonnull List> advancedGuiHandlers) { + public ItemListOverlay(ItemFilter itemFilter, List> advancedGuiHandlers) { this.itemFilter = itemFilter; this.advancedGuiHandlers = advancedGuiHandlers; } - public void initGui(@Nonnull GuiScreen guiScreen) { + public void initGui(GuiScreen guiScreen) { GuiProperties guiProperties = GuiProperties.create(guiScreen); if (guiProperties == null) { return; @@ -171,13 +167,12 @@ public void initGui(@Nonnull GuiScreen guiScreen) { open(); } - private static boolean isSearchBarCentered(@Nonnull GuiProperties guiProperties) { + private static boolean isSearchBarCentered(GuiProperties guiProperties) { return Config.isCenterSearchBarEnabled() && guiProperties.getGuiTop() + guiProperties.getGuiYSize() + searchHeight < guiProperties.getScreenHeight(); } - @Nonnull - private List> getActiveAdvancedGuiHandlers(@Nonnull GuiScreen guiScreen) { + private List> getActiveAdvancedGuiHandlers(GuiScreen guiScreen) { List> activeAdvancedGuiHandler = new ArrayList>(); if (guiScreen instanceof GuiContainer) { GuiContainer guiContainer = (GuiContainer) guiScreen; @@ -209,7 +204,7 @@ private List getGuiAreas(GuiContainer guiCon return null; } - public void updateGui(@Nonnull GuiScreen guiScreen) { + public void updateGui(GuiScreen guiScreen) { if (this.guiProperties == null) { initGui(guiScreen); } else { @@ -229,7 +224,7 @@ public void updateGui(@Nonnull GuiScreen guiScreen) { } } - private static void createItemButtons(@Nonnull GuiItemStackFastList guiItemStacks, @Nullable List guiAreas, final int xStart, final int yStart, final int columnCount, final int rowCount) { + private static void createItemButtons(GuiItemStackFastList guiItemStacks, @Nullable List guiAreas, final int xStart, final int yStart, final int columnCount, final int rowCount) { guiItemStacks.clear(); for (int row = 0; row < rowCount; row++) { @@ -308,7 +303,7 @@ private void previousPage() { updateLayout(); } - public void drawScreen(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { + public void drawScreen(Minecraft minecraft, int mouseX, int mouseY) { if (!isOpen()) { return; } @@ -360,7 +355,7 @@ private boolean shouldShowDeleteItemTooltip(Minecraft minecraft) { return false; } - public void drawTooltips(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { + public void drawTooltips(Minecraft minecraft, int mouseX, int mouseY) { if (!isOpen()) { return; } @@ -491,8 +486,10 @@ private boolean handleMouseClickedButtons(int mouseX, int mouseY) { } else if (configButton.mousePressed(minecraft, mouseX, mouseY)) { close(); configButton.playPressSound(minecraft.getSoundHandler()); - GuiScreen configScreen = new JEIModConfigGui(minecraft.currentScreen); - minecraft.displayGuiScreen(configScreen); + if (minecraft.currentScreen != null) { + GuiScreen configScreen = new JEIModConfigGui(minecraft.currentScreen); + minecraft.displayGuiScreen(configScreen); + } return true; } return false; @@ -532,18 +529,18 @@ public boolean onKeyPressed(char typedChar, int keyCode) { return false; } - private static int getItemButtonXSpace(@Nonnull GuiProperties guiProperties) { + private static int getItemButtonXSpace(GuiProperties guiProperties) { return guiProperties.getScreenWidth() - (guiProperties.getGuiLeft() + guiProperties.getGuiXSize() + (2 * borderPadding)); } - private static int getItemButtonYSpace(@Nonnull GuiProperties guiProperties) { + private static int getItemButtonYSpace(GuiProperties guiProperties) { if (isSearchBarCentered(guiProperties)) { return guiProperties.getScreenHeight() - (buttonSize + (3 * borderPadding)); } return guiProperties.getScreenHeight() - (buttonSize + searchHeight + 2 + (4 * borderPadding)); } - private int getColumns(@Nonnull GuiProperties guiProperties) { + private int getColumns(GuiProperties guiProperties) { return getItemButtonXSpace(guiProperties) / itemStackWidth; } @@ -613,13 +610,11 @@ public void setFilterText(@Nullable String filterText) { } } - @Nonnull @Override public String getFilterText() { return Config.getFilterText(); } - @Nonnull @Override public ImmutableList getVisibleStacks() { ImmutableList.Builder visibleStacks = ImmutableList.builder(); @@ -632,14 +627,13 @@ public ImmutableList getVisibleStacks() { return visibleStacks.build(); } - @Nonnull @Override public ImmutableList getFilteredStacks() { return itemFilter.getItemStacks(); } @Override - public void highlightStacks(@Nonnull Collection stacks) { + public void highlightStacks(Collection stacks) { highlightedStacks.clear(); highlightedStacks.addAll(stacks); } diff --git a/src/main/java/mezz/jei/gui/MasterFocus.java b/src/main/java/mezz/jei/gui/MasterFocus.java index 01d72d039..ebe834017 100644 --- a/src/main/java/mezz/jei/gui/MasterFocus.java +++ b/src/main/java/mezz/jei/gui/MasterFocus.java @@ -1,6 +1,5 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -23,44 +22,46 @@ import net.minecraftforge.fluids.FluidUtil; public class MasterFocus { - public static MasterFocus create(IFocus focus) { + public static MasterFocus create(IRecipeRegistry recipeRegistry, IFocus focus) { MasterFocus masterFocus; Object value = focus.getValue(); if (value instanceof ItemStack) { - masterFocus = new MasterFocus((ItemStack) value); + masterFocus = new MasterFocus(recipeRegistry, (ItemStack) value); } else if (value instanceof FluidStack) { - masterFocus = new MasterFocus((FluidStack) value); + masterFocus = new MasterFocus(recipeRegistry, (FluidStack) value); } else { - masterFocus = new MasterFocus(); + masterFocus = new MasterFocus(recipeRegistry); } masterFocus.setMode(focus.getMode()); return masterFocus; } + private final IRecipeRegistry recipeRegistry; private final ItemStack itemStack; private final FluidStack fluidStack; - @Nonnull private IFocus.Mode mode = IFocus.Mode.NONE; - private boolean allowsCheating = false; - public MasterFocus() { + public MasterFocus(IRecipeRegistry recipeRegistry) { + this.recipeRegistry = recipeRegistry; this.itemStack = null; this.fluidStack = null; } - public MasterFocus(ItemStack itemStack) { + public MasterFocus(IRecipeRegistry recipeRegistry, ItemStack itemStack) { + this.recipeRegistry = recipeRegistry; this.itemStack = itemStack; this.fluidStack = getFluidFromItemStack(itemStack); } - public MasterFocus(FluidStack fluidStack) { + public MasterFocus(IRecipeRegistry recipeRegistry, FluidStack fluidStack) { + this.recipeRegistry = recipeRegistry; this.itemStack = null; this.fluidStack = fluidStack; } @Nullable - private static FluidStack getFluidFromItemStack(@Nonnull ItemStack stack) { + private static FluidStack getFluidFromItemStack(ItemStack stack) { Item item = stack.getItem(); if (item instanceof ItemBlock) { Block block = ((ItemBlock) item).getBlock(); @@ -86,30 +87,19 @@ public ItemStack getItemStack() { return itemStack; } - public void setMode(@Nonnull IFocus.Mode mode) { + public void setMode(IFocus.Mode mode) { this.mode = mode; } - @Nonnull public IFocus.Mode getMode() { return mode; } - public void setAllowsCheating() { - allowsCheating = true; - } - - public boolean allowsCheating() { - return allowsCheating; - } - - public boolean equalsFocus(@Nonnull MasterFocus other) { + public boolean equalsFocus(MasterFocus other) { return ItemStack.areItemStacksEqual(this.itemStack, other.getItemStack()) && fluidStack == other.getFluidStack() && mode == other.getMode(); } - @Nonnull public List getCategories() { - IRecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); if (mode == IFocus.Mode.INPUT) { return getInputCategories(recipeRegistry); } else if (mode == IFocus.Mode.OUTPUT) { @@ -119,8 +109,7 @@ public List getCategories() { } } - @Nonnull - private List getInputCategories(@Nonnull IRecipeRegistry recipeRegistry) { + private List getInputCategories(IRecipeRegistry recipeRegistry) { if (itemStack != null && fluidStack != null) { List categories = new ArrayList(recipeRegistry.getRecipeCategoriesWithInput(itemStack)); categories.addAll(recipeRegistry.getRecipeCategoriesWithInput(fluidStack)); @@ -133,8 +122,7 @@ private List getInputCategories(@Nonnull IRecipeRegistry recipe } } - @Nonnull - private List getOutputCategories(@Nonnull IRecipeRegistry recipeRegistry) { + private List getOutputCategories(IRecipeRegistry recipeRegistry) { if (itemStack != null && fluidStack != null) { List categories = new ArrayList(recipeRegistry.getRecipeCategoriesWithOutput(itemStack)); categories.addAll(recipeRegistry.getRecipeCategoriesWithOutput(fluidStack)); @@ -147,9 +135,7 @@ private List getOutputCategories(@Nonnull IRecipeRegistry recip } } - @Nonnull - public List getRecipes(@Nonnull IRecipeCategory recipeCategory) { - IRecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); + public List getRecipes(IRecipeCategory recipeCategory) { if (mode == IFocus.Mode.INPUT) { return getInputRecipes(recipeRegistry, recipeCategory); } else if (mode == IFocus.Mode.OUTPUT) { @@ -159,9 +145,7 @@ public List getRecipes(@Nonnull IRecipeCategory recipeCategory) { } } - @Nonnull - public Collection getRecipeCategoryCraftingItems(@Nonnull IRecipeCategory recipeCategory) { - IRecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); + public Collection getRecipeCategoryCraftingItems(IRecipeCategory recipeCategory) { Collection craftingItems = recipeRegistry.getCraftingItems(recipeCategory); if (itemStack != null && mode == IFocus.Mode.INPUT) { StackHelper stackHelper = Internal.getStackHelper(); @@ -173,8 +157,7 @@ public Collection getRecipeCategoryCraftingItems(@Nonnull IRecipeCate return craftingItems; } - @Nonnull - private List getInputRecipes(@Nonnull IRecipeRegistry recipeRegistry, @Nonnull IRecipeCategory recipeCategory) { + private List getInputRecipes(IRecipeRegistry recipeRegistry, IRecipeCategory recipeCategory) { if (itemStack != null && fluidStack != null) { List recipes = new ArrayList(recipeRegistry.getRecipesWithInput(recipeCategory, itemStack)); recipes.addAll(recipeRegistry.getRecipesWithInput(recipeCategory, fluidStack)); @@ -187,8 +170,7 @@ private List getInputRecipes(@Nonnull IRecipeRegistry recipeRegistry, @N } } - @Nonnull - private List getOutputRecipes(@Nonnull IRecipeRegistry recipeRegistry, @Nonnull IRecipeCategory recipeCategory) { + private List getOutputRecipes(IRecipeRegistry recipeRegistry, IRecipeCategory recipeCategory) { if (itemStack != null && fluidStack != null) { List recipes = new ArrayList(recipeRegistry.getRecipesWithOutput(recipeCategory, itemStack)); recipes.addAll(recipeRegistry.getRecipesWithOutput(recipeCategory, fluidStack)); diff --git a/src/main/java/mezz/jei/gui/RecipeCategoryCraftingItemsArea.java b/src/main/java/mezz/jei/gui/RecipeCategoryCraftingItemsArea.java index bf34f69d2..3fb1edfed 100644 --- a/src/main/java/mezz/jei/gui/RecipeCategoryCraftingItemsArea.java +++ b/src/main/java/mezz/jei/gui/RecipeCategoryCraftingItemsArea.java @@ -1,6 +1,5 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -23,16 +22,11 @@ * The area drawn on top of the {@link RecipesGui} that shows which items can craft the current recipe category. */ public class RecipeCategoryCraftingItemsArea implements IShowsRecipeFocuses { - @Nonnull private final IDrawable leftDrawable; - @Nonnull private final IDrawable spacerDrawable; - @Nonnull private final IDrawable rightDrawable; - @Nonnull private final IDrawable boxDrawable; - @Nonnull private GuiItemStackGroup craftingItems = new GuiItemStackGroup(new Focus(null)); private int left = 0; private int top = 0; @@ -47,7 +41,7 @@ public RecipeCategoryCraftingItemsArea() { boxDrawable = guiHelper.createDrawable(recipeBackgroundResource, 196, 40, 18, 25); } - public void updateLayout(@Nonnull Collection itemStacks, @Nonnull GuiProperties guiProperties) { + public void updateLayout(Collection itemStacks, GuiProperties guiProperties) { craftingItems = new GuiItemStackGroup(new Focus(null)); if (!itemStacks.isEmpty()) { @@ -83,7 +77,7 @@ public void updateLayout(@Nonnull Collection itemStacks, @Nonnull Gui } @Nullable - public GuiIngredient draw(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { + public GuiIngredient draw(Minecraft minecraft, int mouseX, int mouseY) { int ingredientCount = craftingItems.getGuiIngredients().keySet().size(); if (ingredientCount > 0) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); diff --git a/src/main/java/mezz/jei/gui/RecipeClickableArea.java b/src/main/java/mezz/jei/gui/RecipeClickableArea.java index b67db9275..017b26032 100644 --- a/src/main/java/mezz/jei/gui/RecipeClickableArea.java +++ b/src/main/java/mezz/jei/gui/RecipeClickableArea.java @@ -1,21 +1,18 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import java.util.Arrays; import java.util.List; import net.minecraftforge.fml.client.config.HoverChecker; public class RecipeClickableArea extends HoverChecker { - @Nonnull private final List recipeCategoryUids; - public RecipeClickableArea(int top, int bottom, int left, int right, @Nonnull String... recipeCategoryUids) { + public RecipeClickableArea(int top, int bottom, int left, int right, String... recipeCategoryUids) { super(top, bottom, left, right, 0); this.recipeCategoryUids = Arrays.asList(recipeCategoryUids); } - @Nonnull public List getRecipeCategoryUids() { return recipeCategoryUids; } diff --git a/src/main/java/mezz/jei/gui/RecipeGuiLogic.java b/src/main/java/mezz/jei/gui/RecipeGuiLogic.java index b618588b7..1ce3a80ed 100644 --- a/src/main/java/mezz/jei/gui/RecipeGuiLogic.java +++ b/src/main/java/mezz/jei/gui/RecipeGuiLogic.java @@ -9,7 +9,6 @@ import java.util.Stack; import com.google.common.collect.ImmutableList; -import mezz.jei.Internal; import mezz.jei.RecipeRegistry; import mezz.jei.api.IModRegistry; import mezz.jei.api.IRecipeRegistry; @@ -29,12 +28,12 @@ private static class State { public final MasterFocus focus; /** List of Recipe Categories that involve the focus */ @Nonnull - public ImmutableList recipeCategories; + public final ImmutableList recipeCategories; public int recipeCategoryIndex; public int pageIndex; public int recipesPerPage; - public State(@Nonnull MasterFocus focus, @Nonnull List recipeCategories, int recipeCategoryIndex, int pageIndex) { + public State(MasterFocus focus, List recipeCategories, int recipeCategoryIndex, int pageIndex) { this.focus = focus; this.recipeCategories = ImmutableList.copyOf(recipeCategories); this.recipeCategoryIndex = recipeCategoryIndex; @@ -42,16 +41,16 @@ public State(@Nonnull MasterFocus focus, @Nonnull List recipeCa } } + private final RecipeRegistry recipeRegistry; + /** The current state of this GUI */ @Nullable private State state = null; /** The previous states of this GUI */ - @Nonnull private final Stack history = new Stack(); /** List of recipes for the currently selected recipeClass */ - @Nonnull private List recipes = Collections.emptyList(); /** @@ -59,11 +58,14 @@ public State(@Nonnull MasterFocus focus, @Nonnull List recipeCa * * @see IModRegistry#addRecipeCategoryCraftingItem(ItemStack, String...) */ - @Nonnull private Collection recipeCategoryCraftingItems = Collections.emptyList(); + public RecipeGuiLogic(RecipeRegistry recipeRegistry) { + this.recipeRegistry = recipeRegistry; + } + @Override - public boolean setFocus(@Nonnull MasterFocus focus) { + public boolean setFocus(MasterFocus focus) { return setFocus(focus, true); } @@ -84,7 +86,7 @@ public void clearHistory() { } } - private boolean setFocus(@Nonnull MasterFocus focus, boolean saveHistory) { + private boolean setFocus(MasterFocus focus, boolean saveHistory) { if (this.state != null && this.state.focus.equalsFocus(focus)) { return true; } @@ -106,24 +108,24 @@ private boolean setFocus(@Nonnull MasterFocus focus, boolean saveHistory) { return true; } - private void setState(@Nonnull State state) { + private void setState(State state) { this.state = state; updateRecipes(); } - private static int getRecipeCategoryIndex(@Nonnull List recipeCategories) { + private int getRecipeCategoryIndex(List recipeCategories) { final Container container = Minecraft.getMinecraft().thePlayer.openContainer; if (container == null) { return 0; } - final RecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); for (int i = 0; i < recipeCategories.size(); i++) { IRecipeCategory recipeCategory = recipeCategories.get(i); if (recipeRegistry.getRecipeTransferHandler(container, recipeCategory) != null) { return i; } } + return 0; } @@ -138,9 +140,9 @@ public boolean setCategoryFocus() { history.push(this.state); } - final List recipeCategories = Internal.getRuntime().getRecipeRegistry().getRecipeCategories(); + final List recipeCategories = recipeRegistry.getRecipeCategories(); final int recipeCategoryIndex = recipeCategories.indexOf(recipeCategory); - final State state = new State(new MasterFocus(), recipeCategories, recipeCategoryIndex, 0); + final State state = new State(new MasterFocus(recipeRegistry), recipeCategories, recipeCategoryIndex, 0); setState(state); return true; @@ -148,7 +150,7 @@ public boolean setCategoryFocus() { @Override public boolean setCategoryFocus(List recipeCategoryUids) { - List recipeCategories = Internal.getRuntime().getRecipeRegistry().getRecipeCategories(recipeCategoryUids); + List recipeCategories = recipeRegistry.getRecipeCategories(recipeCategoryUids); if (recipeCategories.isEmpty()) { return false; } @@ -157,7 +159,7 @@ public boolean setCategoryFocus(List recipeCategoryUids) { history.push(this.state); } - final State state = new State(new MasterFocus(), recipeCategories, 0, 0); + final State state = new State(new MasterFocus(recipeRegistry), recipeCategories, 0, 0); setState(state); return true; @@ -172,7 +174,6 @@ public MasterFocus getFocus() { } @Override - @Nonnull public Collection getRecipeCategoryCraftingItems() { return recipeCategoryCraftingItems; } @@ -217,7 +218,6 @@ public IRecipeCategory getRecipeCategory() { } @Override - @Nonnull public List getRecipeWidgets(int posX, int posY, int spacingY) { if (state == null) { return Collections.emptyList(); @@ -230,8 +230,6 @@ public List getRecipeWidgets(int posX, int posY, int spacingY) { return recipeWidgets; } - IRecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); - int recipeWidgetIndex = 0; for (int recipeIndex = state.pageIndex * state.recipesPerPage; recipeIndex < recipes.size() && recipeWidgets.size() < state.recipesPerPage; recipeIndex++) { Object recipe = recipes.get(recipeIndex); @@ -316,7 +314,6 @@ private int pageCount(int recipesPerPage) { } @Override - @Nonnull public String getPageString() { if (state == null) { return "1/1"; @@ -331,6 +328,6 @@ public boolean hasMultipleCategories() { @Override public boolean hasAllCategories() { - return state != null && state.recipeCategories.size() == Internal.getRuntime().getRecipeRegistry().getRecipeCategories().size(); + return state != null && state.recipeCategories.size() == recipeRegistry.getRecipeCategories().size(); } } diff --git a/src/main/java/mezz/jei/gui/RecipeLayout.java b/src/main/java/mezz/jei/gui/RecipeLayout.java index 487a81c01..1acbf1087 100644 --- a/src/main/java/mezz/jei/gui/RecipeLayout.java +++ b/src/main/java/mezz/jei/gui/RecipeLayout.java @@ -1,6 +1,6 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.List; import mezz.jei.api.gui.IDrawable; @@ -21,21 +21,16 @@ public class RecipeLayout implements IRecipeLayout { private static final int RECIPE_BUTTON_SIZE = 12; public static final int recipeTransferButtonIndex = 100; - @Nonnull private final IRecipeCategory recipeCategory; - @Nonnull private final GuiItemStackGroup guiItemStackGroup; - @Nonnull private final GuiFluidStackGroup guiFluidStackGroup; - @Nonnull private final RecipeTransferButton recipeTransferButton; - @Nonnull private final IRecipeWrapper recipeWrapper; private final int posX; private final int posY; - public RecipeLayout(int index, int posX, int posY, @Nonnull IRecipeCategory recipeCategory, @Nonnull T recipeWrapper, @Nonnull MasterFocus focus) { + public RecipeLayout(int index, int posX, int posY, IRecipeCategory recipeCategory, T recipeWrapper, MasterFocus focus) { this.recipeCategory = recipeCategory; this.guiItemStackGroup = new GuiItemStackGroup(new Focus(focus.getMode(), focus.getItemStack())); this.guiFluidStackGroup = new GuiFluidStackGroup(new Focus(focus.getMode(), focus.getFluidStack())); @@ -49,7 +44,7 @@ public RecipeLayout(int index, int posX, int posY, @N recipeCategory.setRecipe(this, recipeWrapper); } - public void draw(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { + public void draw(Minecraft minecraft, int mouseX, int mouseY) { IDrawable background = recipeCategory.getBackground(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); @@ -108,6 +103,7 @@ public boolean isMouseOver(int mouseX, int mouseY) { return recipeMouseX >= 0 && recipeMouseX < background.getWidth() && recipeMouseY >= 0 && recipeMouseY < background.getHeight(); } + @Nullable public Focus getFocusUnderMouse(int mouseX, int mouseY) { Focus focus = guiItemStackGroup.getFocusUnderMouse(posX, posY, mouseX, mouseY); if (focus == null) { @@ -116,18 +112,16 @@ public Focus getFocusUnderMouse(int mouseX, int mouseY) { return focus; } - public boolean handleClick(@Nonnull Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { + public boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { return recipeWrapper.handleClick(minecraft, mouseX - posX, mouseY - posY, mouseButton); } @Override - @Nonnull public GuiItemStackGroup getItemStacks() { return guiItemStackGroup; } @Override - @Nonnull public IGuiFluidStackGroup getFluidStacks() { return guiFluidStackGroup; } @@ -138,17 +132,14 @@ public void setRecipeTransferButton(int posX, int posY) { recipeTransferButton.yPosition = posY + this.posY; } - @Nonnull public RecipeTransferButton getRecipeTransferButton() { return recipeTransferButton; } - @Nonnull public IRecipeWrapper getRecipeWrapper() { return recipeWrapper; } - @Nonnull public IRecipeCategory getRecipeCategory() { return recipeCategory; } diff --git a/src/main/java/mezz/jei/gui/RecipeTransferButton.java b/src/main/java/mezz/jei/gui/RecipeTransferButton.java index 7ff9bd611..541e27358 100644 --- a/src/main/java/mezz/jei/gui/RecipeTransferButton.java +++ b/src/main/java/mezz/jei/gui/RecipeTransferButton.java @@ -1,6 +1,5 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.recipe.transfer.IRecipeTransferError; @@ -20,7 +19,7 @@ public RecipeTransferButton(int id, int xPos, int yPos, int width, int height, S super(id, xPos, yPos, width, height, displayString); } - public void init(@Nullable Container container, @Nonnull RecipeLayout recipeLayout, @Nonnull EntityPlayer player) { + public void init(@Nullable Container container, RecipeLayout recipeLayout, EntityPlayer player) { this.recipeLayout = recipeLayout; if (container != null) { diff --git a/src/main/java/mezz/jei/gui/RecipesGui.java b/src/main/java/mezz/jei/gui/RecipesGui.java index 4e6adb46f..3039ddee2 100644 --- a/src/main/java/mezz/jei/gui/RecipesGui.java +++ b/src/main/java/mezz/jei/gui/RecipesGui.java @@ -1,13 +1,13 @@ package mezz.jei.gui; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import mezz.jei.RecipeRegistry; import mezz.jei.api.IRecipesGui; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.recipe.IFocus; @@ -43,14 +43,15 @@ public class RecipesGui extends GuiScreen implements IRecipesGui, IShowsRecipeFo private static final int buttonWidth = 13; private static final int buttonHeight = 12; + private final RecipeRegistry recipeRegistry; + private int titleHeight; private int headerHeight; /* Internal logic for the gui, handles finding recipes */ - private final IRecipeGuiLogic logic = new RecipeGuiLogic(); + private final IRecipeGuiLogic logic; /* List of RecipeLayout to display */ - @Nonnull private final List recipeLayouts = new ArrayList(); private String pageString; @@ -72,7 +73,9 @@ public class RecipesGui extends GuiScreen implements IRecipesGui, IShowsRecipeFo private int guiLeft; private int guiTop; - public RecipesGui() { + public RecipesGui(RecipeRegistry recipeRegistry) { + this.recipeRegistry = recipeRegistry; + this.logic = new RecipeGuiLogic(recipeRegistry); this.mc = Minecraft.getMinecraft(); } @@ -312,7 +315,9 @@ public void showRecipes(@Nullable ItemStack focus) { Log.error("Null focus", new NullPointerException()); return; } - showRecipes(new MasterFocus(focus)); + + MasterFocus masterFocus = new MasterFocus(recipeRegistry, focus); + showRecipes(masterFocus); } @Override @@ -321,15 +326,17 @@ public void showRecipes(@Nullable FluidStack focus) { Log.error("Null focus", new NullPointerException()); return; } - showRecipes(new MasterFocus(focus)); + + MasterFocus masterFocus = new MasterFocus(recipeRegistry, focus); + showRecipes(masterFocus); } - public void showRecipes(@Nonnull IFocus focus) { - MasterFocus masterFocus = MasterFocus.create(focus); + public void showRecipes(IFocus focus) { + MasterFocus masterFocus = MasterFocus.create(recipeRegistry, focus); showRecipes(masterFocus); } - public void showRecipes(@Nonnull MasterFocus masterFocus) { + public void showRecipes(MasterFocus masterFocus) { masterFocus.setMode(IFocus.Mode.OUTPUT); if (logic.setFocus(masterFocus)) { open(); @@ -342,7 +349,9 @@ public void showUses(@Nullable ItemStack focus) { Log.error("Null focus", new NullPointerException()); return; } - showUses(new MasterFocus(focus)); + + MasterFocus masterFocus = new MasterFocus(recipeRegistry, focus); + showUses(masterFocus); } @Override @@ -351,15 +360,17 @@ public void showUses(@Nullable FluidStack focus) { Log.error("Null focus", new NullPointerException()); return; } - showUses(new MasterFocus(focus)); + + MasterFocus masterFocus = new MasterFocus(recipeRegistry, focus); + showUses(masterFocus); } - public void showUses(@Nonnull IFocus focus) { - MasterFocus masterFocus = MasterFocus.create(focus); + public void showUses(IFocus focus) { + MasterFocus masterFocus = MasterFocus.create(recipeRegistry, focus); showUses(masterFocus); } - public void showUses(@Nonnull MasterFocus focus) { + public void showUses(MasterFocus focus) { focus.setMode(IFocus.Mode.INPUT); if (logic.setFocus(focus)) { open(); @@ -388,7 +399,7 @@ public void back() { } @Override - protected void actionPerformed(@Nonnull GuiButton guibutton) { + protected void actionPerformed(GuiButton guibutton) { boolean updateLayout = true; if (guibutton.id == nextPage.id) { diff --git a/src/main/java/mezz/jei/gui/TooltipRenderer.java b/src/main/java/mezz/jei/gui/TooltipRenderer.java index 8f839f9b0..3095dd018 100644 --- a/src/main/java/mezz/jei/gui/TooltipRenderer.java +++ b/src/main/java/mezz/jei/gui/TooltipRenderer.java @@ -1,30 +1,29 @@ package mezz.jei.gui; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; + import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.client.config.GuiUtils; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.List; - public class TooltipRenderer { - public static void drawHoveringText(@Nonnull Minecraft minecraft, @Nonnull String textLine, int x, int y) { + public static void drawHoveringText(Minecraft minecraft, String textLine, int x, int y) { drawHoveringText(minecraft, Collections.singletonList(textLine), x, y, minecraft.fontRendererObj); } - public static void drawHoveringText(@Nonnull Minecraft minecraft, @Nonnull List textLines, int x, int y) { + public static void drawHoveringText(Minecraft minecraft, List textLines, int x, int y) { drawHoveringText(minecraft, textLines, x, y, minecraft.fontRendererObj); } - public static void drawHoveringText(@Nonnull Minecraft minecraft, @Nonnull List textLines, int x, int y, @Nonnull FontRenderer font) { + public static void drawHoveringText(Minecraft minecraft, List textLines, int x, int y, FontRenderer font) { drawHoveringText(null, minecraft, textLines, x, y, font); } - public static void drawHoveringText(@Nullable ItemStack itemStack, @Nonnull Minecraft minecraft, @Nonnull List textLines, int x, int y, @Nonnull FontRenderer font) { + public static void drawHoveringText(@Nullable ItemStack itemStack, Minecraft minecraft, List textLines, int x, int y, FontRenderer font) { ScaledResolution scaledresolution = new ScaledResolution(minecraft); GuiUtils.drawHoveringText(itemStack, textLines, x, y, scaledresolution.getScaledWidth(), scaledresolution.getScaledHeight(), -1, font); } diff --git a/src/main/java/mezz/jei/gui/ingredients/FluidStackHelper.java b/src/main/java/mezz/jei/gui/ingredients/FluidStackHelper.java index f8b82e47d..cbd342865 100644 --- a/src/main/java/mezz/jei/gui/ingredients/FluidStackHelper.java +++ b/src/main/java/mezz/jei/gui/ingredients/FluidStackHelper.java @@ -1,6 +1,6 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.Collection; import mezz.jei.api.recipe.IFocus; @@ -14,7 +14,8 @@ public Collection expandSubtypes(Collection contained) { } @Override - public FluidStack getMatch(Iterable ingredients, @Nonnull IFocus toMatch) { + @Nullable + public FluidStack getMatch(Iterable ingredients, IFocus toMatch) { if (toMatch.getValue() == null) { return null; } @@ -26,9 +27,8 @@ public FluidStack getMatch(Iterable ingredients, @Nonnull IFocus createFocus(@Nonnull FluidStack ingredient) { + public Focus createFocus(FluidStack ingredient) { return new Focus(ingredient); } } diff --git a/src/main/java/mezz/jei/gui/ingredients/FluidStackRenderer.java b/src/main/java/mezz/jei/gui/ingredients/FluidStackRenderer.java index f727ce8f3..014f0fb57 100644 --- a/src/main/java/mezz/jei/gui/ingredients/FluidStackRenderer.java +++ b/src/main/java/mezz/jei/gui/ingredients/FluidStackRenderer.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -42,12 +41,12 @@ public FluidStackRenderer(int capacityMb, boolean showCapacity, int width, int h } @Override - public void setIngredients(@Nonnull Collection ingredients) { + public void setIngredients(Collection ingredients) { } @Override - public void draw(@Nonnull Minecraft minecraft, final int xPosition, final int yPosition, @Nullable FluidStack fluidStack) { + public void draw(Minecraft minecraft, final int xPosition, final int yPosition, @Nullable FluidStack fluidStack) { GlStateManager.enableBlend(); GlStateManager.enableAlpha(); @@ -66,7 +65,7 @@ public void draw(@Nonnull Minecraft minecraft, final int xPosition, final int yP GlStateManager.disableBlend(); } - private void drawFluid(@Nonnull Minecraft minecraft, final int xPosition, final int yPosition, @Nullable FluidStack fluidStack) { + private void drawFluid(Minecraft minecraft, final int xPosition, final int yPosition, @Nullable FluidStack fluidStack) { if (fluidStack == null) { return; } @@ -147,9 +146,8 @@ private static void drawFluidTexture(double xCoord, double yCoord, TextureAtlasS tessellator.draw(); } - @Nonnull @Override - public List getTooltip(@Nonnull Minecraft minecraft, @Nonnull FluidStack fluidStack) { + public List getTooltip(Minecraft minecraft, FluidStack fluidStack) { List tooltip = new ArrayList(); Fluid fluidType = fluidStack.getFluid(); if (fluidType == null) { @@ -171,7 +169,7 @@ public List getTooltip(@Nonnull Minecraft minecraft, @Nonnull FluidStack } @Override - public FontRenderer getFontRenderer(@Nonnull Minecraft minecraft, @Nonnull FluidStack fluidStack) { + public FontRenderer getFontRenderer(Minecraft minecraft, FluidStack fluidStack) { return minecraft.fontRendererObj; } } diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiFluidStackGroup.java b/src/main/java/mezz/jei/gui/ingredients/GuiFluidStackGroup.java index cd2b0e528..2e66f6c6e 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiFluidStackGroup.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiFluidStackGroup.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.gui.IDrawable; @@ -11,7 +10,7 @@ public class GuiFluidStackGroup extends GuiIngredientGroup> implements IGuiFluidStackGroup { private static final FluidStackHelper helper = new FluidStackHelper(); - public GuiFluidStackGroup(@Nonnull IFocus focus) { + public GuiFluidStackGroup(IFocus focus) { super(focus); } diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiIngredient.java b/src/main/java/mezz/jei/gui/ingredients/GuiIngredient.java index 029105fa9..6ff685f31 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiIngredient.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiIngredient.java @@ -1,8 +1,7 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -32,22 +31,17 @@ public class GuiIngredient extends Gui implements IGuiIngredient { private final int height; private final int padding; - @Nonnull private final CycleTimer cycleTimer; - @Nonnull private final List displayIngredients = new ArrayList(); // ingredients, taking focus into account - @Nonnull private final List allIngredients = new ArrayList(); // all ingredients, ignoring focus - @Nonnull private final IIngredientRenderer ingredientRenderer; - @Nonnull private final IIngredientHelper ingredientHelper; @Nullable private ITooltipCallback tooltipCallback; private boolean enabled; - public GuiIngredient(@Nonnull IIngredientRenderer ingredientRenderer, @Nonnull IIngredientHelper ingredientHelper, int slotIndex, boolean input, int xPosition, int yPosition, int width, int height, int padding, int itemCycleOffset) { + public GuiIngredient(IIngredientRenderer ingredientRenderer, IIngredientHelper ingredientHelper, int slotIndex, boolean input, int xPosition, int yPosition, int width, int height, int padding, int itemCycleOffset) { this.ingredientRenderer = ingredientRenderer; this.ingredientHelper = ingredientHelper; @@ -73,6 +67,7 @@ public T getIngredient() { } @Override + @Nullable public Focus getCurrentlyDisplayed() { T ingredient = getIngredient(); if (ingredient == null) { @@ -81,17 +76,16 @@ public Focus getCurrentlyDisplayed() { return ingredientHelper.createFocus(ingredient); } - @Nonnull @Override public List getAllIngredients() { return allIngredients; } - public void set(@Nonnull T ingredient, @Nonnull IFocus focus) { + public void set(T ingredient, IFocus focus) { set(Collections.singleton(ingredient), focus); } - public void set(@Nonnull Collection ingredients, @Nonnull IFocus focus) { + public void set(Collection ingredients, IFocus focus) { this.displayIngredients.clear(); this.allIngredients.clear(); ingredients = ingredientHelper.expandSubtypes(ingredients); @@ -113,14 +107,14 @@ public void setTooltipCallback(@Nullable ITooltipCallback tooltipCallback) { this.tooltipCallback = tooltipCallback; } - public void draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset) { + public void draw(Minecraft minecraft, int xOffset, int yOffset) { cycleTimer.onDraw(); T value = getIngredient(); ingredientRenderer.draw(minecraft, xOffset + xPosition + padding, yOffset + yPosition + padding, value); } - public void drawHovered(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY) { + public void drawHovered(Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY) { T value = getIngredient(); if (value == null) { return; @@ -130,7 +124,7 @@ public void drawHovered(@Nonnull Minecraft minecraft, int xOffset, int yOffset, } @Override - public void drawHighlight(@Nonnull Minecraft minecraft, Color color, int xOffset, int yOffset) { + public void drawHighlight(Minecraft minecraft, Color color, int xOffset, int yOffset) { int x = xPosition + xOffset + padding; int y = yPosition + yOffset + padding; GlStateManager.disableLighting(); @@ -138,7 +132,7 @@ public void drawHighlight(@Nonnull Minecraft minecraft, Color color, int xOffset GlStateManager.color(1f, 1f, 1f, 1f); } - private void drawTooltip(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY, @Nonnull T value) { + private void drawTooltip(Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY, T value) { try { GlStateManager.disableDepth(); diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiIngredientGroup.java b/src/main/java/mezz/jei/gui/ingredients/GuiIngredientGroup.java index 1f137b412..4bc2deb52 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiIngredientGroup.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiIngredientGroup.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.HashMap; @@ -14,44 +13,40 @@ public abstract class GuiIngredientGroup> implements IGuiIngredientGroup { protected final int itemCycleOffset = (int) (Math.random() * 1000); - @Nonnull protected final Map guiIngredients = new HashMap(); /** * If focus is set and any of the guiIngredients contains focus * they will only display focus instead of rotating through all their values. */ - @Nonnull protected final IFocus focus; @Nullable private ITooltipCallback tooltipCallback; - public GuiIngredientGroup(@Nonnull IFocus focus) { + public GuiIngredientGroup(IFocus focus) { this.focus = focus; } @Override - @Nonnull public IFocus getFocus() { return focus; } @Override - public void set(int slotIndex, @Nonnull Collection values) { + public void set(int slotIndex, Collection values) { guiIngredients.get(slotIndex).set(values, focus); } @Override - public void set(int slotIndex, @Nonnull T value) { + public void set(int slotIndex, T value) { guiIngredients.get(slotIndex).set(value, focus); } @Override - public void addTooltipCallback(@Nonnull ITooltipCallback tooltipCallback) { + public void addTooltipCallback(ITooltipCallback tooltipCallback) { this.tooltipCallback = tooltipCallback; } @Override - @Nonnull public Map getGuiIngredients() { return guiIngredients; } @@ -67,7 +62,7 @@ public Focus getFocusUnderMouse(int xOffset, int yOffset, int mouseX, int mou } @Nullable - public V draw(@Nonnull Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY) { + public V draw(Minecraft minecraft, int xOffset, int yOffset, int mouseX, int mouseY) { V hovered = null; for (V ingredient : guiIngredients.values()) { if (hovered == null && ingredient.isMouseOver(xOffset, yOffset, mouseX, mouseY)) { diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFast.java b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFast.java index 889b1b554..902bffeb5 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFast.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFast.java @@ -1,11 +1,18 @@ package mezz.jei.gui.ingredients; +import javax.annotation.Nullable; +import java.awt.Color; +import java.awt.Rectangle; +import java.util.Collection; +import java.util.List; + import com.google.common.base.Joiner; import mezz.jei.Internal; import mezz.jei.config.Config; import mezz.jei.config.Constants; import mezz.jei.gui.TooltipRenderer; import mezz.jei.util.Translator; +import mezz.jei.util.color.ColorNamer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; @@ -23,19 +30,12 @@ import net.minecraft.util.text.TextFormatting; import net.minecraftforge.client.ForgeHooksClient; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.awt.*; -import java.util.Collection; -import java.util.List; - public class GuiItemStackFast { private static final ResourceLocation RES_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png"); private static final int blacklistItemColor = Color.yellow.getRGB(); private static final int blacklistWildColor = Color.red.getRGB(); private static final int blacklistModColor = Color.blue.getRGB(); - @Nonnull private final Rectangle area; private final int padding; private final ItemModelMesher itemModelMesher; @@ -50,12 +50,11 @@ public GuiItemStackFast(int xPosition, int yPosition, int padding) { this.itemModelMesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher(); } - @Nonnull public Rectangle getArea() { return area; } - public void setItemStack(@Nonnull ItemStack itemStack) { + public void setItemStack(ItemStack itemStack) { this.itemStack = itemStack; } @@ -178,8 +177,7 @@ private void renderEditMode() { } } - @Nonnull - public static FontRenderer getFontRenderer(@Nonnull Minecraft minecraft, @Nonnull ItemStack itemStack) { + public static FontRenderer getFontRenderer(Minecraft minecraft, ItemStack itemStack) { Item item = itemStack.getItem(); FontRenderer fontRenderer = item.getFontRenderer(itemStack); if (fontRenderer == null) { @@ -209,7 +207,7 @@ public void drawHighlight() { GlStateManager.enableDepth(); } - public void drawTooltip(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { + public void drawTooltip(Minecraft minecraft, int mouseX, int mouseY) { if (itemStack == null) { return; } @@ -218,8 +216,7 @@ public void drawTooltip(@Nonnull Minecraft minecraft, int mouseX, int mouseY) { TooltipRenderer.drawHoveringText(itemStack, minecraft, tooltip, mouseX, mouseY, fontRenderer); } - @Nonnull - private static List getTooltip(@Nonnull Minecraft minecraft, @Nonnull ItemStack itemStack) { + private static List getTooltip(Minecraft minecraft, ItemStack itemStack) { List list = itemStack.getTooltip(minecraft.thePlayer, minecraft.gameSettings.advancedItemTooltips); for (int k = 0; k < list.size(); ++k) { if (k == 0) { @@ -238,11 +235,14 @@ private static List getTooltip(@Nonnull Minecraft minecraft, @Nonnull It } if (Config.isColorSearchEnabled()) { - Collection colorNames = Internal.getColorNamer().getColorNames(itemStack); - if (!colorNames.isEmpty()) { - String colorNamesString = Joiner.on(", ").join(colorNames); - String colorNamesLocalizedString = TextFormatting.GRAY + Translator.translateToLocalFormatted("jei.tooltip.item.colors", colorNamesString); - list.addAll(minecraft.fontRendererObj.listFormattedStringToWidth(colorNamesLocalizedString, maxWidth)); + ColorNamer colorNamer = Internal.getColorNamer(); + if (colorNamer != null) { + Collection colorNames = colorNamer.getColorNames(itemStack); + if (!colorNames.isEmpty()) { + String colorNamesString = Joiner.on(", ").join(colorNames); + String colorNamesLocalizedString = TextFormatting.GRAY + Translator.translateToLocalFormatted("jei.tooltip.item.colors", colorNamesString); + list.addAll(minecraft.fontRendererObj.listFormattedStringToWidth(colorNamesLocalizedString, maxWidth)); + } } } diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFastList.java b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFastList.java index dbd506829..ec2abf591 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFastList.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackFastList.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; @@ -96,7 +95,7 @@ private GuiItemStackFast getHovered(int mouseX, int mouseY) { /** renders all ItemStacks and returns hovered gui item stack for later render pass */ @Nullable - public GuiItemStackFast render(@Nonnull Minecraft minecraft, boolean isMouseOver, int mouseX, int mouseY) { + public GuiItemStackFast render(Minecraft minecraft, boolean isMouseOver, int mouseX, int mouseY) { GuiItemStackFast hovered = null; if (isMouseOver) { hovered = getHovered(mouseX, mouseY); diff --git a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackGroup.java b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackGroup.java index e0107fec8..7a786a94d 100644 --- a/src/main/java/mezz/jei/gui/ingredients/GuiItemStackGroup.java +++ b/src/main/java/mezz/jei/gui/ingredients/GuiItemStackGroup.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import java.util.List; import mezz.jei.Internal; @@ -13,7 +12,7 @@ public class GuiItemStackGroup extends GuiIngredientGroup focus) { + public GuiItemStackGroup(IFocus focus) { super(focus); } @@ -31,12 +30,12 @@ private GuiIngredient createGuiItemStack(int index, boolean input, in } @Override - public void setFromRecipe(int slotIndex, @Nonnull List ingredients) { + public void setFromRecipe(int slotIndex, List ingredients) { set(slotIndex, Internal.getStackHelper().toItemStackList(ingredients)); } @Override - public void setFromRecipe(int slotIndex, @Nonnull Object ingredients) { + public void setFromRecipe(int slotIndex, Object ingredients) { set(slotIndex, Internal.getStackHelper().toItemStackList(ingredients)); } diff --git a/src/main/java/mezz/jei/gui/ingredients/IIngredientHelper.java b/src/main/java/mezz/jei/gui/ingredients/IIngredientHelper.java index 53e7997f3..5fb82fdbd 100644 --- a/src/main/java/mezz/jei/gui/ingredients/IIngredientHelper.java +++ b/src/main/java/mezz/jei/gui/ingredients/IIngredientHelper.java @@ -1,6 +1,6 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.Collection; import mezz.jei.api.recipe.IFocus; @@ -9,8 +9,8 @@ public interface IIngredientHelper { Collection expandSubtypes(Collection contained); - T getMatch(Iterable ingredients, @Nonnull IFocus toMatch); + @Nullable + T getMatch(Iterable ingredients, IFocus toMatch); - @Nonnull - Focus createFocus(@Nonnull T ingredient); + Focus createFocus(T ingredient); } diff --git a/src/main/java/mezz/jei/gui/ingredients/IIngredientRenderer.java b/src/main/java/mezz/jei/gui/ingredients/IIngredientRenderer.java index f4a7bc43a..b0cad30a9 100644 --- a/src/main/java/mezz/jei/gui/ingredients/IIngredientRenderer.java +++ b/src/main/java/mezz/jei/gui/ingredients/IIngredientRenderer.java @@ -1,6 +1,5 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.List; @@ -9,12 +8,11 @@ import net.minecraft.client.gui.FontRenderer; public interface IIngredientRenderer { - void setIngredients(@Nonnull Collection ingredients); + void setIngredients(Collection ingredients); - void draw(@Nonnull Minecraft minecraft, int xPosition, int yPosition, @Nullable T value); + void draw(Minecraft minecraft, int xPosition, int yPosition, @Nullable T value); - @Nonnull - List getTooltip(@Nonnull Minecraft minecraft, @Nonnull T value); + List getTooltip(Minecraft minecraft, T value); - FontRenderer getFontRenderer(@Nonnull Minecraft minecraft, @Nonnull T value); + FontRenderer getFontRenderer(Minecraft minecraft, T value); } diff --git a/src/main/java/mezz/jei/gui/ingredients/ItemStackHelper.java b/src/main/java/mezz/jei/gui/ingredients/ItemStackHelper.java index 0d9ecc6fc..fd15e2f3c 100644 --- a/src/main/java/mezz/jei/gui/ingredients/ItemStackHelper.java +++ b/src/main/java/mezz/jei/gui/ingredients/ItemStackHelper.java @@ -1,6 +1,6 @@ package mezz.jei.gui.ingredients; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.Collection; import mezz.jei.Internal; @@ -15,13 +15,13 @@ public Collection expandSubtypes(Collection contained) { } @Override - public ItemStack getMatch(Iterable ingredients, @Nonnull IFocus toMatch) { + @Nullable + public ItemStack getMatch(Iterable ingredients, IFocus toMatch) { return Internal.getStackHelper().containsStack(ingredients, toMatch.getValue()); } - @Nonnull @Override - public Focus createFocus(@Nonnull ItemStack ingredient) { + public Focus createFocus(ItemStack ingredient) { return new Focus(ingredient); } } diff --git a/src/main/java/mezz/jei/gui/ingredients/ItemStackRenderer.java b/src/main/java/mezz/jei/gui/ingredients/ItemStackRenderer.java index 59be8c675..278a23a30 100644 --- a/src/main/java/mezz/jei/gui/ingredients/ItemStackRenderer.java +++ b/src/main/java/mezz/jei/gui/ingredients/ItemStackRenderer.java @@ -1,5 +1,9 @@ package mezz.jei.gui.ingredients; +import javax.annotation.Nullable; +import java.util.Collection; +import java.util.List; + import mezz.jei.Internal; import mezz.jei.util.Translator; import net.minecraft.client.Minecraft; @@ -8,11 +12,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collection; -import java.util.List; - public class ItemStackRenderer implements IIngredientRenderer { private static final String oreDictionaryIngredient = Translator.translateToLocal("jei.tooltip.recipe.ore.dict"); @@ -20,12 +19,12 @@ public class ItemStackRenderer implements IIngredientRenderer { private String oreDictEquivalent; @Override - public void setIngredients(@Nonnull Collection itemStacks) { + public void setIngredients(Collection itemStacks) { oreDictEquivalent = Internal.getStackHelper().getOreDictEquivalent(itemStacks); } @Override - public void draw(@Nonnull Minecraft minecraft, int xPosition, int yPosition, @Nullable ItemStack itemStack) { + public void draw(Minecraft minecraft, int xPosition, int yPosition, @Nullable ItemStack itemStack) { if (itemStack == null) { return; } @@ -37,9 +36,8 @@ public void draw(@Nonnull Minecraft minecraft, int xPosition, int yPosition, @Nu GlStateManager.disableBlend(); } - @Nonnull @Override - public List getTooltip(@Nonnull Minecraft minecraft, @Nonnull ItemStack itemStack) { + public List getTooltip(Minecraft minecraft, ItemStack itemStack) { List list = itemStack.getTooltip(minecraft.thePlayer, minecraft.gameSettings.advancedItemTooltips); for (int k = 0; k < list.size(); ++k) { if (k == 0) { @@ -58,7 +56,7 @@ public List getTooltip(@Nonnull Minecraft minecraft, @Nonnull ItemStack } @Override - public FontRenderer getFontRenderer(@Nonnull Minecraft minecraft, @Nonnull ItemStack itemStack) { + public FontRenderer getFontRenderer(Minecraft minecraft, ItemStack itemStack) { FontRenderer fontRenderer = itemStack.getItem().getFontRenderer(itemStack); if (fontRenderer == null) { fontRenderer = minecraft.fontRendererObj; diff --git a/src/main/java/mezz/jei/gui/ingredients/package-info.java b/src/main/java/mezz/jei/gui/ingredients/package-info.java new file mode 100644 index 000000000..69ac8fd7c --- /dev/null +++ b/src/main/java/mezz/jei/gui/ingredients/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.gui.ingredients; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/gui/package-info.java b/src/main/java/mezz/jei/gui/package-info.java new file mode 100644 index 000000000..75b7d1ea5 --- /dev/null +++ b/src/main/java/mezz/jei/gui/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.gui; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/input/InputHandler.java b/src/main/java/mezz/jei/input/InputHandler.java index fbd24878d..6f3697bd9 100644 --- a/src/main/java/mezz/jei/input/InputHandler.java +++ b/src/main/java/mezz/jei/input/InputHandler.java @@ -1,11 +1,9 @@ package mezz.jei.input; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -import mezz.jei.Internal; import mezz.jei.RecipeRegistry; import mezz.jei.api.recipe.IFocus; import mezz.jei.config.Config; @@ -27,19 +25,16 @@ import org.lwjgl.input.Mouse; public class InputHandler { - - @Nonnull + private final RecipeRegistry recipeRegistry; private final RecipesGui recipesGui; - @Nonnull private final ItemListOverlay itemListOverlay; - @Nonnull private MouseHelper mouseHelper; - @Nonnull private final List showsRecipeFocuses = new ArrayList(); private boolean clickHandled = false; - public InputHandler(@Nonnull RecipesGui recipesGui, @Nonnull ItemListOverlay itemListOverlay) { + public InputHandler(RecipeRegistry recipeRegistry, RecipesGui recipesGui, ItemListOverlay itemListOverlay) { + this.recipeRegistry = recipeRegistry; this.recipesGui = recipesGui; this.itemListOverlay = itemListOverlay; @@ -54,7 +49,7 @@ public void onScreenResized() { this.mouseHelper = new MouseHelper(); } - public boolean handleMouseEvent(@Nonnull GuiScreen guiScreen, int mouseX, int mouseY) { + public boolean handleMouseEvent(GuiScreen guiScreen, int mouseX, int mouseY) { boolean cancelEvent = false; if (Mouse.getEventButton() > -1) { if (Mouse.getEventButtonState()) { @@ -76,7 +71,7 @@ private boolean handleMouseScroll(int dWheel, int mouseX, int mouseY) { return itemListOverlay.handleMouseScrolled(mouseX, mouseY, dWheel); } - private boolean handleMouseClick(@Nonnull GuiScreen guiScreen, int mouseButton, int mouseX, int mouseY) { + private boolean handleMouseClick(GuiScreen guiScreen, int mouseButton, int mouseX, int mouseY) { if (itemListOverlay.handleMouseClicked(mouseX, mouseY, mouseButton)) { return true; } @@ -88,7 +83,6 @@ private boolean handleMouseClick(@Nonnull GuiScreen guiScreen, int mouseButton, if (guiScreen instanceof GuiContainer) { GuiContainer guiContainer = (GuiContainer) guiScreen; - RecipeRegistry recipeRegistry = Internal.getRuntime().getRecipeRegistry(); RecipeClickableArea clickableArea = recipeRegistry.getRecipeClickableArea(guiContainer, mouseX - guiContainer.guiLeft, mouseY - guiContainer.guiTop); if (clickableArea != null) { List recipeCategoryUids = clickableArea.getRecipeCategoryUids(); @@ -123,7 +117,7 @@ private IFocus getFocusUnderMouseForKey(int mouseX, int mouseY) { return null; } - private boolean handleMouseClickedFocus(int mouseButton, @Nonnull Focus focus) { + private boolean handleMouseClickedFocus(int mouseButton, Focus focus) { if (Config.isEditModeEnabled()) { if (handleClickEditStack(mouseButton, focus)) { return true; @@ -156,7 +150,7 @@ private boolean handleMouseClickedFocus(int mouseButton, @Nonnull Focus focus return false; } - private boolean handleClickEditStack(int mouseButton, @Nonnull IFocus focus) { + private boolean handleClickEditStack(int mouseButton, IFocus focus) { Object focusValue = focus.getValue(); if (!(focusValue instanceof ItemStack)) { return false; diff --git a/src/main/java/mezz/jei/input/package-info.java b/src/main/java/mezz/jei/input/package-info.java new file mode 100644 index 000000000..fb513b4c6 --- /dev/null +++ b/src/main/java/mezz/jei/input/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.input; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/network/PacketHandler.java b/src/main/java/mezz/jei/network/PacketHandler.java index 60172282f..b727271a8 100644 --- a/src/main/java/mezz/jei/network/PacketHandler.java +++ b/src/main/java/mezz/jei/network/PacketHandler.java @@ -1,25 +1,24 @@ package mezz.jei.network; +import javax.annotation.Nullable; import java.io.IOException; +import mezz.jei.network.packets.PacketDeletePlayerItem; +import mezz.jei.network.packets.PacketGiveItemStack; +import mezz.jei.network.packets.PacketJEI; +import mezz.jei.network.packets.PacketRecipeTransfer; +import mezz.jei.util.Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.network.PacketBuffer; import net.minecraft.util.IThreadListener; - import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.network.FMLEventChannel; import net.minecraftforge.fml.common.network.FMLNetworkEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; -import mezz.jei.network.packets.PacketDeletePlayerItem; -import mezz.jei.network.packets.PacketGiveItemStack; -import mezz.jei.network.packets.PacketJEI; -import mezz.jei.network.packets.PacketRecipeTransfer; -import mezz.jei.util.Log; - public class PacketHandler { public static final String CHANNEL_ID = "JEI"; private final FMLEventChannel channel; @@ -91,8 +90,8 @@ public void sendPacket(FMLProxyPacket packet, EntityPlayerMP player) { channel.sendTo(packet, player); } - private static void checkThreadAndEnqueue(final PacketJEI packet, final PacketBuffer packetBuffer, final EntityPlayer player, IThreadListener threadListener) { - if (!threadListener.isCallingFromMinecraftThread()) { + private static void checkThreadAndEnqueue(final PacketJEI packet, final PacketBuffer packetBuffer, final EntityPlayer player, @Nullable IThreadListener threadListener) { + if (threadListener != null && !threadListener.isCallingFromMinecraftThread()) { threadListener.addScheduledTask(new Runnable() { @Override public void run() { diff --git a/src/main/java/mezz/jei/network/package-info.java b/src/main/java/mezz/jei/network/package-info.java new file mode 100644 index 000000000..4d0048f4d --- /dev/null +++ b/src/main/java/mezz/jei/network/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.network; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/network/packets/PacketDeletePlayerItem.java b/src/main/java/mezz/jei/network/packets/PacketDeletePlayerItem.java index a1d7734b2..8778f0856 100644 --- a/src/main/java/mezz/jei/network/packets/PacketDeletePlayerItem.java +++ b/src/main/java/mezz/jei/network/packets/PacketDeletePlayerItem.java @@ -1,15 +1,13 @@ package mezz.jei.network.packets; -import javax.annotation.Nonnull; import java.io.IOException; +import mezz.jei.network.IPacketId; +import mezz.jei.network.PacketIdServer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketBuffer; -import mezz.jei.network.IPacketId; -import mezz.jei.network.PacketIdServer; - public class PacketDeletePlayerItem extends PacketJEI { private ItemStack itemStack; @@ -17,7 +15,7 @@ public PacketDeletePlayerItem() { } - public PacketDeletePlayerItem(@Nonnull ItemStack itemStack) { + public PacketDeletePlayerItem(ItemStack itemStack) { this.itemStack = itemStack; } @@ -27,7 +25,7 @@ public IPacketId getPacketId() { } @Override - public void writePacketData(PacketBuffer buf) throws IOException { + public void writePacketData(PacketBuffer buf) { buf.writeItemStackToBuffer(itemStack); } diff --git a/src/main/java/mezz/jei/network/packets/PacketGiveItemStack.java b/src/main/java/mezz/jei/network/packets/PacketGiveItemStack.java index d29993926..5ea7880cb 100644 --- a/src/main/java/mezz/jei/network/packets/PacketGiveItemStack.java +++ b/src/main/java/mezz/jei/network/packets/PacketGiveItemStack.java @@ -1,6 +1,5 @@ package mezz.jei.network.packets; -import javax.annotation.Nonnull; import java.io.IOException; import java.util.Map; @@ -29,7 +28,7 @@ public PacketGiveItemStack() { } - public PacketGiveItemStack(@Nonnull ItemStack itemStack) { + public PacketGiveItemStack(ItemStack itemStack) { this.itemStack = itemStack; } @@ -39,7 +38,7 @@ public IPacketId getPacketId() { } @Override - public void writePacketData(PacketBuffer buf) throws IOException { + public void writePacketData(PacketBuffer buf) { buf.writeNBTTagCompoundToBuffer(itemStack.serializeNBT()); } diff --git a/src/main/java/mezz/jei/network/packets/PacketJEI.java b/src/main/java/mezz/jei/network/packets/PacketJEI.java index a2722922e..9e4dce56c 100644 --- a/src/main/java/mezz/jei/network/packets/PacketJEI.java +++ b/src/main/java/mezz/jei/network/packets/PacketJEI.java @@ -2,15 +2,12 @@ import java.io.IOException; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.PacketBuffer; - -import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; - import io.netty.buffer.Unpooled; import mezz.jei.network.IPacketId; import mezz.jei.network.PacketHandler; -import mezz.jei.util.Log; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.PacketBuffer; +import net.minecraftforge.fml.common.network.internal.FMLProxyPacket; public abstract class PacketJEI { private final IPacketId id = getPacketId(); @@ -19,11 +16,7 @@ public final FMLProxyPacket getPacket() { PacketBuffer packetBuffer = new PacketBuffer(Unpooled.buffer()); packetBuffer.writeByte(id.ordinal()); - try { - writePacketData(packetBuffer); - } catch (IOException e) { - Log.error("Error creating packet", e); - } + writePacketData(packetBuffer); return new FMLProxyPacket(packetBuffer, PacketHandler.CHANNEL_ID); } @@ -32,5 +25,5 @@ public final FMLProxyPacket getPacket() { public abstract void readPacketData(PacketBuffer buf, EntityPlayer player) throws IOException; - public abstract void writePacketData(PacketBuffer buf) throws IOException; + public abstract void writePacketData(PacketBuffer buf); } diff --git a/src/main/java/mezz/jei/network/packets/PacketRecipeTransfer.java b/src/main/java/mezz/jei/network/packets/PacketRecipeTransfer.java index ffadf9b27..c0a103723 100644 --- a/src/main/java/mezz/jei/network/packets/PacketRecipeTransfer.java +++ b/src/main/java/mezz/jei/network/packets/PacketRecipeTransfer.java @@ -1,6 +1,5 @@ package mezz.jei.network.packets; -import javax.annotation.Nonnull; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -24,7 +23,7 @@ public PacketRecipeTransfer() { } - public PacketRecipeTransfer(@Nonnull Map recipeMap, @Nonnull List craftingSlots, @Nonnull List inventorySlots, boolean maxTransfer) { + public PacketRecipeTransfer(Map recipeMap, List craftingSlots, List inventorySlots, boolean maxTransfer) { this.recipeMap = recipeMap; this.craftingSlots = craftingSlots; this.inventorySlots = inventorySlots; @@ -66,7 +65,7 @@ public void readPacketData(PacketBuffer buf, EntityPlayer player) throws IOExcep } @Override - public void writePacketData(PacketBuffer buf) throws IOException { + public void writePacketData(PacketBuffer buf) { buf.writeVarIntToBuffer(recipeMap.size()); for (Map.Entry recipeMapEntry : recipeMap.entrySet()) { buf.writeVarIntToBuffer(recipeMapEntry.getKey()); diff --git a/src/main/java/mezz/jei/network/packets/package-info.java b/src/main/java/mezz/jei/network/packets/package-info.java new file mode 100644 index 000000000..e0396c7ca --- /dev/null +++ b/src/main/java/mezz/jei/network/packets/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.network.packets; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/package-info.java b/src/main/java/mezz/jei/package-info.java new file mode 100644 index 000000000..a07ff3ea1 --- /dev/null +++ b/src/main/java/mezz/jei/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/jei/JEIInternalPlugin.java b/src/main/java/mezz/jei/plugins/jei/JEIInternalPlugin.java index efdc6f899..22cea2569 100644 --- a/src/main/java/mezz/jei/plugins/jei/JEIInternalPlugin.java +++ b/src/main/java/mezz/jei/plugins/jei/JEIInternalPlugin.java @@ -1,5 +1,12 @@ package mezz.jei.plugins.jei; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.awt.Rectangle; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import mezz.jei.api.BlankModPlugin; import mezz.jei.api.IGuiHelper; import mezz.jei.api.IJeiHelpers; @@ -17,17 +24,10 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.awt.*; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - @JEIPlugin public class JEIInternalPlugin extends BlankModPlugin { @Override - public void register(@Nonnull IModRegistry registry) { + public void register(IModRegistry registry) { IJeiHelpers jeiHelpers = registry.getJeiHelpers(); IGuiHelper guiHelper = jeiHelpers.getGuiHelper(); @@ -81,7 +81,7 @@ public List getGuiExtraAreas(GuiBrewingStand guiContainer) { } @Override - public void onRuntimeAvailable(@Nonnull IJeiRuntime jeiRuntime) { + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { super.onRuntimeAvailable(jeiRuntime); if (Config.isDebugModeEnabled()) { diff --git a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipe.java b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipe.java index 9ade1634a..7e0714750 100644 --- a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipe.java +++ b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipe.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.jei.debug; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -8,6 +7,7 @@ import mezz.jei.Internal; import mezz.jei.api.IItemListOverlay; +import mezz.jei.api.IJeiRuntime; import mezz.jei.api.recipe.BlankRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; @@ -29,11 +29,10 @@ public DebugRecipe() { } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { button.drawButton(minecraft, mouseX, mouseY); } - @Nonnull @Override public List getFluidInputs() { return Arrays.asList( @@ -56,14 +55,17 @@ public List getTooltipStrings(int mouseX, int mouseY) { } @Override - public boolean handleClick(@Nonnull Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { + public boolean handleClick(Minecraft minecraft, int mouseX, int mouseY, int mouseButton) { if (mouseButton == 0 && button.mousePressed(minecraft, mouseX, mouseY)) { GuiScreen screen = new GuiInventory(minecraft.thePlayer); minecraft.displayGuiScreen(screen); - IItemListOverlay itemListOverlay = Internal.getRuntime().getItemListOverlay(); - String filterText = itemListOverlay.getFilterText(); - itemListOverlay.setFilterText(filterText + " test"); + IJeiRuntime runtime = Internal.getRuntime(); + if (runtime != null) { + IItemListOverlay itemListOverlay = runtime.getItemListOverlay(); + String filterText = itemListOverlay.getFilterText(); + itemListOverlay.setFilterText(filterText + " test"); + } return true; } return false; diff --git a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeCategory.java b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeCategory.java index 6d89be9a9..2dbd19d4f 100644 --- a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeCategory.java @@ -1,15 +1,17 @@ package mezz.jei.plugins.jei.debug; +import java.util.List; + import mezz.jei.Internal; import mezz.jei.api.IGuiHelper; import mezz.jei.api.IItemListOverlay; +import mezz.jei.api.IJeiRuntime; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiFluidStackGroup; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.gui.ITooltipCallback; import mezz.jei.api.recipe.BlankRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.config.Constants; import net.minecraft.client.Minecraft; import net.minecraft.init.Items; @@ -17,19 +19,12 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; -import javax.annotation.Nonnull; -import java.util.List; - public class DebugRecipeCategory extends BlankRecipeCategory { public static final int recipeWidth = 160; public static final int recipeHeight = 60; - @Nonnull private final IDrawable background; - @Nonnull private final String localizedName; - @Nonnull private final IDrawable tankBackground; - @Nonnull private final IDrawable tankOverlay; public DebugRecipeCategory(IGuiHelper guiHelper) { @@ -41,34 +36,34 @@ public DebugRecipeCategory(IGuiHelper guiHelper) { tankOverlay = guiHelper.createDrawable(backgroundTexture, 176, 55, 12, 47); } - @Nonnull @Override public String getUid() { return "debug"; } - @Nonnull @Override public String getTitle() { return localizedName; } - @Nonnull @Override public IDrawable getBackground() { return background; } @Override - public void drawExtras(@Nonnull Minecraft minecraft) { + public void drawExtras(Minecraft minecraft) { tankBackground.draw(minecraft); - IItemListOverlay itemListOverlay = Internal.getRuntime().getItemListOverlay(); - minecraft.fontRendererObj.drawString(itemListOverlay.getFilterText(), 20, 52, 0); - minecraft.fontRendererObj.drawString(String.valueOf(itemListOverlay.getStackUnderMouse()), 50, 52, 0); + IJeiRuntime runtime = Internal.getRuntime(); + if (runtime != null) { + IItemListOverlay itemListOverlay = runtime.getItemListOverlay(); + minecraft.fontRendererObj.drawString(itemListOverlay.getFilterText(), 20, 52, 0); + minecraft.fontRendererObj.drawString(String.valueOf(itemListOverlay.getStackUnderMouse()), 50, 52, 0); + } } @Override - public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull DebugRecipe recipeWrapper) { + public void setRecipe(IRecipeLayout recipeLayout, DebugRecipe recipeWrapper) { IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); guiItemStacks.addTooltipCallback(new ITooltipCallback() { diff --git a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeHandler.java b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeHandler.java index bf57e5da5..d329d51bf 100644 --- a/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/jei/debug/DebugRecipeHandler.java @@ -1,37 +1,31 @@ package mezz.jei.plugins.jei.debug; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; public class DebugRecipeHandler implements IRecipeHandler { - @Nonnull @Override public Class getRecipeClass() { return DebugRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return "debug"; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull DebugRecipe recipe) { + public String getRecipeCategoryUid(DebugRecipe recipe) { return "debug"; } - @Nonnull @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull DebugRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(DebugRecipe recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull DebugRecipe recipe) { + public boolean isRecipeValid(DebugRecipe recipe) { return true; } } diff --git a/src/main/java/mezz/jei/plugins/jei/debug/package-info.java b/src/main/java/mezz/jei/plugins/jei/debug/package-info.java new file mode 100644 index 000000000..f2b8cdc39 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/jei/debug/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.jei.debug; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipe.java b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipe.java index 7ca82b0f6..1a1bf9aed 100644 --- a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipe.java +++ b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipe.java @@ -1,7 +1,6 @@ package mezz.jei.plugins.jei.description; -import javax.annotation.Nonnull; -import java.awt.*; +import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -16,14 +15,11 @@ public class ItemDescriptionRecipe extends BlankRecipeWrapper { private static final int lineSpacing = 2; - @Nonnull private final List description; - @Nonnull private final List itemStacks; - @Nonnull private final IDrawable slotDrawable; - public static List create(@Nonnull List itemStacks, String... descriptionKeys) { + public static List create(List itemStacks, String... descriptionKeys) { List recipes = new ArrayList(); List descriptionLines = translateDescriptionLines(descriptionKeys); @@ -45,7 +41,6 @@ public static List create(@Nonnull List itemSt return recipes; } - @Nonnull private static List translateDescriptionLines(String... descriptionKeys) { List descriptionLines = new ArrayList(); for (String descriptionKey : descriptionKeys) { @@ -55,8 +50,7 @@ private static List translateDescriptionLines(String... descriptionKeys) return descriptionLines; } - @Nonnull - private static List expandNewlines(@Nonnull List descriptionLines) { + private static List expandNewlines(List descriptionLines) { List descriptionLinesExpanded = new ArrayList(); for (String descriptionLine : descriptionLines) { String[] descriptionLineExpanded = descriptionLine.split("\\\\n"); @@ -65,8 +59,7 @@ private static List expandNewlines(@Nonnull List descriptionLine return descriptionLinesExpanded; } - @Nonnull - private static List wrapDescriptionLines(@Nonnull List descriptionLines) { + private static List wrapDescriptionLines(List descriptionLines) { Minecraft minecraft = Minecraft.getMinecraft(); List descriptionLinesWrapped = new ArrayList(); for (String descriptionLine : descriptionLines) { @@ -76,26 +69,24 @@ private static List wrapDescriptionLines(@Nonnull List descripti return descriptionLinesWrapped; } - private ItemDescriptionRecipe(@Nonnull List itemStacks, @Nonnull List description) { + private ItemDescriptionRecipe(List itemStacks, List description) { this.description = description; this.itemStacks = itemStacks; this.slotDrawable = Internal.getHelpers().getGuiHelper().getSlotDrawable(); } - @Nonnull @Override public List getInputs() { return itemStacks; } - @Nonnull @Override public List getOutputs() { return itemStacks; } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { int xPos = (recipeWidth - slotDrawable.getWidth()) / 2; int yPos = 0; slotDrawable.draw(minecraft, xPos, yPos); @@ -108,7 +99,6 @@ public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHe } } - @Nonnull public List getDescription() { return description; } diff --git a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeCategory.java b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeCategory.java index ef6571ed1..d83806c4a 100644 --- a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeCategory.java @@ -5,18 +5,13 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.recipe.BlankRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import mezz.jei.util.Translator; -import javax.annotation.Nonnull; - public class ItemDescriptionRecipeCategory extends BlankRecipeCategory { public static final int recipeWidth = 160; public static final int recipeHeight = 125; - @Nonnull private final IDrawable background; - @Nonnull private final String localizedName; public ItemDescriptionRecipeCategory(IGuiHelper guiHelper) { @@ -24,26 +19,23 @@ public ItemDescriptionRecipeCategory(IGuiHelper guiHelper) { localizedName = Translator.translateToLocal("gui.jei.category.itemDescription"); } - @Nonnull @Override public String getUid() { return VanillaRecipeCategoryUid.DESCRIPTION; } - @Nonnull @Override public String getTitle() { return localizedName; } - @Nonnull @Override public IDrawable getBackground() { return background; } @Override - public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull ItemDescriptionRecipe recipeWrapper) { + public void setRecipe(IRecipeLayout recipeLayout, ItemDescriptionRecipe recipeWrapper) { IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); int xPos = (recipeWidth - 18) / 2; diff --git a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeHandler.java b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeHandler.java index b9606c04d..fa9adbd51 100644 --- a/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/jei/description/ItemDescriptionRecipeHandler.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.jei.description; -import javax.annotation.Nonnull; import java.util.List; import mezz.jei.api.recipe.IRecipeHandler; @@ -10,32 +9,28 @@ import mezz.jei.util.Log; public class ItemDescriptionRecipeHandler implements IRecipeHandler { - @Nonnull @Override public Class getRecipeClass() { return ItemDescriptionRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.DESCRIPTION; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull ItemDescriptionRecipe recipe) { + public String getRecipeCategoryUid(ItemDescriptionRecipe recipe) { return VanillaRecipeCategoryUid.DESCRIPTION; } - @Nonnull @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull ItemDescriptionRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(ItemDescriptionRecipe recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull ItemDescriptionRecipe recipe) { + public boolean isRecipeValid(ItemDescriptionRecipe recipe) { List description = recipe.getDescription(); if (description.isEmpty()) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); diff --git a/src/main/java/mezz/jei/plugins/jei/description/package-info.java b/src/main/java/mezz/jei/plugins/jei/description/package-info.java new file mode 100644 index 000000000..2581bb9a9 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/jei/description/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.jei.description; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/jei/package-info.java b/src/main/java/mezz/jei/plugins/jei/package-info.java new file mode 100644 index 000000000..c90c2a805 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/jei/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.jei; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/vanilla/VanillaPlugin.java b/src/main/java/mezz/jei/plugins/vanilla/VanillaPlugin.java index 2f6216016..132a1d567 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/VanillaPlugin.java +++ b/src/main/java/mezz/jei/plugins/vanilla/VanillaPlugin.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.BlankModPlugin; @@ -48,7 +47,7 @@ @JEIPlugin public class VanillaPlugin extends BlankModPlugin { @Override - public void register(@Nonnull IModRegistry registry) { + public void register(IModRegistry registry) { IItemRegistry itemRegistry = registry.getItemRegistry(); IJeiHelpers jeiHelpers = registry.getJeiHelpers(); @@ -64,7 +63,7 @@ public void register(@Nonnull IModRegistry registry) { subtypeRegistry.registerNbtInterpreter(Items.BANNER, new ISubtypeRegistry.ISubtypeInterpreter() { @Nullable @Override - public String getSubtypeInfo(@Nonnull ItemStack itemStack) { + public String getSubtypeInfo(ItemStack itemStack) { EnumDyeColor baseColor = ItemBanner.getBaseColor(itemStack); return baseColor.toString(); } @@ -72,7 +71,7 @@ public String getSubtypeInfo(@Nonnull ItemStack itemStack) { subtypeRegistry.registerNbtInterpreter(Items.SPAWN_EGG, new ISubtypeRegistry.ISubtypeInterpreter() { @Nullable @Override - public String getSubtypeInfo(@Nonnull ItemStack itemStack) { + public String getSubtypeInfo(ItemStack itemStack) { return ItemMonsterPlacer.getEntityIdFromItem(itemStack); } }); diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java index 253793986..74a31754c 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeCategory.java @@ -1,5 +1,7 @@ package mezz.jei.plugins.vanilla.brewing; +import java.util.List; + import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IDrawableAnimated; @@ -7,15 +9,11 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import mezz.jei.util.Translator; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; -import javax.annotation.Nonnull; -import java.util.List; - public class BrewingRecipeCategory implements IRecipeCategory { private static final int brewPotionSlot1 = 0; @@ -27,17 +25,11 @@ public class BrewingRecipeCategory implements IRecipeCategory { - @Nonnull @Override public Class getRecipeClass() { return BrewingRecipeWrapper.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.BREWING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull BrewingRecipeWrapper recipe) { + public String getRecipeCategoryUid(BrewingRecipeWrapper recipe) { return VanillaRecipeCategoryUid.BREWING; } - @Nonnull @Override - public BrewingRecipeWrapper getRecipeWrapper(@Nonnull BrewingRecipeWrapper recipe) { + public BrewingRecipeWrapper getRecipeWrapper(BrewingRecipeWrapper recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull BrewingRecipeWrapper recipe) { + public boolean isRecipeValid(BrewingRecipeWrapper recipe) { if (recipe.getInputs().size() != 4) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has the wrong number of inputs (needs 4). {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeMaker.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeMaker.java index 37ec65bda..73ff38a1b 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeMaker.java +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeMaker.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla.brewing; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -29,7 +28,6 @@ public class BrewingRecipeMaker { private static final Set unhandledRecipeClasses = new HashSet(); - @Nonnull public static List getBrewingRecipes(IItemRegistry itemRegistry) { Set recipes = new HashSet(); diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeWrapper.java index 53a517e0e..cf4d1761e 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/BrewingRecipeWrapper.java @@ -1,7 +1,6 @@ package mezz.jei.plugins.vanilla.brewing; -import javax.annotation.Nonnull; -import java.awt.*; +import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -47,20 +46,18 @@ public BrewingRecipeWrapper(List ingredients, ItemStack potionInput, firstIngredient.getItem(), firstIngredient.getMetadata()); } - @Nonnull @Override public List getInputs() { return inputs; } - @Nonnull @Override public List getOutputs() { return Collections.singletonList(potionOutput); } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { if (brewingSteps > 0) { String steps = Translator.translateToLocalFormatted("gui.jei.category.brewing.steps", brewingSteps); minecraft.fontRendererObj.drawString(steps, 70, 28, Color.gray.getRGB()); diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/PotionSubtypeInterpreter.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/PotionSubtypeInterpreter.java index fe94e7c4c..18b8e529f 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/brewing/PotionSubtypeInterpreter.java +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/PotionSubtypeInterpreter.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla.brewing; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import mezz.jei.api.ISubtypeRegistry; @@ -17,7 +16,7 @@ private PotionSubtypeInterpreter() { @Nullable @Override - public String getSubtypeInfo(@Nonnull ItemStack itemStack) { + public String getSubtypeInfo(ItemStack itemStack) { if (!itemStack.hasTagCompound()) { return null; } diff --git a/src/main/java/mezz/jei/plugins/vanilla/brewing/package-info.java b/src/main/java/mezz/jei/plugins/vanilla/brewing/package-info.java new file mode 100644 index 000000000..be38938eb --- /dev/null +++ b/src/main/java/mezz/jei/plugins/vanilla/brewing/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.vanilla.brewing; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/AbstractShapelessRecipeWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/AbstractShapelessRecipeWrapper.java index ec1de0ec1..0e5a7e7f4 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/AbstractShapelessRecipeWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/AbstractShapelessRecipeWrapper.java @@ -1,5 +1,9 @@ package mezz.jei.plugins.vanilla.crafting; +import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; + import mezz.jei.api.IGuiHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper; @@ -11,16 +15,9 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.client.config.HoverChecker; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.Collections; -import java.util.List; - public abstract class AbstractShapelessRecipeWrapper extends VanillaRecipeWrapper implements ICraftingRecipeWrapper { private static final double shapelessIconScale = 0.5; - @Nonnull private final IDrawable shapelessIcon; - @Nonnull private final HoverChecker shapelessIconHoverChecker; public AbstractShapelessRecipeWrapper(IGuiHelper guiHelper) { @@ -34,7 +31,7 @@ public AbstractShapelessRecipeWrapper(IGuiHelper guiHelper) { } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { super.drawInfo(minecraft, recipeWidth, recipeHeight, mouseX, mouseY); if (hasMultipleIngredients()) { diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java index 83d418955..15d9b25d8 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/CraftingRecipeCategory.java @@ -6,16 +6,12 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.recipe.BlankRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import mezz.jei.api.recipe.wrapper.ICraftingRecipeWrapper; import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper; -import mezz.jei.util.Log; import mezz.jei.util.Translator; import net.minecraft.util.ResourceLocation; -import javax.annotation.Nonnull; - public class CraftingRecipeCategory extends BlankRecipeCategory { private static final int craftOutputSlot = 0; @@ -24,11 +20,8 @@ public class CraftingRecipeCategory extends BlankRecipeCategory { @Override - @Nonnull public Class getRecipeClass() { return ShapedOreRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull ShapedOreRecipe recipe) { + public String getRecipeCategoryUid(ShapedOreRecipe recipe) { return VanillaRecipeCategoryUid.CRAFTING; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull ShapedOreRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(ShapedOreRecipe recipe) { return new ShapedOreRecipeWrapper(recipe); } @Override - public boolean isRecipeValid(@Nonnull ShapedOreRecipe recipe) { + public boolean isRecipeValid(ShapedOreRecipe recipe) { if (recipe.getRecipeOutput() == null) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no output. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedOreRecipeWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedOreRecipeWrapper.java index c6f2168a4..165ebbace 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedOreRecipeWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedOreRecipeWrapper.java @@ -1,26 +1,22 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; import java.util.Arrays; import java.util.Collections; import java.util.List; +import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper; +import mezz.jei.plugins.vanilla.VanillaRecipeWrapper; import net.minecraft.item.ItemStack; - import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import net.minecraftforge.oredict.ShapedOreRecipe; -import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper; -import mezz.jei.plugins.vanilla.VanillaRecipeWrapper; - public class ShapedOreRecipeWrapper extends VanillaRecipeWrapper implements IShapedCraftingRecipeWrapper { - @Nonnull private final ShapedOreRecipe recipe; private final int width; private final int height; - public ShapedOreRecipeWrapper(@Nonnull ShapedOreRecipe recipe) { + public ShapedOreRecipeWrapper(ShapedOreRecipe recipe) { this.recipe = recipe; for (Object input : this.recipe.getInput()) { if (input instanceof ItemStack) { @@ -34,13 +30,11 @@ public ShapedOreRecipeWrapper(@Nonnull ShapedOreRecipe recipe) { this.height = ObfuscationReflectionHelper.getPrivateValue(ShapedOreRecipe.class, this.recipe, "height"); } - @Nonnull @Override public List getInputs() { return Arrays.asList(recipe.getInput()); } - @Nonnull @Override public List getOutputs() { return Collections.singletonList(recipe.getRecipeOutput()); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesHandler.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesHandler.java index 259484a36..fc194b761 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesHandler.java @@ -1,7 +1,5 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; @@ -13,31 +11,27 @@ public class ShapedRecipesHandler implements IRecipeHandler { @Override - @Nonnull public Class getRecipeClass() { return ShapedRecipes.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull ShapedRecipes recipe) { + public String getRecipeCategoryUid(ShapedRecipes recipe) { return VanillaRecipeCategoryUid.CRAFTING; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull ShapedRecipes recipe) { + public IRecipeWrapper getRecipeWrapper(ShapedRecipes recipe) { return new ShapedRecipesWrapper(recipe); } @Override - public boolean isRecipeValid(@Nonnull ShapedRecipes recipe) { + public boolean isRecipeValid(ShapedRecipes recipe) { if (recipe.getRecipeOutput() == null) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no outputs. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesWrapper.java index 702507c55..24b11168e 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapedRecipesWrapper.java @@ -1,22 +1,19 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; import java.util.Arrays; import java.util.Collections; import java.util.List; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ShapedRecipes; - import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper; import mezz.jei.plugins.vanilla.VanillaRecipeWrapper; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.ShapedRecipes; public class ShapedRecipesWrapper extends VanillaRecipeWrapper implements IShapedCraftingRecipeWrapper { - @Nonnull private final ShapedRecipes recipe; - public ShapedRecipesWrapper(@Nonnull ShapedRecipes recipe) { + public ShapedRecipesWrapper(ShapedRecipes recipe) { this.recipe = recipe; for (ItemStack itemStack : this.recipe.recipeItems) { if (itemStack != null && itemStack.stackSize != 1) { @@ -25,13 +22,11 @@ public ShapedRecipesWrapper(@Nonnull ShapedRecipes recipe) { } } - @Nonnull @Override public List getInputs() { return Arrays.asList(recipe.recipeItems); } - @Nonnull @Override public List getOutputs() { return Collections.singletonList(recipe.getRecipeOutput()); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeHandler.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeHandler.java index 812e1853f..2afb01768 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeHandler.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; import java.util.List; import mezz.jei.api.IGuiHelper; @@ -12,39 +11,34 @@ import net.minecraftforge.oredict.ShapelessOreRecipe; public class ShapelessOreRecipeHandler implements IRecipeHandler { - @Nonnull private final IGuiHelper guiHelper; - public ShapelessOreRecipeHandler(@Nonnull IGuiHelper guiHelper) { + public ShapelessOreRecipeHandler(IGuiHelper guiHelper) { this.guiHelper = guiHelper; } @Override - @Nonnull public Class getRecipeClass() { return ShapelessOreRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull ShapelessOreRecipe recipe) { + public String getRecipeCategoryUid(ShapelessOreRecipe recipe) { return VanillaRecipeCategoryUid.CRAFTING; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull ShapelessOreRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(ShapelessOreRecipe recipe) { return new ShapelessOreRecipeWrapper(guiHelper, recipe); } @Override - public boolean isRecipeValid(@Nonnull ShapelessOreRecipe recipe) { + public boolean isRecipeValid(ShapelessOreRecipe recipe) { if (recipe.getRecipeOutput() == null) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no outputs. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeWrapper.java index 8dc5a0210..7497e78c4 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessOreRecipeWrapper.java @@ -1,19 +1,17 @@ package mezz.jei.plugins.vanilla.crafting; +import java.util.Collections; +import java.util.List; + import mezz.jei.api.IGuiHelper; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.ShapelessOreRecipe; -import javax.annotation.Nonnull; -import java.util.Collections; -import java.util.List; - public class ShapelessOreRecipeWrapper extends AbstractShapelessRecipeWrapper { - @Nonnull private final ShapelessOreRecipe recipe; - public ShapelessOreRecipeWrapper(@Nonnull IGuiHelper guiHelper, @Nonnull ShapelessOreRecipe recipe) { + public ShapelessOreRecipeWrapper(IGuiHelper guiHelper, ShapelessOreRecipe recipe) { super(guiHelper); this.recipe = recipe; for (Object input : this.recipe.getInput()) { @@ -26,13 +24,11 @@ public ShapelessOreRecipeWrapper(@Nonnull IGuiHelper guiHelper, @Nonnull Shapele } } - @Nonnull @Override public List getInputs() { return recipe.getInput(); } - @Nonnull @Override public List getOutputs() { return Collections.singletonList(recipe.getRecipeOutput()); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesHandler.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesHandler.java index 0a02de6e0..55cfa7ac6 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesHandler.java @@ -1,7 +1,5 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; - import mezz.jei.api.IGuiHelper; import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; @@ -12,39 +10,34 @@ import net.minecraft.item.crafting.ShapelessRecipes; public class ShapelessRecipesHandler implements IRecipeHandler { - @Nonnull private final IGuiHelper guiHelper; - public ShapelessRecipesHandler(@Nonnull IGuiHelper guiHelper) { + public ShapelessRecipesHandler(IGuiHelper guiHelper) { this.guiHelper = guiHelper; } @Override - @Nonnull public Class getRecipeClass() { return ShapelessRecipes.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull ShapelessRecipes recipe) { + public String getRecipeCategoryUid(ShapelessRecipes recipe) { return VanillaRecipeCategoryUid.CRAFTING; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull ShapelessRecipes recipe) { + public IRecipeWrapper getRecipeWrapper(ShapelessRecipes recipe) { return new ShapelessRecipesWrapper(guiHelper, recipe); } @Override - public boolean isRecipeValid(@Nonnull ShapelessRecipes recipe) { + public boolean isRecipeValid(ShapelessRecipes recipe) { if (recipe.getRecipeOutput() == null) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no output. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesWrapper.java index 24ce1f5ae..754f6d849 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/ShapelessRecipesWrapper.java @@ -1,19 +1,17 @@ package mezz.jei.plugins.vanilla.crafting; +import java.util.Collections; +import java.util.List; + import mezz.jei.api.IGuiHelper; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.ShapelessRecipes; -import javax.annotation.Nonnull; -import java.util.Collections; -import java.util.List; - public class ShapelessRecipesWrapper extends AbstractShapelessRecipeWrapper { - @Nonnull private final ShapelessRecipes recipe; - public ShapelessRecipesWrapper(@Nonnull IGuiHelper guiHelper, @Nonnull ShapelessRecipes recipe) { + public ShapelessRecipesWrapper(IGuiHelper guiHelper, ShapelessRecipes recipe) { super(guiHelper); this.recipe = recipe; for (Object input : this.recipe.recipeItems) { @@ -26,13 +24,11 @@ public ShapelessRecipesWrapper(@Nonnull IGuiHelper guiHelper, @Nonnull Shapeless } } - @Nonnull @Override public List getInputs() { return recipe.recipeItems; } - @Nonnull @Override public List getOutputs() { return Collections.singletonList(recipe.getRecipeOutput()); diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeHandler.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeHandler.java index eefa27e1e..a53422917 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeHandler.java @@ -1,38 +1,32 @@ package mezz.jei.plugins.vanilla.crafting; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; public class TippedArrowRecipeHandler implements IRecipeHandler { - @Nonnull @Override public Class getRecipeClass() { return TippedArrowRecipeWrapper.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull TippedArrowRecipeWrapper recipe) { + public String getRecipeCategoryUid(TippedArrowRecipeWrapper recipe) { return VanillaRecipeCategoryUid.CRAFTING; } - @Nonnull @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull TippedArrowRecipeWrapper recipe) { + public IRecipeWrapper getRecipeWrapper(TippedArrowRecipeWrapper recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull TippedArrowRecipeWrapper recipe) { + public boolean isRecipeValid(TippedArrowRecipeWrapper recipe) { return true; } } diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeWrapper.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeWrapper.java index 3b418da9d..632307355 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeWrapper.java +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/TippedArrowRecipeWrapper.java @@ -1,5 +1,9 @@ package mezz.jei.plugins.vanilla.crafting; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import mezz.jei.api.recipe.BlankRecipeWrapper; import mezz.jei.api.recipe.wrapper.IShapedCraftingRecipeWrapper; import net.minecraft.init.Items; @@ -7,18 +11,11 @@ import net.minecraft.potion.PotionType; import net.minecraft.potion.PotionUtils; -import javax.annotation.Nonnull; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - public class TippedArrowRecipeWrapper extends BlankRecipeWrapper implements IShapedCraftingRecipeWrapper { - @Nonnull private final List inputs; - @Nonnull private final List outputs; - public TippedArrowRecipeWrapper(@Nonnull PotionType type) { + public TippedArrowRecipeWrapper(PotionType type) { ItemStack arrowStack = new ItemStack(Items.ARROW); ItemStack lingeringPotion = PotionUtils.addPotionToItemStack(new ItemStack(Items.LINGERING_POTION), type); this.inputs = Arrays.asList( @@ -32,13 +29,11 @@ public TippedArrowRecipeWrapper(@Nonnull PotionType type) { } @Override - @Nonnull public List getInputs() { return inputs; } @Override - @Nonnull public List getOutputs() { return outputs; } diff --git a/src/main/java/mezz/jei/plugins/vanilla/crafting/package-info.java b/src/main/java/mezz/jei/plugins/vanilla/crafting/package-info.java new file mode 100644 index 000000000..ed5a42a85 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/vanilla/crafting/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.vanilla.crafting; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipe.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipe.java index dd13ea497..059fd1d4c 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipe.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipe.java @@ -1,7 +1,6 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; -import java.awt.*; +import java.awt.Color; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,14 +16,11 @@ import net.minecraft.util.ResourceLocation; public class FuelRecipe extends VanillaRecipeWrapper { - @Nonnull private final List> inputs; - @Nonnull private final String burnTimeString; - @Nonnull private final IDrawableAnimated flame; - public FuelRecipe(@Nonnull IGuiHelper guiHelper, @Nonnull Collection input, int burnTime) { + public FuelRecipe(IGuiHelper guiHelper, Collection input, int burnTime) { List inputList = new ArrayList(input); this.inputs = Collections.singletonList(inputList); this.burnTimeString = Translator.translateToLocalFormatted("gui.jei.category.fuel.burnTime", burnTime); @@ -34,19 +30,18 @@ public FuelRecipe(@Nonnull IGuiHelper guiHelper, @Nonnull Collection this.flame = guiHelper.createAnimatedDrawable(flameDrawable, burnTime, IDrawableAnimated.StartDirection.TOP, true); } - @Nonnull @Override public List> getInputs() { return inputs; } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { minecraft.fontRendererObj.drawString(burnTimeString, 24, 12, Color.gray.getRGB()); } @Override - public void drawAnimations(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight) { + public void drawAnimations(Minecraft minecraft, int recipeWidth, int recipeHeight) { flame.draw(minecraft, 2, 0); } } diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeHandler.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeHandler.java index 0730732eb..47211fac4 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeHandler.java @@ -1,7 +1,5 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; @@ -10,31 +8,27 @@ public class FuelRecipeHandler implements IRecipeHandler { @Override - @Nonnull public Class getRecipeClass() { return FuelRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.FUEL; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull FuelRecipe recipe) { + public String getRecipeCategoryUid(FuelRecipe recipe) { return VanillaRecipeCategoryUid.FUEL; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull FuelRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(FuelRecipe recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull FuelRecipe recipe) { + public boolean isRecipeValid(FuelRecipe recipe) { if (recipe.getInputs().isEmpty()) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no inputs. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeMaker.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeMaker.java index c26b3179d..e72154d83 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeMaker.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FuelRecipeMaker.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -18,8 +17,7 @@ public class FuelRecipeMaker { - @Nonnull - public static List getFuelRecipes(@Nonnull IItemRegistry itemRegistry, @Nonnull IJeiHelpers helpers) { + public static List getFuelRecipes(IItemRegistry itemRegistry, IJeiHelpers helpers) { IGuiHelper guiHelper = helpers.getGuiHelper(); IStackHelper stackHelper = helpers.getStackHelper(); List fuelStacks = itemRegistry.getFuels(); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java index cbb6b660c..32bd42104 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceFuelCategory.java @@ -4,16 +4,11 @@ import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import mezz.jei.util.Translator; -import javax.annotation.Nonnull; - public class FurnaceFuelCategory extends FurnaceRecipeCategory { - @Nonnull private final IDrawable background; - @Nonnull private final String localizedName; public FurnaceFuelCategory(IGuiHelper guiHelper) { @@ -23,25 +18,22 @@ public FurnaceFuelCategory(IGuiHelper guiHelper) { } @Override - @Nonnull public IDrawable getBackground() { return background; } - @Nonnull @Override public String getUid() { return VanillaRecipeCategoryUid.FUEL; } - @Nonnull @Override public String getTitle() { return localizedName; } @Override - public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull FuelRecipe recipeWrapper) { + public void setRecipe(IRecipeLayout recipeLayout, FuelRecipe recipeWrapper) { IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); guiItemStacks.init(fuelSlot, true, 0, 14); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceRecipeCategory.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceRecipeCategory.java index 50cfe4d63..f9c61fa4d 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceRecipeCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceRecipeCategory.java @@ -7,17 +7,13 @@ import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.util.ResourceLocation; -import javax.annotation.Nonnull; - public abstract class FurnaceRecipeCategory extends BlankRecipeCategory { protected static final int inputSlot = 0; protected static final int fuelSlot = 1; protected static final int outputSlot = 2; protected final ResourceLocation backgroundLocation; - @Nonnull protected final IDrawableAnimated flame; - @Nonnull protected final IDrawableAnimated arrow; public FurnaceRecipeCategory(IGuiHelper guiHelper) { diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java index ccecf787e..5c53329cb 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/FurnaceSmeltingCategory.java @@ -4,18 +4,13 @@ import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; import mezz.jei.util.Translator; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; -import javax.annotation.Nonnull; - public class FurnaceSmeltingCategory extends FurnaceRecipeCategory { - @Nonnull private final IDrawable background; - @Nonnull private final String localizedName; public FurnaceSmeltingCategory(IGuiHelper guiHelper) { @@ -26,31 +21,28 @@ public FurnaceSmeltingCategory(IGuiHelper guiHelper) { } @Override - @Nonnull public IDrawable getBackground() { return background; } @Override - public void drawAnimations(@Nonnull Minecraft minecraft) { + public void drawAnimations(Minecraft minecraft) { flame.draw(minecraft, 2, 20); arrow.draw(minecraft, 24, 18); } - @Nonnull @Override public String getTitle() { return localizedName; } - @Nonnull @Override public String getUid() { return VanillaRecipeCategoryUid.SMELTING; } @Override - public void setRecipe(@Nonnull IRecipeLayout recipeLayout, @Nonnull SmeltingRecipe recipeWrapper) { + public void setRecipe(IRecipeLayout recipeLayout, SmeltingRecipe recipeWrapper) { IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); guiItemStacks.init(inputSlot, true, 0, 0); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipe.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipe.java index 4bd5dcf75..7e55ca80b 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipe.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipe.java @@ -1,7 +1,6 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; -import java.awt.*; +import java.awt.Color; import java.util.Collections; import java.util.List; @@ -13,28 +12,24 @@ import net.minecraft.item.crafting.FurnaceRecipes; public class SmeltingRecipe extends VanillaRecipeWrapper { - @Nonnull private final List> input; - @Nonnull private final List outputs; - public SmeltingRecipe(@Nonnull List input, @Nonnull ItemStack output) { + public SmeltingRecipe(List input, ItemStack output) { this.input = Collections.singletonList(input); this.outputs = Collections.singletonList(output); } - @Nonnull public List> getInputs() { return input; } - @Nonnull public List getOutputs() { return outputs; } @Override - public void drawInfo(@Nonnull Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { + public void drawInfo(Minecraft minecraft, int recipeWidth, int recipeHeight, int mouseX, int mouseY) { FurnaceRecipes furnaceRecipes = FurnaceRecipes.instance(); float experience = furnaceRecipes.getSmeltingExperience(outputs.get(0)); if (experience > 0) { diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeHandler.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeHandler.java index 4802ee5b8..ced804f6d 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeHandler.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeHandler.java @@ -1,7 +1,5 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; - import mezz.jei.api.recipe.IRecipeHandler; import mezz.jei.api.recipe.IRecipeWrapper; import mezz.jei.api.recipe.VanillaRecipeCategoryUid; @@ -11,31 +9,27 @@ public class SmeltingRecipeHandler implements IRecipeHandler { @Override - @Nonnull public Class getRecipeClass() { return SmeltingRecipe.class; } - @Nonnull @Override public String getRecipeCategoryUid() { return VanillaRecipeCategoryUid.SMELTING; } - @Nonnull @Override - public String getRecipeCategoryUid(@Nonnull SmeltingRecipe recipe) { + public String getRecipeCategoryUid(SmeltingRecipe recipe) { return VanillaRecipeCategoryUid.SMELTING; } @Override - @Nonnull - public IRecipeWrapper getRecipeWrapper(@Nonnull SmeltingRecipe recipe) { + public IRecipeWrapper getRecipeWrapper(SmeltingRecipe recipe) { return recipe; } @Override - public boolean isRecipeValid(@Nonnull SmeltingRecipe recipe) { + public boolean isRecipeValid(SmeltingRecipe recipe) { if (recipe.getInputs().isEmpty()) { String recipeInfo = ErrorUtil.getInfoFromBrokenRecipe(recipe, this); Log.error("Recipe has no inputs. {}", recipeInfo); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeMaker.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeMaker.java index 145bc4182..e06eb84a6 100644 --- a/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeMaker.java +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/SmeltingRecipeMaker.java @@ -1,6 +1,5 @@ package mezz.jei.plugins.vanilla.furnace; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -12,7 +11,6 @@ public class SmeltingRecipeMaker { - @Nonnull public static List getFurnaceRecipes(IJeiHelpers helpers) { IStackHelper stackHelper = helpers.getStackHelper(); FurnaceRecipes furnaceRecipes = FurnaceRecipes.instance(); diff --git a/src/main/java/mezz/jei/plugins/vanilla/furnace/package-info.java b/src/main/java/mezz/jei/plugins/vanilla/furnace/package-info.java new file mode 100644 index 000000000..f3a216150 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/vanilla/furnace/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.vanilla.furnace; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/plugins/vanilla/package-info.java b/src/main/java/mezz/jei/plugins/vanilla/package-info.java new file mode 100644 index 000000000..a2569f9a3 --- /dev/null +++ b/src/main/java/mezz/jei/plugins/vanilla/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.plugins.vanilla; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java index c37d337d1..d5abb00d2 100644 --- a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java +++ b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandler.java @@ -1,6 +1,5 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -28,10 +27,9 @@ import net.minecraft.item.ItemStack; public class BasicRecipeTransferHandler implements IRecipeTransferHandler { - @Nonnull private final IRecipeTransferInfo transferHelper; - public BasicRecipeTransferHandler(@Nonnull IRecipeTransferInfo transferHelper) { + public BasicRecipeTransferHandler(IRecipeTransferInfo transferHelper) { this.transferHelper = transferHelper; } @@ -47,7 +45,7 @@ public String getRecipeCategoryUid() { @Nullable @Override - public IRecipeTransferError transferRecipe(@Nonnull C container, @Nonnull IRecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer, boolean doTransfer) { + public IRecipeTransferError transferRecipe(C container, IRecipeLayout recipeLayout, EntityPlayer player, boolean maxTransfer, boolean doTransfer) { IRecipeTransferHandlerHelper handlerHelper = Internal.getHelpers().recipeTransferHandlerHelper(); StackHelper stackHelper = Internal.getStackHelper(); @@ -84,19 +82,21 @@ public IRecipeTransferError transferRecipe(@Nonnull C container, @Nonnull IRecip int emptySlotCount = 0; for (Slot slot : craftingSlots.values()) { - if (slot.getHasStack()) { + final ItemStack stack = slot.getStack(); + if (stack != null) { if (!slot.canTakeStack(player)) { Log.error("Recipe Transfer helper {} does not work for container {}. Player can't move item out of Crafting Slot number {}", transferHelper.getClass(), container.getClass(), slot.slotNumber); return handlerHelper.createInternalError(); } filledCraftSlotCount++; - availableItemStacks.put(slot.slotNumber, slot.getStack().copy()); + availableItemStacks.put(slot.slotNumber, stack.copy()); } } for (Slot slot : inventorySlots.values()) { - if (slot.getHasStack()) { - availableItemStacks.put(slot.slotNumber, slot.getStack().copy()); + final ItemStack stack = slot.getStack(); + if (stack != null) { + availableItemStacks.put(slot.slotNumber, stack.copy()); } else { emptySlotCount++; } @@ -125,16 +125,12 @@ public IRecipeTransferError transferRecipe(@Nonnull C container, @Nonnull IRecip for (Map.Entry entry : matchingItemsResult.matchingItems.entrySet()) { int craftNumber = entry.getKey(); int slotNumber = craftingSlotIndexes.get(craftNumber); - if (slotNumber >= container.inventorySlots.size()) { + if (slotNumber < 0 || slotNumber >= container.inventorySlots.size()) { Log.error("Recipes Transfer Helper {} references slot {} outside of the inventory's size {}", transferHelper.getClass(), slotNumber, container.inventorySlots.size()); return handlerHelper.createInternalError(); } Slot slot = container.getSlot(slotNumber); ItemStack stack = container.getSlot(entry.getValue()).getStack(); - if (slot == null) { - Log.error("The slot number {} does not exist in the container.", slotNumber); - return handlerHelper.createInternalError(); - } if (!slot.isItemValid(stack)) { Log.error("The ItemStack {} is not valid for the slot number {}", stack, slotNumber); return handlerHelper.createInternalError(); diff --git a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandlerServer.java b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandlerServer.java index 2b16063b6..3c86c19c3 100644 --- a/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandlerServer.java +++ b/src/main/java/mezz/jei/transfer/BasicRecipeTransferHandlerServer.java @@ -1,6 +1,6 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -19,7 +19,7 @@ public class BasicRecipeTransferHandlerServer { /** * Called server-side to actually put the items in place. */ - public static void setItems(@Nonnull EntityPlayer player, @Nonnull Map slotIdMap, @Nonnull List craftingSlots, @Nonnull List inventorySlots, boolean maxTransfer) { + public static void setItems(EntityPlayer player, Map slotIdMap, List craftingSlots, List inventorySlots, boolean maxTransfer) { Container container = player.openContainer; StackHelper stackHelper = Internal.getStackHelper(); @@ -27,10 +27,11 @@ public static void setItems(@Nonnull EntityPlayer player, @Nonnull Map slotMap = new HashMap(slotIdMap.size()); for (Map.Entry entry : slotIdMap.entrySet()) { Slot slot = container.getSlot(entry.getValue()); - if (slot == null || !slot.getHasStack()) { + final ItemStack slotStack = slot.getStack(); + if (slotStack == null) { return; } - ItemStack stack = slot.getStack().copy(); + ItemStack stack = slotStack.copy(); stack.stackSize = 1; slotMap.put(entry.getKey(), stack); } @@ -45,7 +46,7 @@ public static void setItems(@Nonnull EntityPlayer player, @Nonnull Map clearedCraftingItems = new ArrayList(); for (Integer craftingSlotNumber : craftingSlots) { Slot craftingSlot = container.getSlot(craftingSlotNumber); - if (craftingSlot != null && craftingSlot.getHasStack()) { + if (craftingSlot.getHasStack()) { ItemStack craftingItem = craftingSlot.decrStackSize(Integer.MAX_VALUE); clearedCraftingItems.add(craftingItem); } @@ -75,7 +76,7 @@ public static void setItems(@Nonnull EntityPlayer player, @Nonnull Map required, @Nonnull List craftingSlots, @Nonnull List inventorySlots, boolean maxTransfer) { + private static int removeSetsFromInventory(Container container, Collection required, List craftingSlots, List inventorySlots, boolean maxTransfer) { if (maxTransfer) { List requiredCopy = new ArrayList(); requiredCopy.addAll(required); @@ -98,15 +99,15 @@ private static int removeSetsFromInventory(@Nonnull Container container, @Nonnul } } - private static boolean removeSetsFromInventory(@Nonnull Container container, @Nonnull Iterable required, @Nonnull List craftingSlots, @Nonnull List inventorySlots) { + private static boolean removeSetsFromInventory(Container container, Iterable required, List craftingSlots, List inventorySlots) { final Map originalSlotContents = new HashMap(); for (ItemStack matchingStack : required) { final ItemStack requiredStack = matchingStack.copy(); while (requiredStack.stackSize > 0) { final Slot slot = getSlotWithStack(container, requiredStack, craftingSlots, inventorySlots); - if (slot == null) { - // abort! put removed items back where the came from + if (slot == null || slot.getStack() == null) { + // abort! put removed items back where they came from for (Map.Entry slotEntry : originalSlotContents.entrySet()) { ItemStack stack = slotEntry.getValue(); slotEntry.getKey().putStack(stack); @@ -126,7 +127,8 @@ private static boolean removeSetsFromInventory(@Nonnull Container container, @No return true; } - private static Slot getSlotWithStack(@Nonnull Container container, @Nonnull ItemStack stack, @Nonnull List craftingSlots, @Nonnull List inventorySlots) { + @Nullable + private static Slot getSlotWithStack(Container container, ItemStack stack, List craftingSlots, List inventorySlots) { StackHelper stackHelper = Internal.getStackHelper(); Slot slot = stackHelper.getSlotWithStack(container, craftingSlots, stack); diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java b/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java index 49641dc16..48c70da82 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferErrorInternal.java @@ -1,12 +1,8 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; - import mezz.jei.api.gui.IRecipeLayout; -import net.minecraft.client.Minecraft; - import mezz.jei.api.recipe.transfer.IRecipeTransferError; -import mezz.jei.gui.RecipeLayout; +import net.minecraft.client.Minecraft; public class RecipeTransferErrorInternal implements IRecipeTransferError { public static final RecipeTransferErrorInternal INSTANCE = new RecipeTransferErrorInternal(); @@ -15,14 +11,13 @@ private RecipeTransferErrorInternal() { } - @Nonnull @Override public Type getType() { return Type.INTERNAL; } @Override - public void showError(@Nonnull Minecraft minecraft, int mouseX, int mouseY, @Nonnull IRecipeLayout recipeLayout, int recipeX, int recipeY) { + public void showError(Minecraft minecraft, int mouseX, int mouseY, IRecipeLayout recipeLayout, int recipeX, int recipeY) { } } diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferErrorSlots.java b/src/main/java/mezz/jei/transfer/RecipeTransferErrorSlots.java index 2c187bc78..bc1099b57 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferErrorSlots.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferErrorSlots.java @@ -1,7 +1,6 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; -import java.awt.*; +import java.awt.Color; import java.util.Collection; import java.util.Map; @@ -21,7 +20,7 @@ public RecipeTransferErrorSlots(String message, Collection slots) { } @Override - public void showError(@Nonnull Minecraft minecraft, int mouseX, int mouseY, @Nonnull IRecipeLayout recipeLayout, int recipeX, int recipeY) { + public void showError(Minecraft minecraft, int mouseX, int mouseY, IRecipeLayout recipeLayout, int recipeX, int recipeY) { IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks(); Map> ingredients = itemStackGroup.getGuiIngredients(); for (Integer slotIndex : slots) { diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java b/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java index 275829f60..e1b686fc4 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferErrorTooltip.java @@ -1,6 +1,5 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; @@ -12,22 +11,20 @@ import net.minecraft.util.text.TextFormatting; public class RecipeTransferErrorTooltip implements IRecipeTransferError { - @Nonnull private final List message = new ArrayList(); - public RecipeTransferErrorTooltip(@Nonnull String message) { + public RecipeTransferErrorTooltip(String message) { this.message.add(Constants.RECIPE_TRANSFER_TOOLTIP); this.message.add(TextFormatting.RED + message); } - @Nonnull @Override public Type getType() { return Type.USER_FACING; } @Override - public void showError(@Nonnull Minecraft minecraft, int mouseX, int mouseY, @Nonnull IRecipeLayout recipeLayout, int recipeX, int recipeY) { + public void showError(Minecraft minecraft, int mouseX, int mouseY, IRecipeLayout recipeLayout, int recipeX, int recipeY) { TooltipRenderer.drawHoveringText(minecraft, message, mouseX, mouseY); } } diff --git a/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java b/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java index 398127452..7ebf6dc20 100644 --- a/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java +++ b/src/main/java/mezz/jei/transfer/RecipeTransferUtil.java @@ -1,30 +1,37 @@ package mezz.jei.transfer; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; - import mezz.jei.Internal; +import mezz.jei.JeiRuntime; +import mezz.jei.RecipeRegistry; import mezz.jei.api.recipe.transfer.IRecipeTransferError; import mezz.jei.api.recipe.transfer.IRecipeTransferHandler; import mezz.jei.gui.RecipeLayout; import mezz.jei.util.Log; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; public class RecipeTransferUtil { - public static IRecipeTransferError getTransferRecipeError(@Nonnull Container container, @Nonnull RecipeLayout recipeLayout, @Nonnull EntityPlayer player) { + @Nullable + public static IRecipeTransferError getTransferRecipeError(Container container, RecipeLayout recipeLayout, EntityPlayer player) { return transferRecipe(container, recipeLayout, player, false, false); } - public static boolean transferRecipe(@Nonnull Container container, @Nonnull RecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer) { + public static boolean transferRecipe(Container container, RecipeLayout recipeLayout, EntityPlayer player, boolean maxTransfer) { IRecipeTransferError error = transferRecipe(container, recipeLayout, player, maxTransfer, true); return error == null; } @Nullable - private static IRecipeTransferError transferRecipe(@Nonnull Container container, @Nonnull RecipeLayout recipeLayout, @Nonnull EntityPlayer player, boolean maxTransfer, boolean doTransfer) { - IRecipeTransferHandler transferHandler = Internal.getRuntime().getRecipeRegistry().getRecipeTransferHandler(container, recipeLayout.getRecipeCategory()); + private static IRecipeTransferError transferRecipe(Container container, RecipeLayout recipeLayout, EntityPlayer player, boolean maxTransfer, boolean doTransfer) { + final JeiRuntime runtime = Internal.getRuntime(); + if (runtime == null) { + return RecipeTransferErrorInternal.INSTANCE; + } + + final RecipeRegistry recipeRegistry = runtime.getRecipeRegistry(); + final IRecipeTransferHandler transferHandler = recipeRegistry.getRecipeTransferHandler(container, recipeLayout.getRecipeCategory()); if (transferHandler == null) { if (doTransfer) { Log.error("No Recipe Transfer handler for container {}", container.getClass()); @@ -32,6 +39,7 @@ private static IRecipeTransferError transferRecipe(@Nonnull Container container, return RecipeTransferErrorInternal.INSTANCE; } + //noinspection unchecked return transferHandler.transferRecipe(container, recipeLayout, player, maxTransfer, doTransfer); } } diff --git a/src/main/java/mezz/jei/transfer/package-info.java b/src/main/java/mezz/jei/transfer/package-info.java new file mode 100644 index 000000000..e49b094ff --- /dev/null +++ b/src/main/java/mezz/jei/transfer/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.transfer; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/util/AnnotatedInstanceUtil.java b/src/main/java/mezz/jei/util/AnnotatedInstanceUtil.java index 6e9d9a57d..73d2a640d 100644 --- a/src/main/java/mezz/jei/util/AnnotatedInstanceUtil.java +++ b/src/main/java/mezz/jei/util/AnnotatedInstanceUtil.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -14,11 +13,11 @@ private AnnotatedInstanceUtil() { } - public static List getModPlugins(@Nonnull ASMDataTable asmDataTable) { + public static List getModPlugins(ASMDataTable asmDataTable) { return getInstances(asmDataTable, JEIPlugin.class, IModPlugin.class); } - private static List getInstances(@Nonnull ASMDataTable asmDataTable, Class annotationClass, Class instanceClass) { + private static List getInstances(ASMDataTable asmDataTable, Class annotationClass, Class instanceClass) { String annotationClassName = annotationClass.getCanonicalName(); Set asmDatas = asmDataTable.getAll(annotationClassName); List instances = new ArrayList(); diff --git a/src/main/java/mezz/jei/util/Commands.java b/src/main/java/mezz/jei/util/Commands.java index 645c70ce8..1c87010a7 100644 --- a/src/main/java/mezz/jei/util/Commands.java +++ b/src/main/java/mezz/jei/util/Commands.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; @@ -21,18 +20,18 @@ public class Commands { - public static void giveFullStack(@Nonnull ItemStack itemstack) { + public static void giveFullStack(ItemStack itemstack) { giveStack(itemstack, itemstack.getMaxStackSize()); } - public static void giveOneFromStack(@Nonnull ItemStack itemstack) { + public static void giveOneFromStack(ItemStack itemstack) { giveStack(itemstack, 1); } /** * /give [amount] [data] [dataTag] */ - public static void giveStack(@Nonnull ItemStack itemStack, int amount) { + public static void giveStack(ItemStack itemStack, int amount) { if (SessionData.isJeiOnServer()) { ItemStack sendStack = itemStack.copy(); sendStack.stackSize = amount; @@ -46,7 +45,7 @@ public static void giveStack(@Nonnull ItemStack itemStack, int amount) { /** * Fallback for when JEI is not on the server, tries to use the /give command. */ - private static void giveStackVanilla(@Nonnull ItemStack itemStack, int amount) { + private static void giveStackVanilla(ItemStack itemStack, int amount) { Item item = itemStack.getItem(); if (item == null) { String stackInfo = ErrorUtil.getItemStackInfo(itemStack); diff --git a/src/main/java/mezz/jei/util/CycleTimer.java b/src/main/java/mezz/jei/util/CycleTimer.java index 2f4a386a8..dbdcec016 100644 --- a/src/main/java/mezz/jei/util/CycleTimer.java +++ b/src/main/java/mezz/jei/util/CycleTimer.java @@ -1,5 +1,6 @@ package mezz.jei.util; +import javax.annotation.Nullable; import java.util.List; import net.minecraft.client.gui.GuiScreen; @@ -17,6 +18,7 @@ public CycleTimer(int offset) { this.drawTime = time; } + @Nullable public T getCycledItem(List list) { if (list.isEmpty()) { return null; diff --git a/src/main/java/mezz/jei/util/ErrorUtil.java b/src/main/java/mezz/jei/util/ErrorUtil.java index 822890359..b73096544 100644 --- a/src/main/java/mezz/jei/util/ErrorUtil.java +++ b/src/main/java/mezz/jei/util/ErrorUtil.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; @@ -16,8 +15,7 @@ import net.minecraft.util.ResourceLocation; public class ErrorUtil { - @Nonnull - public static String getInfoFromBrokenRecipe(@Nonnull T recipe, @Nonnull IRecipeHandler recipeHandler) { + public static String getInfoFromBrokenRecipe(T recipe, IRecipeHandler recipeHandler) { StringBuilder recipeInfoBuilder = new StringBuilder(); try { recipeInfoBuilder.append(recipe); @@ -70,6 +68,7 @@ public static String getInfoFromBrokenRecipe(@Nonnull T recipe, @Nonnull IRe return recipeInfoBuilder.toString(); } + @Nullable public static List getItemStackIngredientsInfo(@Nullable List list) { if (list == null) { return null; @@ -96,7 +95,7 @@ public static List getItemStackIngredientsInfo(@Nullable List list) { return ingredientsInfo; } - public static String getItemStackInfo(@Nonnull ItemStack itemStack) { + public static String getItemStackInfo(ItemStack itemStack) { Item item = itemStack.getItem(); if (item == null) { return itemStack.stackSize + "x (null)"; diff --git a/src/main/java/mezz/jei/util/ItemStackElement.java b/src/main/java/mezz/jei/util/ItemStackElement.java index d6778ae35..8e3c6c18c 100644 --- a/src/main/java/mezz/jei/util/ItemStackElement.java +++ b/src/main/java/mezz/jei/util/ItemStackElement.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.List; @@ -8,8 +7,9 @@ import com.google.common.base.Joiner; import mezz.jei.Internal; -import mezz.jei.ItemRegistry; +import mezz.jei.api.IItemRegistry; import mezz.jei.config.Config; +import mezz.jei.util.color.ColorNamer; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; @@ -24,25 +24,18 @@ * For getting properties of ItemStacks efficiently */ public class ItemStackElement { - @Nonnull private final ItemStack itemStack; - @Nonnull private final String searchString; - @Nonnull private final String modNameString; - @Nonnull private final String tooltipString; - @Nonnull private final String oreDictString; - @Nonnull private final String creativeTabsString; - @Nonnull private final String colorString; @Nullable - public static ItemStackElement create(@Nonnull ItemStack itemStack) { + public static ItemStackElement create(ItemStack itemStack, IItemRegistry itemRegistry) { try { - return new ItemStackElement(itemStack); + return new ItemStackElement(itemStack, itemRegistry); } catch (RuntimeException e) { try { String itemStackInfo = ErrorUtil.getItemStackInfo(itemStack); @@ -54,7 +47,7 @@ public static ItemStackElement create(@Nonnull ItemStack itemStack) { } } - private ItemStackElement(@Nonnull ItemStack itemStack) { + private ItemStackElement(ItemStack itemStack, IItemRegistry itemRegistry) { this.itemStack = itemStack; Item item = itemStack.getItem(); @@ -66,7 +59,6 @@ private ItemStackElement(@Nonnull ItemStack itemStack) { } String modId = itemResourceLocation.getResourceDomain().toLowerCase(Locale.ENGLISH); - ItemRegistry itemRegistry = Internal.getItemRegistry(); String modName = itemRegistry.getModNameForModId(modId).toLowerCase(Locale.ENGLISH); String displayName = itemStack.getDisplayName(); @@ -83,9 +75,11 @@ private ItemStackElement(@Nonnull ItemStack itemStack) { List tooltip = itemStack.getTooltip(player, false); tooltipString = Joiner.on(' ').join(tooltip).toLowerCase(); tooltipString = TextFormatting.getTextWithoutFormattingCodes(tooltipString); - tooltipString = tooltipString.replace(modId, ""); - tooltipString = tooltipString.replace(modName, ""); - tooltipString = tooltipString.replace(displayName, ""); + if (tooltipString != null) { + tooltipString = tooltipString.replace(modId, ""); + tooltipString = tooltipString.replace(modName, ""); + tooltipString = tooltipString.replace(displayName, ""); + } } catch (RuntimeException ignored) { tooltipString = ""; } catch (LinkageError ignored) { @@ -140,11 +134,15 @@ private ItemStackElement(@Nonnull ItemStack itemStack) { this.searchString = searchStringBuilder.toString(); } - @Nonnull private static String getColorString(ItemStack itemStack) { + ColorNamer colorNamer = Internal.getColorNamer(); + if (colorNamer == null) { + return ""; + } + final Collection colorNames; try { - colorNames = Internal.getColorNamer().getColorNames(itemStack); + colorNames = colorNamer.getColorNames(itemStack); } catch (RuntimeException ignored) { return ""; } catch (LinkageError ignored) { @@ -154,37 +152,30 @@ private static String getColorString(ItemStack itemStack) { return Joiner.on(' ').join(colorNames).toLowerCase(); } - @Nonnull public ItemStack getItemStack() { return itemStack; } - @Nonnull public String getSearchString() { return searchString; } - @Nonnull public String getModNameString() { return modNameString; } - @Nonnull public String getTooltipString() { return tooltipString; } - @Nonnull public String getOreDictString() { return oreDictString; } - @Nonnull public String getCreativeTabsString() { return creativeTabsString; } - @Nonnull public String getColorString() { return colorString; } diff --git a/src/main/java/mezz/jei/util/Java6Helper.java b/src/main/java/mezz/jei/util/Java6Helper.java index ed575d95e..aee469598 100644 --- a/src/main/java/mezz/jei/util/Java6Helper.java +++ b/src/main/java/mezz/jei/util/Java6Helper.java @@ -1,10 +1,12 @@ package mezz.jei.util; +import javax.annotation.Nullable; + /** * Some useful Java library methods are only available in Java 7 so I copy them here. */ public class Java6Helper { - public static boolean equals(Object a, Object b) { + public static boolean equals(@Nullable Object a, @Nullable Object b) { return (a == b) || (a != null && a.equals(b)); } diff --git a/src/main/java/mezz/jei/util/ModList.java b/src/main/java/mezz/jei/util/ModList.java index ca16e348d..a0c7bc9a1 100644 --- a/src/main/java/mezz/jei/util/ModList.java +++ b/src/main/java/mezz/jei/util/ModList.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import java.util.HashMap; import java.util.Locale; import java.util.Map; @@ -25,8 +24,7 @@ public ModList() { } } - @Nonnull - public String getModNameForItem(@Nonnull Item item) { + public String getModNameForItem(Item item) { ResourceLocation itemResourceLocation = item.getRegistryName(); if (itemResourceLocation == null) { String stackInfo = ErrorUtil.getItemStackInfo(new ItemStack(item)); @@ -36,8 +34,7 @@ public String getModNameForItem(@Nonnull Item item) { return getModNameForModId(modId); } - @Nonnull - public String getModNameForModId(@Nonnull String modId) { + public String getModNameForModId(String modId) { String lowercaseModId = modId.toLowerCase(Locale.ENGLISH); String modName = modNamesForIds.get(lowercaseModId); if (modName == null) { diff --git a/src/main/java/mezz/jei/util/ModRegistry.java b/src/main/java/mezz/jei/util/ModRegistry.java index fa44d5b18..9a4bc7000 100644 --- a/src/main/java/mezz/jei/util/ModRegistry.java +++ b/src/main/java/mezz/jei/util/ModRegistry.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -23,9 +22,7 @@ import net.minecraft.item.ItemStack; public class ModRegistry implements IModRegistry { - @Nonnull private final IJeiHelpers jeiHelpers; - @Nonnull private final IItemRegistry itemRegistry; private final List recipeCategories = new ArrayList(); private final List recipeHandlers = new ArrayList(); @@ -35,48 +32,67 @@ public class ModRegistry implements IModRegistry { private final Multimap, RecipeClickableArea> recipeClickableAreas = HashMultimap.create(); private final Multimap craftItemsForCategories = HashMultimap.create(); - public ModRegistry(@Nonnull IJeiHelpers jeiHelpers, @Nonnull IItemRegistry itemRegistry) { + public ModRegistry(IJeiHelpers jeiHelpers, IItemRegistry itemRegistry) { this.jeiHelpers = jeiHelpers; this.itemRegistry = itemRegistry; } - @Nonnull @Override public IJeiHelpers getJeiHelpers() { return jeiHelpers; } - @Nonnull @Override public IItemRegistry getItemRegistry() { return itemRegistry; } @Override - public void addRecipeCategories(IRecipeCategory... recipeCategories) { - Collections.addAll(this.recipeCategories, recipeCategories); + public void addRecipeCategories(@Nullable IRecipeCategory... recipeCategories) { + if (recipeCategories != null) { + Collections.addAll(this.recipeCategories, recipeCategories); + } } @Override - public void addRecipeHandlers(IRecipeHandler... recipeHandlers) { - Collections.addAll(this.recipeHandlers, recipeHandlers); + public void addRecipeHandlers(@Nullable IRecipeHandler... recipeHandlers) { + if (recipeHandlers != null) { + Collections.addAll(this.recipeHandlers, recipeHandlers); + } } @Override - public void addRecipes(List recipes) { + public void addRecipes(@Nullable List recipes) { if (recipes != null) { this.recipes.addAll(recipes); } } @Override - public void addRecipeClickArea(@Nonnull Class guiClass, int xPos, int yPos, int width, int height, @Nonnull String... recipeCategoryUids) { + public void addRecipeClickArea(@Nullable Class guiClass, int xPos, int yPos, int width, int height, @Nullable String... recipeCategoryUids) { + if (guiClass == null) { + NullPointerException e = new NullPointerException(); + Log.error("Tried to add a RecipeClickArea with null guiClass.", e); + return; + } + + if (recipeCategoryUids == null) { + NullPointerException e = new NullPointerException(); + Log.error("Tried to add a RecipeClickArea with null recipeCategoryUids.", e); + return; + } + + if (recipeCategoryUids.length == 0) { + NullPointerException e = new NullPointerException(); + Log.error("Tried to add a RecipeClickArea with empty list of recipeCategoryUids.", e); + return; + } RecipeClickableArea recipeClickableArea = new RecipeClickableArea(yPos, yPos + height, xPos, xPos + width, recipeCategoryUids); this.recipeClickableAreas.put(guiClass, recipeClickableArea); } @Override - public void addRecipeCategoryCraftingItem(@Nullable ItemStack craftingItem, @Nonnull String... recipeCategoryUids) { + public void addRecipeCategoryCraftingItem(@Nullable ItemStack craftingItem, @Nullable String... recipeCategoryUids) { if (craftingItem == null) { NullPointerException e = new NullPointerException(); Log.error("Tried to add a RecipeCategoryCraftingItem with null craftingItem.", e); @@ -89,6 +105,18 @@ public void addRecipeCategoryCraftingItem(@Nullable ItemStack craftingItem, @Non return; } + if (recipeCategoryUids == null) { + NullPointerException e = new NullPointerException(); + Log.error("Tried to add a RecipeCategoryCraftingItem with null recipeCategoryUids.", e); + return; + } + + if (recipeCategoryUids.length == 0) { + NullPointerException e = new NullPointerException(); + Log.error("Tried to add a RecipeCategoryCraftingItem with an empty list of recipeCategoryUids.", e); + return; + } + for (String recipeCategoryUid : recipeCategoryUids) { if (recipeCategoryUid == null) { IllegalArgumentException e = new IllegalArgumentException(); @@ -100,28 +128,38 @@ public void addRecipeCategoryCraftingItem(@Nullable ItemStack craftingItem, @Non } @Override - public void addAdvancedGuiHandlers(@Nonnull IAdvancedGuiHandler... advancedGuiHandlers) { - Collections.addAll(this.advancedGuiHandlers, advancedGuiHandlers); + public void addAdvancedGuiHandlers(@Nullable IAdvancedGuiHandler... advancedGuiHandlers) { + if (advancedGuiHandlers != null) { + Collections.addAll(this.advancedGuiHandlers, advancedGuiHandlers); + } } @Override - public void addDescription(List itemStacks, String... descriptionKeys) { + public void addDescription(@Nullable List itemStacks, @Nullable String... descriptionKeys) { if (itemStacks == null || itemStacks.size() == 0) { IllegalArgumentException e = new IllegalArgumentException(); Log.error("Tried to add description with no itemStacks.", e); return; } + + if (descriptionKeys == null) { + IllegalArgumentException e = new IllegalArgumentException(); + Log.error("Tried to add a null descriptionKey for itemStacks {}.", itemStacks, e); + return; + } + if (descriptionKeys.length == 0) { IllegalArgumentException e = new IllegalArgumentException(); Log.error("Tried to add an empty list of descriptionKeys for itemStacks {}.", itemStacks, e); return; } + List recipes = ItemDescriptionRecipe.create(itemStacks, descriptionKeys); this.recipes.addAll(recipes); } @Override - public void addDescription(ItemStack itemStack, String... descriptionKeys) { + public void addDescription(@Nullable ItemStack itemStack, @Nullable String... descriptionKeys) { addDescription(Collections.singletonList(itemStack), descriptionKeys); } @@ -130,12 +168,10 @@ public IRecipeTransferRegistry getRecipeTransferRegistry() { return recipeTransferRegistry; } - @Nonnull public List> getAdvancedGuiHandlers() { return advancedGuiHandlers; } - @Nonnull public RecipeRegistry createRecipeRegistry() { List recipeTransferHandlers = recipeTransferRegistry.getRecipeTransferHandlers(); return new RecipeRegistry(recipeCategories, recipeHandlers, recipeTransferHandlers, recipes, recipeClickableAreas, craftItemsForCategories); diff --git a/src/main/java/mezz/jei/util/RecipeCategoryComparator.java b/src/main/java/mezz/jei/util/RecipeCategoryComparator.java index 50bdce6e6..dbe37265b 100644 --- a/src/main/java/mezz/jei/util/RecipeCategoryComparator.java +++ b/src/main/java/mezz/jei/util/RecipeCategoryComparator.java @@ -1,18 +1,15 @@ package mezz.jei.util; -import com.google.common.collect.ImmutableList; - -import javax.annotation.Nonnull; import java.util.Comparator; import java.util.List; +import com.google.common.collect.ImmutableList; import mezz.jei.api.recipe.IRecipeCategory; public class RecipeCategoryComparator implements Comparator { - @Nonnull private final ImmutableList recipeCategories; - public RecipeCategoryComparator(@Nonnull List recipeCategories) { + public RecipeCategoryComparator(List recipeCategories) { this.recipeCategories = ImmutableList.copyOf(recipeCategories); } diff --git a/src/main/java/mezz/jei/util/RecipeMap.java b/src/main/java/mezz/jei/util/RecipeMap.java index 5f76de587..158a606cb 100644 --- a/src/main/java/mezz/jei/util/RecipeMap.java +++ b/src/main/java/mezz/jei/util/RecipeMap.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -23,19 +22,15 @@ */ public class RecipeMap { - @Nonnull private final Table> recipeTable = HashBasedTable.create(); - @Nonnull private final ArrayListMultimap categoryMap = ArrayListMultimap.create(); - @Nonnull private final Ordering recipeCategoryOrdering; public RecipeMap(final RecipeCategoryComparator recipeCategoryComparator) { this.recipeCategoryOrdering = Ordering.from(recipeCategoryComparator); } - @Nonnull - public ImmutableList getRecipeCategories(@Nonnull ItemStack itemStack) { + public ImmutableList getRecipeCategories(ItemStack itemStack) { Set recipeCategories = new HashSet(); for (String stackKey : Internal.getStackHelper().getUniqueIdentifiersWithWildcard(itemStack)) { recipeCategories.addAll(categoryMap.get(stackKey)); @@ -43,13 +38,12 @@ public ImmutableList getRecipeCategories(@Nonnull ItemStack ite return recipeCategoryOrdering.immutableSortedCopy(recipeCategories); } - @Nonnull - public ImmutableList getRecipeCategories(@Nonnull FluidStack fluid) { + public ImmutableList getRecipeCategories(FluidStack fluid) { String key = getKeyForFluid(fluid); return recipeCategoryOrdering.immutableSortedCopy(categoryMap.get(key)); } - public void addRecipeCategory(@Nonnull IRecipeCategory recipeCategory, @Nonnull ItemStack itemStack) { + public void addRecipeCategory(IRecipeCategory recipeCategory, ItemStack itemStack) { String stackKey = Internal.getStackHelper().getUniqueIdentifierForStack(itemStack); List recipeCategories = categoryMap.get(stackKey); if (!recipeCategories.contains(recipeCategory)) { @@ -57,7 +51,7 @@ public void addRecipeCategory(@Nonnull IRecipeCategory recipeCategory, @Nonnull } } - private void addRecipeCategory(@Nonnull IRecipeCategory recipeCategory, @Nonnull FluidStack fluidStack) { + private void addRecipeCategory(IRecipeCategory recipeCategory, FluidStack fluidStack) { String key = getKeyForFluid(fluidStack); List recipeCategories = categoryMap.get(key); if (!recipeCategories.contains(recipeCategory)) { @@ -65,7 +59,6 @@ private void addRecipeCategory(@Nonnull IRecipeCategory recipeCategory, @Nonnull } } - @Nonnull private String getKeyForFluid(FluidStack fluidStack) { if (fluidStack.tag != null) { return "fluid:" + fluidStack.getFluid().getName() + ":" + fluidStack.tag; @@ -73,8 +66,7 @@ private String getKeyForFluid(FluidStack fluidStack) { return "fluid:" + fluidStack.getFluid().getName(); } - @Nonnull - public ImmutableList getRecipes(@Nonnull IRecipeCategory recipeCategory, @Nonnull ItemStack stack) { + public ImmutableList getRecipes(IRecipeCategory recipeCategory, ItemStack stack) { Map> recipesForType = recipeTable.row(recipeCategory); ImmutableList.Builder listBuilder = ImmutableList.builder(); @@ -87,8 +79,7 @@ public ImmutableList getRecipes(@Nonnull IRecipeCategory recipeCategory, return listBuilder.build(); } - @Nonnull - public List getRecipes(@Nonnull IRecipeCategory recipeCategory, @Nonnull FluidStack fluidStack) { + public List getRecipes(IRecipeCategory recipeCategory, FluidStack fluidStack) { Map> recipesForType = recipeTable.row(recipeCategory); String name = getKeyForFluid(fluidStack); @@ -99,7 +90,7 @@ public List getRecipes(@Nonnull IRecipeCategory recipeCategory, @Nonnull return Collections.unmodifiableList(recipes); } - public void addRecipe(@Nonnull Object recipe, @Nonnull IRecipeCategory recipeCategory, @Nonnull Iterable itemStacks, @Nonnull Iterable fluidStacks) { + public void addRecipe(Object recipe, IRecipeCategory recipeCategory, Iterable itemStacks, Iterable fluidStacks) { Map> recipesForType = recipeTable.row(recipeCategory); StackHelper stackHelper = Internal.getStackHelper(); diff --git a/src/main/java/mezz/jei/util/StackHelper.java b/src/main/java/mezz/jei/util/StackHelper.java index d67f0c0e1..1ddd454bd 100644 --- a/src/main/java/mezz/jei/util/StackHelper.java +++ b/src/main/java/mezz/jei/util/StackHelper.java @@ -52,7 +52,7 @@ public void disableUidCache() { } @Nullable - public String getOreDictEquivalent(@Nonnull Collection itemStacks) { + public String getOreDictEquivalent(Collection itemStacks) { if (itemStacks.size() < 2) { return null; } @@ -75,8 +75,7 @@ public String getOreDictEquivalent(@Nonnull Collection itemStacks) { * Returns a list of items in slots that complete the recipe defined by requiredStacksList. * Returns a result that contains missingItems if there are not enough items in availableItemStacks. */ - @Nonnull - public MatchingItemsResult getMatchingItems(@Nonnull Map availableItemStacks, @Nonnull Map> ingredientsMap) { + public MatchingItemsResult getMatchingItems(Map availableItemStacks, Map> ingredientsMap) { MatchingItemsResult matchingItemResult = new MatchingItemsResult(); int recipeSlotNumber = -1; @@ -118,10 +117,10 @@ public MatchingItemsResult getMatchingItems(@Nonnull Map ava * @return the slot that contains the itemStack. returns null if no slot contains the itemStack. */ @Nullable - public Slot getSlotWithStack(@Nonnull Container container, @Nonnull Iterable slotNumbers, @Nonnull ItemStack itemStack) { + public Slot getSlotWithStack(Container container, Iterable slotNumbers, ItemStack itemStack) { for (Integer slotNumber : slotNumbers) { - Slot slot = container.getSlot(slotNumber); - if (slot != null) { + if (slotNumber >= 0 && slotNumber < container.inventorySlots.size()) { + Slot slot = container.getSlot(slotNumber); ItemStack slotStack = slot.getStack(); if (ItemStack.areItemsEqual(itemStack, slotStack) && ItemStack.areItemStackTagsEqual(itemStack, slotStack)) { return slot; @@ -131,12 +130,12 @@ public Slot getSlotWithStack(@Nonnull Container container, @Nonnull Iterable stacks, @Nonnull Collection contains) { + public boolean containsSameStacks(Collection stacks, Collection contains) { return containsSameStacks(new MatchingIterable(stacks), new MatchingIterable(contains)); } /** Returns true if all stacks from "contains" are found in "stacks" and the opposite is true as well. */ - public boolean containsSameStacks(@Nonnull Iterable> stacks, @Nonnull Iterable> contains) { + public boolean containsSameStacks(Iterable> stacks, Iterable> contains) { for (ItemStackMatchable stack : contains) { if (containsStack(stacks, stack) == null) { return false; @@ -152,17 +151,20 @@ public boolean containsSameStacks(@Nonnull Iterable> s return true; } + @Nullable public Integer containsAnyStackIndexed(@Nullable Map stacks, @Nullable Iterable contains) { MatchingIndexed matchingStacks = new MatchingIndexed(stacks); MatchingIterable matchingContains = new MatchingIterable(contains); return containsStackMatchable(matchingStacks, matchingContains); } + @Nullable public ItemStack containsStack(@Nullable Iterable stacks, @Nullable ItemStack contains) { List containsList = contains == null ? null : Collections.singletonList(contains); return containsAnyStack(stacks, containsList); } + @Nullable public ItemStack containsAnyStack(@Nullable Iterable stacks, @Nullable Iterable contains) { MatchingIterable matchingStacks = new MatchingIterable(stacks); MatchingIterable matchingContains = new MatchingIterable(contains); @@ -170,7 +172,8 @@ public ItemStack containsAnyStack(@Nullable Iterable stacks, @Nullabl } /* Returns an ItemStack from "stacks" if it isEquivalent to an ItemStack from "contains" */ - public R containsStackMatchable(@Nonnull Iterable> stacks, @Nonnull Iterable> contains) { + @Nullable + public R containsStackMatchable(Iterable> stacks, Iterable> contains) { for (ItemStackMatchable containStack : contains) { R matchingStack = containsStack(stacks, containStack); if (matchingStack != null) { @@ -182,7 +185,8 @@ public R containsStackMatchable(@Nonnull Iterable> } /* Returns an ItemStack from "stacks" if it isEquivalent to "contains" */ - public R containsStack(@Nonnull Iterable> stacks, @Nonnull ItemStackMatchable contains) { + @Nullable + public R containsStack(Iterable> stacks, ItemStackMatchable contains) { for (ItemStackMatchable stack : stacks) { if (isEquivalent(contains.getStack(), stack.getStack())) { return stack.getResult(); @@ -223,7 +227,6 @@ public boolean isEquivalent(@Nullable ItemStack lhs, @Nullable ItemStack rhs) { } @Override - @Nonnull public List getSubtypes(@Nullable ItemStack itemStack) { if (itemStack == null) { Log.error("Null itemStack", new NullPointerException()); @@ -243,8 +246,7 @@ public List getSubtypes(@Nullable ItemStack itemStack) { return getSubtypes(item, itemStack.stackSize); } - @Nonnull - public List getSubtypes(@Nonnull final Item item, final int stackSize) { + public List getSubtypes(final Item item, final int stackSize) { List itemStacks = new ArrayList(); for (CreativeTabs itemTab : item.getCreativeTabs()) { @@ -278,7 +280,6 @@ public List getSubtypes(@Nonnull final Item item, final int stackSize } @Override - @Nonnull public List getAllSubtypes(@Nullable Iterable stacks) { if (stacks == null) { Log.error("Null stacks", new NullPointerException()); @@ -290,7 +291,7 @@ public List getAllSubtypes(@Nullable Iterable stacks) { return allSubtypes; } - private void getAllSubtypes(@Nonnull List subtypesList, @Nonnull Iterable stacks) { + private void getAllSubtypes(List subtypesList, Iterable stacks) { for (Object obj : stacks) { if (obj instanceof ItemStack) { ItemStack itemStack = (ItemStack) obj; @@ -305,7 +306,6 @@ private void getAllSubtypes(@Nonnull List subtypesList, @Nonnull Iter } @Override - @Nonnull public List toItemStackList(@Nullable Object stacks) { if (stacks == null) { return Collections.emptyList(); @@ -316,7 +316,7 @@ public List toItemStackList(@Nullable Object stacks) { return itemStackListBuilder.build(); } - private void toItemStackList(@Nonnull UniqueItemStackListBuilder itemStackListBuilder, @Nullable Object input) { + private void toItemStackList(UniqueItemStackListBuilder itemStackListBuilder, @Nullable Object input) { if (input instanceof ItemStack) { ItemStack stack = (ItemStack) input; itemStackListBuilder.add(stack); @@ -334,8 +334,7 @@ private void toItemStackList(@Nonnull UniqueItemStackListBuilder itemStackListBu } } - @Nonnull - public String getModId(@Nonnull ItemStack stack) { + public String getModId(ItemStack stack) { Item item = stack.getItem(); if (item == null) { throw new NullPointerException(nullItemInStack); @@ -350,13 +349,11 @@ public String getModId(@Nonnull ItemStack stack) { return itemName.getResourceDomain(); } - @Nonnull - public String getUniqueIdentifierForStack(@Nonnull ItemStack stack) { + public String getUniqueIdentifierForStack(ItemStack stack) { return getUniqueIdentifierForStack(stack, UidMode.NORMAL); } - @Nonnull - public String getUniqueIdentifierForStack(@Nonnull ItemStack stack, @Nonnull UidMode mode) { + public String getUniqueIdentifierForStack(ItemStack stack, UidMode mode) { if (uidCacheEnabled) { String result = uidCache.get(mode).get(stack); if (result != null) { @@ -394,15 +391,12 @@ public String getUniqueIdentifierForStack(@Nonnull ItemStack stack, @Nonnull Uid NBTTagCompound serializedNbt = stack.serializeNBT(); NBTTagCompound nbtTagCompound = serializedNbt.getCompoundTag("tag").copy(); if (serializedNbt.hasKey("ForgeCaps")) { - if (nbtTagCompound == null) { - nbtTagCompound = new NBTTagCompound(); - } NBTTagCompound forgeCaps = serializedNbt.getCompoundTag("ForgeCaps"); if (!forgeCaps.hasNoTags()) { // ForgeCaps should never be empty nbtTagCompound.setTag("ForgeCaps", forgeCaps); } } - if (nbtTagCompound != null && !nbtTagCompound.hasNoTags()) { + if (!nbtTagCompound.hasNoTags()) { itemKey.append(':').append(nbtTagCompound); } } else if (stack.getHasSubtypes()) { @@ -420,8 +414,7 @@ public enum UidMode { NORMAL, WILDCARD, FULL } - @Nonnull - public List getUniqueIdentifiersWithWildcard(@Nonnull ItemStack itemStack) { + public List getUniqueIdentifiersWithWildcard(ItemStack itemStack) { String uid = getUniqueIdentifierForStack(itemStack, UidMode.NORMAL); String uidWild = getUniqueIdentifierForStack(itemStack, UidMode.WILDCARD); @@ -432,69 +425,61 @@ public List getUniqueIdentifiersWithWildcard(@Nonnull ItemStack itemStac } } - public int addStack(@Nonnull Container container, @Nonnull Collection slotIndexes, @Nonnull ItemStack stack, boolean doAdd) { + public int addStack(Container container, Collection slotIndexes, ItemStack stack, boolean doAdd) { int added = 0; // Add to existing stacks first - for (Integer slotIndex : slotIndexes) { - Slot slot = container.getSlot(slotIndex); - if (slot == null) { - continue; - } - - ItemStack inventoryStack = slot.getStack(); - if (inventoryStack == null || inventoryStack.getItem() == null) { - continue; - } - - // Already occupied by different item, skip this slot. - if (!inventoryStack.isStackable() || !inventoryStack.isItemEqual(stack) || !ItemStack.areItemStackTagsEqual(inventoryStack, stack)) { - continue; - } + for (final Integer slotIndex : slotIndexes) { + if (slotIndex >= 0 && slotIndex < container.inventorySlots.size()) { + final Slot slot = container.getSlot(slotIndex); + final ItemStack inventoryStack = slot.getStack(); + // Check that the slot's contents are stackable with this stack + if (inventoryStack != null && + inventoryStack.getItem() != null && + inventoryStack.isStackable() && + inventoryStack.isItemEqual(stack) && + ItemStack.areItemStackTagsEqual(inventoryStack, stack)) { + + final int remain = stack.stackSize - added; + final int maxStackSize = Math.min(slot.getItemStackLimit(inventoryStack), inventoryStack.getMaxStackSize()); + final int space = maxStackSize - inventoryStack.stackSize; + if (space > 0) { + + // Enough space + if (space >= remain) { + if (doAdd) { + inventoryStack.stackSize += remain; + } + return stack.stackSize; + } - int remain = stack.stackSize - added; - int maxStackSize = Math.min(slot.getItemStackLimit(inventoryStack), inventoryStack.getMaxStackSize()); - int space = maxStackSize - inventoryStack.stackSize; - if (space <= 0) { - continue; - } + // Not enough space + if (doAdd) { + inventoryStack.stackSize = inventoryStack.getMaxStackSize(); + } - // Enough space - if (space >= remain) { - if (doAdd) { - inventoryStack.stackSize += remain; + added += space; + } } - return stack.stackSize; } - - // Not enough space - if (doAdd) { - inventoryStack.stackSize = inventoryStack.getMaxStackSize(); - } - - added += space; } if (added >= stack.stackSize) { return added; } - for (Integer slotIndex : slotIndexes) { - Slot slot = container.getSlot(slotIndex); - if (slot == null) { - continue; - } - - ItemStack inventoryStack = slot.getStack(); - if (inventoryStack != null) { - continue; - } - - if (doAdd) { - ItemStack stackToAdd = stack.copy(); - stackToAdd.stackSize = stack.stackSize - added; - slot.putStack(stackToAdd); + for (final Integer slotIndex : slotIndexes) { + if (slotIndex >= 0 && slotIndex < container.inventorySlots.size()) { + final Slot slot = container.getSlot(slotIndex); + final ItemStack inventoryStack = slot.getStack(); + if (inventoryStack == null) { + if (doAdd) { + ItemStack stackToAdd = stack.copy(); + stackToAdd.stackSize = stack.stackSize - added; + slot.putStack(stackToAdd); + } + return stack.stackSize; + } } - return stack.stackSize; } return added; @@ -518,7 +503,7 @@ private static abstract class DelegateIterator implements Iterator { @Nonnull protected final Iterator delegate; - public DelegateIterator(@Nonnull Iterator delegate) { + public DelegateIterator(Iterator delegate) { this.delegate = delegate; } diff --git a/src/main/java/mezz/jei/util/UniqueItemStackListBuilder.java b/src/main/java/mezz/jei/util/UniqueItemStackListBuilder.java index 7b3930fc6..0413b14c8 100644 --- a/src/main/java/mezz/jei/util/UniqueItemStackListBuilder.java +++ b/src/main/java/mezz/jei/util/UniqueItemStackListBuilder.java @@ -1,6 +1,5 @@ package mezz.jei.util; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -13,7 +12,7 @@ public class UniqueItemStackListBuilder { private final List itemStacks = new ArrayList(); private final Set itemStackUids = new HashSet(); - public void add(@Nonnull ItemStack itemStack) { + public void add(ItemStack itemStack) { String uid = Internal.getStackHelper().getUniqueIdentifierForStack(itemStack, StackHelper.UidMode.NORMAL); if (!itemStackUids.contains(uid)) { itemStackUids.add(uid); @@ -21,7 +20,6 @@ public void add(@Nonnull ItemStack itemStack) { } } - @Nonnull public List build() { return itemStacks; } diff --git a/src/main/java/mezz/jei/util/color/ColorGetter.java b/src/main/java/mezz/jei/util/color/ColorGetter.java index 74afadde2..7c82b5bad 100644 --- a/src/main/java/mezz/jei/util/color/ColorGetter.java +++ b/src/main/java/mezz/jei/util/color/ColorGetter.java @@ -1,8 +1,7 @@ package mezz.jei.util.color; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Collections; @@ -68,13 +67,11 @@ private ColorGetter() { } - @Nonnull public static String[] getColorDefaults() { return defaultColors; } - @Nonnull - public static List getColors(@Nonnull ItemStack itemStack, int colorCount) { + public static List getColors(ItemStack itemStack, int colorCount) { final Item item = itemStack.getItem(); if (item == null) { return Collections.emptyList(); @@ -90,8 +87,7 @@ public static List getColors(@Nonnull ItemStack itemStack, int colorCount } } - @Nonnull - private static List getColors(@Nonnull ItemStack itemStack, @Nonnull Item item, int colorCount) { + private static List getColors(ItemStack itemStack, Item item, int colorCount) { final ItemColors itemColors = Minecraft.getMinecraft().getItemColors(); final int renderColor = itemColors.getColorFromItemstack(itemStack, 0); final TextureAtlasSprite textureAtlasSprite = getTextureAtlasSprite(itemStack); @@ -101,8 +97,7 @@ private static List getColors(@Nonnull ItemStack itemStack, @Nonnull Item return getColors(textureAtlasSprite, renderColor, colorCount); } - @Nonnull - private static List getColors(@Nonnull ItemStack itemStack, @Nonnull Block block, int colorCount) { + private static List getColors(ItemStack itemStack, Block block, int colorCount) { final int meta = itemStack.getMetadata(); IBlockState blockState; try { @@ -122,8 +117,7 @@ private static List getColors(@Nonnull ItemStack itemStack, @Nonnull Bloc return getColors(textureAtlasSprite, renderColor, colorCount); } - @Nonnull - private static List getColors(@Nonnull TextureAtlasSprite textureAtlasSprite, int renderColor, int colorCount) { + private static List getColors(TextureAtlasSprite textureAtlasSprite, int renderColor, int colorCount) { final BufferedImage bufferedImage = getBufferedImage(textureAtlasSprite); if (bufferedImage == null) { return Collections.emptyList(); @@ -146,7 +140,7 @@ private static List getColors(@Nonnull TextureAtlasSprite textureAtlasSpr } @Nullable - private static BufferedImage getBufferedImage(@Nonnull TextureAtlasSprite textureAtlasSprite) { + private static BufferedImage getBufferedImage(TextureAtlasSprite textureAtlasSprite) { final int iconWidth = textureAtlasSprite.getIconWidth(); final int iconHeight = textureAtlasSprite.getIconHeight(); final int frameCount = textureAtlasSprite.getFrameCount(); diff --git a/src/main/java/mezz/jei/util/color/ColorNamer.java b/src/main/java/mezz/jei/util/color/ColorNamer.java index ba3e73781..3d6ecaad2 100644 --- a/src/main/java/mezz/jei/util/color/ColorNamer.java +++ b/src/main/java/mezz/jei/util/color/ColorNamer.java @@ -1,8 +1,7 @@ package mezz.jei.util.color; -import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; +import java.awt.Color; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; @@ -13,21 +12,18 @@ import net.minecraft.item.ItemStack; public class ColorNamer { - @Nonnull private final ImmutableMap colorNames; - public ColorNamer(@Nonnull ImmutableMap colorNames) { + public ColorNamer(ImmutableMap colorNames) { this.colorNames = colorNames; } - @Nonnull - public Collection getColorNames(@Nonnull ItemStack itemStack) { + public Collection getColorNames(ItemStack itemStack) { List colors = ColorGetter.getColors(itemStack, 2); return getColorNames(colors); } - @Nonnull - private Collection getColorNames(@Nonnull List colors) { + private Collection getColorNames(List colors) { final Set allColorNames = new LinkedHashSet(); for (Color color : colors) { final String colorName = getClosestColorName(color); @@ -39,7 +35,7 @@ private Collection getColorNames(@Nonnull List colors) { } @Nullable - private String getClosestColorName(@Nonnull Color color) { + private String getClosestColorName(Color color) { if (colorNames.isEmpty()) { return null; } diff --git a/src/main/java/mezz/jei/util/color/ColorThief.java b/src/main/java/mezz/jei/util/color/ColorThief.java index 33dc4ed6d..48ca88ce8 100644 --- a/src/main/java/mezz/jei/util/color/ColorThief.java +++ b/src/main/java/mezz/jei/util/color/ColorThief.java @@ -18,7 +18,6 @@ * available at http://lokeshdhakar.com/projects/color-thief/ */ -import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; @@ -38,7 +37,7 @@ public class ColorThief { * @return the dominant color as RGB array */ @Nullable - public static int[] getColor(@Nonnull BufferedImage sourceImage) { + public static int[] getColor(BufferedImage sourceImage) { int[][] palette = getPalette(sourceImage, 5); if (palette == null) { return null; @@ -61,7 +60,7 @@ public static int[] getColor(@Nonnull BufferedImage sourceImage) { * @return the dominant color as RGB array */ @Nullable - public static int[] getColor(@Nonnull BufferedImage sourceImage, int quality, boolean ignoreWhite) { + public static int[] getColor(BufferedImage sourceImage, int quality, boolean ignoreWhite) { int[][] palette = getPalette(sourceImage, 5, quality, ignoreWhite); if (palette == null) { return null; @@ -78,7 +77,7 @@ public static int[] getColor(@Nonnull BufferedImage sourceImage, int quality, bo * @return the palette as array of RGB arrays */ @Nullable - public static int[][] getPalette(@Nonnull BufferedImage sourceImage, int colorCount) { + public static int[][] getPalette(BufferedImage sourceImage, int colorCount) { MMCQ.CMap cmap = getColorMap(sourceImage, colorCount); if (cmap == null) { return null; @@ -99,7 +98,7 @@ public static int[][] getPalette(@Nonnull BufferedImage sourceImage, int colorCo * @return the palette as array of RGB arrays */ @Nullable - public static int[][] getPalette(@Nonnull BufferedImage sourceImage, int colorCount, int quality, boolean ignoreWhite) { + public static int[][] getPalette(BufferedImage sourceImage, int colorCount, int quality, boolean ignoreWhite) { MMCQ.CMap cmap = getColorMap(sourceImage, colorCount, quality, ignoreWhite); if (cmap == null) { return null; @@ -115,7 +114,7 @@ public static int[][] getPalette(@Nonnull BufferedImage sourceImage, int colorCo * @return the color map */ @Nullable - public static MMCQ.CMap getColorMap(@Nonnull BufferedImage sourceImage, int colorCount) { + public static MMCQ.CMap getColorMap(BufferedImage sourceImage, int colorCount) { return getColorMap(sourceImage, colorCount, DEFAULT_QUALITY, DEFAULT_IGNORE_WHITE); } @@ -132,7 +131,7 @@ public static MMCQ.CMap getColorMap(@Nonnull BufferedImage sourceImage, int colo * @return the color map */ @Nullable - public static MMCQ.CMap getColorMap(@Nonnull BufferedImage sourceImage, int colorCount, int quality, boolean ignoreWhite) { + public static MMCQ.CMap getColorMap(BufferedImage sourceImage, int colorCount, int quality, boolean ignoreWhite) { int[][] pixelArray; switch (sourceImage.getType()) { @@ -163,8 +162,7 @@ public static MMCQ.CMap getColorMap(@Nonnull BufferedImage sourceImage, int colo * @param ignoreWhite if true, white pixels are ignored * @return an array of pixels (each an RGB int array) */ - @Nonnull - private static int[][] getPixelsFast(@Nonnull BufferedImage sourceImage, int quality, boolean ignoreWhite) { + private static int[][] getPixelsFast(BufferedImage sourceImage, int quality, boolean ignoreWhite) { DataBufferByte imageData = (DataBufferByte) sourceImage .getRaster() .getDataBuffer(); @@ -257,8 +255,7 @@ private static int[][] getPixelsFast(@Nonnull BufferedImage sourceImage, int qua * @param ignoreWhite if true, white pixels are ignored * @return an array of pixels (each an RGB int array) */ - @Nonnull - private static int[][] getPixelsSlow(@Nonnull BufferedImage sourceImage, int quality, boolean ignoreWhite) { + private static int[][] getPixelsSlow(BufferedImage sourceImage, int quality, boolean ignoreWhite) { int width = sourceImage.getWidth(); int height = sourceImage.getHeight(); diff --git a/src/main/java/mezz/jei/util/color/ColorUtil.java b/src/main/java/mezz/jei/util/color/ColorUtil.java index 0613b2819..e021984c7 100644 --- a/src/main/java/mezz/jei/util/color/ColorUtil.java +++ b/src/main/java/mezz/jei/util/color/ColorUtil.java @@ -1,6 +1,5 @@ package mezz.jei.util.color; -import javax.annotation.Nonnull; import java.awt.Color; public class ColorUtil { @@ -14,7 +13,7 @@ private ColorUtil() { * Returns 0 for equal colors, nonzero for colors that look different. * The return value is farther from 0 the more different the colors look. */ - public static double fastPerceptualColorDistanceSquared(@Nonnull int[] color1, @Nonnull int[] color2) { + public static double fastPerceptualColorDistanceSquared(int[] color1, int[] color2) { final int red1 = color1[0]; final int red2 = color2[0]; final int redMean = (red1 + red2) >> 1; @@ -32,7 +31,7 @@ public static double fastPerceptualColorDistanceSquared(@Nonnull int[] color1, @ * * Weighs the distance from grey more heavily, to avoid matching grey and colorful colors together. */ - public static double slowPerceptualColorDistanceSquared(@Nonnull int[] color1, @Nonnull int[] color2) { + public static double slowPerceptualColorDistanceSquared(int[] color1, int[] color2) { final double colorDistance = fastPerceptualColorDistanceSquared(color1, color2); final double grey1 = (color1[0] + color1[1] + color1[2]) / 3; @@ -44,7 +43,7 @@ public static double slowPerceptualColorDistanceSquared(@Nonnull int[] color1, @ return colorDistance + (greyDistance * greyDistance / 10.0); } - public static double slowPerceptualColorDistanceSquared(@Nonnull Color color1, @Nonnull Color color2) { + public static double slowPerceptualColorDistanceSquared(Color color1, Color color2) { final int[] colorInts1 = {color1.getRed(), color1.getGreen(), color1.getBlue()}; final int[] colorInts2 = {color2.getRed(), color2.getGreen(), color2.getBlue()}; return slowPerceptualColorDistanceSquared(colorInts1, colorInts2); diff --git a/src/main/java/mezz/jei/util/color/MMCQ.java b/src/main/java/mezz/jei/util/color/MMCQ.java index b24034f4d..b99eab3a2 100644 --- a/src/main/java/mezz/jei/util/color/MMCQ.java +++ b/src/main/java/mezz/jei/util/color/MMCQ.java @@ -226,8 +226,7 @@ public int[] nearest(int[] color) { * Histo (1-d array, giving the number of pixels in each quantized region of * color space), or null on error. */ - @Nonnull - private static int[] getHisto(@Nonnull int[][] pixels) { + private static int[] getHisto(int[][] pixels) { int[] histo = new int[HISTOSIZE]; int index, rval, gval, bval; @@ -243,8 +242,7 @@ private static int[] getHisto(@Nonnull int[][] pixels) { return histo; } - @Nonnull - private static VBox vboxFromPixels(@Nonnull int[][] pixels, int[] histo) { + private static VBox vboxFromPixels(int[][] pixels, int[] histo) { int rmin = 1000000, rmax = 0; int gmin = 1000000, gmax = 0; int bmin = 1000000, bmax = 0; @@ -281,7 +279,7 @@ private static VBox vboxFromPixels(@Nonnull int[][] pixels, int[] histo) { return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, histo); } - private static VBox[] medianCutApply(int[] histo, @Nonnull VBox vbox) { + private static VBox[] medianCutApply(int[] histo, VBox vbox) { if (vbox.count(false) == 0) { return null; } @@ -355,8 +353,7 @@ private static VBox[] medianCutApply(int[] histo, @Nonnull VBox vbox) { : doCut('b', vbox, partialsum, lookaheadsum, total); } - @Nonnull - private static VBox[] doCut(char color, @Nonnull VBox vbox, int[] partialsum, int[] lookaheadsum, int total) { + private static VBox[] doCut(char color, VBox vbox, int[] partialsum, int[] lookaheadsum, int total) { int vbox_dim1; int vbox_dim2; @@ -422,7 +419,7 @@ private static VBox[] doCut(char color, @Nonnull VBox vbox, int[] partialsum, in } @Nullable - public static CMap quantize(@Nonnull int[][] pixels, int maxcolors) { + public static CMap quantize(int[][] pixels, int maxcolors) { // short-circuit if (pixels.length == 0 || maxcolors < 1 || maxcolors > 256) { return null; @@ -463,7 +460,7 @@ public static CMap quantize(@Nonnull int[][] pixels, int maxcolors) { /** * Inner function to do the iteration. */ - private static void iter(@Nonnull List lh, Comparator comparator, int target, int[] histo) { + private static void iter(List lh, Comparator comparator, int target, int[] histo) { int ncolors = 1; int niters = 0; VBox vbox; @@ -505,14 +502,14 @@ private static void iter(@Nonnull List lh, Comparator comparator, in private static final Comparator COMPARATOR_COUNT = new Comparator() { @Override - public int compare(@Nonnull VBox a, @Nonnull VBox b) { + public int compare(VBox a, VBox b) { return a.count(false) - b.count(false); } }; private static final Comparator COMPARATOR_PRODUCT = new Comparator() { @Override - public int compare(@Nonnull VBox a, @Nonnull VBox b) { + public int compare(VBox a, VBox b) { int aCount = a.count(false); int bCount = b.count(false); int aVolume = a.volume(false); diff --git a/src/main/java/mezz/jei/util/color/package-info.java b/src/main/java/mezz/jei/util/color/package-info.java new file mode 100644 index 000000000..6817ce87a --- /dev/null +++ b/src/main/java/mezz/jei/util/color/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.util.color; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/mezz/jei/util/package-info.java b/src/main/java/mezz/jei/util/package-info.java new file mode 100644 index 000000000..55b385314 --- /dev/null +++ b/src/main/java/mezz/jei/util/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package mezz.jei.util; + +import javax.annotation.ParametersAreNonnullByDefault; + +import mcp.MethodsReturnNonnullByDefault; \ No newline at end of file