Fix texture packs

This commit is contained in:
PeytonPlayz595 2024-02-13 16:32:42 -05:00
parent f53ccbf796
commit 87a79edf72
5 changed files with 3891 additions and 2098 deletions

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@ import java.nio.ByteBuffer;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -164,7 +165,44 @@ public class RenderEngine {
} }
public void refreshTextures() { public void refreshTextures() {
textureMap.clear(); System.out.println("Refreshing Textures!");
TexturePackBase var1 = this.field_6527_k.selectedTexturePack;
Iterator var2 = this.textureNameToImageMap.keySet().iterator();
EaglerImage var4;
while(var2.hasNext()) {
int var3 = ((Integer)var2.next()).intValue();
var4 = (EaglerImage)this.textureNameToImageMap.get(Integer.valueOf(var3));
this.setupTexture(var4, var3);
}
var2 = this.textureMap.keySet().iterator();
while(var2.hasNext()) {
String var8 = (String)var2.next();
try {
if(var8.startsWith("%%")) {
this.clampTexture = true;
String[] s1 = var8.split("%%");
var4 = this.readTextureImage(var1.func_6481_a(s1[1]));
} else if(var8.startsWith("%blur%")) {
this.blurTexture = true;
String[] s1 = var8.split("%blur%");
var4 = this.readTextureImage(var1.func_6481_a(s1[1]));
} else {
var4 = this.readTextureImage(var1.func_6481_a(var8));
}
int var5 = ((Integer)this.textureMap.get(var8)).intValue();
this.setupTexture(var4, var5);
this.blurTexture = false;
this.clampTexture = false;
} catch (IOException var6) {
var6.printStackTrace();
}
}
} }
private static HashMap<String, Integer> textureMap; private static HashMap<String, Integer> textureMap;

View File

@ -6,7 +6,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.HashMap; import java.util.Collection;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
@ -15,12 +15,11 @@ import org.lwjgl.opengl.GL11;
public class TexturePackCustom extends TexturePackBase { public class TexturePackCustom extends TexturePackBase {
private HashMap<String, byte[]> filePool = new HashMap<String, byte[]>();
public TexturePackCustom(String s) { public TexturePackCustom(String s) {
this.texturePackFileName = s; this.texturePackFileName = s;
try { try {
deleteExistingTexturePackFiles();
byte[] data = GL11.readFile("texturepacks/" + s); byte[] data = GL11.readFile("texturepacks/" + s);
ByteArrayInputStream bais = new ByteArrayInputStream(data); ByteArrayInputStream bais = new ByteArrayInputStream(data);
ZipInputStream zis = new ZipInputStream(bais); ZipInputStream zis = new ZipInputStream(bais);
@ -36,7 +35,11 @@ public class TexturePackCustom extends TexturePackBase {
byte[] fileData = baos.toByteArray(); byte[] fileData = baos.toByteArray();
System.out.println(entry.getName()); System.out.println(entry.getName());
filePool.put(entry.getName(), fileData); String name = entry.getName();
if(name.startsWith("/")) {
name = name.substring(1, name.length() - 1);
}
GL11.writeFile("texturepackdata/" + name.replace(" ", ""), fileData);
} }
zis.closeEntry(); zis.closeEntry();
@ -58,7 +61,8 @@ public class TexturePackCustom extends TexturePackBase {
public void func_6485_a(Minecraft var1) throws IOException { public void func_6485_a(Minecraft var1) throws IOException {
try { try {
InputStream var3 = new ByteArrayInputStream(filePool.get("pack.txt")); byte[] data = GL11.readFile("texturepackdata/pack.txt");
InputStream var3 = new ByteArrayInputStream(data);
BufferedReader var4 = new BufferedReader(new InputStreamReader(var3)); BufferedReader var4 = new BufferedReader(new InputStreamReader(var3));
this.firstDescriptionLine = this.func_6492_b(var4.readLine()); this.firstDescriptionLine = this.func_6492_b(var4.readLine());
this.secondDescriptionLine = this.func_6492_b(var4.readLine()); this.secondDescriptionLine = this.func_6492_b(var4.readLine());
@ -72,7 +76,8 @@ public class TexturePackCustom extends TexturePackBase {
int packPNG = -1; int packPNG = -1;
public void func_6483_c(Minecraft var1) { public void func_6483_c(Minecraft var1) {
if(filePool.containsKey("pack.png")) { byte[] data = GL11.readFile("texturepackdata/pack.png");
if(data != null) {
if(packPNG == -1) { if(packPNG == -1) {
packPNG = getTexture("pack.png"); packPNG = getTexture("pack.png");
} }
@ -85,7 +90,7 @@ public class TexturePackCustom extends TexturePackBase {
private int getTexture(String s) { private int getTexture(String s) {
try { try {
byte[] b = filePool.get(s); byte[] b = GL11.readFile("texturepackdata/" + s);
Minecraft.getMinecraft().renderEngine.singleIntBuffer.clear(); Minecraft.getMinecraft().renderEngine.singleIntBuffer.clear();
GLAllocation.generateTextureNames(Minecraft.getMinecraft().renderEngine.singleIntBuffer); GLAllocation.generateTextureNames(Minecraft.getMinecraft().renderEngine.singleIntBuffer);
int i = Minecraft.getMinecraft().renderEngine.singleIntBuffer.get(0); int i = Minecraft.getMinecraft().renderEngine.singleIntBuffer.get(0);
@ -97,10 +102,34 @@ public class TexturePackCustom extends TexturePackBase {
} }
public byte[] func_6481_a(String var1) { public byte[] func_6481_a(String var1) {
if(filePool.containsKey(var1)) { String path = var1;
return filePool.get(var1); if(path.startsWith("/")) {
path = path.substring(1);
}
System.out.println(path);
byte[] data = GL11.readFile("texturepackdata/" + path.replace(" ", ""));
if(data == null) {
return GL11.loadResourceBytes(var1);
} }
return GL11.loadResourceBytes(var1); System.out.println("Texture Found in texture pack: " + path);
return data;
} }
private void deleteExistingTexturePackFiles() {
String path = "texturepackdata/";
Collection<GL11.FileEntry> lst = GL11.listFiles(path, true, true);
for(GL11.FileEntry t : lst) {
if(!t.isDirectory) {
GL11.deleteFile(t.path);
}
}
for(GL11.FileEntry t : lst) {
if(t.isDirectory) {
GL11.deleteFile(t.path);
}
}
GL11.deleteFile(path);
}
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long