aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2022-07-09 19:47:06 +0900
committerGitHub <noreply@github.com>2022-07-09 17:47:06 +0700
commit5c06d007a8fee37f493737d4f6e5af1a7df5727c (patch)
tree02257ff4e9f627717183bdeb7c03358e748351b9 /src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5
parent7836eea57a199661e1ac4b41d9ae678e62588ee2 (diff)
downloadGT5-Unofficial-5c06d007a8fee37f493737d4f6e5af1a7df5727c.tar.gz
GT5-Unofficial-5c06d007a8fee37f493737d4f6e5af1a7df5727c.tar.bz2
GT5-Unofficial-5c06d007a8fee37f493737d4f6e5af1a7df5727c.zip
Add Dimension Display Item (#18)
* Add Dimension Display Item * side * Sort dims
Diffstat (limited to 'src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java43
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java64
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java70
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;
+ }
}
}