aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/detrav/DetravScannerMod.java75
-rw-r--r--src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java21
-rw-r--r--src/main/java/com/detrav/commands/DetravScannerCommand.java156
-rw-r--r--src/main/java/com/detrav/enums/DetravToolDictNames.java9
-rw-r--r--src/main/java/com/detrav/enums/Textures01.java17
-rw-r--r--src/main/java/com/detrav/events/DetravLoginEventHandler.java22
-rw-r--r--src/main/java/com/detrav/gui/DetravScannerGUI.java120
-rw-r--r--src/main/java/com/detrav/gui/OresList.java66
-rw-r--r--src/main/java/com/detrav/gui/textures/DetravMapTexture.java149
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java362
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProspector.java255
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProspector.java424
-rw-r--r--src/main/java/com/detrav/items/processing/ProcessingDetravToolProspector.java113
-rw-r--r--src/main/java/com/detrav/items/tools/DetravProspector.java35
-rw-r--r--src/main/java/com/detrav/items/tools/DetravToolElectricProspector.java34
-rw-r--r--src/main/java/com/detrav/items/tools/DetravToolElectricProspectorBase.java201
-rw-r--r--src/main/java/com/detrav/net/DetravNetwork.java72
-rw-r--r--src/main/java/com/detrav/net/DetravPacket.java16
-rw-r--r--src/main/java/com/detrav/net/ProspectingPacket.java188
-rw-r--r--src/main/java/com/detrav/proxies/ClientProxy.java49
-rw-r--r--src/main/java/com/detrav/proxies/CommonProxy.java55
-rw-r--r--src/main/java/com/detrav/proxies/ServerProxy.java22
-rw-r--r--src/main/java/com/detrav/utils/BartWorksHelper.java23
-rw-r--r--src/main/java/com/detrav/utils/DetravCreativeTab.java52
-rw-r--r--src/main/java/com/detrav/utils/FluidColors.java87
-rw-r--r--src/main/java/com/detrav/utils/GTppHelper.java67
26 files changed, 2690 insertions, 0 deletions
diff --git a/src/main/java/com/detrav/DetravScannerMod.java b/src/main/java/com/detrav/DetravScannerMod.java
new file mode 100644
index 0000000000..152b9fbc71
--- /dev/null
+++ b/src/main/java/com/detrav/DetravScannerMod.java
@@ -0,0 +1,75 @@
+package com.detrav;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraftforge.common.config.Configuration;
+
+import com.detrav.net.DetravNetwork;
+import com.detrav.proxies.CommonProxy;
+import com.detrav.utils.DetravCreativeTab;
+import com.detrav.utils.FluidColors;
+import com.detrav.utils.GTppHelper;
+
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.Mod;
+import cpw.mods.fml.common.Mod.EventHandler;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import cpw.mods.fml.common.network.NetworkRegistry;
+import gregtech.GT_Version;
+import gregtech.api.GregTech_API;
+
+@Mod(
+ modid = DetravScannerMod.MODID,
+ version = GT_Version.VERSION,
+ dependencies = "required-after:IC2;required-after:gregtech;after:miscutils;after:bartworks")
+public class DetravScannerMod {
+
+ public static final String MODID = "detravscannermod";
+ public static final boolean DEBUG_ENABLED = Boolean.parseBoolean(System.getProperty("com.detrav.debug", "false"));
+ public static final CreativeTabs TAB_DETRAV = new DetravCreativeTab();
+ public static boolean isDreamcraftLoaded = false;
+ public static boolean isBartWorksLoaded = false;
+ public static boolean isGTppLoaded = false;
+
+ @SidedProxy(clientSide = "com.detrav.proxies.ClientProxy", serverSide = "com.detrav.proxies.ServerProxy")
+ public static CommonProxy proxy;
+
+ @Mod.Instance(DetravScannerMod.MODID)
+ public static DetravScannerMod instance;
+
+ public DetravScannerMod() {
+ GregTech_API.sAfterGTPreload.add(new Detrav_AfterGTPreload_Loader());
+ isDreamcraftLoaded = Loader.isModLoaded("dreamcraft");
+ isBartWorksLoaded = Loader.isModLoaded("bartworks");
+ isGTppLoaded = Loader.isModLoaded("miscutils");
+
+ new DetravNetwork();
+ }
+
+ @EventHandler
+ public void preInit(FMLPreInitializationEvent event) {
+ Configuration Config = new Configuration(event.getSuggestedConfigurationFile());
+ Config.load();
+
+ if (Config.hasChanged()) {
+ Config.save();
+ }
+
+ proxy.onPreInit();
+ }
+
+ @EventHandler
+ public void init(FMLInitializationEvent event) {
+ NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
+ proxy.onLoad();
+ }
+
+ @EventHandler
+ public void onPostLoad(FMLPostInitializationEvent aEvent) {
+ proxy.onPostLoad();
+ if (isGTppLoaded) GTppHelper.generate_OreIDs();
+ FluidColors.makeColors();
+ }
+}
diff --git a/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java b/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java
new file mode 100644
index 0000000000..5cdb2bff88
--- /dev/null
+++ b/src/main/java/com/detrav/Detrav_AfterGTPreload_Loader.java
@@ -0,0 +1,21 @@
+package com.detrav;
+
+import com.detrav.items.DetravMetaGeneratedTool01;
+import com.detrav.items.processing.ProcessingDetravToolProspector;
+
+/**
+ * Created by wital_000 on 18.03.2016.
+ */
+public class Detrav_AfterGTPreload_Loader implements Runnable {
+
+ @Override
+ public void run() {
+
+ // items
+ new DetravMetaGeneratedTool01();
+
+ // recipes and etc
+ new ProcessingDetravToolProspector();
+
+ }
+}
diff --git a/src/main/java/com/detrav/commands/DetravScannerCommand.java b/src/main/java/com/detrav/commands/DetravScannerCommand.java
new file mode 100644
index 0000000000..ba16e47a6c
--- /dev/null
+++ b/src/main/java/com/detrav/commands/DetravScannerCommand.java
@@ -0,0 +1,156 @@
+package com.detrav.commands;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.command.ICommand;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.world.chunk.Chunk;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.common.blocks.GT_TileEntity_Ores;
+
+/**
+ * Created by wital_000 on 17.03.2016.
+ */
+public class DetravScannerCommand implements ICommand {
+
+ private List aliases;
+
+ public DetravScannerCommand() {
+ this.aliases = new ArrayList<String>();
+ this.aliases.add("DetravScanner");
+ this.aliases.add("dscan");
+ }
+
+ @Override
+ public String getCommandName() {
+ return "DetravScanner";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return "DetravScanner [\"Part of Greg ore name\"]";
+ }
+
+ @Override
+ public List getCommandAliases() {
+ return this.aliases;
+ }
+
+ @Override
+ public void processCommand(ICommandSender sender, String[] args) {
+ int aX = 0;
+ int aZ = 0;
+ int aY = 0;
+ String name = null;
+
+ ArrayList<String> strs = new ArrayList<>();
+ for (int i = 0; i < args.length; i++) {
+ strs.add(args[i]);
+ if (args[i].startsWith("\"")) {
+ for (i++; i < args.length; i++) {
+ String temp = (String) strs.get(strs.size() - 1);
+ temp = temp + " " + args[i];
+ temp = temp.replace("\"", "");
+ strs.set(strs.size() - 1, temp);
+ if (args[i].endsWith("\"")) break;
+ }
+ }
+ }
+ args = new String[strs.size()];
+ args = strs.toArray(args);
+
+ switch (args.length) {
+ case 0:
+ break;
+ case 1:
+ if (args[0].toLowerCase() == "help") {
+ sendHelpMessage(sender);
+ return;
+ }
+ name = args[0];
+ break;
+ default:
+ sendHelpMessage(sender);
+ return;
+ }
+ ChunkCoordinates c = sender.getPlayerCoordinates();
+ if (name != null) name = name.toLowerCase();
+ process(sender, (int) Math.floor(c.posX / 16.0), (int) Math.floor(c.posZ / 16.0), name);
+ }
+
+ private void process(ICommandSender sender, int aX, int aZ, String fName) {
+ Chunk c = sender.getEntityWorld().getChunkFromChunkCoords(aX, aZ);
+ if (c == null) sender.addChatMessage(new ChatComponentText("ERROR"));
+ HashMap<String, Integer> ores = new HashMap<>();
+ for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) {
+ int ySize = c.getHeightValue(x, z);
+ for (int y = 1; y < ySize; y++) {
+ Block b = c.getBlock(x, y, z);
+ if (b == GregTech_API.sBlockOres1) {
+ TileEntity entity = c.getTileEntityUnsafe(x, y, z);
+ if (entity != null) {
+ GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) entity;
+ short meta = gt_entity.getMetaData();
+ String name = Materials.getLocalizedNameForItem(
+ GT_LanguageManager.getTranslation(b.getUnlocalizedName() + "." + meta + ".name"),
+ meta % 1000);
+ if (name.startsWith("Small")) continue;
+ if (fName == null || name.toLowerCase().contains(fName)) {
+ if (!ores.containsKey(name)) ores.put(name, 1);
+ else {
+ int val = ores.get(name);
+ ores.put(name, val + 1);
+ }
+ }
+ }
+ }
+ }
+
+ }
+ sender.addChatMessage(new ChatComponentText("*** Detrav Scanner Begin"));
+ for (String key : ores.keySet()) {
+ sender.addChatMessage(new ChatComponentText(String.format("%s : %d", key, ores.get(key))));
+ }
+ sender.addChatMessage(new ChatComponentText("*** Detrav Scanner End"));
+ }
+
+ private void sendHelpMessage(ICommandSender sender) {
+ sender.addChatMessage(new ChatComponentText(getCommandUsage(sender)));
+ }
+
+ @Override
+ public boolean canCommandSenderUseCommand(ICommandSender p_71519_1_) {
+ return true;
+ }
+
+ @Override
+ public List addTabCompletionOptions(ICommandSender sender, String[] args) {
+ if (args.length != 1) return null;
+ if ("help".startsWith(args[0].toLowerCase())) {
+ List result = new ArrayList();
+ result.add("help");
+ sendHelpMessage(sender);
+ return result;
+ }
+ return null;
+ }
+
+ @Override
+ public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_) {
+ return false;
+ }
+
+ @Override
+ public int compareTo(Object o) {
+ return 0;
+ }
+}
diff --git a/src/main/java/com/detrav/enums/DetravToolDictNames.java b/src/main/java/com/detrav/enums/DetravToolDictNames.java
new file mode 100644
index 0000000000..128545360c
--- /dev/null
+++ b/src/main/java/com/detrav/enums/DetravToolDictNames.java
@@ -0,0 +1,9 @@
+package com.detrav.enums;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public enum DetravToolDictNames {
+ craftingToolElectricProspector,
+ craftingToolProspector,
+}
diff --git a/src/main/java/com/detrav/enums/Textures01.java b/src/main/java/com/detrav/enums/Textures01.java
new file mode 100644
index 0000000000..cc65d4d1ca
--- /dev/null
+++ b/src/main/java/com/detrav/enums/Textures01.java
@@ -0,0 +1,17 @@
+package com.detrav.enums;
+
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.IIconContainer;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public class Textures01 {
+
+ public static final IIconContainer[] mTextures = new IIconContainer[] {
+ new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/PRO_PICK_HEAD"),
+ new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/ELECTRIC_LuV_PRO_PICK_HEAD"),
+ new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/ELECTRIC_ZPM_PRO_PICK_HEAD"),
+ new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/ELECTRIC_UV_PRO_PICK_HEAD"),
+ new Textures.ItemIcons.CustomIcon("gt.detrav.metatool.01/ELECTRIC_UHV_PRO_PICK_HEAD"), };
+}
diff --git a/src/main/java/com/detrav/events/DetravLoginEventHandler.java b/src/main/java/com/detrav/events/DetravLoginEventHandler.java
new file mode 100644
index 0000000000..5178516267
--- /dev/null
+++ b/src/main/java/com/detrav/events/DetravLoginEventHandler.java
@@ -0,0 +1,22 @@
+package com.detrav.events;
+
+import net.minecraftforge.common.MinecraftForge;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+
+/**
+ * Created by wital_000 on 18.04.2016.
+ */
+public class DetravLoginEventHandler {
+
+ static boolean inited = false;
+
+ public static void register() {
+ if (!inited) {
+ inited = true;
+ DetravLoginEventHandler handler = new DetravLoginEventHandler();
+ MinecraftForge.EVENT_BUS.register(handler);
+ FMLCommonHandler.instance().bus().register(handler);
+ }
+ }
+}
diff --git a/src/main/java/com/detrav/gui/DetravScannerGUI.java b/src/main/java/com/detrav/gui/DetravScannerGUI.java
new file mode 100644
index 0000000000..c0a7e7f16f
--- /dev/null
+++ b/src/main/java/com/detrav/gui/DetravScannerGUI.java
@@ -0,0 +1,120 @@
+package com.detrav.gui;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+
+import org.lwjgl.opengl.GL11;
+
+import com.detrav.gui.textures.DetravMapTexture;
+
+import gregtech.api.util.GT_Utility;
+
+/**
+ * Created by wital_000 on 21.03.2016.
+ */
+public class DetravScannerGUI extends GuiScreen {
+
+ public static final int GUI_ID = 20;
+ private static DetravMapTexture map = null;
+ OresList oresList = null;
+
+ private final static int minHeight = 128;
+ private final static int minWidth = 128;
+ private int prevW;
+ private int prevH;
+
+ private static final ResourceLocation back = new ResourceLocation("gregtech:textures/gui/propick.png");
+
+ public DetravScannerGUI() {
+
+ }
+
+ public static void newMap(DetravMapTexture aMap) {
+ if (map != null) {
+ map.deleteGlTexture();
+ map = null;
+ }
+ map = aMap;
+ map.loadTexture(null);
+ }
+
+ @Override
+ public void drawScreen(int x, int y, float f) {
+ this.drawDefaultBackground();
+ if (map == null) return;
+ int currentWidth = Math.max(map.width, minWidth);
+ int currentHeight = Math.max(map.height, minHeight);
+ int aX = (this.width - currentWidth - 100) / 2;
+ int aY = (this.height - currentHeight) / 2;
+
+ if (oresList == null || (prevW != width || prevH != height)) {
+ oresList = new OresList(
+ this,
+ 100,
+ currentHeight,
+ aY,
+ aY + currentHeight,
+ aX + currentWidth,
+ 10,
+ map.packet.ores,
+ ((name, invert) -> { if (map != null) map.loadTexture(null, name, invert); }));
+ prevW = width;
+ prevH = height;
+ }
+
+ // draw back for ores
+ drawRect(aX, aY, aX + currentWidth + 100, aY + currentHeight, 0xFFC6C6C6);
+ map.glBindTexture();
+ map.draw(aX, aY);
+ oresList.drawScreen(x, y, f);
+ mc.getTextureManager().bindTexture(back);
+ GL11.glColor4f(0xFF, 0xFF, 0xFF, 0xFF);
+
+ // draw corners
+ drawTexturedModalRect(aX - 5, aY - 5, 0, 0, 5, 5);// leftTop
+ drawTexturedModalRect(aX + currentWidth + 100, aY - 5, 171, 0, 5, 5);// RightTop
+ drawTexturedModalRect(aX - 5, aY + currentHeight, 0, 161, 5, 5);// leftDown
+ drawTexturedModalRect(aX + currentWidth + 100, aY + currentHeight, 171, 161, 5, 5);// RightDown
+
+ // draw edges
+ for (int i = aX; i < aX + currentWidth + 100; i += 128)
+ drawTexturedModalRect(i, aY - 5, 5, 0, Math.min(128, aX + currentWidth + 100 - i), 5); // top
+ for (int i = aX; i < aX + currentWidth + 100; i += 128)
+ drawTexturedModalRect(i, aY + currentHeight, 5, 161, Math.min(128, aX + currentWidth + 100 - i), 5); // down
+ for (int i = aY; i < aY + currentHeight; i += 128)
+ drawTexturedModalRect(aX - 5, i, 0, 5, 5, Math.min(128, aY + currentHeight - i)); // left
+ for (int i = aY; i < aY + currentHeight; i += 128)
+ drawTexturedModalRect(aX + currentWidth + 100, i, 171, 5, 5, Math.min(128, aY + currentHeight - i)); // right
+
+ if (map.packet.ptype == 2) {
+ HashMap<Byte, Short>[][] fluidInfo = map.packet.map;
+ int tX = x - aX;
+ int tY = y - aY;
+ if (tX >= 0 && tY >= 0 && tX < fluidInfo.length && tY < fluidInfo[0].length) {
+ List<String> info = new ArrayList<>();
+ if (fluidInfo[tX][tY] != null) {
+ short fluidId = fluidInfo[tX][tY].get((byte) 1);
+ short fluidAmount = fluidInfo[tX][tY].get((byte) 2);
+ if (fluidId != 0 && fluidAmount > 0) {
+ info.add(
+ StatCollector.translateToLocal("gui.detrav.scanner.tooltip.fluid_name")
+ + map.packet.metaMap.get(fluidId));
+ info.add(
+ StatCollector.translateToLocal("gui.detrav.scanner.tooltip.fluid_amount")
+ + GT_Utility.formatNumbers(fluidAmount)
+ + " L");
+ } else info.add(StatCollector.translateToLocal("gui.detrav.scanner.tooltip.no_fluid"));
+ } else {
+ info.add(StatCollector.translateToLocal("gui.detrav.scanner.tooltip.no_fluid"));
+ }
+ func_146283_a(info, x, y);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/detrav/gui/OresList.java b/src/main/java/com/detrav/gui/OresList.java
new file mode 100644
index 0000000000..54c2152f5a
--- /dev/null
+++ b/src/main/java/com/detrav/gui/OresList.java
@@ -0,0 +1,66 @@
+package com.detrav.gui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.function.BiConsumer;
+
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.renderer.Tessellator;
+
+import cpw.mods.fml.client.GuiScrollingList;
+
+class OresList extends GuiScrollingList {
+
+ private final HashMap<String, Integer> ores;
+ private final List<String> keys;
+ private final GuiScreen parent;
+ private final BiConsumer<String, Boolean> onSelected;
+ private boolean invert = false;
+
+ private int selected = -1;
+
+ public OresList(GuiScreen parent, int width, int height, int top, int bottom, int left, int entryHeight,
+ HashMap<String, Integer> aOres, BiConsumer<String, Boolean> onSelected) {
+ super(parent.mc, width, height, top, bottom, left, entryHeight);
+ this.parent = parent;
+ this.onSelected = onSelected;
+ ores = aOres;
+ keys = new ArrayList<>(ores.keySet());
+ Collections.sort(keys);
+ if (keys.size() > 1) keys.add(0, "All");
+ selected = 0;
+ }
+
+ @Override
+ protected int getSize() {
+ return keys.size();
+ }
+
+ @Override
+ protected void elementClicked(int index, boolean doubleClick) {
+ selected = index;
+ if (doubleClick) this.invert = !this.invert;
+
+ if (onSelected != null) onSelected.accept(keys.get(index), this.invert);
+ }
+
+ @Override
+ protected boolean isSelected(int index) {
+ return selected == index;
+ }
+
+ @Override
+ protected void drawBackground() {}
+
+ @Override
+ protected void drawSlot(int slotIdx, int entryRight, int slotTop, int slotBuffer, Tessellator tess) {
+ parent.drawString(
+ parent.mc.fontRenderer,
+ parent.mc.fontRenderer.trimStringToWidth(keys.get(slotIdx), listWidth - 10),
+ this.left + 3,
+ slotTop - 1,
+ ores.getOrDefault(keys.get(slotIdx), 0x7d7b76));
+ }
+}
diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
new file mode 100644
index 0000000000..01c570d5a1
--- /dev/null
+++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
@@ -0,0 +1,149 @@
+package com.detrav.gui.textures;
+
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+import java.awt.image.WritableRaster;
+
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.texture.AbstractTexture;
+import net.minecraft.client.renderer.texture.TextureUtil;
+import net.minecraft.client.resources.IResourceManager;
+
+import org.lwjgl.opengl.GL11;
+
+import com.detrav.net.ProspectingPacket;
+
+/**
+ * Created by wital_000 on 21.03.2016.
+ */
+public class DetravMapTexture extends AbstractTexture {
+
+ public final ProspectingPacket packet;
+ private String selected = "All";
+ public int width = -1;
+ public int height = -1;
+ public boolean invert = false;
+
+ public DetravMapTexture(ProspectingPacket aPacket) {
+ packet = aPacket;
+ }
+
+ private BufferedImage getImage() {
+ final int backgroundColor = invert ? Color.GRAY.getRGB() : Color.WHITE.getRGB();
+ final int wh = (packet.size * 2 + 1) * 16;
+
+ BufferedImage image = new BufferedImage(wh, wh, BufferedImage.TYPE_INT_ARGB);
+ WritableRaster raster = image.getRaster();
+
+ int playerI = packet.posX - (packet.chunkX - packet.size) * 16 - 1; // Correct player offset
+ int playerJ = packet.posZ - (packet.chunkZ - packet.size) * 16 - 1;
+ for (int i = 0; i < wh; i++) {
+ for (int j = 0; j < wh; j++) {
+ image.setRGB(i, j, backgroundColor);
+ if (packet.map[i][j] != null) {
+ if (packet.ptype == 0 || packet.ptype == 1) {
+ for (short meta : packet.map[i][j].values()) {
+ final String name = packet.metaMap.get(meta);
+ if (!selected.equals("All") && !selected.equals(name)) continue;
+
+ image.setRGB(i, j, packet.ores.getOrDefault(name, Color.BLACK.getRGB()) | 0XFF000000);
+ break;
+ }
+ } else if (packet.ptype == 2) {
+ final short fluidId = packet.map[i][j].get((byte) 1),
+ fluidSize = packet.map[i][j].get((byte) 2);
+ final String name = packet.metaMap.get(fluidId);
+
+ // Variables used to locate within a chunk.
+ final int k = (i % 16), l = (j % 16);
+
+ if (((k + l * 16) * 3) < (fluidSize + 48)
+ && (selected.equals("All") || selected.equals(name))) {
+ image.setRGB(i, j, packet.ores.getOrDefault(name, Color.BLACK.getRGB()) | 0XFF000000);
+ }
+ } else if (packet.ptype == 3) {
+ final short meta = packet.map[i][j].get((byte) 1);
+ image.setRGB(i, j, ((meta & 0xFF) << 16) + ((meta & 0xFF) << 8) + ((meta & 0xFF)) | 0XFF000000);
+ }
+ }
+ // draw player pos
+ if (i == playerI || j == playerJ) {
+ raster.setSample(i, j, 0, (raster.getSample(i, j, 0) + 255) / 2);
+ raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2);
+ raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2);
+ }
+ // draw grid
+ if ((i) % 16 == 0 || (j) % 16 == 0) {
+ raster.setSample(i, j, 0, raster.getSample(i, j, 0) / 2);
+ raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2);
+ raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2);
+ }
+
+ }
+ }
+
+ return image;
+ }
+
+ @Override
+ public void loadTexture(IResourceManager resourceManager) {
+ this.deleteGlTexture();
+ if (packet != null) {
+ int tId = getGlTextureId();
+ if (tId < 0) return;
+ TextureUtil.uploadTextureImageAllocate(this.getGlTextureId(), getImage(), false, false);
+ width = packet.getSize();
+ height = packet.getSize();
+ }
+ }
+
+ public void loadTexture(IResourceManager resourceManager, boolean invert) {
+ this.invert = invert;
+ loadTexture(resourceManager);
+ }
+
+ public void loadTexture(IResourceManager resourceManager, String selected, boolean invert) {
+ this.selected = selected;
+ loadTexture(resourceManager, invert);
+ }
+
+ public int glBindTexture() {
+ if (this.glTextureId < 0) return this.glTextureId;
+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.getGlTextureId());
+ return this.glTextureId;
+ }
+
+ public void draw(int x, int y) {
+ float f = 1F / (float) width;
+ float f1 = 1F / (float) height;
+ int u = 0, v = 0;
+ Tessellator tessellator = Tessellator.instance;
+ tessellator.startDrawingQuads();
+ tessellator.addVertexWithUV(
+ (double) (x),
+ (double) (y + height),
+ 0,
+ (double) ((float) (u) * f),
+ (double) ((float) (v + height) * f1));
+ tessellator.addVertexWithUV(
+ (double) (x + width),
+ (double) (y + height),
+ 0,
+ (double) ((float) (u + width) * f),
+ (double) ((float) (v + height) * f1));
+ tessellator.addVertexWithUV(
+ (double) (x + width),
+ (double) (y),
+ 0,
+ (double) ((float) (u + width) * f),
+ (double) ((float) (v) * f1));
+ tessellator.addVertexWithUV(
+ (double) (x),
+ (double) (y),
+ 0,
+ (double) ((float) (u) * f),
+ (double) ((float) (v) * f1));
+ tessellator.draw();
+ }
+
+}
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
new file mode 100644
index 0000000000..c5b891784e
--- /dev/null
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -0,0 +1,362 @@
+package com.detrav.items;
+
+import java.util.List;
+
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+
+import com.detrav.DetravScannerMod;
+import com.detrav.enums.DetravToolDictNames;
+import com.detrav.items.tools.DetravProspector;
+import com.detrav.items.tools.DetravToolElectricProspector;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.interfaces.IToolStats;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+
+/**
+ * Created by wital_000 on 19.03.2016.
+ */
+public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
+
+ public static DetravMetaGeneratedTool01 INSTANCE;
+
+ public DetravMetaGeneratedTool01() {
+ super("detrav.metatool.01");
+ INSTANCE = this;
+ addTool(
+ 0,
+ "Prospector's Scanner(ULV)",
+ "",
+ new DetravProspector(0),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 2,
+ "Prospector's Scanner(LV)",
+ "",
+ new DetravProspector(1),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 4,
+ "Prospector's Scanner(MV)",
+ "",
+ new DetravProspector(2),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 6,
+ "Prospector's Scanner(HV)",
+ "",
+ new DetravProspector(3),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 8,
+ "Prospector's Scanner(EV)",
+ "",
+ new DetravProspector(4),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 10,
+ "Prospector's Scanner(IV)",
+ "",
+ new DetravProspector(5),
+ DetravToolDictNames.craftingToolProspector.toString(),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.PERFODIO, 4L));
+ addTool(
+ 12,
+ "Prospector's Scanner(LuV)",
+ "",
+ new DetravProspector(6),
+ DetravToolDictNames.craftingToolProspector