aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-01-25 18:47:09 +0100
committerGitHub <noreply@github.com>2021-01-25 18:47:09 +0100
commitc1c87c9f07db900cb3c59e32b2c5032d94e637eb (patch)
tree66e32403f5c10be3c74735c36d4e26c831c4cfa6 /src/main/java/com/detrav/gui/textures/DetravMapTexture.java
parent88287f7769c4e1bf122175a698bb3ac1726f1f5d (diff)
parentc52efb53533390f7e3b3ef14558501121b35affe (diff)
downloadGT5-Unofficial-c1c87c9f07db900cb3c59e32b2c5032d94e637eb.tar.gz
GT5-Unofficial-c1c87c9f07db900cb3c59e32b2c5032d94e637eb.tar.bz2
GT5-Unofficial-c1c87c9f07db900cb3c59e32b2c5032d94e637eb.zip
Merge pull request #12 from GTNewHorizons/selectable_ores
Selectable ores - Inspired by Gregicality
Diffstat (limited to 'src/main/java/com/detrav/gui/textures/DetravMapTexture.java')
-rw-r--r--src/main/java/com/detrav/gui/textures/DetravMapTexture.java105
1 files changed, 81 insertions, 24 deletions
diff --git a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
index 58d69260ce..444064594e 100644
--- a/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
+++ b/src/main/java/com/detrav/gui/textures/DetravMapTexture.java
@@ -1,48 +1,107 @@
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 boolean invert = false;
- public DetravMapTexture(DetravProPickPacket00 aPacket)
+ public DetravMapTexture(ProspectingPacket aPacket)
{
packet = aPacket;
}
- public int width = -1;
- public int height = -1;
- public HashMap<String,Integer> ores = null;
+ 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 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, 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() {
@@ -51,12 +110,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));