diff --git a/dependencies.gradle b/dependencies.gradle index cede54ad..d49dd78b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -11,6 +11,7 @@ dependencies { shadowImplementation('org.apache.commons:commons-csv:1.10.0') compileOnly('maven.modrinth:forge-essentials:7.5.1') + compileOnly('com.cardinalstar.cubicchunks:CubicChunks1710:v0.1.14-alpha:dev') antlr('org.antlr:antlr4:4.13.2') shadowImplementation('org.antlr:antlr4-runtime:4.13.2') diff --git a/src/main/java/codechicken/nei/BookmarkPanel.java b/src/main/java/codechicken/nei/BookmarkPanel.java index ffa73d37..a93dea8c 100644 --- a/src/main/java/codechicken/nei/BookmarkPanel.java +++ b/src/main/java/codechicken/nei/BookmarkPanel.java @@ -913,9 +913,7 @@ public class BookmarkPanel extends PanelWidget { this.grid.createRecipeChainMath(groupId)); } - if (this.recipeChainTooltipLineHandler != null) { - currenttip.add(GuiDraw.TOOLTIP_HANDLER + GuiDraw.getTipLineId(this.recipeChainTooltipLineHandler)); - } + currenttip.add(GuiDraw.TOOLTIP_HANDLER + GuiDraw.getTipLineId(this.recipeChainTooltipLineHandler)); return currenttip; } diff --git a/src/main/java/codechicken/nei/CollapsibleItems.java b/src/main/java/codechicken/nei/CollapsibleItems.java index 9274dc48..1126dcd4 100644 --- a/src/main/java/codechicken/nei/CollapsibleItems.java +++ b/src/main/java/codechicken/nei/CollapsibleItems.java @@ -112,7 +112,7 @@ public class CollapsibleItems { group.setFilter(itemStr); } - if (group != null && group.filter != null) { + if (group.filter != null) { addGroup(group); group = new GroupItem(); } diff --git a/src/main/java/codechicken/nei/ContainerCreativeInv.java b/src/main/java/codechicken/nei/ContainerCreativeInv.java index 44ab51be..1697eb8b 100644 --- a/src/main/java/codechicken/nei/ContainerCreativeInv.java +++ b/src/main/java/codechicken/nei/ContainerCreativeInv.java @@ -79,14 +79,13 @@ public class ContainerCreativeInv extends Container { @Override public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotIndex) { ItemStack transferredStack = null; - Slot slot = (Slot) inventorySlots.get(slotIndex); + Slot slot = inventorySlots.get(slotIndex); if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); transferredStack = stack.copy(); - if (stack.getItem() instanceof ItemArmor) { - ItemArmor armor = (ItemArmor) stack.getItem(); + if (stack.getItem() instanceof ItemArmor armor) { if (!getSlot(90 + armor.armorType).getHasStack()) { getSlot(90 + armor.armorType).putStack(transferredStack); slot.putStack(null); diff --git a/src/main/java/codechicken/nei/ContainerEnchantmentModifier.java b/src/main/java/codechicken/nei/ContainerEnchantmentModifier.java index b7823a97..03ce467f 100644 --- a/src/main/java/codechicken/nei/ContainerEnchantmentModifier.java +++ b/src/main/java/codechicken/nei/ContainerEnchantmentModifier.java @@ -8,7 +8,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ContainerEnchantment; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagList; @@ -164,14 +163,14 @@ public class ContainerEnchantmentModifier extends ContainerEnchantment { public boolean addEnchantment(int e, int level) { if (e < Enchantment.enchantmentsList.length && Enchantment.enchantmentsList[e] != null) { - ((Slot) inventorySlots.get(0)).getStack().addEnchantment(Enchantment.enchantmentsList[e], level); + inventorySlots.get(0).getStack().addEnchantment(Enchantment.enchantmentsList[e], level); return true; } return false; } public void removeEnchantment(int e) { - ItemStack stack = ((Slot) inventorySlots.get(0)).getStack(); + ItemStack stack = inventorySlots.get(0).getStack(); NBTTagList nbttaglist = stack.getEnchantmentTagList(); if (nbttaglist != null) { for (int i = 0; i < nbttaglist.tagCount(); i++) { diff --git a/src/main/java/codechicken/nei/DefaultHighlightHandler.java b/src/main/java/codechicken/nei/DefaultHighlightHandler.java index f24a7378..4d64c427 100644 --- a/src/main/java/codechicken/nei/DefaultHighlightHandler.java +++ b/src/main/java/codechicken/nei/DefaultHighlightHandler.java @@ -20,7 +20,7 @@ public class DefaultHighlightHandler implements IHighlightHandler { String name = null; try { String s = GuiContainerManager.itemDisplayNameShort(stack); - if (s != null && !s.endsWith("Unnamed")) name = s; + if (!s.endsWith("Unnamed")) name = s; if (name != null) currenttip.add(name); } catch (Exception ignored) {} diff --git a/src/main/java/codechicken/nei/FastTransferManager.java b/src/main/java/codechicken/nei/FastTransferManager.java index 5efa6b11..df8cc220 100644 --- a/src/main/java/codechicken/nei/FastTransferManager.java +++ b/src/main/java/codechicken/nei/FastTransferManager.java @@ -91,7 +91,7 @@ public class FastTransferManager { public static void clearSlots(Container container) { for (int slotNo = 0; slotNo < container.inventorySlots.size(); slotNo++) - ((Slot) container.inventorySlots.get(slotNo)).putStack(null); + container.inventorySlots.get(slotNo).putStack(null); } public void performMassTransfer(GuiContainer window, int fromSlot, int toSlot, ItemStack heldStack) { @@ -289,7 +289,7 @@ public class FastTransferManager { if (held == null) return -1; - for (int i = 0; held != null && i < window.inventorySlots.inventorySlots.size(); i++) { + for (int i = 0; i < window.inventorySlots.inventorySlots.size(); i++) { final Slot slot = window.inventorySlots.inventorySlots.get(i); if (slot.inventory instanceof InventoryPlayer && !slot.getHasStack() && slot.isItemValid(held)) { diff --git a/src/main/java/codechicken/nei/GuiEnchantmentModifier.java b/src/main/java/codechicken/nei/GuiEnchantmentModifier.java index 70b03079..28786194 100644 --- a/src/main/java/codechicken/nei/GuiEnchantmentModifier.java +++ b/src/main/java/codechicken/nei/GuiEnchantmentModifier.java @@ -82,8 +82,8 @@ public class GuiEnchantmentModifier extends GuiContainer { private void changeLevel(int i) { container.level += i; - ((GuiButton) buttonList.get(0)).enabled = container.level != 1; - ((GuiButton) buttonList.get(1)).enabled = container.level != 10; + buttonList.get(0).enabled = container.level != 1; + buttonList.get(1).enabled = container.level != 10; } protected void mouseClicked(int i, int j, int k) { diff --git a/src/main/java/codechicken/nei/ItemCraftablesPanel.java b/src/main/java/codechicken/nei/ItemCraftablesPanel.java index 78f7e86a..30b7dec1 100644 --- a/src/main/java/codechicken/nei/ItemCraftablesPanel.java +++ b/src/main/java/codechicken/nei/ItemCraftablesPanel.java @@ -241,7 +241,7 @@ public class ItemCraftablesPanel private GuiContainer getGuiContainer() { final GuiContainer firstGui = NEIClientUtils.getGuiContainer(); - return (firstGui instanceof GuiRecipe gui) ? gui.firstGui : firstGui; + return (firstGui instanceof GuiRecipegui) ? gui.firstGui : firstGui; } private Map generateCraftables(GuiContainer firstGui) { diff --git a/src/main/java/codechicken/nei/ItemListLoader.java b/src/main/java/codechicken/nei/ItemListLoader.java index f5a0b80d..9e0f60f3 100644 --- a/src/main/java/codechicken/nei/ItemListLoader.java +++ b/src/main/java/codechicken/nei/ItemListLoader.java @@ -150,8 +150,7 @@ public class ItemListLoader { if (item == null) { return; } - if (item instanceof IFluidContainerItem) { - IFluidContainerItem fluidItem = (IFluidContainerItem) item; + if (item instanceof IFluidContainerItem fluidItem) { runChecked(stack, () -> fluidItem.getFluid(stack), "getFluid"); } runChecked(stack, () -> item.isDamaged(stack), "isDamaged"); diff --git a/src/main/java/codechicken/nei/ItemMobSpawner.java b/src/main/java/codechicken/nei/ItemMobSpawner.java index 4e209aca..b610a615 100644 --- a/src/main/java/codechicken/nei/ItemMobSpawner.java +++ b/src/main/java/codechicken/nei/ItemMobSpawner.java @@ -100,7 +100,7 @@ public class ItemMobSpawner extends ItemBlock { return true; } - return placed; + return false; } private String getMobTypeFromItemStack(ItemStack stack) { @@ -238,7 +238,6 @@ public class ItemMobSpawner extends ItemBlock { NEIClientConfig.logger.debug("Cleared all entity references from cache"); } - @SuppressWarnings("unchecked") public static void loadSpawners() { if (loaded) { return; @@ -246,8 +245,7 @@ public class ItemMobSpawner extends ItemBlock { synchronized (ItemMobSpawner.class) { try { - for (Map.Entry, String> entry : ((Map, String>) EntityList.classToStringMapping) - .entrySet()) { + for (Map.Entry, String> entry : EntityList.classToStringMapping.entrySet()) { Class clazz = entry.getKey(); String name = entry.getValue(); @@ -323,7 +321,7 @@ public class ItemMobSpawner extends ItemBlock { String name = ENTITY_CLASS_TO_NAME_CACHE.get(entityClass); if (name == null) { - name = (String) EntityList.classToStringMapping.get(entityClass); + name = EntityList.classToStringMapping.get(entityClass); } return name != null && shouldRegisterEntity(entityClass, name); diff --git a/src/main/java/codechicken/nei/ItemStackMap.java b/src/main/java/codechicken/nei/ItemStackMap.java index f2685852..a2823328 100644 --- a/src/main/java/codechicken/nei/ItemStackMap.java +++ b/src/main/java/codechicken/nei/ItemStackMap.java @@ -46,8 +46,7 @@ public class ItemStackMap { } public boolean equals(Object o) { - if (!(o instanceof StackMetaKey)) return false; - StackMetaKey t = (StackMetaKey) o; + if (!(o instanceof StackMetaKey t)) return false; return damage == t.damage && Objects.equal(tag, t.tag); } } @@ -218,8 +217,7 @@ public class ItemStackMap { public void put(ItemStack key, T value) { if (key == null || key.getItem() == null) return; - DetailMap map = itemMap.get(key.getItem()); - if (map == null) itemMap.put(key.getItem(), map = new DetailMap()); + DetailMap map = itemMap.computeIfAbsent(key.getItem(), k -> new DetailMap()); map.put(key, value); } diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index b1cd0ce0..2690dd6a 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -921,9 +921,7 @@ public class NEIClientConfig { return; } - if (ItemPanels.bookmarkPanel != null) { - ItemPanels.bookmarkPanel.save(); - } + ItemPanels.bookmarkPanel.save(); SubsetWidget.saveHidden(); FavoriteRecipes.save(); diff --git a/src/main/java/codechicken/nei/NEIServerUtils.java b/src/main/java/codechicken/nei/NEIServerUtils.java index 3fa55c4e..d3dfd5b5 100644 --- a/src/main/java/codechicken/nei/NEIServerUtils.java +++ b/src/main/java/codechicken/nei/NEIServerUtils.java @@ -34,7 +34,6 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; import net.minecraft.world.World; -import net.minecraft.world.WorldServer; import net.minecraft.world.WorldSettings.GameType; import net.minecraftforge.oredict.OreDictionary; @@ -76,7 +75,7 @@ public class NEIServerUtils { public static void toggleRaining(World world, boolean notify) { boolean raining = !world.isRaining(); if (!raining) // turn off - ((WorldServer) world).provider.resetRainAndThunder(); + world.provider.resetRainAndThunder(); else world.getWorldInfo().setRaining(!isRaining(world)); if (notify) @@ -262,9 +261,6 @@ public class NEIServerUtils { /** * GT Items don't have any NBT set for the recipe, so if either of the stacks has a NULL nbt, and the other doesn't, * pretend they stack - * - * @param ItemStack stack - * @return */ public static boolean isItemTool(ItemStack stack) { return GTMetaBaseItemHolder.gtMetaBaseItem != null @@ -456,7 +452,7 @@ public class NEIServerUtils { } public static List getRange(final int start, final int end) { - return new AbstractList() { + return new AbstractList<>() { @Override public Integer get(int index) { diff --git a/src/main/java/codechicken/nei/PresetsList.java b/src/main/java/codechicken/nei/PresetsList.java index c18d0895..4495da56 100644 --- a/src/main/java/codechicken/nei/PresetsList.java +++ b/src/main/java/codechicken/nei/PresetsList.java @@ -163,9 +163,7 @@ public class PresetsList { public static void load() { final File presetsFile = new File(CommonUtils.getMinecraftDir(), "saves/NEI/global/presets.ini"); - if (presetsFile == null || !presetsFile.exists()) { - return; - } + if (!presetsFile.exists()) return; List itemStrings; try (FileInputStream reader = new FileInputStream(presetsFile)) { diff --git a/src/main/java/codechicken/nei/SearchTokenParser.java b/src/main/java/codechicken/nei/SearchTokenParser.java index c702afe4..e55cd9d5 100644 --- a/src/main/java/codechicken/nei/SearchTokenParser.java +++ b/src/main/java/codechicken/nei/SearchTokenParser.java @@ -185,7 +185,7 @@ public class SearchTokenParser { public synchronized ItemFilter getFilter(String rawText, boolean skipRecipeTokens) { final String filterText = EnumChatFormatting.getTextWithoutFormattingCodes(rawText).toLowerCase(); - if (filterText == null || filterText.isEmpty()) { + if (filterText.isEmpty()) { return new EverythingItemFilter(); } @@ -259,7 +259,7 @@ public class SearchTokenParser { public synchronized IRecipeFilter getRecipeFilter(String filterText) { filterText = EnumChatFormatting.getTextWithoutFormattingCodes(filterText).toLowerCase(); - if (filterText == null || filterText.isEmpty()) { + if (filterText.isEmpty()) { return new RecipeFilter(FilterContext.ANY, true, new EverythingItemFilter()); } diff --git a/src/main/java/codechicken/nei/ServerHandler.java b/src/main/java/codechicken/nei/ServerHandler.java index b125e521..c862ef01 100644 --- a/src/main/java/codechicken/nei/ServerHandler.java +++ b/src/main/java/codechicken/nei/ServerHandler.java @@ -46,8 +46,7 @@ public class ServerHandler { @SubscribeEvent public void tickEvent(TickEvent.PlayerTickEvent event) { - if (event.phase == Phase.START && event.player instanceof EntityPlayerMP) { - EntityPlayerMP player = (EntityPlayerMP) event.player; + if (event.phase == Phase.START && event.player instanceof EntityPlayerMP player) { PlayerSave save = NEIServerConfig.forPlayer(player.getCommandSenderName()); if (save == null) return; updateMagneticPlayer(player, save); diff --git a/src/main/java/codechicken/nei/WorldOverlayRenderer.java b/src/main/java/codechicken/nei/WorldOverlayRenderer.java index 7909dc97..83d0a022 100644 --- a/src/main/java/codechicken/nei/WorldOverlayRenderer.java +++ b/src/main/java/codechicken/nei/WorldOverlayRenderer.java @@ -1,7 +1,5 @@ package codechicken.nei; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.concurrent.Callable; @@ -23,6 +21,8 @@ import net.minecraft.world.chunk.Chunk; import org.lwjgl.opengl.GL11; +import com.cardinalstar.cubicchunks.world.api.IMinMaxHeight; + import codechicken.lib.math.MathHelper; import codechicken.nei.KeyManager.IKeyStateTracker; import cpw.mods.fml.relauncher.ReflectionHelper; @@ -416,38 +416,18 @@ public class WorldOverlayRenderer implements IKeyStateTracker { GL11.glDisable(GL11.GL_BLEND); } - /** Holder defers class loading until Cubic Chunks is confirmed present. */ - private static final class CCWorldBounds { - - static final MethodHandle GET_MIN_HEIGHT; - static final MethodHandle GET_MAX_HEIGHT; - - static { - try { - MethodHandles.Lookup lookup = MethodHandles.lookup(); - // Mixined into World by CC, use reflection + MethodHandles to call these - GET_MIN_HEIGHT = lookup.unreflect(World.class.getMethod("getMinHeight")); - GET_MAX_HEIGHT = lookup.unreflect(World.class.getMethod("getMaxHeight")); - } catch (ReflectiveOperationException e) { - throw new ExceptionInInitializerError(e); - } - } - } - private static int worldMinHeight(World world) { - if (!NEIModContainer.isCCLoaded()) return 0; - try { - return (int) CCWorldBounds.GET_MIN_HEIGHT.invoke(world); - } catch (Throwable ignored) { + if (NEIModContainer.isCCLoaded() && world instanceof IMinMaxHeight worldHeights) { + return worldHeights.getMinHeight(); + } else { return 0; } } private static int worldMaxHeight(World world) { - if (!NEIModContainer.isCCLoaded()) return world.getHeight(); - try { - return (int) CCWorldBounds.GET_MAX_HEIGHT.invoke(world); - } catch (Throwable ignored) { + if (NEIModContainer.isCCLoaded() && world instanceof IMinMaxHeight worldHeights) { + return worldHeights.getMaxHeight(); + } else { return world.getHeight(); } } diff --git a/src/main/java/codechicken/nei/api/ShortcutInputHandler.java b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java index 1baca760..04c81c01 100644 --- a/src/main/java/codechicken/nei/api/ShortcutInputHandler.java +++ b/src/main/java/codechicken/nei/api/ShortcutInputHandler.java @@ -274,7 +274,7 @@ public abstract class ShortcutInputHandler { if (slot.getGroup().crafting == null) { final Recipe recipe = Recipe.of(slot.getRecipeId()); if (recipe != null) { - math = RecipeChainMath.of(recipe, Math.max(1, slot != null ? slot.getMultiplier() : 1)); + math = RecipeChainMath.of(recipe, Math.max(1, slot.getMultiplier())); } } else { math = ItemPanels.bookmarkPanel.getGrid() @@ -441,7 +441,7 @@ public abstract class ShortcutInputHandler { } } - if (gui instanceof GuiRecipe guiRecipe) { + if (gui instanceof GuiRecipeguiRecipe) { recipe = guiRecipe.getFocusedRecipe(); } @@ -736,7 +736,7 @@ public abstract class ShortcutInputHandler { return itemSlot.getRecipeId(); } - if (gui instanceof GuiRecipe guiRecipe) { + if (gui instanceof GuiRecipeguiRecipe) { final Recipe focusedRecipe = guiRecipe.getFocusedRecipe(); if (focusedRecipe != null) { diff --git a/src/main/java/codechicken/nei/bookmark/SortableItem.java b/src/main/java/codechicken/nei/bookmark/SortableItem.java index a52b1ef3..e39ccca0 100644 --- a/src/main/java/codechicken/nei/bookmark/SortableItem.java +++ b/src/main/java/codechicken/nei/bookmark/SortableItem.java @@ -1,5 +1,7 @@ package codechicken.nei.bookmark; +import static codechicken.nei.bookmark.BookmarkGrid.DEFAULT_GROUP_ID; + import java.awt.Point; import java.util.ArrayList; import java.util.Collections; @@ -139,13 +141,11 @@ public class SortableItem { return; } - if (overGroupId != BookmarkGrid.DEFAULT_GROUP_ID - && beforeGroupId != BookmarkGrid.DEFAULT_GROUP_ID) { - beforeGroupId = BookmarkGrid.DEFAULT_GROUP_ID; + if (overGroupId != DEFAULT_GROUP_ID && beforeGroupId != DEFAULT_GROUP_ID) { + beforeGroupId = DEFAULT_GROUP_ID; } - if (overGroupId == BookmarkGrid.DEFAULT_GROUP_ID && beforeGroupId != BookmarkGrid.DEFAULT_GROUP_ID - && afterGroupId != BookmarkGrid.DEFAULT_GROUP_ID) { + if (overGroupId == DEFAULT_GROUP_ID && afterGroupId != DEFAULT_GROUP_ID) { return; } @@ -160,12 +160,11 @@ public class SortableItem { return; } - if (overGroupId != BookmarkGrid.DEFAULT_GROUP_ID && afterGroupId != BookmarkGrid.DEFAULT_GROUP_ID) { - afterGroupId = BookmarkGrid.DEFAULT_GROUP_ID; + if (overGroupId != DEFAULT_GROUP_ID && afterGroupId != DEFAULT_GROUP_ID) { + afterGroupId = DEFAULT_GROUP_ID; } - if (overGroupId == BookmarkGrid.DEFAULT_GROUP_ID && beforeGroupId != BookmarkGrid.DEFAULT_GROUP_ID - && afterGroupId != BookmarkGrid.DEFAULT_GROUP_ID) { + if (overGroupId == DEFAULT_GROUP_ID && beforeGroupId != DEFAULT_GROUP_ID) { return; } diff --git a/src/main/java/codechicken/nei/config/HandlerDumper.java b/src/main/java/codechicken/nei/config/HandlerDumper.java index 034e0116..23f3a811 100644 --- a/src/main/java/codechicken/nei/config/HandlerDumper.java +++ b/src/main/java/codechicken/nei/config/HandlerDumper.java @@ -17,7 +17,6 @@ import codechicken.nei.recipe.GuiRecipeTab; import codechicken.nei.recipe.GuiUsageRecipe; import codechicken.nei.recipe.HandlerInfo; import codechicken.nei.recipe.IRecipeHandler; -import codechicken.nei.recipe.TemplateRecipeHandler; import codechicken.nei.util.NBTJson; public class HandlerDumper extends DataDumper { @@ -37,10 +36,7 @@ public class HandlerDumper extends DataDumper { LinkedList list = new LinkedList<>(); for (IRecipeHandler handler : GuiUsageRecipe.usagehandlers) { final String handlerName = handler.getHandlerId(); - final String handlerId = Objects.firstNonNull( - handler instanceof TemplateRecipeHandler ? ((TemplateRecipeHandler) handler).getOverlayIdentifier() - : null, - "null"); + final String handlerId = Objects.firstNonNull(handler.getOverlayIdentifier(), "null"); HandlerInfo info = GuiRecipeTab.getHandlerInfo(handlerName, handlerId); list.add( diff --git a/src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java b/src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java index 88c8eb6e..bf832aaa 100644 --- a/src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java +++ b/src/main/java/codechicken/nei/recipe/BookmarkRecipeId.java @@ -64,7 +64,7 @@ public class BookmarkRecipeId { return false; } - Short idx = 0; + short idx = 0; for (PositionedStack pStack : stacks) { final NBTTagCompound tagCompoundA = StackInfo @@ -123,8 +123,7 @@ public class BookmarkRecipeId { return true; } - if (anObject instanceof BookmarkRecipeId) { - final BookmarkRecipeId anRecipeId = (BookmarkRecipeId) anObject; + if (anObject instanceof BookmarkRecipeId anRecipeId) { if (!handlerName.equals(anRecipeId.handlerName)) { return false; diff --git a/src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java b/src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java index 4e5b09f5..f79e5939 100644 --- a/src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java +++ b/src/main/java/codechicken/nei/recipe/BrewingOverlayHandler.java @@ -13,7 +13,7 @@ public class BrewingOverlayHandler extends DefaultOverlayHandler { public Slot[][] mapIngredSlots(GuiContainer gui, List ingredients) { Slot[][] map = super.mapIngredSlots(gui, ingredients); Slot[] potSlots = new Slot[3]; - for (int i = 0; i < 3; i++) potSlots[i] = (Slot) gui.inventorySlots.inventorySlots.get(i); + for (int i = 0; i < 3; i++) potSlots[i] = gui.inventorySlots.inventorySlots.get(i); map[1] = potSlots; return map; } diff --git a/src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java b/src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java index 254ad9bf..b5876ed5 100644 --- a/src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java +++ b/src/main/java/codechicken/nei/recipe/FuelRecipeHandler.java @@ -53,8 +53,7 @@ public class FuelRecipeHandler extends FurnaceRecipeHandler { private void loadAllSmelting() { // Note: Not safe as written for parallelStream - final Map smeltingRecipes = (Map) FurnaceRecipes.smelting() - .getSmeltingList(); + final Map smeltingRecipes = FurnaceRecipes.smelting().getSmeltingList(); smeltingRecipes.entrySet().stream().map(recipe -> new SmeltingPair(recipe.getKey(), recipe.getValue())) .collect(Collectors.toCollection(() -> mfurnace)); } diff --git a/src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java b/src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java index d37ed379..59cbba20 100644 --- a/src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java +++ b/src/main/java/codechicken/nei/recipe/FurnaceRecipeHandler.java @@ -84,7 +84,7 @@ public class FurnaceRecipeHandler extends TemplateRecipeHandler { public void loadCraftingRecipes(String outputId, Object... results) { if (outputId.equals("smelting") && getClass() == FurnaceRecipeHandler.class) { // don't want subclasses getting // a hold of this - Map recipes = (Map) FurnaceRecipes.smelting().getSmeltingList(); + Map recipes = FurnaceRecipes.smelting().getSmeltingList(); for (Entry recipe : recipes.entrySet()) arecipes.add(new SmeltingPair(recipe.getKey(), recipe.getValue())); } else super.loadCraftingRecipes(outputId, results); @@ -92,7 +92,7 @@ public class FurnaceRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - Map recipes = (Map) FurnaceRecipes.smelting().getSmeltingList(); + Map recipes = FurnaceRecipes.smelting().getSmeltingList(); for (Entry recipe : recipes.entrySet()) if (NEIServerUtils.areStacksSameType(recipe.getValue(), result)) arecipes.add(new SmeltingPair(recipe.getKey(), recipe.getValue())); @@ -108,7 +108,7 @@ public class FurnaceRecipeHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(ItemStack ingredient) { - Map recipes = (Map) FurnaceRecipes.smelting().getSmeltingList(); + Map recipes = FurnaceRecipes.smelting().getSmeltingList(); for (Entry recipe : recipes.entrySet()) if (NEIServerUtils.areStacksSameTypeCrafting(recipe.getKey(), ingredient)) { SmeltingPair arecipe = new SmeltingPair(recipe.getKey(), recipe.getValue()); diff --git a/src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java b/src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java index 4bcf1ab8..34b0d17e 100644 --- a/src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java +++ b/src/main/java/codechicken/nei/recipe/GuiCraftingRecipe.java @@ -119,7 +119,7 @@ public class GuiCraftingRecipe extends GuiRecipe { public static RecipeId getRecipeId(GuiScreen gui, ItemStack stackover) { - if (gui instanceof GuiRecipe guiRecipe) { + if (gui instanceof GuiRecipeguiRecipe) { final Recipe focusedRecipe = guiRecipe.getFocusedRecipe(); if (focusedRecipe != null) { diff --git a/src/main/java/codechicken/nei/recipe/GuiRecipe.java b/src/main/java/codechicken/nei/recipe/GuiRecipe.java index 1baca6a1..17e1c5f9 100644 --- a/src/main/java/codechicken/nei/recipe/GuiRecipe.java +++ b/src/main/java/codechicken/nei/recipe/GuiRecipe.java @@ -1083,7 +1083,7 @@ public abstract class GuiRecipe extends GuiContainer i final int curRecipe = indices.isEmpty() ? 0 : indices.get(0); final Recipe recipe = Recipe.of(gRecipe.handler.original, curRecipe); - return recipe != null ? recipe.getRecipeId() : null; + return recipe.getRecipeId(); } return null; diff --git a/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java b/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java index ae2d216d..a9e756d2 100644 --- a/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java +++ b/src/main/java/codechicken/nei/recipe/NEIRecipeWidget.java @@ -223,7 +223,7 @@ public class NEIRecipeWidget extends Widget { button -> (this.showAsWidget ? button instanceof GuiOverlayButton : button.contains(mouseX, mouseY)) ? button : null, - (GuiRecipeButton) null); + null); if (overlayButton != null) { NEIClientUtils.gl2DRenderContext(() -> overlayButton.drawItemOverlay()); diff --git a/src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java b/src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java index 182e39b6..871cbbf5 100644 --- a/src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java +++ b/src/main/java/codechicken/nei/recipe/ProfilerRecipeHandler.java @@ -168,7 +168,7 @@ public class ProfilerRecipeHandler implements ICraftingHandler, IUsageHandler { private boolean isHandlerTitleHovered(int recipe, Point mouse) { final GuiContainer guiContainer = NEIClientUtils.getGuiContainer(); - if (guiContainer instanceof GuiRecipe guiRecipe) { + if (guiContainer instanceof GuiRecipeguiRecipe) { final Point recipePosition = guiRecipe.getRecipePosition(recipe); return new Rectangle(recipePosition.x, recipePosition.y, WIDTH, 16) .contains(mouse.x - guiContainer.guiLeft, mouse.y - guiContainer.guiTop); @@ -250,7 +250,7 @@ public class ProfilerRecipeHandler implements ICraftingHandler, IUsageHandler { if (r.handler != null) { final GuiContainer guiContainer = NEIClientUtils.getGuiContainer(); - if (guiContainer instanceof GuiRecipe guiRecipe) { + if (guiContainer instanceof GuiRecipeguiRecipe) { int index = guiRecipe.currenthandlers.indexOf(r.handler); if (index != -1) { diff --git a/src/main/java/codechicken/nei/recipe/RecipeHandlerRef.java b/src/main/java/codechicken/nei/recipe/RecipeHandlerRef.java index d384d8a5..57520575 100644 --- a/src/main/java/codechicken/nei/recipe/RecipeHandlerRef.java +++ b/src/main/java/codechicken/nei/recipe/RecipeHandlerRef.java @@ -59,7 +59,7 @@ public class RecipeHandlerRef { private GuiContainer prepareGui(GuiContainer firstGui) { - if (firstGui instanceof GuiRecipe gui) { + if (firstGui instanceof GuiRecipegui) { firstGui = gui.firstGui; } diff --git a/src/main/java/codechicken/nei/recipe/RecipeInfo.java b/src/main/java/codechicken/nei/recipe/RecipeInfo.java index 6c74edb9..1b8132e1 100644 --- a/src/main/java/codechicken/nei/recipe/RecipeInfo.java +++ b/src/main/java/codechicken/nei/recipe/RecipeInfo.java @@ -50,8 +50,7 @@ public class RecipeInfo { public static void registerGuiOverlay(Class classz, String ident, IStackPositioner positioner) { positionerMap.put(new OverlayKey(classz, ident), positioner); - if (positioner instanceof OffsetPositioner && !offsets.containsKey(classz)) { - OffsetPositioner p = (OffsetPositioner) positioner; + if (positioner instanceof OffsetPositioner p && !offsets.containsKey(classz)) { setGuiOffset(classz, p.offsetx, p.offsety); } } diff --git a/src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java b/src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java index 5461e4ac..07a76fe8 100644 --- a/src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java +++ b/src/main/java/codechicken/nei/recipe/ShapedRecipeHandler.java @@ -1,6 +1,8 @@ package codechicken.nei.recipe; import java.awt.Rectangle; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; @@ -13,8 +15,6 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.ShapedRecipes; import net.minecraftforge.oredict.ShapedOreRecipe; -import codechicken.core.ReflectionManager; -import codechicken.nei.NEIClientConfig; import codechicken.nei.NEIClientUtils; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; @@ -25,6 +25,24 @@ import codechicken.nei.api.IStackPositioner; public class ShapedRecipeHandler extends TemplateRecipeHandler { + private static final MethodHandle SHAPED_ORE_RECIPE_WIDTH, SHAPED_ORE_RECIPE_HEIGHT; + + static { + try { + final var lookup = MethodHandles.lookup(); + final var widthField = ShapedOreRecipe.class.getDeclaredField("width"); + final var heightField = ShapedOreRecipe.class.getDeclaredField("height"); + + widthField.setAccessible(true); + heightField.setAccessible(true); + + SHAPED_ORE_RECIPE_WIDTH = lookup.unreflectGetter(widthField); + SHAPED_ORE_RECIPE_HEIGHT = lookup.unreflectGetter(heightField); + } catch (IllegalAccessException | NoSuchFieldException e) { + throw new RuntimeException(e); + } + } + public class CachedShapedRecipe extends CachedRecipe { public ArrayList ingredients; @@ -84,7 +102,7 @@ public class ShapedRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(String outputId, Object... results) { if (outputId.equals("crafting") && getClass() == ShapedRecipeHandler.class) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { + for (IRecipe irecipe : CraftingManager.getInstance().getRecipeList()) { CachedShapedRecipe recipe = null; if (irecipe instanceof ShapedRecipes shaped) { @@ -99,7 +117,7 @@ public class ShapedRecipeHandler extends TemplateRecipeHandler { } } } else if (outputId.equals("crafting2x2") && getClass() == ShapedRecipeHandler.class) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { + for (IRecipe irecipe : CraftingManager.getInstance().getRecipeList()) { if (irecipe instanceof ShapedRecipes shaped && shaped.recipeWidth <= 2 && shaped.recipeHeight <= 2) { CachedShapedRecipe recipe = new CachedShapedRecipe(shaped); @@ -115,7 +133,7 @@ public class ShapedRecipeHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { + for (IRecipe irecipe : CraftingManager.getInstance().getRecipeList()) { if (NEIServerUtils.areStacksSameTypeCrafting(irecipe.getRecipeOutput(), result)) { CachedShapedRecipe recipe = null; if (irecipe instanceof ShapedRecipes) recipe = new CachedShapedRecipe((ShapedRecipes) irecipe); @@ -131,7 +149,7 @@ public class ShapedRecipeHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(ItemStack ingredient) { - for (IRecipe irecipe : (List) CraftingManager.getInstance().getRecipeList()) { + for (IRecipe irecipe : CraftingManager.getInstance().getRecipeList()) { CachedShapedRecipe recipe = null; if (irecipe instanceof ShapedRecipes) recipe = new CachedShapedRecipe((ShapedRecipes) irecipe); else if (irecipe instanceof ShapedOreRecipe) recipe = forgeShapedRecipe((ShapedOreRecipe) irecipe); @@ -147,19 +165,21 @@ public class ShapedRecipeHandler extends TemplateRecipeHandler { } public CachedShapedRecipe forgeShapedRecipe(ShapedOreRecipe recipe) { + int width, height; try { - int width = ReflectionManager.getField(ShapedOreRecipe.class, Integer.class, recipe, 4); - int height = ReflectionManager.getField(ShapedOreRecipe.class, Integer.class, recipe, 5); - - Object[] items = recipe.getInput(); - for (Object item : items) if (item instanceof List && ((List) item).isEmpty()) // ore handler, no ores - return null; - - return new CachedShapedRecipe(width, height, items, recipe.getRecipeOutput()); - } catch (Exception e) { - NEIClientConfig.logger.error("Error loading recipe: ", e); - return null; + width = (int) SHAPED_ORE_RECIPE_WIDTH.invokeExact(recipe); + height = (int) SHAPED_ORE_RECIPE_HEIGHT.invokeExact(recipe); + } catch (Throwable e) { + throw new IllegalStateException("Unreachable"); } + + Object[] items = recipe.getInput(); + for (Object item : items) { + if (item instanceof Listores && ores.isEmpty()) // ore handler, no ores + return null; + } + + return new CachedShapedRecipe(width, height, items, recipe.getRecipeOutput()); } @Override diff --git a/src/main/java/codechicken/nei/recipe/debug/DebugHandlerWidget.java b/src/main/java/codechicken/nei/recipe/debug/DebugHandlerWidget.java index 374d2c0d..9931642a 100644 --- a/src/main/java/codechicken/nei/recipe/debug/DebugHandlerWidget.java +++ b/src/main/java/codechicken/nei/recipe/debug/DebugHandlerWidget.java @@ -382,7 +382,7 @@ public class DebugHandlerWidget extends Widget { public void update() { final GuiContainer gui = NEIClientUtils.getGuiContainer(); - if (this.showWidget && gui instanceof GuiRecipe recipe) { + if (this.showWidget && gui instanceof GuiReciperecipe) { if (this.record == null || !this.record.handlerKey.equals(getHandlerID(recipe.getHandler()))) { final IRecipeHandler handler = recipe.getHandler(); diff --git a/src/main/java/codechicken/nei/search/SearchExpressionFormatVisitor.java b/src/main/java/codechicken/nei/search/SearchExpressionFormatVisitor.java index 55ba1b9e..4be5157f 100644 --- a/src/main/java/codechicken/nei/search/SearchExpressionFormatVisitor.java +++ b/src/main/java/codechicken/nei/search/SearchExpressionFormatVisitor.java @@ -85,8 +85,7 @@ public class SearchExpressionFormatVisitor extends AbstractSearchExpressionVisit } private String formatChild(ParseTree child, Character prefix) { - if (child instanceof TerminalNode) { - final TerminalNode node = (TerminalNode) child; + if (child instanceof TerminalNode node) { final int type = node.getSymbol().getType(); final String format = Optional.ofNullable( // check if highlight is defined for the token diff --git a/src/main/java/codechicken/nei/util/ItemUntranslator.java b/src/main/java/codechicken/nei/util/ItemUntranslator.java index d00f0db0..974269e0 100644 --- a/src/main/java/codechicken/nei/util/ItemUntranslator.java +++ b/src/main/java/codechicken/nei/util/ItemUntranslator.java @@ -36,7 +36,7 @@ import cpw.mods.fml.relauncher.ReflectionHelper; public class ItemUntranslator { - private class LanguageRegistryPatch implements AutoCloseable { + private static class LanguageRegistryPatch implements AutoCloseable { // RAII-style helper that temporarily swaps language data in // LanguageRegistry / StringTranslate using reflection. This allows // reading translation entries for a different language (eg. en_US) diff --git a/src/main/java/codechicken/nei/util/NBTJson.java b/src/main/java/codechicken/nei/util/NBTJson.java index f8953a2d..b08aa4c4 100644 --- a/src/main/java/codechicken/nei/util/NBTJson.java +++ b/src/main/java/codechicken/nei/util/NBTJson.java @@ -39,13 +39,12 @@ public class NBTJson { @SuppressWarnings("unchecked") public static JsonElement toJsonObject(NBTBase nbt) { - if (nbt instanceof NBTTagCompound) { + if (nbt instanceof NBTTagCompound nbtTagCompound) { // NBTTagCompound - final NBTTagCompound nbtTagCompound = (NBTTagCompound) nbt; final Map tagMap = (Map) nbtTagCompound.tagMap; final JsonObject root = new JsonObject(); - tagMap.entrySet().stream().sorted(Map.Entry.comparingByKey()) + tagMap.entrySet().stream().sorted(Map.Entry.comparingByKey()) .forEach(nbtEntry -> { root.add(nbtEntry.getKey(), toJsonObject(nbtEntry.getValue())); }); return root; @@ -73,9 +72,8 @@ public class NBTJson { } else if (nbt instanceof NBTTagString) { // String return new JsonPrimitive(((NBTTagString) nbt).func_150285_a_()); - } else if (nbt instanceof NBTTagList) { + } else if (nbt instanceof NBTTagList list) { // Tag List - final NBTTagList list = (NBTTagList) nbt; if (list.tagList.isEmpty()) { return createEmptyList(list); @@ -85,9 +83,8 @@ public class NBTJson { return arr; } - } else if (nbt instanceof NBTTagIntArray) { + } else if (nbt instanceof NBTTagIntArray list) { // Int Array - final NBTTagIntArray list = (NBTTagIntArray) nbt; if (list.func_150302_c().length == 0) { return createEmptyList(list); @@ -101,9 +98,8 @@ public class NBTJson { return arr; } - } else if (nbt instanceof NBTTagByteArray) { + } else if (nbt instanceof NBTTagByteArray list) { // Byte Array - final NBTTagByteArray list = (NBTTagByteArray) nbt; if (list.func_150292_c().length == 0) { return createEmptyList(list); @@ -123,9 +119,8 @@ public class NBTJson { } public static NBTBase toNbt(JsonElement jsonElement) { - if (jsonElement instanceof JsonPrimitive) { + if (jsonElement instanceof JsonPrimitive jsonPrimitive) { // Number or String - final JsonPrimitive jsonPrimitive = (JsonPrimitive) jsonElement; final String jsonString = jsonPrimitive.getAsString(); final Matcher m = numberPattern.matcher(jsonString); if (m.find()) { @@ -158,9 +153,8 @@ public class NBTJson { // String return new NBTTagString(jsonString); } - } else if (jsonElement instanceof JsonArray) { + } else if (jsonElement instanceof JsonArray jsonArray) { // NBTTagIntArray or NBTTagList - final JsonArray jsonArray = (JsonArray) jsonElement; final List nbtList = new ArrayList<>(); for (JsonElement element : jsonArray) { @@ -183,9 +177,8 @@ public class NBTJson { return nbtTagList; } - } else if (jsonElement instanceof JsonObject) { + } else if (jsonElement instanceof JsonObject jsonObject) { // NBTTagCompound - final JsonObject jsonObject = (JsonObject) jsonElement; final NBTBase custom = restoreEmptyList(jsonObject); if (custom == null) {