From 8ecc28d1317e01036a6d0f1cefa34b0aacd2d16a Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 00:37:23 -0800 Subject: Selectable ores on electronic prospector * Cleaned up some class/file names * Removed unused code/comments * Cached other mods being loaded * Various optimizations --- .../com/detrav/gui/textures/DetravMapTexture.java | 98 ++++++++++++++++------ 1 file changed, 74 insertions(+), 24 deletions(-) (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java') diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java index 58d69260ce..5cf913985c 100644 --- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java @@ -1,48 +1,100 @@ package com.detrav.gui.textures; -import java.awt.image.BufferedImage; -import java.util.HashMap; - -import org.lwjgl.opengl.GL11; - -import com.detrav.net.DetravProPickPacket00; - -import net.minecraft.client.Minecraft; +import com.detrav.net.ProspectingPacket; 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 java.awt.Color; +import java.awt.image.BufferedImage; +import java.awt.image.WritableRaster; /** * Created by wital_000 on 21.03.2016. */ public class DetravMapTexture extends AbstractTexture { - private DetravProPickPacket00 packet; + public final ProspectingPacket packet; + private String selected = "All"; + public int width = -1; + public int height = -1; - public DetravMapTexture(DetravProPickPacket00 aPacket) + public DetravMapTexture(ProspectingPacket aPacket) { packet = aPacket; } - public int width = -1; - public int height = -1; - public HashMap ores = null; + private BufferedImage getImage() { + 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, Color.WHITE.getRGB()); + 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.get(name) | 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) ) { + image.setRGB(i, j, packet.ores.get(name)); + } + }else if (packet.ptype == 3) { + final short meta = packet.map[i][j].get((byte) 1); + final String name = packet.metaMap.get(meta); + image.setRGB(i, j, packet.ores.get(name)); + } + } + // 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 p_110551_1_){ + public void loadTexture(IResourceManager resourceManager){ this.deleteGlTexture(); - if(packet!=null) - { + if(packet != null) { int tId = getGlTextureId(); if(tId <0) return; - BufferedImage bufferedimage = packet.getImage((int)Minecraft.getMinecraft().thePlayer.posX,(int)Minecraft.getMinecraft().thePlayer.posZ); - TextureUtil.uploadTextureImageAllocate(this.getGlTextureId(), bufferedimage, false, false); + TextureUtil.uploadTextureImageAllocate(this.getGlTextureId(), getImage(), false, false); width = packet.getSize(); height = packet.getSize(); - ores = packet.getOres(); } - //GL11.glDrawPixels(); + } + + public void loadTexture(IResourceManager resourceManager, String selected){ + this.selected = selected; + loadTexture(resourceManager); } public int glBindTexture() { @@ -51,12 +103,10 @@ public class DetravMapTexture extends AbstractTexture { return this.glTextureId; } - public void draw(int x, int y) - { + public void draw(int x, int y) { float f = 1F / (float)width; float f1 = 1F / (float)height; - int u = 0; - int v = 0; + 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)); -- cgit From 7d918352b9f7c95d6fd28a5a85e0433fddc3b0eb Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 10:18:42 -0800 Subject: Fluids work now --- src/main/java/com/detrav/gui/textures/DetravMapTexture.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java') diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java index 5cf913985c..71911f4ea7 100644 --- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java @@ -52,8 +52,8 @@ public class DetravMapTexture extends AbstractTexture { // Variables used to locate within a chunk. final int k = (i % 16), l = (j % 16); - if( ( (k + l * 16) * 3) < (fluidSize + 48) ) { - image.setRGB(i, j, packet.ores.get(name)); + if( ( (k + l * 16) * 3) < (fluidSize + 48) && (selected.equals("All") || selected.equals(name))) { + image.setRGB(i, j, packet.ores.get(name) | 0XFF000000); } }else if (packet.ptype == 3) { final short meta = packet.map[i][j].get((byte) 1); -- cgit From eb7e8585e4496cf14893c618f53418905a32fb70 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 11:23:12 -0800 Subject: Pollution works now. --- src/main/java/com/detrav/gui/textures/DetravMapTexture.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java') diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java index 71911f4ea7..56db8717c7 100644 --- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java @@ -57,8 +57,7 @@ public class DetravMapTexture extends AbstractTexture { } }else if (packet.ptype == 3) { final short meta = packet.map[i][j].get((byte) 1); - final String name = packet.metaMap.get(meta); - image.setRGB(i, j, packet.ores.get(name)); + image.setRGB(i, j, ((meta & 0xFF) << 16) + ((meta & 0xFF) << 8) + ((meta & 0xFF)) | 0XFF000000); } } // draw player pos -- cgit From 7308c3ef90505fe6ad9d39b458867eab0ca62a03 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 11:55:26 -0800 Subject: Double click text selection to invert background --- .../java/com/detrav/gui/textures/DetravMapTexture.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java') diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java index 56db8717c7..cc866f8d85 100644 --- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java @@ -20,6 +20,7 @@ public class DetravMapTexture extends AbstractTexture { private String selected = "All"; public int width = -1; public int height = -1; + public boolean invert = false; public DetravMapTexture(ProspectingPacket aPacket) { @@ -27,7 +28,8 @@ public class DetravMapTexture extends AbstractTexture { } private BufferedImage getImage() { - int wh = (packet.size * 2 + 1) * 16; + 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(); @@ -36,7 +38,7 @@ public class DetravMapTexture extends AbstractTexture { 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, Color.WHITE.getRGB()); + 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()) { @@ -90,10 +92,15 @@ public class DetravMapTexture extends AbstractTexture { height = packet.getSize(); } } + + public void loadTexture(IResourceManager resourceManager, boolean invert){ + this.invert = invert; + loadTexture(resourceManager); + } - public void loadTexture(IResourceManager resourceManager, String selected){ + public void loadTexture(IResourceManager resourceManager, String selected, boolean invert){ this.selected = selected; - loadTexture(resourceManager); + loadTexture(resourceManager, invert); } public int glBindTexture() { -- cgit From c52efb53533390f7e3b3ef14558501121b35affe Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 24 Jan 2021 17:10:39 -0800 Subject: Properly handle BW ores --- src/main/java/com/detrav/gui/textures/DetravMapTexture.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java') diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java index cc866f8d85..444064594e 100644 --- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java +++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java @@ -44,7 +44,8 @@ public class DetravMapTexture extends AbstractTexture { 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.get(name) | 0XFF000000); + + image.setRGB(i, j, packet.ores.getOrDefault(name, Color.BLACK.getRGB()) | 0XFF000000); break; } } else if (packet.ptype == 2) { @@ -55,7 +56,7 @@ public class DetravMapTexture extends AbstractTexture { 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.get(name) | 0XFF000000); + 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); -- cgit