aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java21
-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
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ItemDimensionDisplay.java111
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ModItems.java15
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java181
-rw-r--r--src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java15
8 files changed, 458 insertions, 62 deletions
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java b/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java
index 3c0eb00eb4..928fe07bd5 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/GTNEIOrePlugin.java
@@ -2,11 +2,17 @@ package pers.gwyog.gtneioreplugin;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import pers.gwyog.gtneioreplugin.plugin.items.ModItems;
+import pers.gwyog.gtneioreplugin.plugin.renderer.ItemDimensionDisplayRenderer;
import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper;
import pers.gwyog.gtneioreplugin.util.GuiRecipeHelper;
@@ -26,6 +32,13 @@ public class GTNEIOrePlugin {
public static String CSVnameSmall;
public static boolean toolTips = true;
public static int maxTooltipLines = 11;
+ public static final CreativeTabs creativeTab = new CreativeTabs(MODID) {
+ @Override
+ public Item getTabIconItem() {
+ return GameRegistry.makeItemStack("gregtech:gt.blockores", 386, 1, null)
+ .getItem();
+ }
+ };
@Mod.Instance(MODID)
public static GTNEIOrePlugin instance;
@@ -61,6 +74,14 @@ public class GTNEIOrePlugin {
}
@EventHandler
+ public void init(FMLInitializationEvent event) {
+ ModItems.init();
+ if (event.getSide() == Side.CLIENT) {
+ new ItemDimensionDisplayRenderer();
+ }
+ }
+
+ @EventHandler
public void onLoadComplete(FMLLoadCompleteEvent event) {
if (event.getSide() == Side.CLIENT) {
new GT5OreLayerHelper();
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;
+ }
}
}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ItemDimensionDisplay.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ItemDimensionDisplay.java
new file mode 100644
index 0000000000..76be6536e8
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ItemDimensionDisplay.java
@@ -0,0 +1,111 @@
+package pers.gwyog.gtneioreplugin.plugin.items;
+
+import cpw.mods.fml.common.Loader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.common.util.Constants;
+import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
+import pers.gwyog.gtneioreplugin.util.DimensionHelper;
+
+public class ItemDimensionDisplay extends Item {
+
+ private static final String TAG_DIMENSION = "dimension";
+ private static final Map<String, ItemStack> items = new HashMap<>();
+
+ public ItemDimensionDisplay() {
+ setUnlocalizedName(GTNEIOrePlugin.MODID + ".itemDimensionDisplay");
+ setCreativeTab(GTNEIOrePlugin.creativeTab);
+ }
+
+ public static ItemStack getItem(String dimension) {
+ if (items.get(dimension) != null) {
+ return items.get(dimension).copy();
+ }
+ return null;
+ }
+
+ public static void setDimension(ItemStack stack, String dimension) {
+ NBTTagCompound nbt = new NBTTagCompound();
+ nbt.setString(TAG_DIMENSION, dimension);
+ stack.setTagCompound(nbt);
+ }
+
+ public static String getDimension(ItemStack stack) {
+ if (stack.hasTagCompound() && stack.getTagCompound().hasKey(TAG_DIMENSION, Constants.NBT.TAG_STRING)) {
+ return stack.getTagCompound().getString(TAG_DIMENSION);
+ }
+ return null;
+ }
+
+ public static boolean isDimensionEqual(ItemStack stack1, ItemStack stack2) {
+ if (!(stack1.getItem() instanceof ItemDimensionDisplay)
+ || !(stack2.getItem() instanceof ItemDimensionDisplay)) {
+ return false;
+ }
+ return Objects.equals(getDimension(stack1), getDimension(stack2));
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack stack) {
+ String dimension = getDimension(stack);
+ if (dimension != null) {
+ return DimensionHelper.convertCondensedStringToToolTip(dimension).get(0);
+ }
+ return super.getItemStackDisplayName(stack);
+ }
+
+ @Override
+ public Item setTextureName(String p_111206_1_) {
+ return super.setTextureName(p_111206_1_);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void getSubItems(Item item, CreativeTabs creativeTabs, List itemList) {
+ for (ItemStack stack : items.values()) {
+ itemList.add(stack.copy());
+ }
+ }
+
+ public static void loadItems() {
+ String[] vanilla_gt = new String[] {"Ow", "Ne", "TF", "EN", "VA", "EA"};
+ for (String dimension : vanilla_gt) {
+ ItemStack stack = new ItemStack(ModItems.itemDimensionDisplay);
+ setDimension(stack, dimension);
+ items.put(dimension, stack);
+ }
+ String[] gc = new String[] {"Mo", "Ma", "As"};
+ if (Loader.isModLoaded("GalacticraftCore")) {
+ for (String dimension : gc) {
+ ItemStack stack = new ItemStack(ModItems.itemDimensionDisplay);
+ setDimension(stack, dimension);
+ items.put(dimension, stack);
+ }
+ }
+ String[] gs = new String[] {
+ "De", "Ph", "Ca", "Ce", "Eu", "Ga", "Io", "Me", "Ve", "En", "Mi", "Ob", "Ti", "Pr", "Tr", "Ha", "KB", "MM",
+ "Pl", "BC", "BE", "BF", "CB", "TE", "VB"
+ };
+ if (Loader.isModLoaded("GalaxySpace")) {
+ for (String dimension : gs) {
+ ItemStack stack = new ItemStack(ModItems.itemDimensionDisplay);
+ setDimension(stack, dimension);
+ items.put(dimension, stack);
+ }
+ }
+ String[] xu = new String[] {"DD"};
+ if (Loader.isModLoaded("ExtraUtilities")) {
+ for (String dimension : xu) {
+ ItemStack stack = new ItemStack(ModItems.itemDimensionDisplay);
+ setDimension(stack, dimension);
+ items.put(dimension, stack);
+ }
+ }
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ModItems.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ModItems.java
new file mode 100644
index 0000000000..1a519c4548
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/items/ModItems.java
@@ -0,0 +1,15 @@
+package pers.gwyog.gtneioreplugin.plugin.items;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.item.Item;
+import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
+
+public class ModItems {
+
+ public static Item itemDimensionDisplay = new ItemDimensionDisplay();
+
+ public static void init() {
+ GameRegistry.registerItem(itemDimensionDisplay, "itemDimensionDisplay", GTNEIOrePlugin.MODID);
+ ItemDimensionDisplay.loadItems();
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java b/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
new file mode 100644
index 0000000000..d85a3764d3
--- /dev/null
+++ b/src/main/java/pers/gwyog/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
@@ -0,0 +1,181 @@
+package pers.gwyog.gtneioreplugin.plugin.renderer;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.client.MinecraftForgeClient;
+import org.lwjgl.opengl.GL11;
+import pers.gwyog.gtneioreplugin.GTNEIOrePlugin;
+import pers.gwyog.gtneioreplugin.plugin.items.ItemDimensionDisplay;
+import pers.gwyog.gtneioreplugin.plugin.items.ModItems;
+
+public class ItemDimensionDisplayRenderer implements IItemRenderer {
+
+ public ItemDimensionDisplayRenderer() {
+ MinecraftForgeClient.registerItemRenderer(ModItems.itemDimensionDisplay, this);
+ }
+
+ @Override
+ public boolean handleRenderType(ItemStack item, ItemRenderType type) {
+ return true;
+ }
+
+ @Override
+ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
+ return false;
+ }
+
+ @Override
+ public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
+ String dimension = ItemDimensionDisplay.getDimension(item);
+ if (dimension == null) {
+ return;
+ }
+
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(getResourceLocation(dimension));
+
+ Tessellator tess = Tessellator.instance;
+ tess.startDrawingQuads();
+ tess.addVertexWithUV(0, 16, 0, 0, 1);
+ tess.addVertexWithUV(16, 16, 0, 1, 1);
+ tess.addVertexWithUV(16, 0, 0, 1, 0);
+ tess.addVertexWithUV(0, 0, 0, 0, 0);
+ tess.draw();
+
+ GL11.glDisable(GL11.GL_BLEND);
+
+ String prefix = getPrefix(dimension);
+ if (!prefix.isEmpty()) {
+ FontRenderer fontRender = Minecraft.getMinecraft().fontRenderer;
+ float smallTextScale = fontRender.getUnicodeFlag() ? 3F / 4F : 1F / 2F;
+ GL11.glScalef(smallTextScale, smallTextScale, 1.0f);
+
+ fontRender.drawString(prefix, 0, (int) (16 / smallTextScale) - fontRender.FONT_HEIGHT + 1, 0xFFFFFF, true);
+ }
+
+ GL11.glDisable(GL11.GL_ALPHA_TEST);
+ }
+
+ private ResourceLocation getResourceLocation(String dimension) {
+ switch (dimension) {
+ case "Ow":
+ case "Ne":
+ case "TF":
+ case "EN":
+ case "VA":
+ case "EA":
+ return new ResourceLocation(
+ GTNEIOrePlugin.MODID, String.format("textures/items/dimensionDisplay/%s.png", dimension));
+ case "Mo":
+ return new ResourceLocation("galacticraftcore:textures/gui/celestialbodies/moon.png");
+ case "De":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/deimos.png");
+ case "Ma":
+ return new ResourceLocation("galacticraftcore:textures/gui/celestialbodies/mars.png");
+ case "Ph":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/phobos.png");
+ case "As":
+ return new ResourceLocation("galacticraftcore:textures/gui/celestialbodies/asteroid.png");
+ case "Ca":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/callisto.png");
+ case "Ce":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/ceres.png");
+ case "Eu":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/europa.png");
+ case "Ga":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/ganymede.png");
+ case "Io":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/io.png");
+ case "Me":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/mercury.png");
+ case "Ve":
+ return new ResourceLocation("galacticraftcore:textures/gui/celestialbodies/venus.png");
+ case "En":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/enceladus.png");
+ case "Mi":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/miranda.png");
+ case "Ob":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/oberon.png");
+ case "Ti":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/titan.png");
+ case "Pr":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/proteus.png");
+ case "Tr":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/triton.png");
+ case "Ha":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/haumea.png");
+ case "KB":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/kuiperbelt.png");
+ case "MM":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/makemake.png");
+ case "Pl":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/pluto.png");
+ case "BC":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/barnards/Barnarda2.png");
+ case "BE":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/barnards/Barnarda4.png");
+ case "BF":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/barnards/Barnarda5.png");
+ case "CB":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/aCentauri/CentauriBb.png");
+ case "TE":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/tceti/TCetiE.png");
+ case "DD":
+ return new ResourceLocation("extrautils:textures/blocks/dark_portal.png");
+ case "VB":
+ return new ResourceLocation("galaxyspace:textures/gui/celestialbodies/vega/Vega1.png");
+ default:
+ return new ResourceLocation(GTNEIOrePlugin.MODID, "textures/items/dimensionDisplay/_unknown.png");
+ }
+ }
+
+ private static String getPrefix(String dimName) {
+ switch (dimName) {
+ case "Mo":
+ return "T1";
+ case "De":
+ case "Ma":
+ case "Ph":
+ return "T2";
+ case "As":
+ case "Ca":
+ case "Ce":
+ case "Eu":
+ case "Ga":
+ return "T3";
+ case "Io":
+ case "Me":
+ case "Ve":
+ return "T4";
+ case "En":
+ case "Mi":
+ case "Ob":
+ case "Ti":
+ return "T5";
+ case "Pr":
+ case "Tr":
+ return "T6";
+ case "Ha":
+ case "KB":
+ case "MM":
+ case "Pl":
+ return "T7";
+ case "BC":
+ case "BE":
+ case "BF":
+ case "CB":
+ case "TE":
+ case "DD":
+ case "VB":
+ return "T8";
+ default:
+ return "";
+ }
+ }
+}
diff --git a/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java b/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java
index 16be409b61..ac4ceb6f95 100644
--- a/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java
+++ b/src/main/java/pers/gwyog/gtneioreplugin/util/DimensionHelper.java
@@ -108,11 +108,9 @@ public class DimensionHelper {
private static final HashMap<String, List<String>> tooltipBuffer = new HashMap<>();
private static List<String> computeString(String line) {
- String[] dims = line.split(",");
+ String[] dims = parseDimNames(line);
for (int j = 0; j < dims.length; j++) {
String s = dims[j];
- s = s.replaceAll(",", "");
- s = s.trim();
for (int i = 0; i < DimNameDisplayed.length; i++) {
if (s.equals(DimNameDisplayed[i])) {
String k = DimName[i]
@@ -182,6 +180,17 @@ public class DimensionHelper {
return Arrays.asList(dims);
}
+ public static String[] parseDimNames(String line) {
+ String[] dims = line.split(",");
+ for (int j = 0; j < dims.length; j++) {
+ String s = dims[j];
+ s = s.replaceAll(",", "");
+ s = s.trim();
+ dims[j] = s;
+ }
+ return dims;
+ }
+
public static List<String> convertCondensedStringToToolTip(String line) {
return tooltipBuffer.computeIfAbsent(line, (String tmp) -> computeString(line));
}