Texture pack support
This commit is contained in:
parent
432303bb68
commit
1dbb0d2a7b
|
@ -33,7 +33,7 @@ public class Client {
|
|||
|
||||
try {
|
||||
JSONObject e = new JSONObject(getOpts());
|
||||
initializeContext(e.getString("assetsLocation"));
|
||||
initializeContext(rootElement = Window.current().getDocument().getElementById(e.getString("gameContainer")), e.getString("assetsLocation"));
|
||||
}catch(Throwable ex2) {
|
||||
StringWriter s = new StringWriter();
|
||||
ex2.printStackTrace(new java.io.PrintWriter(s));
|
||||
|
|
|
@ -85,7 +85,7 @@ public class File {
|
|||
}
|
||||
|
||||
public static final FileEntry[] listFiles(String path) {
|
||||
Collection<FileEntry> entries = IndexedDBFilesystem.listFiles(path, true, false);
|
||||
Collection<FileEntry> entries = listFilesAndDirectories(path);
|
||||
FileEntry[] entryArray = new FileEntry[entries.size()];
|
||||
|
||||
int i = 0;
|
||||
|
|
|
@ -21,4 +21,16 @@ public class FileEntry {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isFile() {
|
||||
return !isDirectory;
|
||||
}
|
||||
|
||||
public long length() {
|
||||
return File.getFileSize(path);
|
||||
}
|
||||
|
||||
public long lastModified() {
|
||||
return File.getLastModified(path);
|
||||
}
|
||||
|
||||
}
|
71
src/net/PeytonPlayz585/util/zip/ZipFile.java
Normal file
71
src/net/PeytonPlayz585/util/zip/ZipFile.java
Normal file
|
@ -0,0 +1,71 @@
|
|||
package net.PeytonPlayz585.util.zip;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import net.PeytonPlayz585.fileutils.File;
|
||||
import net.PeytonPlayz585.fileutils.FileEntry;
|
||||
|
||||
public class ZipFile {
|
||||
|
||||
private List<ZipEntry> entries = new ArrayList<ZipEntry>();
|
||||
private HashMap<String, byte[]> filePool = new HashMap<String, byte[]>();
|
||||
|
||||
public ZipFile(ZipInputStream zis) throws IOException {
|
||||
ZipEntry entry;
|
||||
while ((entry = zis.getNextEntry()) != null) {
|
||||
entries.add(entry);
|
||||
|
||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
byte[] buffer = new byte[(int)entry.getSize()];
|
||||
int len;
|
||||
while ((len = zis.read(buffer)) > 0) {
|
||||
baos.write(buffer, 0, len);
|
||||
}
|
||||
|
||||
byte[] fileData = baos.toByteArray();
|
||||
filePool.put(entry.getName(), fileData);
|
||||
}
|
||||
|
||||
zis.closeEntry();
|
||||
}
|
||||
|
||||
zis.close();
|
||||
}
|
||||
|
||||
public ZipFile(FileEntry file) throws IOException {
|
||||
this(new ZipInputStream(new ByteArrayInputStream(File.readFile(file.path))));
|
||||
}
|
||||
|
||||
public ZipEntry getEntry(String name) {
|
||||
for(int i = 0; i < entries.size(); i++) {
|
||||
ZipEntry entry = entries.get(i);
|
||||
if(entry != null) {
|
||||
if(entry.getName().equals(name)) {
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public InputStream getInputStream(ZipEntry entry) {
|
||||
String name = entry.getName();
|
||||
return new ByteArrayInputStream(filePool.get(name));
|
||||
}
|
||||
|
||||
public void close() {
|
||||
entries.clear();
|
||||
filePool.clear();
|
||||
entries = new ArrayList<ZipEntry>();
|
||||
filePool = new HashMap<String, byte[]>();
|
||||
}
|
||||
}
|
|
@ -69,6 +69,7 @@ import net.minecraft.src.StatList;
|
|||
import net.minecraft.src.StatStringFormatKeyInv;
|
||||
import net.minecraft.src.Teleporter;
|
||||
import net.minecraft.src.Tessellator;
|
||||
import net.minecraft.src.TexturePackList;
|
||||
import net.minecraft.src.Timer;
|
||||
import net.minecraft.src.UnexpectedThrowable;
|
||||
import net.minecraft.src.Vec3D;
|
||||
|
@ -109,6 +110,7 @@ public class Minecraft implements Runnable {
|
|||
public GameSettings gameSettings;
|
||||
public SoundManager sndManager = new SoundManager();
|
||||
public MouseHelper mouseHelper;
|
||||
public TexturePackList texturePackList;
|
||||
private ISaveFormat saveLoader;
|
||||
public static long[] frameTimes = new long[512];
|
||||
public static long[] tickTimes = new long[512];
|
||||
|
@ -116,7 +118,7 @@ public class Minecraft implements Runnable {
|
|||
public StatFileWriter statFileWriter;
|
||||
private String serverName;
|
||||
private int serverPort;
|
||||
private static String minecraftDir = "minecraft";
|
||||
private static final String minecraftDir = "minecraft";
|
||||
public volatile boolean running = true;
|
||||
public String debug = "";
|
||||
boolean isTakingScreenshot = false;
|
||||
|
@ -151,7 +153,8 @@ public class Minecraft implements Runnable {
|
|||
public void startGame() {
|
||||
this.saveLoader = new EaglerSaveFormat(minecraftDir + "/" + "saves");
|
||||
this.gameSettings = new GameSettings(this, minecraftDir);
|
||||
this.renderEngine = new RenderEngine(this.gameSettings);
|
||||
this.texturePackList = new TexturePackList(this, this.minecraftDir);
|
||||
this.renderEngine = new RenderEngine(this.texturePackList, this.gameSettings);
|
||||
this.fontRenderer = new FontRenderer(this.gameSettings, "/font/default.png", this.renderEngine);
|
||||
ColorizerWater.func_28182_a(this.renderEngine.func_28149_a("/misc/watercolor.png"));
|
||||
ColorizerGrass.func_28181_a(this.renderEngine.func_28149_a("/misc/grasscolor.png"));
|
||||
|
@ -245,7 +248,7 @@ public class Minecraft implements Runnable {
|
|||
}
|
||||
|
||||
public String getSaveDir() {
|
||||
return this.minecraftDir;
|
||||
return Minecraft.minecraftDir;
|
||||
}
|
||||
|
||||
public ISaveFormat getSaveLoader() {
|
||||
|
|
|
@ -45,9 +45,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||
int var4 = this.height / 4 + 48;
|
||||
this.controlList.add(new GuiButton(1, this.width / 2 - 100, var4, var2.translateKey("menu.singleplayer")));
|
||||
this.controlList.add(this.multiplayerButton = new GuiButton(2, this.width / 2 - 100, var4 + 24, var2.translateKey("menu.multiplayer")));
|
||||
GuiButton button;
|
||||
this.controlList.add(button = new GuiButton(3, this.width / 2 - 100, var4 + 48, var2.translateKey("menu.mods")));
|
||||
button.enabled = false;
|
||||
this.controlList.add(new GuiButton(3, this.width / 2 - 100, var4 + 48, var2.translateKey("menu.mods")));
|
||||
this.controlList.add(new GuiButton(0, this.width / 2 - 100, var4 + 72, var2.translateKey("menu.options")));
|
||||
|
||||
if(this.mc.session == null) {
|
||||
|
@ -69,6 +67,10 @@ public class GuiMainMenu extends GuiScreen {
|
|||
this.mc.displayGuiScreen(new GuiMultiplayer(this));
|
||||
}
|
||||
|
||||
if(var1.id == 3) {
|
||||
this.mc.displayGuiScreen(new GuiTexturePacks(this));
|
||||
}
|
||||
|
||||
if(var1.id == 4) {
|
||||
this.mc.shutdown();
|
||||
}
|
||||
|
|
53
src/net/minecraft/src/GuiTexturePackSlot.java
Normal file
53
src/net/minecraft/src/GuiTexturePackSlot.java
Normal file
|
@ -0,0 +1,53 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import java.util.List;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
class GuiTexturePackSlot extends GuiSlot {
|
||||
final GuiTexturePacks parentTexturePackGui;
|
||||
|
||||
public GuiTexturePackSlot(GuiTexturePacks var1) {
|
||||
super(GuiTexturePacks.func_22124_a(var1), var1.width, var1.height, 32, var1.height - 55 + 4, 36);
|
||||
this.parentTexturePackGui = var1;
|
||||
}
|
||||
|
||||
protected int getSize() {
|
||||
List var1 = GuiTexturePacks.func_22126_b(this.parentTexturePackGui).texturePackList.availableTexturePacks();
|
||||
return var1.size();
|
||||
}
|
||||
|
||||
protected void elementClicked(int var1, boolean var2) {
|
||||
List var3 = GuiTexturePacks.func_22119_c(this.parentTexturePackGui).texturePackList.availableTexturePacks();
|
||||
GuiTexturePacks.func_22122_d(this.parentTexturePackGui).texturePackList.setTexturePack((TexturePackBase)var3.get(var1));
|
||||
GuiTexturePacks.func_22117_e(this.parentTexturePackGui).renderEngine.refreshTextures();
|
||||
}
|
||||
|
||||
protected boolean isSelected(int var1) {
|
||||
List var2 = GuiTexturePacks.func_22118_f(this.parentTexturePackGui).texturePackList.availableTexturePacks();
|
||||
return GuiTexturePacks.func_22116_g(this.parentTexturePackGui).texturePackList.selectedTexturePack == var2.get(var1);
|
||||
}
|
||||
|
||||
protected int getContentHeight() {
|
||||
return this.getSize() * 36;
|
||||
}
|
||||
|
||||
protected void drawBackground() {
|
||||
this.parentTexturePackGui.drawDefaultBackground();
|
||||
}
|
||||
|
||||
protected void drawSlot(int var1, int var2, int var3, int var4, Tessellator var5) {
|
||||
TexturePackBase var6 = (TexturePackBase)GuiTexturePacks.func_22121_h(this.parentTexturePackGui).texturePackList.availableTexturePacks().get(var1);
|
||||
var6.bindThumbnailTexture(GuiTexturePacks.func_22123_i(this.parentTexturePackGui));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
var5.startDrawingQuads();
|
||||
var5.setColorOpaque_I(16777215);
|
||||
var5.addVertexWithUV((double)var2, (double)(var3 + var4), 0.0D, 0.0D, 1.0D);
|
||||
var5.addVertexWithUV((double)(var2 + 32), (double)(var3 + var4), 0.0D, 1.0D, 1.0D);
|
||||
var5.addVertexWithUV((double)(var2 + 32), (double)var3, 0.0D, 1.0D, 0.0D);
|
||||
var5.addVertexWithUV((double)var2, (double)var3, 0.0D, 0.0D, 0.0D);
|
||||
var5.draw();
|
||||
this.parentTexturePackGui.drawString(GuiTexturePacks.func_22127_j(this.parentTexturePackGui), var6.texturePackFileName, var2 + 32 + 2, var3 + 1, 16777215);
|
||||
this.parentTexturePackGui.drawString(GuiTexturePacks.func_22120_k(this.parentTexturePackGui), var6.firstDescriptionLine, var2 + 32 + 2, var3 + 12, 8421504);
|
||||
this.parentTexturePackGui.drawString(GuiTexturePacks.func_22125_l(this.parentTexturePackGui), var6.secondDescriptionLine, var2 + 32 + 2, var3 + 12 + 10, 8421504);
|
||||
}
|
||||
}
|
125
src/net/minecraft/src/GuiTexturePacks.java
Normal file
125
src/net/minecraft/src/GuiTexturePacks.java
Normal file
|
@ -0,0 +1,125 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import net.PeytonPlayz585.fileutils.File;
|
||||
import net.PeytonPlayz585.fileutils.FileChooserResult;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class GuiTexturePacks extends GuiScreen {
|
||||
protected GuiScreen guiScreen;
|
||||
private int field_6454_o = -1;
|
||||
private String fileLocation = "";
|
||||
private GuiTexturePackSlot guiTexturePackSlot;
|
||||
|
||||
public GuiTexturePacks(GuiScreen var1) {
|
||||
this.guiScreen = var1;
|
||||
}
|
||||
|
||||
public void initGui() {
|
||||
StringTranslate var1 = StringTranslate.getInstance();
|
||||
this.controlList.add(new GuiSmallButton(5, this.width / 2 - 154, this.height - 48, var1.translateKey("texturePack.openFolder")));
|
||||
this.controlList.add(new GuiSmallButton(6, this.width / 2 + 4, this.height - 48, var1.translateKey("gui.done")));
|
||||
this.mc.texturePackList.updateAvaliableTexturePacks();
|
||||
this.fileLocation = Minecraft.getMinecraft().getSaveDir() + "/texturepacks";
|
||||
this.guiTexturePackSlot = new GuiTexturePackSlot(this);
|
||||
this.guiTexturePackSlot.registerScrollButtons(this.controlList, 7, 8);
|
||||
}
|
||||
|
||||
protected void actionPerformed(GuiButton var1) {
|
||||
if(var1.enabled) {
|
||||
if(var1.id == 5) {
|
||||
//Sys.openURL("file://" + this.fileLocation);
|
||||
GL11.EaglerAdapterImpl2.displayFileChooser("zip", "application/zip");
|
||||
} else if(var1.id == 6) {
|
||||
this.mc.renderEngine.refreshTextures();
|
||||
this.mc.displayGuiScreen(this.guiScreen);
|
||||
} else {
|
||||
this.guiTexturePackSlot.actionPerformed(var1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void mouseClicked(int var1, int var2, int var3) {
|
||||
super.mouseClicked(var1, var2, var3);
|
||||
}
|
||||
|
||||
protected void mouseMovedOrUp(int var1, int var2, int var3) {
|
||||
super.mouseMovedOrUp(var1, var2, var3);
|
||||
}
|
||||
|
||||
public void drawScreen(int var1, int var2, float var3) {
|
||||
this.guiTexturePackSlot.drawScreen(var1, var2, var3);
|
||||
if(this.field_6454_o <= 0) {
|
||||
this.mc.texturePackList.updateAvaliableTexturePacks();
|
||||
this.field_6454_o += 20;
|
||||
}
|
||||
|
||||
if(GL11.EaglerAdapterImpl2.fileChooserHasResult()) {
|
||||
FileChooserResult result = GL11.EaglerAdapterImpl2.getFileChooserResult();
|
||||
File.writeFile(this.fileLocation + "/" + result.fileName, result.fileData);
|
||||
|
||||
//Refresh GUI to show newly added texture packs
|
||||
this.mc.displayGuiScreen(new GuiTexturePacks(this.guiScreen));
|
||||
}
|
||||
|
||||
StringTranslate var4 = StringTranslate.getInstance();
|
||||
this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.title"), this.width / 2, 16, 16777215);
|
||||
this.drawCenteredString(this.fontRenderer, var4.translateKey("texturePack.folderInfo"), this.width / 2 - 77, this.height - 26, 8421504);
|
||||
super.drawScreen(var1, var2, var3);
|
||||
}
|
||||
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
--this.field_6454_o;
|
||||
}
|
||||
|
||||
static Minecraft func_22124_a(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22126_b(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22119_c(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22122_d(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22117_e(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22118_f(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22116_g(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22121_h(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static Minecraft func_22123_i(GuiTexturePacks var0) {
|
||||
return var0.mc;
|
||||
}
|
||||
|
||||
static FontRenderer func_22127_j(GuiTexturePacks var0) {
|
||||
return var0.fontRenderer;
|
||||
}
|
||||
|
||||
static FontRenderer func_22120_k(GuiTexturePacks var0) {
|
||||
return var0.fontRenderer;
|
||||
}
|
||||
|
||||
static FontRenderer func_22125_l(GuiTexturePacks var0) {
|
||||
return var0.fontRenderer;
|
||||
}
|
||||
}
|
|
@ -21,19 +21,19 @@ public class RenderEngine {
|
|||
private HashMap field_28151_c = new HashMap();
|
||||
private HashMap textureNameToImageMap = new HashMap();
|
||||
private IntBuffer singleIntBuffer = GLAllocation.createDirectIntBuffer(1);
|
||||
private ByteBuffer imageData = GLAllocation.createDirectByteBuffer(1048576);
|
||||
private ByteBuffer imageData = GLAllocation.createDirectByteBuffer(4194304 * 2); //Large enough (Maybe!?!?)
|
||||
private List textureList = new ArrayList();
|
||||
private GameSettings options;
|
||||
private boolean clampTexture = false;
|
||||
private boolean blurTexture = false;
|
||||
private List<SpriteSheetTexture> textureSpriteList = new ArrayList();
|
||||
|
||||
private TexturePackList texturePack;
|
||||
private BufferedImage missingTextureImage;
|
||||
private IntBuffer imageDataB1 = GLAllocation.createDirectIntBuffer(0x100000);
|
||||
private IntBuffer imageDataB1 = GLAllocation.createDirectIntBuffer(4194304 * 2); //:> !?!?!?!?
|
||||
|
||||
public RenderEngine(GameSettings var2) {
|
||||
public RenderEngine(TexturePackList var1, GameSettings var2) {
|
||||
this.options = var2;
|
||||
|
||||
this.texturePack = var1;
|
||||
int[] missingTexture = new int[256];
|
||||
for(int i = 0; i < 256; ++i) {
|
||||
missingTexture[i] = ((i / 16 + (i % 16)) % 2 == 0) ? 0xffff00ff : 0xff000000;
|
||||
|
@ -42,6 +42,7 @@ public class RenderEngine {
|
|||
}
|
||||
|
||||
public int[] func_28149_a(String var1) {
|
||||
TexturePackBase var2 = this.texturePack.selectedTexturePack;
|
||||
int[] var3 = (int[])this.field_28151_c.get(var1);
|
||||
if(var3 != null) {
|
||||
return var3;
|
||||
|
@ -50,14 +51,14 @@ public class RenderEngine {
|
|||
Object var6 = null;
|
||||
if(var1.startsWith("%clamp%")) {
|
||||
this.clampTexture = true;
|
||||
var3 = this.func_28148_b(this.readTextureImage(GL11.getResourceAsStream(var1.substring(7))));
|
||||
var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(7))));
|
||||
this.clampTexture = false;
|
||||
} else if(var1.startsWith("%blur%")) {
|
||||
this.blurTexture = true;
|
||||
var3 = this.func_28148_b(this.readTextureImage(GL11.getResourceAsStream(var1.substring(6))));
|
||||
var3 = this.func_28148_b(this.readTextureImage(var2.getResourceAsStream(var1.substring(6))));
|
||||
this.blurTexture = false;
|
||||
} else {
|
||||
InputStream var7 = GL11.getResourceAsStream(var1);
|
||||
InputStream var7 = var2.getResourceAsStream(var1);
|
||||
if(var7 == null) {
|
||||
var3 = this.func_28148_b(this.missingTextureImage);
|
||||
} else {
|
||||
|
@ -92,6 +93,7 @@ public class RenderEngine {
|
|||
}
|
||||
|
||||
public int getTexture(String var1) {
|
||||
TexturePackBase var2 = this.texturePack.selectedTexturePack;
|
||||
Integer var3 = (Integer)this.textureMap.get(var1);
|
||||
if(var3 != null) {
|
||||
return var3.intValue();
|
||||
|
@ -102,14 +104,14 @@ public class RenderEngine {
|
|||
int var6 = this.singleIntBuffer.get(0);
|
||||
if(var1.startsWith("%clamp%")) {
|
||||
this.clampTexture = true;
|
||||
this.setupTexture(this.readTextureImage(GL11.getResourceAsStream(var1.substring(7))), var6);
|
||||
this.setupTexture(this.readTextureImage(var2.getResourceAsStream(var1.substring(7))), var6);
|
||||
this.clampTexture = false;
|
||||
} else if(var1.startsWith("%blur%")) {
|
||||
this.blurTexture = true;
|
||||
this.setupTexture(this.readTextureImage(GL11.getResourceAsStream(var1.substring(6))), var6);
|
||||
this.setupTexture(this.readTextureImage(var2.getResourceAsStream(var1.substring(6))), var6);
|
||||
this.blurTexture = false;
|
||||
} else {
|
||||
InputStream var7 = GL11.getResourceAsStream(var1);
|
||||
InputStream var7 = var2.getResourceAsStream(var1);
|
||||
if(var7 == null) {
|
||||
this.setupTexture(this.missingTextureImage, var6);
|
||||
} else {
|
||||
|
@ -366,6 +368,7 @@ public class RenderEngine {
|
|||
}
|
||||
|
||||
public void refreshTextures() {
|
||||
TexturePackBase var1 = this.texturePack.selectedTexturePack;
|
||||
Iterator var2 = this.textureNameToImageMap.keySet().iterator();
|
||||
|
||||
BufferedImage var4;
|
||||
|
@ -384,12 +387,12 @@ public class RenderEngine {
|
|||
try {
|
||||
if(var9.startsWith("%clamp%")) {
|
||||
this.clampTexture = true;
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9.substring(7)));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9.substring(7)));
|
||||
} else if(var9.startsWith("%blur%")) {
|
||||
this.blurTexture = true;
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9.substring(6)));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9.substring(6)));
|
||||
} else {
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9));
|
||||
}
|
||||
|
||||
int var5 = ((Integer)this.textureMap.get(var9)).intValue();
|
||||
|
@ -409,12 +412,12 @@ public class RenderEngine {
|
|||
try {
|
||||
if(var9.startsWith("%clamp%")) {
|
||||
this.clampTexture = true;
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9.substring(7)));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9.substring(7)));
|
||||
} else if(var9.startsWith("%blur%")) {
|
||||
this.blurTexture = true;
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9.substring(6)));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9.substring(6)));
|
||||
} else {
|
||||
var4 = this.readTextureImage(GL11.getResourceAsStream(var9));
|
||||
var4 = this.readTextureImage(var1.getResourceAsStream(var9));
|
||||
}
|
||||
|
||||
this.func_28147_a(var4, (int[])this.field_28151_c.get(var9));
|
||||
|
|
33
src/net/minecraft/src/TexturePackBase.java
Normal file
33
src/net/minecraft/src/TexturePackBase.java
Normal file
|
@ -0,0 +1,33 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import net.PeytonPlayz585.awt.image.ImageIO;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public abstract class TexturePackBase {
|
||||
public String texturePackFileName;
|
||||
public String firstDescriptionLine;
|
||||
public String secondDescriptionLine;
|
||||
public String field_6488_d;
|
||||
|
||||
public void func_6482_a() {
|
||||
}
|
||||
|
||||
public void closeTexturePackFile() {
|
||||
}
|
||||
|
||||
public void func_6485_a(Minecraft var1) throws IOException {
|
||||
}
|
||||
|
||||
public void func_6484_b(Minecraft var1) {
|
||||
}
|
||||
|
||||
public void bindThumbnailTexture(Minecraft var1) {
|
||||
}
|
||||
|
||||
public InputStream getResourceAsStream(String var1) {
|
||||
return ImageIO.getResourceAsStream(var1);
|
||||
}
|
||||
}
|
126
src/net/minecraft/src/TexturePackCustom.java
Normal file
126
src/net/minecraft/src/TexturePackCustom.java
Normal file
|
@ -0,0 +1,126 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.zip.ZipEntry;
|
||||
|
||||
import net.PeytonPlayz585.awt.image.BufferedImage;
|
||||
import net.PeytonPlayz585.awt.image.ImageIO;
|
||||
import net.PeytonPlayz585.fileutils.FileEntry;
|
||||
import net.PeytonPlayz585.util.zip.ZipFile;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class TexturePackCustom extends TexturePackBase {
|
||||
private ZipFile texturePackZipFile;
|
||||
private int texturePackName = -1;
|
||||
private BufferedImage texturePackThumbnail;
|
||||
private FileEntry texturePackFile;
|
||||
|
||||
public TexturePackCustom(FileEntry var1) {
|
||||
this.texturePackFileName = var1.getName();
|
||||
this.texturePackFile = var1;
|
||||
}
|
||||
|
||||
private String truncateString(String var1) {
|
||||
if(var1 != null && var1.length() > 34) {
|
||||
var1 = var1.substring(0, 34);
|
||||
}
|
||||
|
||||
return var1;
|
||||
}
|
||||
|
||||
public void func_6485_a(Minecraft var1) throws IOException {
|
||||
ZipFile var2 = null;
|
||||
InputStream var3 = null;
|
||||
|
||||
try {
|
||||
var2 = new ZipFile(this.texturePackFile);
|
||||
|
||||
try {
|
||||
var3 = var2.getInputStream(var2.getEntry("pack.txt"));
|
||||
BufferedReader var4 = new BufferedReader(new InputStreamReader(var3));
|
||||
this.firstDescriptionLine = this.truncateString(var4.readLine());
|
||||
this.secondDescriptionLine = this.truncateString(var4.readLine());
|
||||
var4.close();
|
||||
var3.close();
|
||||
} catch (Exception var20) {
|
||||
}
|
||||
|
||||
try {
|
||||
var3 = var2.getInputStream(var2.getEntry("pack.png"));
|
||||
this.texturePackThumbnail = ImageIO.read(var3);
|
||||
var3.close();
|
||||
} catch (Exception var19) {
|
||||
}
|
||||
|
||||
var2.close();
|
||||
} catch (Exception var21) {
|
||||
var21.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
var3.close();
|
||||
} catch (Exception var18) {
|
||||
}
|
||||
|
||||
try {
|
||||
var2.close();
|
||||
} catch (Exception var17) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void func_6484_b(Minecraft var1) {
|
||||
if(this.texturePackThumbnail != null) {
|
||||
var1.renderEngine.deleteTexture(this.texturePackName);
|
||||
}
|
||||
|
||||
this.closeTexturePackFile();
|
||||
}
|
||||
|
||||
public void bindThumbnailTexture(Minecraft var1) {
|
||||
if(this.texturePackThumbnail != null && this.texturePackName < 0) {
|
||||
this.texturePackName = var1.renderEngine.allocateAndSetupTexture(this.texturePackThumbnail);
|
||||
}
|
||||
|
||||
if(this.texturePackThumbnail != null) {
|
||||
var1.renderEngine.bindTexture(this.texturePackName);
|
||||
} else {
|
||||
GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/unknown_pack.png"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void func_6482_a() {
|
||||
try {
|
||||
this.texturePackZipFile = new ZipFile(this.texturePackFile);
|
||||
} catch (Exception var2) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void closeTexturePackFile() {
|
||||
try {
|
||||
this.texturePackZipFile.close();
|
||||
} catch (Exception var2) {
|
||||
}
|
||||
|
||||
this.texturePackZipFile = null;
|
||||
}
|
||||
|
||||
public InputStream getResourceAsStream(String var1) {
|
||||
try {
|
||||
ZipEntry var2 = this.texturePackZipFile.getEntry(var1.substring(1));
|
||||
if(var2 != null) {
|
||||
return this.texturePackZipFile.getInputStream(var2);
|
||||
}
|
||||
} catch (Exception var3) {
|
||||
}
|
||||
|
||||
return ImageIO.getResourceAsStream(var1);
|
||||
}
|
||||
}
|
45
src/net/minecraft/src/TexturePackDefault.java
Normal file
45
src/net/minecraft/src/TexturePackDefault.java
Normal file
|
@ -0,0 +1,45 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import net.PeytonPlayz585.awt.image.BufferedImage;
|
||||
import net.PeytonPlayz585.awt.image.ImageIO;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class TexturePackDefault extends TexturePackBase {
|
||||
private int texturePackName = -1;
|
||||
private BufferedImage texturePackThumbnail;
|
||||
|
||||
public TexturePackDefault() {
|
||||
this.texturePackFileName = "Default";
|
||||
this.firstDescriptionLine = "The default look of Minecraft";
|
||||
|
||||
try {
|
||||
this.texturePackThumbnail = ImageIO.read(ImageIO.getResource("/pack.png"));
|
||||
} catch (Exception var2) {
|
||||
var2.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void func_6484_b(Minecraft var1) {
|
||||
if(this.texturePackThumbnail != null) {
|
||||
var1.renderEngine.deleteTexture(this.texturePackName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void bindThumbnailTexture(Minecraft var1) {
|
||||
if(this.texturePackThumbnail != null && this.texturePackName < 0) {
|
||||
this.texturePackName = var1.renderEngine.allocateAndSetupTexture(this.texturePackThumbnail);
|
||||
}
|
||||
|
||||
if(this.texturePackThumbnail != null) {
|
||||
var1.renderEngine.bindTexture(this.texturePackName);
|
||||
} else {
|
||||
GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1.renderEngine.getTexture("/gui/unknown_pack.png"));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
104
src/net/minecraft/src/TexturePackList.java
Normal file
104
src/net/minecraft/src/TexturePackList.java
Normal file
|
@ -0,0 +1,104 @@
|
|||
package net.minecraft.src;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.PeytonPlayz585.fileutils.File;
|
||||
import net.PeytonPlayz585.fileutils.FileEntry;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class TexturePackList {
|
||||
private List availableTexturePacks = new ArrayList();
|
||||
private TexturePackBase defaultTexturePack = new TexturePackDefault();
|
||||
public TexturePackBase selectedTexturePack;
|
||||
private Map field_6538_d = new HashMap();
|
||||
private Minecraft mc;
|
||||
private String texturePackDir;
|
||||
private String currentTexturePack;
|
||||
|
||||
public TexturePackList(Minecraft var1, String var2) {
|
||||
this.mc = var1;
|
||||
this.texturePackDir = var2 + "/texturepacks";
|
||||
|
||||
//if(!this.texturePackDir.exists()) {
|
||||
//this.texturePackDir.mkdirs();
|
||||
//}
|
||||
|
||||
this.currentTexturePack = var1.gameSettings.skin;
|
||||
this.updateAvaliableTexturePacks();
|
||||
this.selectedTexturePack.func_6482_a();
|
||||
}
|
||||
|
||||
public boolean setTexturePack(TexturePackBase var1) {
|
||||
if(var1 == this.selectedTexturePack) {
|
||||
return false;
|
||||
} else {
|
||||
this.selectedTexturePack.closeTexturePackFile();
|
||||
this.currentTexturePack = var1.texturePackFileName;
|
||||
this.selectedTexturePack = var1;
|
||||
this.mc.gameSettings.skin = this.currentTexturePack;
|
||||
this.mc.gameSettings.saveOptions();
|
||||
this.selectedTexturePack.func_6482_a();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public void updateAvaliableTexturePacks() {
|
||||
ArrayList var1 = new ArrayList();
|
||||
this.selectedTexturePack = null;
|
||||
var1.add(this.defaultTexturePack);
|
||||
//if(this.texturePackDir.exists() && this.texturePackDir.isDirectory()) {
|
||||
FileEntry[] var2 = File.listFiles(this.texturePackDir);
|
||||
FileEntry[] var3 = var2;
|
||||
int var4 = var2.length;
|
||||
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
FileEntry var6 = var3[var5];
|
||||
if(var6.isFile() && var6.getName().toLowerCase().endsWith(".zip")) {
|
||||
String var7 = var6.getName() + ":" + var6.length() + ":" + var6.lastModified();
|
||||
|
||||
try {
|
||||
if(!this.field_6538_d.containsKey(var7)) {
|
||||
TexturePackCustom var8 = new TexturePackCustom(var6);
|
||||
var8.field_6488_d = var7;
|
||||
this.field_6538_d.put(var7, var8);
|
||||
var8.func_6485_a(this.mc);
|
||||
}
|
||||
|
||||
TexturePackBase var12 = (TexturePackBase)this.field_6538_d.get(var7);
|
||||
if(var12.texturePackFileName.equals(this.currentTexturePack)) {
|
||||
this.selectedTexturePack = var12;
|
||||
}
|
||||
|
||||
var1.add(var12);
|
||||
} catch (IOException var9) {
|
||||
var9.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
if(this.selectedTexturePack == null) {
|
||||
this.selectedTexturePack = this.defaultTexturePack;
|
||||
}
|
||||
|
||||
this.availableTexturePacks.removeAll(var1);
|
||||
Iterator var10 = this.availableTexturePacks.iterator();
|
||||
|
||||
while(var10.hasNext()) {
|
||||
TexturePackBase var11 = (TexturePackBase)var10.next();
|
||||
var11.func_6484_b(this.mc);
|
||||
this.field_6538_d.remove(var11.field_6488_d);
|
||||
}
|
||||
|
||||
this.availableTexturePacks = var1;
|
||||
}
|
||||
|
||||
public List availableTexturePacks() {
|
||||
return new ArrayList(this.availableTexturePacks);
|
||||
}
|
||||
}
|
|
@ -4394,8 +4394,8 @@ public class GL11 implements JSObject {
|
|||
@JSBody(params = { }, script = "return window.assetsURI;")
|
||||
private static native String getAssetsURI();
|
||||
|
||||
public static final void initializeContext(String assetsURI) {
|
||||
HTMLElement rootElement = Window.current().getDocument().getBody();
|
||||
public static final void initializeContext(HTMLElement gameContainer, String assetsURI) {
|
||||
HTMLElement rootElement = gameContainer;
|
||||
parent = rootElement;
|
||||
String s = parent.getAttribute("style");
|
||||
parent.setAttribute("style", (s == null ? "" : s)+"overflow-x:hidden;overflow-y:hidden;");
|
||||
|
|
Loading…
Reference in New Issue
Block a user