diff options
Diffstat (limited to 'src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5')
3 files changed, 118 insertions, 59 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java index bdcccebe7a..6abc3ea96c 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java @@ -1,20 +1,15 @@ package pers.gwyog.gtneioreplugin.plugin.gregtech5; -import static pers.gwyog.gtneioreplugin.GTNEIOrePlugin.toolTips; - import codechicken.lib.gui.GuiDraw; -import codechicken.nei.guihook.GuiContainerManager; import codechicken.nei.recipe.GuiRecipe; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.util.GT_LanguageManager; import java.awt.Point; import java.awt.Rectangle; -import java.util.List; import net.minecraft.client.resources.I18n; import net.minecraft.util.EnumChatFormatting; import pers.gwyog.gtneioreplugin.plugin.PluginBase; -import pers.gwyog.gtneioreplugin.util.DimensionHelper; import pers.gwyog.gtneioreplugin.util.GuiRecipeHelper; public abstract class PluginGT5Base extends PluginBase { @@ -52,30 +47,6 @@ public abstract class PluginGT5Base extends PluginBase { } /** - * Add lines to the current tooltip if appropriate - * - * @param gui An instance of the currentscreen - * @param currenttip The current tooltip, will contain item name and info - * @param recipe The recipe index being handled - * @return The modified tooltip. DO NOT return null - */ - @Override - public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipe) { - if (toolTips && GuiContainerManager.shouldShowTooltip(gui) && currenttip.size() == 0) { - String dimNames = getDimensionNames(recipe); - Rectangle dimRect = getDimensionNamesRect(gui, recipe, dimNames); - Point mousePos = GuiDraw.getMousePosition(); - - if (dimRect.contains(mousePos.x, mousePos.y)) { - List<String> dims = DimensionHelper.convertCondensedStringToToolTip(dimNames); - currenttip.addAll(dims); - } - } - - return super.handleTooltip(gui, currenttip, recipe); - } - - /** * The dimension names for a given recipe index * * @param recipe The recipe index being handled @@ -117,20 +88,6 @@ public abstract class PluginGT5Base extends PluginBase { */ protected void drawDimNames(String dimNames) { GuiDraw.drawString(I18n.format("gtnop.gui.nei.worldNames") + ": ", 2, 100, 0x404040, false); - - if (dimNames.length() > 36) { - GuiDraw.drawString(I18n.format("") + dimNames.substring(0, 36), 2, 110, 0x404040, false); - if (dimNames.length() > 70) { - GuiDraw.drawString(I18n.format("") + dimNames.substring(36, 70), 2, 120, 0x404040, false); - GuiDraw.drawString( - I18n.format("") + dimNames.substring(70, dimNames.length() - 1), 2, 130, 0x404040, false); - } else { - GuiDraw.drawString( - I18n.format("") + dimNames.substring(36, dimNames.length() - 1), 2, 120, 0x404040, false); - } - } else { - GuiDraw.drawString(I18n.format("") + dimNames.substring(0, dimNames.length() - 1), 2, 110, 0x404040, false); - } } /** diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java index 38f668f05e..0955409d58 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java @@ -4,9 +4,13 @@ import codechicken.nei.PositionedStack; import gregtech.api.enums.OrePrefixes; import gregtech.api.util.GT_OreDictUnificator; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import pers.gwyog.gtneioreplugin.plugin.items.ItemDimensionDisplay; +import pers.gwyog.gtneioreplugin.util.DimensionHelper; import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper; import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper.OreSmallWrapper; @@ -66,6 +70,20 @@ public class PluginGT5SmallOreStat extends PluginGT5Base { } else super.loadCraftingRecipes(stack); } + @Override + public void loadUsageRecipes(ItemStack stack) { + String dimension = ItemDimensionDisplay.getDimension(stack); + if (dimension == null) { + return; + } + + for (OreSmallWrapper oreVein : GT5OreSmallHelper.mapOreSmallWrapper.values()) { + if (Arrays.asList(getDimNameArrayFromVeinName(oreVein.oreGenName)).contains(dimension)) { + addSmallOre(oreVein, 7); + } + } + } + private void loadSmallOre(short oreMeta, int maximumIndex) { OreSmallWrapper smallOre = getSmallOre(oreMeta); if (smallOre != null) { @@ -120,11 +138,20 @@ public class PluginGT5SmallOreStat extends PluginGT5Base { return GT5OreSmallHelper.bufferedDims.get(oreSmall); } + private String[] getDimNameArrayFromVeinName(String veinName) { + OreSmallWrapper oreSmall = GT5OreSmallHelper.mapOreSmallWrapper.get(veinName); + String[] dims = DimensionHelper.parseDimNames(GT5OreSmallHelper.bufferedDims.get(oreSmall)); + Arrays.sort(dims, Comparator.comparingInt(s -> Arrays.asList(DimensionHelper.DimNameDisplayed) + .indexOf(s))); + return dims; + } + public class CachedOreSmallRecipe extends CachedRecipe { public String oreGenName; public PositionedStack positionedStackOreSmall; public PositionedStack positionedStackMaterialDust; public List<PositionedStack> positionedDropStackList; + private final List<PositionedStack> dimensionDisplayItems = new ArrayList<>(); public CachedOreSmallRecipe( String oreGenName, @@ -141,21 +168,46 @@ public class PluginGT5SmallOreStat extends PluginGT5Base { positionedDropStackList.add(new PositionedStack( stackDrop, 43 + 20 * (i % 4), 79 + 16 * ((i++) / 4) + getRestrictBiomeOffset())); this.positionedDropStackList = positionedDropStackList; + setDimensionDisplayItems(); + } + + private void setDimensionDisplayItems() { + int x = 2; + int y = 110; + int count = 0; + int itemsPerLine = 9; + int itemSize = 18; + for (String dim : getDimNameArrayFromVeinName(this.oreGenName)) { + ItemStack item = ItemDimensionDisplay.getItem(dim); + if (item != null) { + int xPos = x + itemSize * (count % itemsPerLine); + int yPos = y + itemSize * (count / itemsPerLine); + dimensionDisplayItems.add(new PositionedStack(item, xPos, yPos, false)); + count++; + } + } } @Override public List<PositionedStack> getIngredients() { - positionedStackOreSmall.setPermutationToRender((cycleticks / 20) % positionedStackOreSmall.items.length); - positionedStackMaterialDust.setPermutationToRender( - (cycleticks / 20) % positionedStackMaterialDust.items.length); - positionedDropStackList.add(positionedStackOreSmall); - positionedDropStackList.add(positionedStackMaterialDust); - return positionedDropStackList; + return dimensionDisplayItems; } @Override public PositionedStack getResult() { return null; } + + @Override + public List<PositionedStack> getOtherStacks() { + List<PositionedStack> outputs = new ArrayList<>(); + positionedStackOreSmall.setPermutationToRender((cycleticks / 20) % positionedStackOreSmall.items.length); + positionedStackMaterialDust.setPermutationToRender( + (cycleticks / 20) % positionedStackMaterialDust.items.length); + outputs.add(positionedStackOreSmall); + outputs.add(positionedStackMaterialDust); + outputs.addAll(positionedDropStackList); + return outputs; + } } } diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java index dc559db34a..67da9bab02 100644 --- a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java +++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java @@ -5,10 +5,14 @@ import static pers.gwyog.gtneioreplugin.util.OreVeinLayer.*; import codechicken.nei.PositionedStack; import cpw.mods.fml.common.Loader; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.List; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; +import pers.gwyog.gtneioreplugin.plugin.items.ItemDimensionDisplay; +import pers.gwyog.gtneioreplugin.util.DimensionHelper; import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper; import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper; @@ -38,6 +42,20 @@ public class PluginGT5VeinStat extends PluginGT5Base { } } + @Override + public void loadUsageRecipes(ItemStack stack) { + String dimension = ItemDimensionDisplay.getDimension(stack); + if (dimension == null) { + return; + } + + for (OreLayerWrapper oreVein : getAllVeins()) { + if (Arrays.asList(getDimNameArrayFromVeinName(oreVein.veinName)).contains(dimension)) { + addVeinWithLayers(oreVein, getMaximumMaterialIndex((short) (stack.getItemDamage() % 1000), false)); + } + } + } + private void addVeinWithLayers(OreLayerWrapper oreVein, int maximumMaterialIndex) { this.arecipes.add(new CachedVeinStatRecipe( oreVein.veinName, @@ -123,12 +141,21 @@ public class PluginGT5VeinStat extends PluginGT5Base { return GT5OreLayerHelper.bufferedDims.get(oreLayer); } + private String[] getDimNameArrayFromVeinName(String veinName) { + OreLayerWrapper oreLayer = GT5OreLayerHelper.mapOreLayerWrapper.get(veinName); + String[] dims = DimensionHelper.parseDimNames(GT5OreLayerHelper.bufferedDims.get(oreLayer)); + Arrays.sort(dims, Comparator.comparingInt(s -> Arrays.asList(DimensionHelper.DimNameDisplayed) + .indexOf(s))); + return dims; + } + public class CachedVeinStatRecipe extends CachedRecipe { public String veinName; public PositionedStack positionedStackPrimary; public PositionedStack positionedStackSecondary; public PositionedStack positionedStackBetween; public PositionedStack positionedStackSporadic; + private final List<PositionedStack> dimensionDisplayItems = new ArrayList<>(); public CachedVeinStatRecipe( String veinName, @@ -141,25 +168,48 @@ public class PluginGT5VeinStat extends PluginGT5Base { positionedStackSecondary = new PositionedStack(stackListSecondary, 22, 0); positionedStackBetween = new PositionedStack(stackListBetween, 42, 0); positionedStackSporadic = new PositionedStack(stackListSporadic, 62, 0); + setDimensionDisplayItems(); + } + + private void setDimensionDisplayItems() { + int x = 2; + int y = 110; + int count = 0; + int itemsPerLine = 9; + int itemSize = 18; + for (String dim : getDimNameArrayFromVeinName(this.veinName)) { + ItemStack item = ItemDimensionDisplay.getItem(dim); + if (item != null) { + int xPos = x + itemSize * (count % itemsPerLine); + int yPos = y + itemSize * (count / itemsPerLine); + dimensionDisplayItems.add(new PositionedStack(item, xPos, yPos, false)); + count++; + } + } } @Override public List<PositionedStack> getIngredients() { - List<PositionedStack> ingredientsList = new ArrayList<>(); - positionedStackPrimary.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); - positionedStackSecondary.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); - positionedStackBetween.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); - positionedStackSporadic.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); - ingredientsList.add(positionedStackPrimary); - ingredientsList.add(positionedStackSecondary); - ingredientsList.add(positionedStackBetween); - ingredientsList.add(positionedStackSporadic); - return ingredientsList; + return dimensionDisplayItems; } @Override public PositionedStack getResult() { return null; } + + @Override + public List<PositionedStack> getOtherStacks() { + List<PositionedStack> outputs = new ArrayList<>(); + positionedStackPrimary.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); + positionedStackSecondary.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); + positionedStackBetween.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); + positionedStackSporadic.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length); + outputs.add(positionedStackPrimary); + outputs.add(positionedStackSecondary); + outputs.add(positionedStackBetween); + outputs.add(positionedStackSporadic); + return outputs; + } } } |