Got it to compile with TeaVM!

This commit is contained in:
PeytonPlayz595 2023-10-11 15:33:43 +00:00
parent 508e2aea20
commit 624eb42878
19 changed files with 3465 additions and 5681 deletions

8459
js/app.js

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -152,7 +152,7 @@ public final class Minecraft implements Runnable {
GL11.glLoadIdentity(); GL11.glLoadIdentity();
GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glMatrixMode(GL11.GL_MODELVIEW);
checkGlError("Startup"); checkGlError("Startup");
this.font = new Font("/default.png", this.textures); this.font = new Font("/default.png");
IntBuffer var7 = BufferUtils.createIntBuffer(256); IntBuffer var7 = BufferUtils.createIntBuffer(256);
var7.clear().limit(256); var7.clear().limit(256);
GL11.glViewport(0, 0, this.width, this.height); GL11.glViewport(0, 0, this.width, this.height);

View File

@ -1,55 +1,101 @@
package com.mojang.minecraft.gui; package com.mojang.minecraft.gui;
import java.nio.IntBuffer;
import com.mojang.minecraft.renderer.Tesselator; import com.mojang.minecraft.renderer.Tesselator;
import com.mojang.minecraft.renderer.Textures; import com.mojang.minecraft.renderer.Textures;
import java.awt.image.BufferedImage; import com.mojang.minecraft.renderer.TextureLocation;
import net.PeytonPlayz585.opengl.LWJGLMain;
import net.PeytonPlayz585.opengl.MinecraftImageData;
import java.io.IOException; import java.io.IOException;
import javax.imageio.ImageIO;
import org.lwjgl.GLAllocation;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
public final class Font { public final class Font {
private int[] charWidths = new int[256]; private int charWidths[];
private int fontTexture = 0; public String fontTextureName;
private int fontDisplayLists;
private IntBuffer buffer;
public static final char formatChar = '\247';
public Font(String var1, Textures var2) {
BufferedImage var3;
try {
var3 = ImageIO.read(Textures.class.getResourceAsStream(var1));
} catch (IOException var13) {
throw new RuntimeException(var13);
}
int var4 = var3.getWidth(); public Font(String var1) {
int var5 = var3.getHeight(); charWidths = new int[256];
int[] var6 = new int[var4 * var5]; fontTextureName = null;
var3.getRGB(0, 0, var4, var5, var6, 0, var4); MinecraftImageData bufferedimage = GL11.loadPNG(GL11.loadResourceBytes(var1));
int i = bufferedimage.w;
for(int var14 = 0; var14 < 128; ++var14) { int j = bufferedimage.h;
var5 = var14 % 16; int ai[] = bufferedimage.data;
int var7 = var14 / 16; for (int k = 0; k < 256; k++) {
int var8 = 0; int l = k % 16;
int k1 = k / 16;
for(boolean var9 = false; var8 < 8 && !var9; ++var8) { int j2 = 7;
int var10 = (var5 << 3) + var8; do {
var9 = true; if (j2 < 0) {
break;
for(int var11 = 0; var11 < 8 && var9; ++var11) { }
int var12 = ((var7 << 3) + var11) * var4; int i3 = l * 8 + j2;
var12 = var6[var10 + var12] & 255; boolean flag = true;
if(var12 > 128) { for (int l3 = 0; l3 < 8 && flag; l3++) {
var9 = false; int i4 = (k1 * 8 + l3) * i;
int k4 = ai[i3 + i4] & 0xff;
if (k4 > 0) {
flag = false;
} }
} }
}
if(var14 == 32) { if (!flag) {
var8 = 4; break;
}
j2--;
} while (true);
if (k == 32) {
j2 = 2;
} }
charWidths[k] = j2 + 2;
this.charWidths[var14] = var8;
} }
this.fontTexture = var2.getTextureId(var1); fontTextureName = var1;
fontDisplayLists = GLAllocation.generateDisplayLists(288);
Tesselator tessellator = Tesselator.instance;
for (int i1 = 0; i1 < 256; i1++) {
GL11.glNewList(fontDisplayLists + i1, 4864 /* GL_COMPILE */);
tessellator.begin(7);
int l1 = (i1 % 16) * 8;
int k2 = (i1 / 16) * 8;
float f = 7.99F;
float f1 = 0.0F;
float f2 = 0.0F;
tessellator.vertexUV(0.0D, 0.0F + f, 0.0D, (float) l1 / 128F + f1, ((float) k2 + f) / 128F + f2);
tessellator.vertexUV(0.0F + f, 0.0F + f, 0.0D, ((float) l1 + f) / 128F + f1, ((float) k2 + f) / 128F + f2);
tessellator.vertexUV(0.0F + f, 0.0D, 0.0D, ((float) l1 + f) / 128F + f1, (float) k2 / 128F + f2);
tessellator.vertexUV(0.0D, 0.0D, 0.0D, (float) l1 / 128F + f1, (float) k2 / 128F + f2);
tessellator.end();
GL11.glEndList();
}
for (int j1 = 0; j1 < 32; j1++) {
int i2 = (j1 >> 3 & 1) * 85;
int l2 = (j1 >> 2 & 1) * 170 + i2;
int j3 = (j1 >> 1 & 1) * 170 + i2;
int k3 = (j1 >> 0 & 1) * 170 + i2;
if (j1 == 6) {
l2 += 85;
}
boolean flag1 = j1 >= 16;
if (flag1) {
l2 /= 4;
j3 /= 4;
k3 /= 4;
}
GL11.glNewList(fontDisplayLists + 256 + j1, 4864 /* GL_COMPILE */);
GL11.glColor3f((float) l2 / 255F, (float) j3 / 255F, (float) k3 / 255F);
GL11.glEndList();
}
} }
public final void drawShadow(String var1, int var2, int var3, int var4) { public final void drawShadow(String var1, int var2, int var3, int var4) {
@ -61,87 +107,63 @@ public final class Font {
this.draw(var1, var2, var3, var4, false); this.draw(var1, var2, var3, var4, false);
} }
private void draw(String var1, int var2, int var3, int var4, boolean var5) { private void draw(String s, int i, int j, int k, boolean flag) {
if(var1 != null) { if (s == null) {
char[] var12 = var1.toCharArray(); return;
if(var5) {
var4 = (var4 & 16579836) >> 2;
}
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.fontTexture);
Tesselator var6 = Tesselator.instance;
var6.begin();
var6.color(var4);
int var7 = 0;
for(int var8 = 0; var8 < var12.length; ++var8) {
int var9;
if(var12[var8] == 38 && var12.length > var8 + 1) {
var4 = "0123456789abcdef".indexOf(var12[var8 + 1]);
if(var4 < 0) {
var4 = 15;
}
var9 = (var4 & 8) << 3;
int var10 = (var4 & 1) * 191 + var9;
int var11 = ((var4 & 2) >> 1) * 191 + var9;
var4 = ((var4 & 4) >> 2) * 191 + var9;
var4 = var4 << 16 | var11 << 8 | var10;
var8 += 2;
if(var5) {
var4 = (var4 & 16579836) >> 2;
}
var6.color(var4);
}
var4 = var12[var8] % 16 << 3;
var9 = var12[var8] / 16 << 3;
float var13 = 7.99F;
var6.vertexUV((float)(var2 + var7), (float)var3 + var13, 0.0F, (float)var4 / 128.0F, ((float)var9 + var13) / 128.0F);
var6.vertexUV((float)(var2 + var7) + var13, (float)var3 + var13, 0.0F, ((float)var4 + var13) / 128.0F, ((float)var9 + var13) / 128.0F);
var6.vertexUV((float)(var2 + var7) + var13, (float)var3, 0.0F, ((float)var4 + var13) / 128.0F, (float)var9 / 128.0F);
var6.vertexUV((float)(var2 + var7), (float)var3, 0.0F, (float)var4 / 128.0F, (float)var9 / 128.0F);
var7 += this.charWidths[var12[var8]];
}
var6.end();
GL11.glDisable(GL11.GL_TEXTURE_2D);
} }
if (flag) {
int l = k & 0xff000000;
k = (k & 0xfcfcfc) >> 2;
k += l;
}
new TextureLocation(fontTextureName).bindTexture();
float f = (float) (k >> 16 & 0xff) / 255F;
float f1 = (float) (k >> 8 & 0xff) / 255F;
float f2 = (float) (k & 0xff) / 255F;
float f3 = (float) (k >> 24 & 0xff) / 255F;
if (f3 == 0.0F) {
f3 = 1.0F;
}
GL11.glColor4f(f, f1, f2, f3);
GL11.glPushMatrix();
GL11.glTranslatef(i, j, 0.0F);
for (int i1 = 0; i1 < s.length(); i1++) {
for (; s.length() > i1 + 1 && s.charAt(i1) == '\247'; i1 += 2) {
int j1 = "0123456789abcdef".indexOf(s.toLowerCase().charAt(i1 + 1));
if (j1 < 0 || j1 > 15) {
j1 = 15;
}
continue;
}
if (i1 < s.length()) {
int k1 = FontAllowedCharacters.isAllowed(s.charAt(i1));
if (k1 >= 0) {
GL11.glCallList(fontDisplayLists + k1 + 32);
GL11.glTranslatef(charWidths[k1 + 32], 0.0F, 0.0F);
}
}
}
GL11.glPopMatrix();
} }
public final int width(String var1) { public final int width(String s) {
if(var1 == null) { if (s == null) {
return 0; return 0;
} else {
char[] var4 = var1.toCharArray();
int var2 = 0;
for(int var3 = 0; var3 < var4.length; ++var3) {
if(var4[var3] == 38) {
++var3;
} else {
var2 += this.charWidths[var4[var3]];
}
}
return var2;
} }
} int i = 0;
for (int j = 0; j < s.length(); j++) {
public static String removeColorCodes(String var0) { if (s.charAt(j) == '\247') {
char[] var3 = var0.toCharArray(); j++;
String var1 = ""; continue;
}
for(int var2 = 0; var2 < var3.length; ++var2) { int k = FontAllowedCharacters.isAllowed(s.charAt(j));
if(var3[var2] == 38) { if (k >= 0) {
++var2; i += charWidths[k + 32];
} else {
var1 = var1 + var3[var2];
} }
} }
return var1; return i;
} }
} }

View File

@ -0,0 +1,27 @@
package com.mojang.minecraft.gui;
public class FontAllowedCharacters {
public static int isAllowed(char c) {
int cc = (int) c;
for(int i = 0; i < allowedChars.length; ++i) {
if(cc == allowedChars[i]) {
return i;
}
}
return -1;
}
public static final int[] allowedChars = new int[]{
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,
86,87,88,89,90,91,92,93,94,95,39,97,98,99,100,101,102,103,104,105,106,107,108,109,
110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,8962,199,252,
233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,
251,249,255,214,220,248,163,216,215,402,225,237,243,250,241,209,170,186,191,174,
172,189,188,161,171,187
};
public static final char field_22286_b[] = { '/', '\n', '\r', '\t', '\0', '\f', '`', '?', '*', '\\', '<', '>', '|', '"', ':' };
}

View File

@ -7,8 +7,8 @@ import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.ObjectInputStream; //import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; //import java.io.ObjectOutputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
@ -23,219 +23,224 @@ public final class LevelIO {
} }
public final boolean save(Level var1, String var2, String var3, String var4, String var5, int var6) { public final boolean save(Level var1, String var2, String var3, String var4, String var5, int var6) {
if(var4 == null) { // if(var4 == null) {
var4 = ""; // var4 = "";
} // }
if(this.a != null && this.a != null) { // if(this.a != null && this.a != null) {
this.a.beginLevelLoading("Saving level"); // this.a.beginLevelLoading("Saving level");
} // }
try { // try {
if(this.a != null && this.a != null) { // if(this.a != null && this.a != null) {
this.a.levelLoadUpdate("Compressing.."); // this.a.levelLoadUpdate("Compressing..");
} // }
ByteArrayOutputStream var7 = new ByteArrayOutputStream(); // ByteArrayOutputStream var7 = new ByteArrayOutputStream();
save(var1, var7); // save(var1, var7);
var7.close(); // var7.close();
byte[] var10 = var7.toByteArray(); // byte[] var10 = var7.toByteArray();
if(this.a != null && this.a != null) { // if(this.a != null && this.a != null) {
this.a.levelLoadUpdate("Connecting.."); // this.a.levelLoadUpdate("Connecting..");
} // }
URL var12 = new URL("http://" + var2 + "/level/save.html"); // URL var12 = new URL("http://" + var2 + "/level/save.html");
HttpURLConnection var13 = (HttpURLConnection)var12.openConnection(); // HttpURLConnection var13 = (HttpURLConnection)var12.openConnection();
var13.setDoInput(true); // var13.setDoInput(true);
var13.setDoOutput(true); // var13.setDoOutput(true);
var13.setRequestMethod("POST"); // var13.setRequestMethod("POST");
DataOutputStream var14 = new DataOutputStream(var13.getOutputStream()); // DataOutputStream var14 = new DataOutputStream(var13.getOutputStream());
var14.writeUTF(var3); // var14.writeUTF(var3);
var14.writeUTF(var4); // var14.writeUTF(var4);
var14.writeUTF(var5); // var14.writeUTF(var5);
var14.writeByte(var6); // var14.writeByte(var6);
var14.writeInt(var10.length); // var14.writeInt(var10.length);
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Saving.."); // this.a.levelLoadUpdate("Saving..");
} // }
var14.write(var10); // var14.write(var10);
var14.close(); // var14.close();
BufferedReader var11 = new BufferedReader(new InputStreamReader(var13.getInputStream())); // BufferedReader var11 = new BufferedReader(new InputStreamReader(var13.getInputStream()));
var2 = var11.readLine(); // var2 = var11.readLine();
if(!var2.equalsIgnoreCase("ok")) { // if(!var2.equalsIgnoreCase("ok")) {
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Failed: " + var11.readLine()); // this.a.levelLoadUpdate("Failed: " + var11.readLine());
} // }
var11.close(); // var11.close();
Thread.sleep(1000L); // Thread.sleep(1000L);
return false; // return false;
} else { // } else {
var11.close(); // var11.close();
return true; // return true;
} // }
} catch (Exception var9) { // } catch (Exception var9) {
var9.printStackTrace(); // var9.printStackTrace();
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Failed!"); // this.a.levelLoadUpdate("Failed!");
} // }
try { // try {
Thread.sleep(1000L); // Thread.sleep(1000L);
} catch (InterruptedException var8) { // } catch (InterruptedException var8) {
} // }
return false; // return false;
} // }
return false;
} }
public final Level load(String var1, String var2, int var3) { public final Level load(String var1, String var2, int var3) {
if(this.a != null) { // if(this.a != null) {
this.a.beginLevelLoading("Loading level"); // this.a.beginLevelLoading("Loading level");
} // }
try { // try {
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Connecting.."); // this.a.levelLoadUpdate("Connecting..");
} // }
URL var6 = new URL("http://" + var1 + "/level/load.html?id=" + var3 + "&user=" + var2); // URL var6 = new URL("http://" + var1 + "/level/load.html?id=" + var3 + "&user=" + var2);
HttpURLConnection var7 = (HttpURLConnection)var6.openConnection(); // HttpURLConnection var7 = (HttpURLConnection)var6.openConnection();
var7.setDoInput(true); // var7.setDoInput(true);
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Loading.."); // this.a.levelLoadUpdate("Loading..");
} // }
DataInputStream var8 = new DataInputStream(var7.getInputStream()); // DataInputStream var8 = new DataInputStream(var7.getInputStream());
var2 = var8.readUTF(); // var2 = var8.readUTF();
if(var2.equalsIgnoreCase("ok")) { // if(var2.equalsIgnoreCase("ok")) {
return this.load(var8); // return this.load(var8);
} else { // } else {
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Failed: " + var8.readUTF()); // this.a.levelLoadUpdate("Failed: " + var8.readUTF());
} // }
var8.close(); // var8.close();
Thread.sleep(1000L); // Thread.sleep(1000L);
return null; // return null;
} // }
} catch (Exception var5) { // } catch (Exception var5) {
var5.printStackTrace(); // var5.printStackTrace();
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Failed!"); // this.a.levelLoadUpdate("Failed!");
} // }
try { // try {
Thread.sleep(3000L); // Thread.sleep(3000L);
} catch (InterruptedException var4) { // } catch (InterruptedException var4) {
} // }
return null; // return null;
} // }
return null;
} }
public final Level load(InputStream var1) { public final Level load(InputStream var1) {
if(this.a != null) { // if(this.a != null) {
this.a.beginLevelLoading("Loading level"); // this.a.beginLevelLoading("Loading level");
} // }
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Reading.."); // this.a.levelLoadUpdate("Reading..");
} // }
try { // try {
DataInputStream var10 = new DataInputStream(new GZIPInputStream(var1)); // DataInputStream var10 = new DataInputStream(new GZIPInputStream(var1));
int var12 = var10.readInt(); // int var12 = var10.readInt();
if(var12 != 656127880) { // if(var12 != 656127880) {
return null; // return null;
} else { // } else {
byte var13 = var10.readByte(); // byte var13 = var10.readByte();
if(var13 > 2) { // if(var13 > 2) {
return null; // return null;
} else if(var13 <= 1) { // } else if(var13 <= 1) {
System.out.println("Version is 1!"); // System.out.println("Version is 1!");
String var15 = var10.readUTF(); // String var15 = var10.readUTF();
String var16 = var10.readUTF(); // String var16 = var10.readUTF();
long var7 = var10.readLong(); // long var7 = var10.readLong();
short var3 = var10.readShort(); // short var3 = var10.readShort();
short var4 = var10.readShort(); // short var4 = var10.readShort();
short var5 = var10.readShort(); // short var5 = var10.readShort();
byte[] var6 = new byte[var3 * var4 * var5]; // byte[] var6 = new byte[var3 * var4 * var5];
var10.readFully(var6); // var10.readFully(var6);
var10.close(); // var10.close();
Level var11 = new Level(); // Level var11 = new Level();
var11.setData(var3, var5, var4, var6); // var11.setData(var3, var5, var4, var6);
var11.name = var15; // var11.name = var15;
var11.creator = var16; // var11.creator = var16;
var11.createTime = var7; // var11.createTime = var7;
return var11; // return var11;
} else { // } else {
ObjectInputStream var14 = new ObjectInputStream(var10); // ObjectInputStream var14 = new ObjectInputStream(var10);
Level var2 = (Level)var14.readObject(); // Level var2 = (Level)var14.readObject();
var2.initTransient(); // var2.initTransient();
var14.close(); // var14.close();
return var2; // return var2;
} // }
} // }
} catch (Exception var9) { // } catch (Exception var9) {
var9.printStackTrace(); // var9.printStackTrace();
(new StringBuilder()).append("Failed to load level: ").append(var9.toString()).toString(); // (new StringBuilder()).append("Failed to load level: ").append(var9.toString()).toString();
return null; // return null;
} // }
return null;
} }
public final Level loadLegacy(InputStream var1) { public final Level loadLegacy(InputStream var1) {
if(this.a != null) { // if(this.a != null) {
this.a.beginLevelLoading("Loading level"); // this.a.beginLevelLoading("Loading level");
} // }
if(this.a != null) { // if(this.a != null) {
this.a.levelLoadUpdate("Reading.."); // this.a.levelLoadUpdate("Reading..");
} // }
try { // try {
DataInputStream var5 = new DataInputStream(new GZIPInputStream(var1)); // DataInputStream var5 = new DataInputStream(new GZIPInputStream(var1));
String var7 = "--"; // String var7 = "--";
String var2 = "unknown"; // String var2 = "unknown";
byte[] var3 = new byte[256 << 8 << 6]; // byte[] var3 = new byte[256 << 8 << 6];
var5.readFully(var3); // var5.readFully(var3);
var5.close(); // var5.close();
Level var6 = new Level(); // Level var6 = new Level();
var6.setData(256, 64, 256, var3); // var6.setData(256, 64, 256, var3);
var6.name = var7; // var6.name = var7;
var6.creator = var2; // var6.creator = var2;
var6.createTime = 0L; // var6.createTime = 0L;
return var6; // return var6;
} catch (Exception var4) { // } catch (Exception var4) {
var4.printStackTrace(); // var4.printStackTrace();
(new StringBuilder()).append("Failed to load level: ").append(var4.toString()).toString(); // (new StringBuilder()).append("Failed to load level: ").append(var4.toString()).toString();
return null; // return null;
} // }
return null;
} }
public static void save(Level var0, OutputStream var1) { public static void save(Level var0, OutputStream var1) {
try { // try {
DataOutputStream var3 = new DataOutputStream(new GZIPOutputStream(var1)); // DataOutputStream var3 = new DataOutputStream(new GZIPOutputStream(var1));
var3.writeInt(656127880); // var3.writeInt(656127880);
var3.writeByte(2); // var3.writeByte(2);
ObjectOutputStream var4 = new ObjectOutputStream(var3); // ObjectOutputStream var4 = new ObjectOutputStream(var3);
var4.writeObject(var0); // var4.writeObject(var0);
var4.close(); // var4.close();
} catch (Exception var2) { // } catch (Exception var2) {
var2.printStackTrace(); // var2.printStackTrace();
} // }
} }
public static byte[] loadBlocks(InputStream var0) { public static byte[] loadBlocks(InputStream var0) {
try { // try {
DataInputStream var3 = new DataInputStream(new GZIPInputStream(var0)); // DataInputStream var3 = new DataInputStream(new GZIPInputStream(var0));
byte[] var1 = new byte[var3.readInt()]; // byte[] var1 = new byte[var3.readInt()];
var3.readFully(var1); // var3.readFully(var1);
var3.close(); // var3.close();
return var1; // return var1;
} catch (Exception var2) { // } catch (Exception var2) {
throw new RuntimeException(var2); // throw new RuntimeException(var2);
} // }
return null;
} }
} }

View File

@ -0,0 +1,43 @@
package com.mojang.minecraft.renderer;
import java.util.ArrayList;
public class TextureLocation {
private String path;
private int glObject;
public TextureLocation(String path) {
this.path = path;
this.glObject = -1;
locations.add(this);
}
public static void freeTextures() {
for (TextureLocation l : locations) {
l.glObject = -1;
}
}
public int getTexturePointer() {
Textures t = new Textures();
if (glObject == -1) {
glObject = t.getTextureId(path);
if (glObject == -1) {
System.err.println("could not load: " + path);
}
}
return glObject;
}
public int bindTexture() {
Textures t = new Textures();
int i = getTexturePointer();
if(i != -1) {
t.bindTexture(i);
}
return i;
}
private static final ArrayList<TextureLocation> locations = new ArrayList();
}