aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5AsteroidStat.java142
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java33
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5IEVeinStat.java133
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java135
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java147
5 files changed, 590 insertions, 0 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5AsteroidStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5AsteroidStat.java
new file mode 100644
index 0000000000..48e51a5367
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5AsteroidStat.java
@@ -0,0 +1,142 @@
+package pers.gwyog.gtneioreplugin.plugin.gregtech5;
+
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.List;
+
+import codechicken.lib.gui.GuiDraw;
+import codechicken.nei.PositionedStack;
+import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect;
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_LanguageManager;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5VeinStat.CachedVeinStatRecipe;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper;
+
+public class PluginGT5AsteroidStat extends PluginGT5Base {
+
+ public class CachedAsteroidStatRecipe extends CachedRecipe {
+ public String veinName;
+ public PositionedStack positionedStackPrimary;
+ public PositionedStack positionedStackSecondary;
+ public PositionedStack positionedStackBetween;
+ public PositionedStack positionedStackSporadic;
+
+ public CachedAsteroidStatRecipe(String veinName, ItemStack stackListPrimary, ItemStack stackListSecondary,
+ ItemStack stackListBetween, ItemStack stackListSporadic) {
+ this.veinName = veinName;
+ positionedStackPrimary = new PositionedStack(stackListPrimary, 2, 0);
+ positionedStackSecondary = new PositionedStack(stackListSecondary, 22, 0);
+ positionedStackBetween = new PositionedStack(stackListBetween, 42, 0);
+ positionedStackSporadic = new PositionedStack(stackListSporadic, 62, 0);
+ }
+
+ @Override
+ public List<PositionedStack> getIngredients() {
+ List<PositionedStack> ingredientsList = new ArrayList<PositionedStack>();
+ ingredientsList.add(positionedStackPrimary);
+ ingredientsList.add(positionedStackSecondary);
+ ingredientsList.add(positionedStackBetween);
+ ingredientsList.add(positionedStackSporadic);
+ return ingredientsList;
+ }
+
+ @Override
+ public PositionedStack getResult() {
+ return null;
+ }
+
+ }
+
+ @Override
+ public void drawExtras(int recipe) {
+ CachedAsteroidStatRecipe crecipe = (CachedAsteroidStatRecipe) this.arecipes.get(recipe);
+ OreLayerWrapper oreLayer = GT5OreLayerHelper.mapOreLayerWrapper.get(crecipe.veinName);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.veinName") + ": " + getLocalizedAsteroidName(oreLayer.veinName), 2, 18, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.asteroidPrimary") + ": " + GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.primaryMeta)), 2, 31, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.asteroidSecondary") + ": " + GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.secondaryMeta)), 2, 44, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.asteroidBetween") + ": " + GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.betweenMeta)), 2, 57, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.asteroidSporadic") + ": " + GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.sporadicMeta)), 2, 70, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.worldNames") + ": " + getWorldNameTranslated(oreLayer.genEndAsteroid, oreLayer.genGCAsteroid), 2, 83, 0x404040, false);
+ GuiDraw.drawStringR(EnumChatFormatting.BOLD + I18n.format("gtnop.gui.nei.seeAll"), getGuiWidth()-3, 5, 0x404040, false);
+ }
+
+ public String getWorldNameTranslated(boolean genEndAsteroid, boolean genGCAsteroid) {
+ String worldNameTranslatedAsteroid = "";
+ if (genEndAsteroid) {
+ if (!worldNameTranslatedAsteroid.isEmpty())
+ worldNameTranslatedAsteroid += ", ";
+ worldNameTranslatedAsteroid += I18n.format("gtnop.world.end.name");
+ }
+ if (genGCAsteroid) {
+ if (!worldNameTranslatedAsteroid.isEmpty())
+ worldNameTranslatedAsteroid += ", ";
+ worldNameTranslatedAsteroid += I18n.format("gtnop.world.asteroid.name");
+ }
+ return worldNameTranslatedAsteroid;
+ }
+
+ public String getLocalizedAsteroidName(String unlocalizedName) {
+ if (unlocalizedName.startsWith("ore.mix.custom."))
+ return I18n.format("gtnop.ore.custom.name") + I18n.format("gtnop.ore.asteroid.name") + unlocalizedName.substring(15);
+ else
+ return I18n.format("gtnop." + unlocalizedName) + I18n.format("gtnop.ore.asteroid.name");
+ }
+
+ @Override
+ public void loadCraftingRecipes(String outputId, Object... results) {
+ if (outputId.equals(getOutputId())) {
+ OreLayerWrapper oreLayerWrapper;
+ for (String veinName: GT5OreLayerHelper.mapOreLayerWrapper.keySet()) {
+ oreLayerWrapper = GT5OreLayerHelper.mapOreLayerWrapper.get(veinName);
+ if (oreLayerWrapper.genEndAsteroid || oreLayerWrapper.genGCAsteroid) {
+ ItemStack stackPrimary = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.primaryMeta+2000);
+ ItemStack stackSecondary = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.secondaryMeta+2000);
+ ItemStack stackBetween = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.betweenMeta+2000);
+ ItemStack stackSporadic = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.sporadicMeta+2000);
+ this.arecipes.add(new CachedAsteroidStatRecipe(veinName, stackPrimary, stackSecondary, stackBetween, stackSporadic));
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(outputId, results);
+ }
+
+ @Override
+ public void loadCraftingRecipes(ItemStack stack) {
+ if (stack.getUnlocalizedName().startsWith("gt.blockores")) {
+ if (stack.getItemDamage()>16000) {
+ super.loadCraftingRecipes(stack);
+ return;
+ }
+ short baseMeta = (short)(stack.getItemDamage() % 1000);
+ for (OreLayerWrapper worldGen: GT5OreLayerHelper.mapOreLayerWrapper.values()) {
+ if (worldGen.primaryMeta == baseMeta || worldGen.secondaryMeta == baseMeta || worldGen.betweenMeta == baseMeta || worldGen.sporadicMeta == baseMeta) {
+ if (worldGen.genEndAsteroid || worldGen.genGCAsteroid) {
+ ItemStack stackPrimary = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.primaryMeta+2000);
+ ItemStack stackSecondary = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.secondaryMeta+2000);
+ ItemStack stackBetween = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.betweenMeta+2000);
+ ItemStack stackSporadic = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.sporadicMeta+2000);
+ this.arecipes.add(new CachedAsteroidStatRecipe(worldGen.veinName, stackPrimary, stackSecondary, stackBetween, stackSporadic));
+ }
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(stack);
+ }
+
+ @Override
+ public String getOutputId() {
+ return "GTOrePluginAsteroid";
+ }
+
+ @Override
+ public String getRecipeName() {
+ return I18n.format("gtnop.gui.asteroidStat.name");
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java
new file mode 100644
index 0000000000..a61a8bb977
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5Base.java
@@ -0,0 +1,33 @@
+package pers.gwyog.gtneioreplugin.plugin.gregtech5;
+
+import java.awt.Rectangle;
+
+import codechicken.lib.gui.GuiDraw;
+import codechicken.nei.recipe.TemplateRecipeHandler;
+import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect;
+import gregtech.api.util.GT_LanguageManager;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.util.EnumChatFormatting;
+import pers.gwyog.gtneioreplugin.plugin.PluginBase;
+
+public class PluginGT5Base extends PluginBase {
+
+ public int getMaximumMaterialIndex(short meta, boolean smallOre) {
+ int offset = smallOre? 16000: 0;
+ if (!getGTOreLocalizedName((short)(meta+offset+5000)).equals(getGTOreUnlocalizedName((short)(meta+offset+5000))))
+ return 7;
+ else if (!getGTOreLocalizedName((short)(meta+offset+5000)).equals(getGTOreUnlocalizedName((short)(meta+offset+5000))))
+ return 6;
+ else
+ return 5;
+ }
+
+ public String getGTOreLocalizedName(short index) {
+ return GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(index));
+ }
+
+ public String getGTOreUnlocalizedName(short index) {
+ return "gt.blockores." + index + ".name";
+ }
+
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5IEVeinStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5IEVeinStat.java
new file mode 100644
index 0000000000..547c966081
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5IEVeinStat.java
@@ -0,0 +1,133 @@
+package pers.gwyog.gtneioreplugin.plugin.gregtech5;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import codechicken.lib.gui.GuiDraw;
+import codechicken.nei.PositionedStack;
+import codechicken.nei.recipe.TemplateRecipeHandler.CachedRecipe;
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_LanguageManager;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper;
+
+public class PluginGT5IEVeinStat extends PluginGT5Base {
+
+ public class CachedIEVeinStatRecipe extends CachedRecipe {
+ public String veinName;
+ public PositionedStack positionedStackPrimary;
+ public PositionedStack positionedStackSecondary;
+ public PositionedStack positionedStackBetween;
+ public PositionedStack positionedStackSporadic;
+
+ public CachedIEVeinStatRecipe(String veinName, ItemStack stackListPrimary, ItemStack stackListSecondary,
+ ItemStack stackListBetween, ItemStack stackListSporadic) {
+ this.veinName = veinName;
+ positionedStackPrimary = new PositionedStack(stackListPrimary, 2, 0);
+ positionedStackSecondary = new PositionedStack(stackListSecondary, 22, 0);
+ positionedStackBetween = new PositionedStack(stackListBetween, 42, 0);
+ positionedStackSporadic = new PositionedStack(stackListSporadic, 62, 0);
+ }
+
+ @Override
+ public List<PositionedStack> getIngredients() {
+ List<PositionedStack> ingredientsList = new ArrayList<PositionedStack>();
+ ingredientsList.add(positionedStackPrimary);
+ ingredientsList.add(positionedStackSecondary);
+ ingredientsList.add(positionedStackBetween);
+ ingredientsList.add(positionedStackSporadic);
+ return ingredientsList;
+ }
+
+ @Override
+ public PositionedStack getResult() {
+ return null;
+ }
+
+ }
+
+ @Override
+ public void drawExtras(int recipe) {
+ CachedIEVeinStatRecipe crecipe = (CachedIEVeinStatRecipe) this.arecipes.get(recipe);
+ OreLayerWrapper oreLayer = GT5OreLayerHelper.mapOreLayerWrapper.get(crecipe.veinName);
+ int stringLength1 = GuiDraw.getStringWidth(I18n.format("gtnop.gui.nei.weightedChance") + ": ");
+ int stringLength2 = GuiDraw.getStringWidth("40%");
+ int beginXCoord = (stringLength1-stringLength2)/2;
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.veinName") + ": " + getLocalizedVeinName(oreLayer.veinName), 2, 18, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.ieVeinComponent") + ": ", 2, 31, 0x404040, false);
+ GuiDraw.drawString("40%", beginXCoord, 44, 0x404040, false);
+ GuiDraw.drawString(GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.primaryMeta)), 2+stringLength1, 44, 0x404040, false);
+ GuiDraw.drawString("40%", beginXCoord, 57, 0x404040, false);
+ GuiDraw.drawString(GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.secondaryMeta)), 2+stringLength1, 57, 0x404040, false);
+ GuiDraw.drawString("15%", beginXCoord, 70, 0x404040, false);
+ GuiDraw.drawString(GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.betweenMeta)), 2+stringLength1, 70, 0x404040, false);
+ GuiDraw.drawString("5% ", beginXCoord, 83, 0x404040, false);
+ GuiDraw.drawString(GT_LanguageManager.getTranslation(getGTOreUnlocalizedName(oreLayer.sporadicMeta)), 2+stringLength1, 83, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.weightedChance") + ": " + oreLayer.weightedIEChance, 2, 96, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.fromMod") + ": " + "Immersive Engineering", 2, 109, 0x404040, false);
+ GuiDraw.drawStringR(EnumChatFormatting.BOLD + I18n.format("gtnop.gui.nei.seeAll"), getGuiWidth()-3, 5, 0x404040, false);
+ }
+
+ public String getLocalizedVeinName(String unlocalizedName) {
+ if (unlocalizedName.startsWith("ore.mix.custom."))
+ return I18n.format("gtnop.ore.custom.name") + I18n.format("gtnop.ore.vein.name") + unlocalizedName.substring(15);
+ else
+ return I18n.format("gtnop." + unlocalizedName) + I18n.format("gtnop.ore.vein.name");
+ }
+
+ @Override
+ public void loadCraftingRecipes(String outputId, Object... results) {
+ if (outputId.equals(getOutputId())) {
+ OreLayerWrapper oreLayerWrapper;
+ for (String veinName: GT5OreLayerHelper.mapOreLayerWrapper.keySet()) {
+ oreLayerWrapper = GT5OreLayerHelper.mapOreLayerWrapper.get(veinName);
+ if (oreLayerWrapper.genIEVein) {
+ ItemStack stackPrimary = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.primaryMeta);
+ ItemStack stackSecondary = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.secondaryMeta);
+ ItemStack stackBetween = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.betweenMeta);
+ ItemStack stackSporadic = new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.sporadicMeta);
+ this.arecipes.add(new CachedIEVeinStatRecipe(veinName, stackPrimary, stackSecondary, stackBetween, stackSporadic));
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(outputId, results);
+ }
+
+ @Override
+ public void loadCraftingRecipes(ItemStack stack) {
+ if (stack.getUnlocalizedName().startsWith("gt.blockores")) {
+ if (stack.getItemDamage()>16000) {
+ super.loadCraftingRecipes(stack);
+ return;
+ }
+ short baseMeta = (short)(stack.getItemDamage() % 1000);
+ for (OreLayerWrapper worldGen: GT5OreLayerHelper.mapOreLayerWrapper.values()) {
+ if (worldGen.primaryMeta == baseMeta || worldGen.secondaryMeta == baseMeta || worldGen.betweenMeta == baseMeta || worldGen.sporadicMeta == baseMeta) {
+ if (worldGen.genIEVein) {
+ ItemStack stackPrimary = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.primaryMeta);
+ ItemStack stackSecondary = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.secondaryMeta);
+ ItemStack stackBetween = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.betweenMeta);
+ ItemStack stackSporadic = new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.sporadicMeta);
+ this.arecipes.add(new CachedIEVeinStatRecipe(worldGen.veinName, stackPrimary, stackSecondary, stackBetween, stackSporadic));
+ }
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(stack);
+ }
+
+ @Override
+ public String getOutputId() {
+ return "GTOrePluginIEVeinCompat";
+ }
+
+ @Override
+ public String getRecipeName() {
+ return I18n.format("gtnop.gui.ieVeinStat.name");
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java
new file mode 100644
index 0000000000..f1ddce6629
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5SmallOreStat.java
@@ -0,0 +1,135 @@
+package pers.gwyog.gtneioreplugin.plugin.gregtech5;
+
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.List;
+
+import codechicken.lib.gui.GuiDraw;
+import codechicken.nei.PositionedStack;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.blocks.GT_Block_Ores_Abstract;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5VeinStat.CachedVeinStatRecipe;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper;
+import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper.OreSmallWrapper;
+
+public class PluginGT5SmallOreStat extends PluginGT5Base {
+
+ public class CachedOreSmallRecipe extends CachedRecipe {
+ public String oreGenName;
+ public PositionedStack positionedStackOreSmall;
+ public PositionedStack positionedStackMaterialDust;
+ public List<PositionedStack> positionedDropStackList;
+
+ public CachedOreSmallRecipe(String oreGenName, List<ItemStack> stackList, List<ItemStack> materialDustStackList, List<ItemStack> dropStackList) {
+ this.oreGenName = oreGenName;
+ this.positionedStackOreSmall = new PositionedStack(stackList, 2, 0);
+ this.positionedStackMaterialDust = new PositionedStack(materialDustStackList, 43, 79+getRestrictBiomeOffset());
+ List<PositionedStack> positionedDropStackList = new ArrayList<PositionedStack>();
+ int i = 1;
+ for (ItemStack stackDrop: dropStackList)
+ positionedDropStackList.add(new PositionedStack(stackDrop, 43+20*(i%4), 79+16*((i++)/4)+getRestrictBiomeOffset()));
+ this.positionedDropStackList = positionedDropStackList;
+ }
+
+ @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;
+
+ }
+
+ @Override
+ public PositionedStack getResult() {
+ return null;
+ }
+
+ }
+
+ @Override
+ public void drawExtras(int recipe) {
+ CachedOreSmallRecipe crecipe = (CachedOreSmallRecipe) this.arecipes.get(recipe);
+ OreSmallWrapper oreSmall = GT5OreSmallHelper.mapOreSmallWrapper.get(crecipe.oreGenName);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.oreName") + ": " + getGTOreLocalizedName((short)(oreSmall.oreMeta+16000)), 2, 18, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.genHeight") + ": " + oreSmall.worldGenHeightRange, 2, 31, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.amount") + ": " + oreSmall.amountPerChunk, 2, 44, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.worldNames") + ": " + getWorldNameTranslated(oreSmall.genOverworld, oreSmall.genNether, oreSmall.genEnd, oreSmall.genMoon, oreSmall.genMars), 2, 57, 0x404040, false);
+ if (GT5OreSmallHelper.restrictBiomeSupport) GuiDraw.drawString(I18n.format("gtnop.gui.nei.restrictBiome") + ": " + getBiomeTranslated(oreSmall.restrictBiome), 2, 70, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.chanceDrops") + ": ", 2, 83+getRestrictBiomeOffset(), 0x404040, false);
+ GuiDraw.drawStringR(EnumChatFormatting.BOLD + I18n.format("gtnop.gui.nei.seeAll"), getGuiWidth()-3, 5, 0x404040, false);
+ }
+
+ public int getRestrictBiomeOffset() {
+ return GT5OreSmallHelper.restrictBiomeSupport? 0: -13;
+ }
+
+ @Override
+ public void loadCraftingRecipes(String outputId, Object... results) {
+ if (outputId.equals(getOutputId()))
+ for (ItemStack stack: GT5OreSmallHelper.oreSmallList)
+ loadCraftingRecipes(stack);
+ else
+ super.loadCraftingRecipes(outputId, results);
+ }
+
+ @Override
+ public void loadCraftingRecipes(ItemStack stack) {
+ if (stack.getUnlocalizedName().startsWith("gt.blockores")) {
+ if (stack.getItemDamage()<16000) {
+ super.loadCraftingRecipes(stack);
+ return;
+ }
+ short baseMeta = (short)(stack.getItemDamage() % 1000);
+ for (OreSmallWrapper oreSmallWorldGen: GT5OreSmallHelper.mapOreSmallWrapper.values()) {
+ if (oreSmallWorldGen.oreMeta == baseMeta) {
+ List<ItemStack> stackList = new ArrayList<ItemStack>();
+ int maximumIndex = getMaximumMaterialIndex(baseMeta, true);
+ for (int i=0;i<maximumIndex;i++)
+ stackList.add(new ItemStack(GregTech_API.sBlockOres1, 1, oreSmallWorldGen.oreMeta+16000+i*1000));
+ List<ItemStack> materialDustStackList = new ArrayList<ItemStack>();
+ for (int i=0;i<maximumIndex;i++)
+ materialDustStackList.add(GT_OreDictUnificator.get(OrePrefixes.dust, GT5OreSmallHelper.getDroppedDusts()[i], 1L));
+ this.arecipes.add(new CachedOreSmallRecipe(oreSmallWorldGen.oreGenName, stackList, materialDustStackList, GT5OreSmallHelper.mapOreMetaToOreDrops.get(baseMeta)));
+ }
+ }
+ }
+ else if (GT5OreSmallHelper.mapOreDropUnlocalizedNameToOreMeta.keySet().contains(stack.getUnlocalizedName())) {
+ short baseMeta = GT5OreSmallHelper.mapOreDropUnlocalizedNameToOreMeta.get(stack.getUnlocalizedName());
+ for (String oreGenName: GT5OreSmallHelper.mapOreSmallWrapper.keySet()) {
+ OreSmallWrapper oreSmallWrapper = GT5OreSmallHelper.mapOreSmallWrapper.get(oreGenName);
+ if (oreSmallWrapper.oreMeta == baseMeta) {
+ List<ItemStack> stackList = new ArrayList<ItemStack>();
+ for (int i=0;i<7;i++)
+ stackList.add(new ItemStack(GregTech_API.sBlockOres1, 1, baseMeta+16000+i*1000));
+ List<ItemStack> materialDustStackList = new ArrayList<ItemStack>();
+ for (int i=0;i<7;i++)
+ materialDustStackList.add(GT_OreDictUnificator.get(OrePrefixes.dust, GT5OreSmallHelper.getDroppedDusts()[i], 1L));
+ this.arecipes.add(new CachedOreSmallRecipe(GT5OreSmallHelper.mapOreSmallWrapper.get(oreGenName).oreGenName, stackList, materialDustStackList, GT5OreSmallHelper.mapOreMetaToOreDrops.get(baseMeta)));
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(stack);
+ }
+
+ @Override
+ public String getOutputId() {
+ return "GTOrePluginOreSmall";
+ }
+
+ @Override
+ public String getRecipeName() {
+ return I18n.format("gtnop.gui.smallOreStat.name");
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java
new file mode 100644
index 0000000000..d9085ab82a
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/gregtech5/PluginGT5VeinStat.java
@@ -0,0 +1,147 @@
+package pers.gwyog.gtneioreplugin.plugin.gregtech5;
+
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.http.impl.conn.tsccm.ConnPoolByRoute;
+
+import codechicken.lib.gui.GuiDraw;
+import codechicken.nei.PositionedStack;
+import codechicken.nei.recipe.TemplateRecipeHandler;
+import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect;
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.common.GT_Worldgen_GT_Ore_Layer;
+import net.minecraft.client.gui.Gui;
+import net.minecraft.client.resources.I18n;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
+import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.OreLayerWrapper;
+
+public class PluginGT5VeinStat extends PluginGT5Base {
+
+ public class CachedVeinStatRecipe extends CachedRecipe {
+ public String veinName;
+ public PositionedStack positionedStackPrimary;
+ public PositionedStack positionedStackSecondary;
+ public PositionedStack positionedStackBetween;
+ public PositionedStack positionedStackSporadic;
+
+ public CachedVeinStatRecipe(String veinName, List<ItemStack> stackListPrimary, List<ItemStack> stackListSecondary,
+ List<ItemStack> stackListBetween, List<ItemStack> stackListSporadic) {
+ this.veinName = veinName;
+ positionedStackPrimary = new PositionedStack(stackListPrimary, 2, 0);
+ positionedStackSecondary = new PositionedStack(stackListSecondary, 22, 0);
+ positionedStackBetween = new PositionedStack(stackListBetween, 42, 0);
+ positionedStackSporadic = new PositionedStack(stackListSporadic, 62, 0);
+ }
+
+ @Override
+ public List<PositionedStack> getIngredients() {
+ List<PositionedStack> ingredientsList = new ArrayList<PositionedStack>();
+ positionedStackPrimary.setPermutationToRender((cycleticks / 20) % positionedStackPrimary.items.length);;
+ positionedStackSecondary.setPermutationToRender((3 + cycleticks / 20) % positionedStackPrimary.items.length);;
+ positionedStackBetween.setPermutationToRender((2 + cycleticks / 20) % positionedStackPrimary.items.length);;
+ positionedStackSporadic.setPermutationToRender((1 + cycleticks / 20) % positionedStackPrimary.items.length);;
+ ingredientsList.add(positionedStackPrimary);
+ ingredientsList.add(positionedStackSecondary);
+ ingredientsList.add(positionedStackBetween);
+ ingredientsList.add(positionedStackSporadic);
+ return ingredientsList;
+ }
+
+ @Override
+ public PositionedStack getResult() {
+ return null;
+ }
+
+ }
+
+ @Override
+ public void loadCraftingRecipes(String outputId, Object... results) {
+ if (outputId.equals(getOutputId())) {
+ OreLayerWrapper oreLayerWrapper;
+ for (String veinName: GT5OreLayerHelper.mapOreLayerWrapper.keySet()) {
+ oreLayerWrapper = GT5OreLayerHelper.mapOreLayerWrapper.get(veinName);
+ List<ItemStack> stackListPrimary = new ArrayList<ItemStack>();
+ List<ItemStack> stackListSecondary = new ArrayList<ItemStack>();
+ List<ItemStack> stackListBetween = new ArrayList<ItemStack>();
+ List<ItemStack> stackListSporadic = new ArrayList<ItemStack>();
+ for (int i=0;i<7;i++) {
+ stackListPrimary.add(new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.primaryMeta+i*1000));
+ stackListSecondary.add(new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.secondaryMeta+i*1000));
+ stackListBetween.add(new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.betweenMeta+i*1000));
+ stackListSporadic.add(new ItemStack(GregTech_API.sBlockOres1, 1, oreLayerWrapper.sporadicMeta+i*1000));
+ }
+ this.arecipes.add(new CachedVeinStatRecipe(veinName, stackListPrimary, stackListSecondary, stackListBetween, stackListSporadic));
+ }
+ }
+ else
+ super.loadCraftingRecipes(outputId, results);
+ }
+
+ @Override
+ public void loadCraftingRecipes(ItemStack stack) {
+ if (stack.getUnlocalizedName().startsWith("gt.blockores")) {
+ if (stack.getItemDamage()>16000) {
+ super.loadCraftingRecipes(stack);
+ return;
+ }
+ short baseMeta = (short)(stack.getItemDamage() % 1000);
+ for (OreLayerWrapper worldGen: GT5OreLayerHelper.mapOreLayerWrapper.values()) {
+ if (worldGen.primaryMeta == baseMeta || worldGen.secondaryMeta == baseMeta || worldGen.betweenMeta == baseMeta || worldGen.sporadicMeta == baseMeta) {
+ List<ItemStack> stackListPrimary = new ArrayList<ItemStack>();
+ List<ItemStack> stackListSecondary = new ArrayList<ItemStack>();
+ List<ItemStack> stackListBetween = new ArrayList<ItemStack>();
+ List<ItemStack> stackListSporadic = new ArrayList<ItemStack>();
+ for (int i=0;i<getMaximumMaterialIndex(baseMeta, false);i++) {
+ stackListPrimary.add(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.primaryMeta+i*1000));
+ stackListSecondary.add(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.secondaryMeta+i*1000));
+ stackListBetween.add(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.betweenMeta+i*1000));
+ stackListSporadic.add(new ItemStack(GregTech_API.sBlockOres1, 1, worldGen.sporadicMeta+i*1000));
+ }
+ this.arecipes.add(new CachedVeinStatRecipe(worldGen.veinName, stackListPrimary, stackListSecondary, stackListBetween, stackListSporadic));
+ }
+ }
+ }
+ else
+ super.loadCraftingRecipes(stack);
+ }
+
+ @Override
+ public void drawExtras(int recipe) {
+ CachedVeinStatRecipe crecipe = (CachedVeinStatRecipe) this.arecipes.get(recipe);
+ OreLayerWrapper oreLayer = GT5OreLayerHelper.mapOreLayerWrapper.get(crecipe.veinName);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.veinName") + ": " + getLocalizedVeinName(oreLayer.veinName), 2, 18, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.primaryOre") + ": " + getGTOreLocalizedName(oreLayer.primaryMeta), 2, 31, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.secondaryOre") + ": " + getGTOreLocalizedName(oreLayer.secondaryMeta), 2, 44, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.betweenOre") + ": " + getGTOreLocalizedName(oreLayer.betweenMeta), 2, 57, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.sporadicOre") + ": " + getGTOreLocalizedName(oreLayer.sporadicMeta), 2, 70, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.genHeight") + ": " + oreLayer.worldGenHeightRange, 2, 83, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.weightedChance") + ": " + oreLayer.weightedChance, 2, 96, 0x404040, false);
+ GuiDraw.drawString(I18n.format("gtnop.gui.nei.worldNames") + ": " + getWorldNameTranslated(oreLayer.genOverworld, oreLayer.genNether, oreLayer.genEnd, oreLayer.genMoon, oreLayer.genMars), 2, 109, 0x404040, false);
+ if (GT5OreLayerHelper.restrictBiomeSupport) GuiDraw.drawString(I18n.format("gtnop.gui.nei.restrictBiome") + ": " + getBiomeTranslated(oreLayer.restrictBiome), 2, 122, 0x404040, false);
+ GuiDraw.drawStringR(EnumChatFormatting.BOLD + I18n.format("gtnop.gui.nei.seeAll"), getGuiWidth()-3, 5, 0x404040, false);
+ }
+
+ public String getLocalizedVeinName(String unlocalizedName) {
+ if (unlocalizedName.startsWith("ore.mix.custom."))
+ return I18n.format("gtnop.ore.custom.name") + I18n.format("gtnop.ore.vein.name") + unlocalizedName.substring(15);
+ else
+ return I18n.format("gtnop." + unlocalizedName) + I18n.format("gtnop.ore.vein.name");
+ }
+
+ @Override
+ public String getOutputId() {
+ return "GTOrePluginVein";
+ }
+
+ @Override
+ public String getRecipeName() {
+ return I18n.format("gtnop.gui.veinStat.name");
+ }
+
+}