diff --git a/src/main/java/net/minecraft/src/GameSettings.java b/src/main/java/net/minecraft/src/GameSettings.java index 9416cfd..1edbb0b 100644 --- a/src/main/java/net/minecraft/src/GameSettings.java +++ b/src/main/java/net/minecraft/src/GameSettings.java @@ -81,7 +81,6 @@ public class GameSettings { if(var1 == 6) { this.anaglyph = !this.anaglyph; - this.mc.renderEngine.refreshTextures(); } if(var1 == 7) { diff --git a/src/main/java/net/minecraft/src/Minecraft.java b/src/main/java/net/minecraft/src/Minecraft.java index b16dd43..3270ff4 100644 --- a/src/main/java/net/minecraft/src/Minecraft.java +++ b/src/main/java/net/minecraft/src/Minecraft.java @@ -1,26 +1,19 @@ package net.minecraft.src; -import java.awt.Canvas; -import java.awt.Color; -import java.awt.Component; -import java.awt.Graphics; import java.io.File; -import net.minecraft.client.MinecraftApplet; import org.lwjgl.LWJGLException; -import org.lwjgl.input.Controllers; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; -import org.lwjgl.opengl.DisplayMode; import org.lwjgl.opengl.GL11; -import org.lwjgl.util.glu.GLU; + +import net.PeytonPlayz585.opengl.LWJGLMain; public abstract class Minecraft implements Runnable { public PlayerController playerController = new PlayerControllerSP(this); private boolean fullscreen = false; public int displayWidth; public int displayHeight; - private OpenGlCapsChecker glCapabilities; private Timer timer = new Timer(20.0F); public World theWorld; public RenderGlobal renderGlobal; @@ -28,7 +21,6 @@ public abstract class Minecraft implements Runnable { public EffectRenderer effectRenderer; public Session session = null; public String minecraftUri; - public Canvas mcCanvas; public boolean appletMode = true; public volatile boolean isGamePaused = false; public RenderEngine renderEngine; @@ -48,7 +40,6 @@ public abstract class Minecraft implements Runnable { public ModelBiped playerModelBiped = new ModelBiped(0.0F); public MovingObjectPosition objectMouseOver = null; public GameSettings gameSettings; - protected MinecraftApplet mcApplet; public SoundManager sndManager = new SoundManager(); public MouseHelper mouseHelper; public File mcDataDir; @@ -65,13 +56,11 @@ public abstract class Minecraft implements Runnable { public boolean isRaining = false; long systemTime = System.currentTimeMillis(); - public Minecraft(Component var1, Canvas var2, MinecraftApplet var3, int var4, int var5, boolean var6) { + public Minecraft(int var4, int var5, boolean var6) { this.tempDisplayWidth = var4; this.tempDisplayHeight = var5; this.fullscreen = var6; - this.mcApplet = var3; new ThreadSleepForever(this, "Timer hack thread"); - this.mcCanvas = var2; this.displayWidth = var4; this.displayHeight = var5; this.fullscreen = var6; @@ -83,64 +72,17 @@ public abstract class Minecraft implements Runnable { } public void startGame() throws LWJGLException { - if(this.mcCanvas != null) { - Graphics var1 = this.mcCanvas.getGraphics(); - if(var1 != null) { - var1.setColor(Color.BLACK); - var1.fillRect(0, 0, this.displayWidth, this.displayHeight); - var1.dispose(); - } - - Display.setParent(this.mcCanvas); - } else if(this.fullscreen) { - Display.setFullscreen(true); - this.displayWidth = Display.getDisplayMode().getWidth(); - this.displayHeight = Display.getDisplayMode().getHeight(); - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - } else { - Display.setDisplayMode(new DisplayMode(this.displayWidth, this.displayHeight)); - } - - Display.setTitle("Minecraft Minecraft Infdev"); - - try { - Display.create(); - } catch (LWJGLException var6) { - var6.printStackTrace(); - - try { - Thread.sleep(1000L); - } catch (InterruptedException var5) { - } - - Display.create(); - } - this.mcDataDir = getMinecraftDir(); this.gameSettings = new GameSettings(this, this.mcDataDir); this.renderEngine = new RenderEngine(this.gameSettings); this.fontRenderer = new FontRenderer(this.gameSettings, "/default.png", this.renderEngine); this.loadScreen(); - Keyboard.create(); - Mouse.create(); - this.mouseHelper = new MouseHelper(this.mcCanvas); - - try { - Controllers.create(); - } catch (Exception var4) { - var4.printStackTrace(); - } + this.mouseHelper = new MouseHelper(); this.checkGLError("Pre startup"); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glClearDepth(1.0D); + GL11.glClearDepth((float)1.0D); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDepthFunc(GL11.GL_LEQUAL); GL11.glEnable(GL11.GL_ALPHA_TEST); @@ -150,7 +92,6 @@ public abstract class Minecraft implements Runnable { GL11.glLoadIdentity(); GL11.glMatrixMode(GL11.GL_MODELVIEW); this.checkGLError("Startup"); - this.glCapabilities = new OpenGlCapsChecker(); this.sndManager.loadSoundSettings(this.gameSettings); this.renderEngine.registerTextureFX(this.textureLavaFX); this.renderEngine.registerTextureFX(this.textureWaterFX); @@ -206,7 +147,6 @@ public abstract class Minecraft implements Runnable { GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); this.fontRenderer.drawStringWithShadow("Loading...", 8, this.displayHeight / 2 - 16, -1); - Display.swapBuffers(); } public static File getMinecraftDir() { @@ -282,7 +222,7 @@ public abstract class Minecraft implements Runnable { private void checkGLError(String var1) { int var2 = GL11.glGetError(); if(var2 != 0) { - String var3 = GLU.gluErrorString(var2); + String var3 = GL11.gluErrorString(var2); System.out.println("########## GL ERROR ##########"); System.out.println("@ " + var1); System.out.println(var2 + ": " + var3); @@ -292,32 +232,17 @@ public abstract class Minecraft implements Runnable { } public void shutdownMinecraftApplet() { - if(this.mcApplet != null) { - this.mcApplet.clearApplet(); - } - try { if(this.downloadResourcesThread != null) { this.downloadResourcesThread.closeMinecraft(); } } catch (Exception var8) { } - - try { - System.out.println("Stopping!"); - this.changeWorld1((World)null); - - try { - GLAllocation.deleteTexturesAndDisplayLists(); - } catch (Exception var6) { - } - - this.sndManager.closeMinecraft(); - Mouse.destroy(); - Keyboard.destroy(); - } finally { - Display.destroy(); - } + + System.out.println("Stopping!"); + this.changeWorld1((World)null); + GLAllocation.deleteTexturesAndDisplayLists(); + this.sndManager.closeMinecraft(); System.gc(); } @@ -337,13 +262,10 @@ public abstract class Minecraft implements Runnable { long var1 = System.currentTimeMillis(); int var3 = 0; - while(this.running && (this.mcApplet == null || this.mcApplet.isActive())) { + while(this.running) { AxisAlignedBB.clearBoundingBoxPool(); Vec3D.initialize(); - if(this.mcCanvas == null && Display.isCloseRequested()) { - this.shutdown(); - } - + if(this.isGamePaused) { float var4 = this.timer.renderPartialTicks; this.timer.updateTimer(); @@ -374,11 +296,7 @@ public abstract class Minecraft implements Runnable { this.entityRenderer.updateCameraAndRender(this.timer.renderPartialTicks); } - if(!Display.isActive() && this.fullscreen) { - this.toggleFullscreen(); - } - - if(Keyboard.isKeyDown(Keyboard.KEY_F6)) { + if(Keyboard.isKeyDown(33) && Keyboard.isKeyDown(7)) { this.displayDebugInfo(); } else { this.prevFrameTime = System.nanoTime(); @@ -386,9 +304,9 @@ public abstract class Minecraft implements Runnable { Thread.yield(); Display.update(); - if(this.mcCanvas != null && !this.fullscreen && (this.mcCanvas.getWidth() != this.displayWidth || this.mcCanvas.getHeight() != this.displayHeight)) { - this.displayWidth = this.mcCanvas.getWidth(); - this.displayHeight = this.mcCanvas.getHeight(); + if(LWJGLMain.canvas.getWidth() != this.displayWidth || LWJGLMain.canvas.getHeight() != this.displayHeight) { + this.displayWidth = LWJGLMain.canvas.getWidth(); + this.displayHeight = LWJGLMain.canvas.getHeight(); if(this.displayWidth <= 0) { this.displayWidth = 1; } @@ -602,61 +520,6 @@ public abstract class Minecraft implements Runnable { } } - public void toggleFullscreen() { - try { - this.fullscreen = !this.fullscreen; - System.out.println("Toggle fullscreen!"); - if(this.fullscreen) { - Display.setDisplayMode(Display.getDesktopDisplayMode()); - this.displayWidth = Display.getDisplayMode().getWidth(); - this.displayHeight = Display.getDisplayMode().getHeight(); - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - } else { - if(this.mcCanvas != null) { - this.displayWidth = this.mcCanvas.getWidth(); - this.displayHeight = this.mcCanvas.getHeight(); - } else { - this.displayWidth = this.tempDisplayWidth; - this.displayHeight = this.tempDisplayHeight; - } - - if(this.displayWidth <= 0) { - this.displayWidth = 1; - } - - if(this.displayHeight <= 0) { - this.displayHeight = 1; - } - - Display.setDisplayMode(new DisplayMode(this.tempDisplayWidth, this.tempDisplayHeight)); - } - - this.setIngameNotInFocus(); - Display.setFullscreen(this.fullscreen); - Display.update(); - Thread.sleep(1000L); - if(this.fullscreen) { - this.setIngameFocus(); - } - - if(this.currentScreen != null) { - this.setIngameNotInFocus(); - this.resize(this.displayWidth, this.displayHeight); - } - - System.out.println("Size: " + this.displayWidth + ", " + this.displayHeight); - } catch (Exception var2) { - var2.printStackTrace(); - } - - } - private void resize(int var1, int var2) { if(var1 <= 0) { var1 = 1; @@ -704,9 +567,6 @@ public abstract class Minecraft implements Runnable { } GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/terrain.png")); - if(!this.isGamePaused) { - this.renderEngine.updateDynamicTextures(); - } if(this.currentScreen == null && this.thePlayer != null && this.thePlayer.health <= 0) { this.displayGuiScreen((GuiScreen)null); @@ -746,48 +606,44 @@ public abstract class Minecraft implements Runnable { this.thePlayer.handleKeyPress(Keyboard.getEventKey(), Keyboard.getEventKeyState()); } while(!Keyboard.getEventKeyState()); - - if(Keyboard.getEventKey() == Keyboard.KEY_F11) { - this.toggleFullscreen(); + + if(this.currentScreen != null) { + this.currentScreen.handleKeyboardInput(); } else { - if(this.currentScreen != null) { - this.currentScreen.handleKeyboardInput(); - } else { - if(Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) { - this.displayInGameMenu(); + if(Keyboard.getEventKey() == 1) { + this.displayInGameMenu(); + } + + if(this.playerController instanceof PlayerControllerCreative) { + if(Keyboard.getEventKey() == this.gameSettings.keyBindLoad.keyCode) { } - if(this.playerController instanceof PlayerControllerCreative) { - if(Keyboard.getEventKey() == this.gameSettings.keyBindLoad.keyCode) { - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindSave.keyCode) { - } - } - - if(Keyboard.getEventKey() == Keyboard.KEY_F5) { - this.gameSettings.thirdPersonView = !this.gameSettings.thirdPersonView; - this.isRaining = !this.isRaining; - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindInventory.keyCode) { - this.displayGuiScreen(new GuiInventory(this.thePlayer.inventory)); - } - - if(Keyboard.getEventKey() == this.gameSettings.keyBindDrop.keyCode) { - this.thePlayer.dropPlayerItemWithRandomChoice(this.thePlayer.inventory.decrStackSize(this.thePlayer.inventory.currentItem, 1), false); + if(Keyboard.getEventKey() == this.gameSettings.keyBindSave.keyCode) { } } - for(int var4 = 0; var4 < 9; ++var4) { - if(Keyboard.getEventKey() == Keyboard.KEY_1 + var4) { - this.thePlayer.inventory.currentItem = var4; - } + if(Keyboard.getEventKey() == 33 && Keyboard.isKeyDown(6)) { + this.gameSettings.thirdPersonView = !this.gameSettings.thirdPersonView; + this.isRaining = !this.isRaining; } - if(Keyboard.getEventKey() == this.gameSettings.keyBindToggleFog.keyCode) { - this.gameSettings.setOptionFloatValue(4, !Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !Keyboard.isKeyDown(Keyboard.KEY_RSHIFT) ? 1 : -1); + if(Keyboard.getEventKey() == this.gameSettings.keyBindInventory.keyCode) { + this.displayGuiScreen(new GuiInventory(this.thePlayer.inventory)); } + + if(Keyboard.getEventKey() == this.gameSettings.keyBindDrop.keyCode) { + this.thePlayer.dropPlayerItemWithRandomChoice(this.thePlayer.inventory.decrStackSize(this.thePlayer.inventory.currentItem, 1), false); + } + } + + for(int var4 = 0; var4 < 9; ++var4) { + if(Keyboard.getEventKey() == 2 + var4) { + this.thePlayer.inventory.currentItem = var4; + } + } + + if(Keyboard.getEventKey() == this.gameSettings.keyBindToggleFog.keyCode) { + this.gameSettings.setOptionFloatValue(4, !Keyboard.isKeyDown(42) && !Keyboard.isKeyDown(54) ? 1 : -1); } } } @@ -988,10 +844,6 @@ public abstract class Minecraft implements Runnable { } - public OpenGlCapsChecker getOpenGlCapsChecker() { - return this.glCapabilities; - } - public String debugInfoRenders() { return this.renderGlobal.getDebugInfoRenders(); } diff --git a/src/main/java/net/minecraft/src/MinecraftAppletImpl.java b/src/main/java/net/minecraft/src/MinecraftAppletImpl.java deleted file mode 100644 index 647fd9b..0000000 --- a/src/main/java/net/minecraft/src/MinecraftAppletImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.minecraft.src; - -import java.awt.Canvas; -import java.awt.Component; -import net.minecraft.client.MinecraftApplet; - -public class MinecraftAppletImpl extends Minecraft { - final MinecraftApplet mainFrame; - - public MinecraftAppletImpl(MinecraftApplet var1, Component var2, Canvas var3, MinecraftApplet var4, int var5, int var6, boolean var7) { - super(var2, var3, var4, var5, var6, var7); - this.mainFrame = var1; - } - - public void displayUnexpectedThrowable(UnexpectedThrowable var1) { - this.mainFrame.removeAll(); - this.mainFrame.add(new PanelCrashReport(var1), "Center"); - this.mainFrame.validate(); - } -} diff --git a/src/main/java/net/minecraft/src/MouseHelper.java b/src/main/java/net/minecraft/src/MouseHelper.java index 63f3071..f194c00 100644 --- a/src/main/java/net/minecraft/src/MouseHelper.java +++ b/src/main/java/net/minecraft/src/MouseHelper.java @@ -5,13 +5,13 @@ import net.PeytonPlayz585.opengl.LWJGLMain; public class MouseHelper { - public void grabMouse() { + public void grabMouseCursor() { Mouse.setNativeCursor(true); deltaX = 0; deltaY = 0; } - public void ungrabMouse() { + public void ungrabMouseCursor() { Mouse.setCursorPosition(LWJGLMain.getCanvasWidth() / 2, LWJGLMain.getCanvasHeight() / 2); Mouse.setNativeCursor(false); } diff --git a/src/main/java/net/minecraft/src/RenderEngine.java b/src/main/java/net/minecraft/src/RenderEngine.java index eacb516..76a3aa8 100644 --- a/src/main/java/net/minecraft/src/RenderEngine.java +++ b/src/main/java/net/minecraft/src/RenderEngine.java @@ -1,254 +1,202 @@ package net.minecraft.src; -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.awt.image.ImageObserver; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import javax.imageio.ImageIO; + import org.lwjgl.opengl.GL11; +import net.PeytonPlayz585.opengl.LWJGLMain; +import net.PeytonPlayz585.opengl.MinecraftImageData; + public class RenderEngine { - private HashMap textureMap = new HashMap(); - private HashMap textureContentsMap = new HashMap(); - private IntBuffer singleIntBuffer = GLAllocation.createIntBuffer(1); - private ByteBuffer imageData = GLAllocation.createDirectByteBuffer(262144); - private List textureList = new ArrayList(); - private Map urlToImageDataMap = new HashMap(); - private GameSettings options; - private boolean clampTexture = false; - public RenderEngine(GameSettings var1) { - this.options = var1; + public RenderEngine(GameSettings gamesettings) { + textureMap = new HashMap(); + textureNameToImageMap = new HashMap(); + singleIntBuffer = GLAllocation.createIntBuffer(1); + imageDataB1 = GLAllocation.createByteBuffer(0x100000); + imageDataB2 = GLAllocation.createByteBuffer(0x100000); + textureList = new ArrayList(); + clampTexture = false; + blurTexture = false; + options = gamesettings; } - public int getTexture(String var1) { - Integer var2 = (Integer)this.textureMap.get(var1); - if(var2 != null) { - return var2.intValue(); - } else { - try { - this.singleIntBuffer.clear(); - GLAllocation.generateDisplayLists(this.singleIntBuffer); - int var4 = this.singleIntBuffer.get(0); - if(var1.startsWith("##")) { - this.setupTexture(this.unwrapImageByColumns(ImageIO.read(RenderEngine.class.getResourceAsStream(var1.substring(2)))), var4); - } else if(var1.startsWith("%%")) { - this.clampTexture = true; - this.setupTexture(ImageIO.read(RenderEngine.class.getResourceAsStream(var1.substring(2))), var4); - this.clampTexture = false; - } else { - this.setupTexture(ImageIO.read(RenderEngine.class.getResourceAsStream(var1)), var4); - } - - this.textureMap.put(var1, Integer.valueOf(var4)); - return var4; - } catch (IOException var3) { - throw new RuntimeException("!!"); - } + public int getTexture(String s) { + Integer integer = (Integer) textureMap.get(s); + if (integer != null) { + return integer.intValue(); } - } - - private BufferedImage unwrapImageByColumns(BufferedImage var1) { - int var2 = var1.getWidth() / 16; - BufferedImage var3 = new BufferedImage(16, var1.getHeight() * var2, 2); - Graphics var4 = var3.getGraphics(); - - for(int var5 = 0; var5 < var2; ++var5) { - var4.drawImage(var1, -var5 * 16, var5 * var1.getHeight(), (ImageObserver)null); - } - - var4.dispose(); - return var3; - } - - public int allocateAndSetupTexture(BufferedImage var1) { - this.singleIntBuffer.clear(); - GLAllocation.generateDisplayLists(this.singleIntBuffer); - int var2 = this.singleIntBuffer.get(0); - this.setupTexture(var1, var2); - this.textureContentsMap.put(Integer.valueOf(var2), var1); - return var2; - } - - public void setupTexture(BufferedImage var1, int var2) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); - if(this.clampTexture) { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_CLAMP); - } else { - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); - GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); - } - - int var3 = var1.getWidth(); - int var4 = var1.getHeight(); - int[] var5 = new int[var3 * var4]; - byte[] var6 = new byte[var3 * var4 * 4]; - var1.getRGB(0, 0, var3, var4, var5, 0, var3); - - for(int var7 = 0; var7 < var5.length; ++var7) { - int var8 = var5[var7] >> 24 & 255; - int var9 = var5[var7] >> 16 & 255; - int var10 = var5[var7] >> 8 & 255; - int var11 = var5[var7] & 255; - if(this.options != null && this.options.anaglyph) { - int var12 = (var9 * 30 + var10 * 59 + var11 * 11) / 100; - int var13 = (var9 * 30 + var10 * 70) / 100; - int var14 = (var9 * 30 + var11 * 70) / 100; - var9 = var12; - var10 = var13; - var11 = var14; - } - - var6[var7 * 4 + 0] = (byte)var9; - var6[var7 * 4 + 1] = (byte)var10; - var6[var7 * 4 + 2] = (byte)var11; - var6[var7 * 4 + 3] = (byte)var8; - } - - this.imageData.clear(); - this.imageData.put(var6); - this.imageData.position(0).limit(var6.length); - GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, var3, var4, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - - public void deleteTexture(int var1) { - this.textureContentsMap.remove(Integer.valueOf(var1)); - this.singleIntBuffer.clear(); - this.singleIntBuffer.put(var1); - this.singleIntBuffer.flip(); - GL11.glDeleteTextures(this.singleIntBuffer); - } - - public int getTextureForDownloadableImage(String var1, String var2) { - ThreadDownloadImageData var3 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var3 != null && var3.image != null && !var3.textureSetupComplete) { - if(var3.textureName < 0) { - var3.textureName = this.allocateAndSetupTexture(var3.image); + try { + singleIntBuffer.clear(); + GLAllocation.generateTextureNames(singleIntBuffer); + int i = singleIntBuffer.get(0); + if (s.startsWith("%clamp%")) { + clampTexture = true; + setupTexture(readTextureImage(LWJGLMain.loadResourceBytes(s.substring(7))), i); + clampTexture = false; + } else if (s.startsWith("%blur%")) { + blurTexture = true; + setupTexture(readTextureImage(LWJGLMain.loadResourceBytes(s.substring(6))), i); + blurTexture = false; } else { - this.setupTexture(var3.image, var3.textureName); + if(s.equals("/terrain.png")) { + useMipmaps = true; + } + setupTexture(readTextureImage(LWJGLMain.loadResourceBytes(s)), i); + useMipmaps = false; } - - var3.textureSetupComplete = true; + textureMap.put(s, Integer.valueOf(i)); + return i; + } catch (IOException ioexception) { + throw new RuntimeException("!!"); } - - return var3 != null && var3.textureName >= 0 ? var3.textureName : this.getTexture(var2); + } + + public int allocateAndSetupTexture(MinecraftImageData bufferedimage) { + singleIntBuffer.clear(); + GLAllocation.generateTextureNames(singleIntBuffer); + int i = singleIntBuffer.get(0); + setupTexture(bufferedimage, i); + textureNameToImageMap.put(Integer.valueOf(i), bufferedimage); + return i; + } + + public int allocateAndSetupTexture(byte[] data, int w, int h) { + int i = GL11.glGenTextures(); + bindTexture(i); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9729 /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9728 /* GL_NEAREST */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10497 /* GL_REPEAT */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10497 /* GL_REPEAT */); + imageDataB1.clear(); + imageDataB1.put(data); + imageDataB1.position(0).limit(data.length); + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, 0, 6408 /* GL_RGBA */, w, h, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB1); + return i; } - public ThreadDownloadImageData obtainImageData(String var1, ImageBuffer var2) { - ThreadDownloadImageData var3 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var3 == null) { - this.urlToImageDataMap.put(var1, new ThreadDownloadImageData(var1, var2)); + public void setupTexture(MinecraftImageData bufferedimage, int i) { + bindTexture(i); + if (useMipmaps) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, GL11.GL_NEAREST_MIPMAP_LINEAR); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, GL11.GL_NEAREST /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, GL11.GL_TEXTURE_MAX_LEVEL, 4); } else { - ++var3.referenceCount; + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9728 /* GL_NEAREST */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9728 /* GL_NEAREST */); } + if (blurTexture) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10241 /* GL_TEXTURE_MIN_FILTER */, 9729 /* GL_LINEAR */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10240 /* GL_TEXTURE_MAG_FILTER */, 9729 /* GL_LINEAR */); + } + if (clampTexture) { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10496 /* GL_CLAMP */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10496 /* GL_CLAMP */); + } else { + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10242 /* GL_TEXTURE_WRAP_S */, 10497 /* GL_REPEAT */); + GL11.glTexParameteri(3553 /* GL_TEXTURE_2D */, 10243 /* GL_TEXTURE_WRAP_T */, 10497 /* GL_REPEAT */); + } + int j = bufferedimage.w; + int k = bufferedimage.h; + int ai[] = bufferedimage.data; + byte abyte0[] = new byte[j * k * 4]; + for (int l = 0; l < ai.length; l++) { + int j1 = ai[l] >> 24 & 0xff; + int l1 = ai[l] >> 16 & 0xff; + int j2 = ai[l] >> 8 & 0xff; + int l2 = ai[l] >> 0 & 0xff; + if (options != null && options.anaglyph) { + int j3 = (l1 * 30 + j2 * 59 + l2 * 11) / 100; + int l3 = (l1 * 30 + j2 * 70) / 100; + int j4 = (l1 * 30 + l2 * 70) / 100; + l1 = j3; + j2 = l3; + l2 = j4; + } + abyte0[l * 4 + 0] = (byte) l1; + abyte0[l * 4 + 1] = (byte) j2; + abyte0[l * 4 + 2] = (byte) l2; + abyte0[l * 4 + 3] = (byte) j1; + } + imageDataB1.clear(); + imageDataB1.put(abyte0); + imageDataB1.position(0).limit(abyte0.length); + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, 0, 6408 /* GL_RGBA */, j, k, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB1); + if (useMipmaps) { + for (int i1 = 1; i1 <= 4; i1++) { + int k1 = j >> i1 - 1; + int i2 = j >> i1; + int k2 = k >> i1; + imageDataB2.clear(); + for (int i3 = 0; i3 < i2; i3++) { + for (int k3 = 0; k3 < k2; k3++) { + int i4 = imageDataB1.getInt((i3 * 2 + 0 + (k3 * 2 + 0) * k1) * 4); + int k4 = imageDataB1.getInt((i3 * 2 + 1 + (k3 * 2 + 0) * k1) * 4); + int l4 = imageDataB1.getInt((i3 * 2 + 1 + (k3 * 2 + 1) * k1) * 4); + int i5 = imageDataB1.getInt((i3 * 2 + 0 + (k3 * 2 + 1) * k1) * 4); + int j5 = averageColor(averageColor(i4, k4), averageColor(l4, i5)); + imageDataB2.putInt((i3 + k3 * i2) * 4, j5); + } - return var3; - } - - public void releaseImageData(String var1) { - ThreadDownloadImageData var2 = (ThreadDownloadImageData)this.urlToImageDataMap.get(var1); - if(var2 != null) { - --var2.referenceCount; - if(var2.referenceCount == 0) { - if(var2.textureName >= 0) { - this.deleteTexture(var2.textureName); } - - this.urlToImageDataMap.remove(var1); + + GL11.glTexImage2D(3553 /* GL_TEXTURE_2D */, i1, 6408 /* GL_RGBA */, i2, k2, 0, 6408 /* GL_RGBA */, + 5121 /* GL_UNSIGNED_BYTE */, imageDataB2); + ByteBuffer tmp = imageDataB1; + imageDataB1 = imageDataB2; + imageDataB2 = tmp; } - } - } - - public void registerTextureFX(TextureFX var1) { - this.textureList.add(var1); - var1.onTick(); - } - - public void updateDynamicTextures() { - int var1; - TextureFX var2; - for(var1 = 0; var1 < this.textureList.size(); ++var1) { - var2 = (TextureFX)this.textureList.get(var1); - var2.anaglyphEnabled = this.options.anaglyph; - var2.onTick(); - this.imageData.clear(); - this.imageData.put(var2.imageData); - this.imageData.position(0).limit(var2.imageData.length); - - for(int var3 = 0; var3 < var2.tileSize; ++var3) { - for(int var4 = 0; var4 < var2.tileSize; ++var4) { - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, var2.iconIndex % 16 * 16 + var3 * 16, var2.iconIndex / 16 * 16 + var4 * 16, 16, 16, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - } - } - - for(var1 = 0; var1 < this.textureList.size(); ++var1) { - var2 = (TextureFX)this.textureList.get(var1); - if(var2.textureId > 0) { - this.imageData.clear(); - this.imageData.put(var2.imageData); - this.imageData.position(0).limit(var2.imageData.length); - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var2.textureId); - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 16, 16, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer)this.imageData); - } - } - - } - - public void refreshTextures() { - Iterator var1 = this.textureContentsMap.keySet().iterator(); - - BufferedImage var3; - while(var1.hasNext()) { - int var2 = ((Integer)var1.next()).intValue(); - var3 = (BufferedImage)this.textureContentsMap.get(Integer.valueOf(var2)); - this.setupTexture(var3, var2); - } - - ThreadDownloadImageData var6; - for(var1 = this.urlToImageDataMap.values().iterator(); var1.hasNext(); var6.textureSetupComplete = false) { - var6 = (ThreadDownloadImageData)var1.next(); - } - - var1 = this.textureMap.keySet().iterator(); - - while(var1.hasNext()) { - String var7 = (String)var1.next(); - - try { - if(var7.startsWith("##")) { - var3 = this.unwrapImageByColumns(ImageIO.read(RenderEngine.class.getResourceAsStream(var7.substring(2)))); - } else if(var7.startsWith("%%")) { - this.clampTexture = true; - var3 = ImageIO.read(RenderEngine.class.getResourceAsStream(var7.substring(2))); - this.clampTexture = false; - } else { - var3 = ImageIO.read(RenderEngine.class.getResourceAsStream(var7)); - } - - int var4 = ((Integer)this.textureMap.get(var7)).intValue(); - this.setupTexture(var3, var4); - } catch (IOException var5) { - var5.printStackTrace(); - } - } - - } - - public void bindTexture(int var1) { - if(var1 >= 0) { - GL11.glBindTexture(GL11.GL_TEXTURE_2D, var1); } } -} + + public void deleteTexture(int i) { + GL11.glDeleteTextures(i); + } + + public int getTextureForDownloadableImage(String s, String s1) { + return getTexture("/mob/char.png"); + } + + public void registerTextureFX(TextureFX texturefx) { + textureList.add(texturefx); + texturefx.onTick(); + } + + private int averageColor(int i, int j) { + int k = (i & 0xff000000) >> 24 & 0xff; + int l = (j & 0xff000000) >> 24 & 0xff; + return ((k + l >> 1) << 24) + ((i & 0xfefefe) + (j & 0xfefefe) >> 1); + + } + + private MinecraftImageData readTextureImage(byte[] inputstream) throws IOException { + return LWJGLMain.loadPNG(inputstream); + } + + public void bindTexture(int i) { + if (i < 0) { + return; + } else { + GL11.glBindTexture(3553 /* GL_TEXTURE_2D */, i); + return; + } + } + + public static boolean useMipmaps = false; + private HashMap textureMap; + private HashMap textureNameToImageMap; + private IntBuffer singleIntBuffer; + private ByteBuffer imageDataB1; + private ByteBuffer imageDataB2; + private java.util.List textureList; + private GameSettings options; + private boolean clampTexture; + private boolean blurTexture; +} \ No newline at end of file diff --git a/src/main/java/net/minecraft/src/RenderGlobal.java b/src/main/java/net/minecraft/src/RenderGlobal.java index bf0c3bd..ae05d48 100644 --- a/src/main/java/net/minecraft/src/RenderGlobal.java +++ b/src/main/java/net/minecraft/src/RenderGlobal.java @@ -1051,17 +1051,9 @@ public class RenderGlobal implements IWorldAccess { } public void obtainEntitySkin(Entity var1) { - if(var1.skinUrl != null) { - this.renderEngine.obtainImageData(var1.skinUrl, new ImageBufferDownload()); - } - } public void releaseEntitySkin(Entity var1) { - if(var1.skinUrl != null) { - this.renderEngine.releaseImageData(var1.skinUrl); - } - } public void updateAllRenderers() { diff --git a/src/main/java/org/lwjgl/LWJGLException.java b/src/main/java/org/lwjgl/LWJGLException.java new file mode 100644 index 0000000..4a57780 --- /dev/null +++ b/src/main/java/org/lwjgl/LWJGLException.java @@ -0,0 +1,5 @@ +package org.lwjgl; + +public class LWJGLException extends Exception { + +} diff --git a/src/main/java/org/lwjgl/input/Keyboard.java b/src/main/java/org/lwjgl/input/Keyboard.java index b323046..35ecbb0 100644 --- a/src/main/java/org/lwjgl/input/Keyboard.java +++ b/src/main/java/org/lwjgl/input/Keyboard.java @@ -27,5 +27,9 @@ public class Keyboard { public static void enableRepeatEvents(boolean b) { LWJGLMain.enableRepeatEvents(b); } + + public static boolean isKeyDown(int i) { + return LWJGLMain.isKeyDown(i); + } } diff --git a/src/main/java/org/lwjgl/input/Mouse.java b/src/main/java/org/lwjgl/input/Mouse.java index 25661fe..087c64f 100644 --- a/src/main/java/org/lwjgl/input/Mouse.java +++ b/src/main/java/org/lwjgl/input/Mouse.java @@ -47,5 +47,13 @@ public class Mouse { public static int getEventButton() { return LWJGLMain.mouseGetEventButton(); } + + public static boolean isButtonDown(int i) { + return LWJGLMain.mouseIsButtonDown(i); + } + + public static int getEventDWheel() { + return LWJGLMain.mouseGetEventDWheel(); + } } diff --git a/src/main/java/org/lwjgl/opengl/Display.java b/src/main/java/org/lwjgl/opengl/Display.java index f42d237..90736ce 100644 --- a/src/main/java/org/lwjgl/opengl/Display.java +++ b/src/main/java/org/lwjgl/opengl/Display.java @@ -1,5 +1,7 @@ package org.lwjgl.opengl; +import org.teavm.jso.dom.html.HTMLCanvasElement; + import net.PeytonPlayz585.opengl.LWJGLMain; public class Display { @@ -10,4 +12,8 @@ public class Display { public static void update() { LWJGLMain.updateDisplay(); } + + public static HTMLCanvasElement getDisplayMode() { + return LWJGLMain.canvas; + } }