Added copy/paste and screenshot
This commit is contained in:
parent
7a2a314928
commit
050bf47771
|
@ -19,7 +19,11 @@ public class MinecraftMain {
|
|||
|
||||
EaglerAdapter.initializeContext();
|
||||
LocalStorageManager.loadStorage();
|
||||
ServerList.loadDefaultServers(Base64.encodeBase64String(EaglerAdapter.loadLocalStorage("forced")));
|
||||
|
||||
byte[] b = EaglerAdapter.loadLocalStorage("forced");
|
||||
if(b != null) {
|
||||
ServerList.loadDefaultServers(Base64.encodeBase64String(b));
|
||||
}
|
||||
|
||||
Minecraft mc = new Minecraft();
|
||||
mc.run();
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.lwjgl.LWJGLException;
|
|||
import org.lwjgl.Sys;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.openal.AL;
|
||||
import org.lwjgl.opengl.ARBDebugOutput;
|
||||
import org.lwjgl.opengl.ARBDebugOutputCallback;
|
||||
import org.lwjgl.opengl.ARBOcclusionQuery2;
|
||||
|
@ -726,10 +727,16 @@ public class EaglerAdapterImpl2 {
|
|||
Display.destroy();
|
||||
Keyboard.destroy();
|
||||
Mouse.destroy();
|
||||
eagler.dispose();
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
eagler.dispose();
|
||||
}
|
||||
});
|
||||
if(ss != null) {
|
||||
ss.cleanup();
|
||||
}
|
||||
AL.destroy();
|
||||
}
|
||||
public static final boolean isWindows() {
|
||||
return System.getProperty("os.name").toLowerCase().contains("windows");
|
||||
|
@ -1035,6 +1042,9 @@ public class EaglerAdapterImpl2 {
|
|||
ss.setListenerOrientation(var13, var14, var15, var16, var17, var18);
|
||||
ss.setListenerVelocity(vx, vy, vz);
|
||||
}
|
||||
public static final void setPlaybackOffsetDelay(float f) {
|
||||
// nah
|
||||
}
|
||||
private static int playbackId = 0;
|
||||
public static final int beginPlayback(String fileName, float x, float y, float z, float volume, float pitch) {
|
||||
int id = ++playbackId;
|
||||
|
@ -1154,7 +1164,7 @@ public class EaglerAdapterImpl2 {
|
|||
return Runtime.getRuntime().freeMemory();
|
||||
}
|
||||
public static final void exit() {
|
||||
System.exit(0);
|
||||
Runtime.getRuntime().halt(0);
|
||||
}
|
||||
public static final int _wArrayByteLength(Object obj) {
|
||||
return ((IntBuffer)obj).remaining() * 4;
|
||||
|
@ -1177,6 +1187,23 @@ public class EaglerAdapterImpl2 {
|
|||
appendbuffer.flip();
|
||||
return appendbuffer;
|
||||
}
|
||||
|
||||
public static final String getUserAgent() {
|
||||
return System.getProperty("os.name");
|
||||
}
|
||||
|
||||
public static final String getClipboard() {
|
||||
return "<err>";
|
||||
}
|
||||
|
||||
public static final void setClipboard(String str) {
|
||||
// todo
|
||||
}
|
||||
|
||||
public static final void saveScreenshot() {
|
||||
|
||||
}
|
||||
|
||||
private static class ServerQueryImpl extends WebSocketClient implements ServerQuery {
|
||||
|
||||
private final LinkedList<QueryResponse> queryResponses = new LinkedList();
|
||||
|
|
|
@ -9,11 +9,9 @@ import java.util.HashMap;
|
|||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||
|
||||
import net.lax1dude.eaglercraft.adapter.EaglerAdapterImpl2;
|
||||
import net.lax1dude.eaglercraft.glemu.vector.Matrix3f;
|
||||
import net.lax1dude.eaglercraft.glemu.vector.Matrix4f;
|
||||
import net.lax1dude.eaglercraft.glemu.vector.Vector3f;
|
||||
import net.lax1dude.eaglercraft.glemu.vector.Vector4f;
|
||||
import net.minecraft.src.RenderItem;
|
||||
|
||||
public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
||||
|
||||
|
@ -606,6 +604,7 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
|||
case GL_DST_COLOR: pp1 = _wGL_DST_COLOR; break;
|
||||
case GL_SRC_COLOR: pp1 = _wGL_SRC_COLOR; break;
|
||||
case GL_ONE_MINUS_SRC_COLOR: pp1 = _wGL_ONE_MINUS_SRC_COLOR; break;
|
||||
case GL_ONE_MINUS_DST_COLOR: pp1 = _wGL_ONE_MINUS_DST_COLOR; break;
|
||||
case GL_ONE: pp1 = _wGL_ONE; break;
|
||||
case GL_ZERO: pp1 = _wGL_ZERO; break;
|
||||
}
|
||||
|
@ -617,6 +616,7 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 {
|
|||
case GL_DST_COLOR: pp2 = _wGL_DST_COLOR; break;
|
||||
case GL_SRC_COLOR: pp2 = _wGL_SRC_COLOR; break;
|
||||
case GL_ONE_MINUS_SRC_COLOR: pp2 = _wGL_ONE_MINUS_SRC_COLOR; break;
|
||||
case GL_ONE_MINUS_DST_COLOR: pp1 = _wGL_ONE_MINUS_DST_COLOR; break;
|
||||
case GL_ONE: pp2 = _wGL_ONE; break;
|
||||
case GL_ZERO: pp2 = _wGL_ZERO; break;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ public class Minecraft implements Runnable {
|
|||
public PlayerControllerMP playerController;
|
||||
private boolean fullscreen = false;
|
||||
private boolean hasCrashed = false;
|
||||
private boolean isGonnaTakeDatScreenShot = false;
|
||||
|
||||
public int displayWidth;
|
||||
public int displayHeight;
|
||||
|
@ -485,7 +486,7 @@ public class Minecraft implements Runnable {
|
|||
}
|
||||
|
||||
public static EnumOS getOs() {
|
||||
String var0 = System.getProperty("os.name").toLowerCase();
|
||||
String var0 = EaglerAdapter.getUserAgent().toLowerCase();
|
||||
return var0.contains("win") ? EnumOS.WINDOWS
|
||||
: (var0.contains("mac") ? EnumOS.MACOS
|
||||
: (var0.contains("solaris") ? EnumOS.SOLARIS : (var0.contains("sunos") ? EnumOS.SOLARIS : (var0.contains("linux") ? EnumOS.LINUX : (var0.contains("unix") ? EnumOS.LINUX : EnumOS.UNKNOWN)))));
|
||||
|
@ -524,6 +525,14 @@ public class Minecraft implements Runnable {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isChatOpen() {
|
||||
return this.currentScreen != null && (this.currentScreen instanceof GuiChat);
|
||||
}
|
||||
|
||||
public String getServerURI() {
|
||||
return this.getNetHandler() != null ? this.getNetHandler().getNetManager().getServerURI() : "[not connected]";
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for an OpenGL error. If there is one, prints the error ID and error
|
||||
* string.
|
||||
|
@ -575,36 +584,10 @@ public class Minecraft implements Runnable {
|
|||
|
||||
public void run() {
|
||||
this.running = true;
|
||||
|
||||
//try {
|
||||
this.startGame();
|
||||
//} catch (Exception var11) {
|
||||
// var11.printStackTrace();
|
||||
// return;
|
||||
//}
|
||||
|
||||
//try {
|
||||
while (this.running) {
|
||||
|
||||
if (this.refreshTexturePacksScheduled) {
|
||||
this.refreshTexturePacksScheduled = false;
|
||||
this.renderEngine.refreshTextures();
|
||||
}
|
||||
|
||||
try {
|
||||
this.runGameLoop();
|
||||
} catch (OutOfMemoryError var10) {
|
||||
this.freeMemory();
|
||||
this.displayGuiScreen(new GuiMemoryErrorScreen());
|
||||
System.gc();
|
||||
}
|
||||
}
|
||||
//} catch (MinecraftError var12) {
|
||||
// ;
|
||||
//} catch (Throwable var14) {
|
||||
// var14.printStackTrace();
|
||||
//}
|
||||
|
||||
this.startGame();
|
||||
while (this.running) {
|
||||
this.runGameLoop();
|
||||
}
|
||||
EaglerAdapter.destroyContext();
|
||||
EaglerAdapter.exit();
|
||||
}
|
||||
|
@ -613,6 +596,11 @@ public class Minecraft implements Runnable {
|
|||
* Called repeatedly from run()
|
||||
*/
|
||||
private void runGameLoop() {
|
||||
if (this.refreshTexturePacksScheduled) {
|
||||
this.refreshTexturePacksScheduled = false;
|
||||
this.renderEngine.refreshTextures();
|
||||
}
|
||||
|
||||
AxisAlignedBB.getAABBPool().cleanPool();
|
||||
|
||||
if (this.theWorld != null) {
|
||||
|
@ -696,8 +684,6 @@ public class Minecraft implements Runnable {
|
|||
this.guiAchievement.updateAchievementWindow();
|
||||
this.mcProfiler.startSection("root");
|
||||
|
||||
this.screenshotListener();
|
||||
|
||||
if (!this.fullscreen && (EaglerAdapter.getCanvasWidth() != this.displayWidth || EaglerAdapter.getCanvasHeight() != this.displayHeight)) {
|
||||
this.displayWidth = EaglerAdapter.getCanvasWidth();
|
||||
this.displayHeight = EaglerAdapter.getCanvasHeight();
|
||||
|
@ -731,6 +717,11 @@ public class Minecraft implements Runnable {
|
|||
EaglerAdapter.syncDisplay(EntityRenderer.performanceToFps(this.func_90020_K()));
|
||||
}
|
||||
|
||||
if(isGonnaTakeDatScreenShot) {
|
||||
isGonnaTakeDatScreenShot = false;
|
||||
EaglerAdapter.saveScreenshot();
|
||||
}
|
||||
|
||||
EaglerAdapter.doJavascriptCoroutines();
|
||||
|
||||
this.mcProfiler.endSection();
|
||||
|
@ -741,47 +732,6 @@ public class Minecraft implements Runnable {
|
|||
return this.currentScreen != null && this.currentScreen instanceof GuiMainMenu ? 2 : this.gameSettings.limitFramerate;
|
||||
}
|
||||
|
||||
public void freeMemory() {
|
||||
try {
|
||||
this.renderGlobal.deleteAllDisplayLists();
|
||||
} catch (Throwable var4) {
|
||||
;
|
||||
}
|
||||
|
||||
try {
|
||||
System.gc();
|
||||
AxisAlignedBB.getAABBPool().clearPool();
|
||||
this.theWorld.getWorldVec3Pool().clearAndFreeCache();
|
||||
} catch (Throwable var3) {
|
||||
;
|
||||
}
|
||||
|
||||
try {
|
||||
System.gc();
|
||||
this.loadWorld((WorldClient) null);
|
||||
} catch (Throwable var2) {
|
||||
;
|
||||
}
|
||||
|
||||
System.gc();
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if keys are down
|
||||
*/
|
||||
private void screenshotListener() {
|
||||
/*
|
||||
if (EaglerAdapter.isKeyDown(60)) {
|
||||
if (!this.isTakingScreenshot) {
|
||||
this.isTakingScreenshot = true;
|
||||
this.ingameGUI.getChatGUI().printChatMessage(ScreenShotHelper.saveScreenshot(minecraftDir, this.displayWidth, this.displayHeight));
|
||||
}
|
||||
} else {
|
||||
this.isTakingScreenshot = false;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Update debugProfilerName in response to number keys in debug screen
|
||||
*/
|
||||
|
@ -1206,6 +1156,7 @@ public class Minecraft implements Runnable {
|
|||
}
|
||||
|
||||
if (EaglerAdapter.getEventKeyState()) {
|
||||
isGonnaTakeDatScreenShot |= (this.gameSettings.keyBindFunction.pressed && EaglerAdapter.getEventKey() == 3);
|
||||
if (EaglerAdapter.getEventKey() == 87) {
|
||||
this.toggleFullscreen();
|
||||
} else {
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.lax1dude.eaglercraft.ConfigConstants;
|
||||
import net.lax1dude.eaglercraft.EaglerAdapter;
|
||||
import net.lax1dude.eaglercraft.EaglercraftRandom;
|
||||
import net.lax1dude.eaglercraft.TextureLocation;
|
||||
|
@ -407,14 +408,16 @@ public class GuiIngame extends Gui {
|
|||
this.drawString(var8, var45, var6 - var8.getStringWidth(var45) - 2, 2, 14737632);
|
||||
var45 = "Allocated memory: " + var37 * 100L / var39 + "% (" + var37 / 1024L / 1024L + "MB)";
|
||||
this.drawString(var8, var45, var6 - var8.getStringWidth(var45) - 2, 12, 14737632);
|
||||
this.drawString(var8, "Player is not using an xbox live account", 2, 64, 0xFFBBBB);
|
||||
this.drawString(var8, "Using cracked server @ " + mc.getServerURI(), 2, 73, 0xFFBBBB);
|
||||
var47 = MathHelper.floor_double(this.mc.thePlayer.posX);
|
||||
var22 = MathHelper.floor_double(this.mc.thePlayer.posY);
|
||||
var23 = MathHelper.floor_double(this.mc.thePlayer.posZ);
|
||||
this.drawString(var8, "x: "+doubleToShorterString(this.mc.thePlayer.posX)+" ("+var47+") // c: "+(var47 >> 4)+" ("+(var47 & 15)+")", 2, 64, 14737632);
|
||||
this.drawString(var8, "y: "+doubleToShorterString(this.mc.thePlayer.posY)+" ("+var22+") (feet pos)", 2, 72, 14737632);
|
||||
this.drawString(var8, "z: "+doubleToShorterString(this.mc.thePlayer.posZ)+" ("+var23+") // c: "+(var23 >> 4)+" ("+(var23 & 15)+")", 2, 80, 14737632);
|
||||
this.drawString(var8, "x: "+doubleToShorterString(this.mc.thePlayer.posX)+" ("+var47+") // c: "+(var47 >> 4)+" ("+(var47 & 15)+")", 2, 92, 14737632);
|
||||
this.drawString(var8, "y: "+doubleToShorterString(this.mc.thePlayer.posY)+" ("+var22+") (feet pos)", 2, 100, 14737632);
|
||||
this.drawString(var8, "z: "+doubleToShorterString(this.mc.thePlayer.posZ)+" ("+var23+") // c: "+(var23 >> 4)+" ("+(var23 & 15)+")", 2, 108, 14737632);
|
||||
var24 = MathHelper.floor_double((double) (this.mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
|
||||
this.drawString(var8, "f: " + var24 + " (" + Direction.directions[var24] + ") / " + MathHelper.wrapAngleTo180_float(this.mc.thePlayer.rotationYaw), 2, 88, 14737632);
|
||||
this.drawString(var8, "f: " + var24 + " (" + Direction.directions[var24] + ") / " + MathHelper.wrapAngleTo180_float(this.mc.thePlayer.rotationYaw), 2, 116, 14737632);
|
||||
|
||||
//this.drawString(var8, String.format("ws: %.3f, fs: %.3f, g: %b, fl: %d", new Object[] { Float.valueOf(this.mc.thePlayer.capabilities.getWalkSpeed()), Float.valueOf(this.mc.thePlayer.capabilities.getFlySpeed()),
|
||||
// Boolean.valueOf(this.mc.thePlayer.onGround), Integer.valueOf(this.mc.theWorld.getHeightValue(var47, var23)) }), 2, 104, 14737632);
|
||||
|
@ -445,6 +448,12 @@ public class GuiIngame extends Gui {
|
|||
EaglerAdapter.glScalef(0.75f, 0.75f, 0.75f);
|
||||
var8.drawStringWithShadow(this.mc.renderGlobal.getDebugInfoShort(), 2, 2, 16777215);
|
||||
var8.drawStringWithShadow("x: "+MathHelper.floor_double(this.mc.thePlayer.posX)+", y: "+MathHelper.floor_double(this.mc.thePlayer.posY)+", z: "+MathHelper.floor_double(this.mc.thePlayer.posZ), 2, 12, 16777215);
|
||||
int offset = this.mc.isChatOpen() ? 135 : 0;
|
||||
int offset2 = this.mc.isChatOpen() ? 4 : 0;
|
||||
String str = "not using an xbox live account";
|
||||
var8.drawStringWithShadow(str, (var6 * 4 / 3) - 2 - var8.getStringWidth(str) - offset, 2 + offset2, 0xFFDDDD);
|
||||
str = "eaglercraft: " + ConfigConstants.version;
|
||||
var8.drawStringWithShadow(str, (var6 * 4 / 3) - 2 - var8.getStringWidth(str) - offset, 12 + offset2, 14737632);
|
||||
EaglerAdapter.glPopMatrix();
|
||||
}
|
||||
|
||||
|
|
|
@ -199,10 +199,12 @@ public class GuiMainMenu extends GuiScreen {
|
|||
if(par1 >= (this.width - w - 4) && par1 <= this.width && par2 >= 0 && par2 <= 9) {
|
||||
showAck = true;
|
||||
}
|
||||
/*
|
||||
w = this.fontRenderer.getStringWidth("debug console") * 3 / 4;
|
||||
if(par1 >= 0 && par1 <= (w + 4) && par2 >= 0 && par2 <= 9) {
|
||||
EaglerAdapter.openConsole();
|
||||
}
|
||||
*/
|
||||
}
|
||||
}else {
|
||||
if(par3 == 0) {
|
||||
|
@ -432,12 +434,13 @@ public class GuiMainMenu extends GuiScreen {
|
|||
*/
|
||||
|
||||
this.drawString(this.fontRenderer, "minecraft 1.5.2", 2, this.height - 20, 16777215);
|
||||
this.drawString(this.fontRenderer, ConfigConstants.mainMenuString, 2, this.height - 10, 16777215);
|
||||
this.drawString(this.fontRenderer, ConfigConstants.mainMenuString + EnumChatFormatting.GRAY + " (cracked)", 2, this.height - 10, 16777215);
|
||||
|
||||
String var10 = "copyright " + Calendar.getInstance().get(Calendar.YEAR) + " calder young";
|
||||
//String var10 = "Copyright " + Calendar.getInstance().get(Calendar.YEAR) + " Mojang AB.";
|
||||
String var10 = "copyright 2013 Mojang AB";
|
||||
this.drawString(this.fontRenderer, var10, this.width - this.fontRenderer.getStringWidth(var10) - 2, this.height - 10, 16777215);
|
||||
|
||||
var10 = "all rights reserved";
|
||||
var10 = "site resources are";
|
||||
this.drawString(this.fontRenderer, var10, this.width - this.fontRenderer.getStringWidth(var10) - 2, this.height - 20, 16777215);
|
||||
|
||||
if (this.field_92025_p != null && this.field_92025_p.length() > 0) {
|
||||
|
@ -447,7 +450,19 @@ public class GuiMainMenu extends GuiScreen {
|
|||
// this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12,
|
||||
// 16777215);
|
||||
}
|
||||
/*
|
||||
String lid = "(login is disabled, this copy violates Mojang's terms of service)";
|
||||
int sl = this.fontRenderer.getStringWidth(lid);
|
||||
|
||||
EaglerAdapter.glPushMatrix();
|
||||
float k = ((this.width - sl) * 3 / 4) < 80 ? 0.5f : 0.75f;
|
||||
EaglerAdapter.glScalef(k, k, k);
|
||||
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
|
||||
this.drawString(fontRenderer, lid, (int)(this.width / k - sl) / 2, (int)((this.height - 19) / k), 0x88999999);
|
||||
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||
EaglerAdapter.glPopMatrix();
|
||||
*/
|
||||
var10 = "eaglercraft readme.txt";
|
||||
int w = this.fontRenderer.getStringWidth(var10) * 3 / 4;
|
||||
if(!showAck && par1 >= (this.width - w - 4) && par1 <= this.width && par2 >= 0 && par2 <= 9) {
|
||||
|
@ -460,7 +475,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||
EaglerAdapter.glScalef(0.75f, 0.75f, 0.75f);
|
||||
this.drawString(this.fontRenderer, var10, 0, 0, 16777215);
|
||||
EaglerAdapter.glPopMatrix();
|
||||
|
||||
/*
|
||||
var10 = "debug console";
|
||||
w = this.fontRenderer.getStringWidth(var10) * 3 / 4;
|
||||
if(!showAck && par1 >= 0 && par1 <= (w + 4) && par2 >= 0 && par2 <= 9) {
|
||||
|
@ -473,7 +488,7 @@ public class GuiMainMenu extends GuiScreen {
|
|||
EaglerAdapter.glScalef(0.75f, 0.75f, 0.75f);
|
||||
this.drawString(this.fontRenderer, var10, 0, 0, 16777215);
|
||||
EaglerAdapter.glPopMatrix();
|
||||
|
||||
*/
|
||||
if(showAck) {
|
||||
super.drawScreen(0, 0, par3);
|
||||
this.drawGradientRect(0, 0, this.width, this.height, -1072689136, -804253680);
|
||||
|
|
|
@ -250,8 +250,7 @@ public class GuiScreen extends Gui {
|
|||
}
|
||||
|
||||
public static boolean isCtrlKeyDown() {
|
||||
boolean var0 = EaglerAdapter.isKeyDown(28) && EaglerAdapter.getEventChar() == 0;
|
||||
return EaglerAdapter.isKeyDown(29) || EaglerAdapter.isKeyDown(157) || isMacOs && (var0 || EaglerAdapter.isKeyDown(219) || EaglerAdapter.isKeyDown(220));
|
||||
return EaglerAdapter.isKeyDown(29) || EaglerAdapter.isKeyDown(157) || (isMacOs && EaglerAdapter.isKeyDown(28) || EaglerAdapter.isKeyDown(219) || EaglerAdapter.isKeyDown(220));
|
||||
}
|
||||
|
||||
public static boolean isShiftKeyDown() {
|
||||
|
|
|
@ -72,6 +72,9 @@ public class GuiTextField extends Gui {
|
|||
* Sets the text of the textbox.
|
||||
*/
|
||||
public void setText(String par1Str) {
|
||||
if(text.equals(par1Str)) {
|
||||
return;
|
||||
}
|
||||
if (par1Str.length() > this.maxStringLength) {
|
||||
this.text = par1Str.substring(0, this.maxStringLength);
|
||||
} else {
|
||||
|
@ -273,15 +276,24 @@ public class GuiTextField extends Gui {
|
|||
return true;
|
||||
|
||||
case 3:
|
||||
GuiScreen.setClipboardString(this.getSelectedtext());
|
||||
String s = this.getSelectedtext();
|
||||
if(s != null && s.length() > 0) {
|
||||
GuiScreen.setClipboardString(s);
|
||||
}
|
||||
return true;
|
||||
|
||||
case 22:
|
||||
this.writeText(GuiScreen.getClipboardString());
|
||||
String s3 = GuiScreen.getClipboardString();
|
||||
if(s3 != null && s3.length() > 0) {
|
||||
this.writeText(s3);
|
||||
}
|
||||
return true;
|
||||
|
||||
case 24:
|
||||
GuiScreen.setClipboardString(this.getSelectedtext());
|
||||
String s2 = this.getSelectedtext();
|
||||
if(s2 != null && s2.length() > 0) {
|
||||
GuiScreen.setClipboardString(s2);
|
||||
}
|
||||
this.writeText("");
|
||||
return true;
|
||||
|
||||
|
@ -296,7 +308,7 @@ public class GuiTextField extends Gui {
|
|||
|
||||
return true;
|
||||
|
||||
case 199:
|
||||
case 200:
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
this.setSelectionPos(0);
|
||||
} else {
|
||||
|
@ -335,7 +347,7 @@ public class GuiTextField extends Gui {
|
|||
|
||||
return true;
|
||||
|
||||
case 207:
|
||||
case 208:
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
this.setSelectionPos(this.text.length());
|
||||
} else {
|
||||
|
@ -354,7 +366,27 @@ public class GuiTextField extends Gui {
|
|||
return true;
|
||||
|
||||
default:
|
||||
if (ChatAllowedCharacters.isAllowedCharacter(par1)) {
|
||||
boolean ctrl = GuiScreen.isCtrlKeyDown();
|
||||
if(ctrl && (par1 == 'c' || par1 == 'C')) {
|
||||
String s5 = this.getSelectedtext();
|
||||
if(s5.length() > 0) {
|
||||
GuiScreen.setClipboardString(s5);
|
||||
}
|
||||
return true;
|
||||
}else if(ctrl && (par1 == 'x' || par1 == 'X')) {
|
||||
String s6 = this.getSelectedtext();
|
||||
if(s6.length() > 0) {
|
||||
GuiScreen.setClipboardString(s6);
|
||||
this.writeText("");
|
||||
}
|
||||
return true;
|
||||
}else if(ctrl && (par1 == 'v' || par1 == 'V')) {
|
||||
String s4 = GuiScreen.getClipboardString();
|
||||
if(s4 != null && s4.length() > 0) {
|
||||
this.writeText(s4);
|
||||
}
|
||||
return true;
|
||||
}else if (ChatAllowedCharacters.isAllowedCharacter(par1)) {
|
||||
this.writeText(Character.toString(par1));
|
||||
return true;
|
||||
} else {
|
||||
|
@ -434,7 +466,7 @@ public class GuiTextField extends Gui {
|
|||
|
||||
if (var6) {
|
||||
if (var13) {
|
||||
Gui.drawRect(var11, var8 - 1, var11 + 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT, -3092272);
|
||||
Gui.drawRect(var11, var8 - 1, var11 + 1, var8 + 1 + this.fontRenderer.FONT_HEIGHT, var1 | 0xFF000000);
|
||||
} else {
|
||||
this.fontRenderer.drawStringWithShadow("_", var11, var8, var1);
|
||||
}
|
||||
|
@ -466,18 +498,18 @@ public class GuiTextField extends Gui {
|
|||
}
|
||||
|
||||
Tessellator var6 = Tessellator.instance;
|
||||
EaglerAdapter.glColor4f(0.0F, 0.0F, 255.0F, 255.0F);
|
||||
EaglerAdapter.glColor4f(0.2F, 0.2F, 1.0F, 1.0F);
|
||||
EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
|
||||
EaglerAdapter.glBlendFunc(EaglerAdapter.GL_ONE_MINUS_DST_COLOR, EaglerAdapter.GL_SRC_ALPHA);
|
||||
EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
|
||||
EaglerAdapter.glEnable(EaglerAdapter.GL_COLOR_LOGIC_OP);
|
||||
EaglerAdapter.glLogicOp(EaglerAdapter.GL_OR_REVERSE);
|
||||
var6.startDrawingQuads();
|
||||
var6.addVertex((double) par1, (double) par4, 0.0D);
|
||||
var6.addVertex((double) par3, (double) par4, 0.0D);
|
||||
var6.addVertex((double) par3, (double) par2, 0.0D);
|
||||
var6.addVertex((double) par1, (double) par2, 0.0D);
|
||||
var6.draw();
|
||||
EaglerAdapter.glDisable(EaglerAdapter.GL_COLOR_LOGIC_OP);
|
||||
EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
|
||||
EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
|
||||
}
|
||||
|
||||
public void setMaxStringLength(int par1) {
|
||||
|
|
|
@ -60,6 +60,7 @@ public class SoundManager {
|
|||
this.sounddefinitions = new HashMap();
|
||||
try {
|
||||
NBTTagCompound file = CompressedStreamTools.readUncompressed(EaglerAdapter.loadResourceBytes("/sounds/sounds.dat"));
|
||||
EaglerAdapter.setPlaybackOffsetDelay(file.hasKey("playbackOffset") ? file.getFloat("playbackOffset") : 0.03f);
|
||||
NBTTagList l = file.getTagList("sounds");
|
||||
int c = l.tagCount();
|
||||
for(int i = 0; i < c; i++) {
|
||||
|
|
|
@ -6,6 +6,9 @@ import java.io.InputStream;
|
|||
import java.nio.ByteBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
|
@ -13,6 +16,7 @@ import org.json.JSONObject;
|
|||
import org.teavm.interop.Async;
|
||||
import org.teavm.interop.AsyncCallback;
|
||||
import org.teavm.jso.JSBody;
|
||||
import org.teavm.jso.JSFunctor;
|
||||
import org.teavm.jso.JSObject;
|
||||
import org.teavm.jso.ajax.ReadyStateChangeHandler;
|
||||
import org.teavm.jso.ajax.XMLHttpRequest;
|
||||
|
@ -174,6 +178,12 @@ public class EaglerAdapterImpl2 {
|
|||
LocalStorageManager.saveStorageP();
|
||||
}
|
||||
|
||||
@JSBody(params = { "m" }, script = "return m.offsetX;")
|
||||
private static native int getOffsetX(MouseEvent m);
|
||||
|
||||
@JSBody(params = { "m" }, script = "return m.offsetY;")
|
||||
private static native int getOffsetY(MouseEvent m);
|
||||
|
||||
public static final void initializeContext(HTMLElement rootElement, String assetPackageURI) {
|
||||
parent = rootElement;
|
||||
String s = parent.getAttribute("style");
|
||||
|
@ -224,8 +234,8 @@ public class EaglerAdapterImpl2 {
|
|||
canvas.addEventListener("mousemove", mousemove = new EventListener<MouseEvent>() {
|
||||
@Override
|
||||
public void handleEvent(MouseEvent evt) {
|
||||
mouseX = evt.getClientX();
|
||||
mouseY = canvas.getClientHeight() - evt.getClientY();
|
||||
mouseX = getOffsetX(evt);
|
||||
mouseY = canvas.getClientHeight() - getOffsetY(evt);
|
||||
mouseDX += evt.getMovementX();
|
||||
mouseDY += -evt.getMovementY();
|
||||
evt.preventDefault();
|
||||
|
@ -832,6 +842,10 @@ public class EaglerAdapterImpl2 {
|
|||
public static final void _wglBlitFramebuffer(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, int p9, int p10) {
|
||||
webgl.blitFramebuffer(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
|
||||
}
|
||||
public static final int _wglGetAttribLocation(ProgramGL p1, String p2) {
|
||||
return webgl.getAttribLocation(p1.obj, p2);
|
||||
}
|
||||
|
||||
@JSBody(params = { "ctx", "p" }, script = "return ctx.getTexParameter(0x0DE1, p) | 0;")
|
||||
private static final native int __wglGetTexParameteri(WebGL2RenderingContext ctx, int p);
|
||||
public static final int _wglGetTexParameteri(int p1) {
|
||||
|
@ -998,6 +1012,14 @@ public class EaglerAdapterImpl2 {
|
|||
|
||||
}
|
||||
|
||||
private static final DateFormat dateFormatSS = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
|
||||
public static final void saveScreenshot() {
|
||||
saveScreenshot("screenshot_" + dateFormatSS.format(new Date()).toString() + ".png", canvas);
|
||||
}
|
||||
|
||||
@JSBody(params = { "name", "cvs" }, script = "var a=document.createElement(\"a\");a.href=cvs.toDataURL(\"image/png\");a.download=name;a.click();")
|
||||
private static native void saveScreenshot(String name, HTMLCanvasElement cvs);
|
||||
|
||||
private static WebSocket sock = null;
|
||||
private static boolean sockIsConnecting = false;
|
||||
private static LinkedList<byte[]> readPackets = new LinkedList();
|
||||
|
@ -1131,11 +1153,14 @@ public class EaglerAdapterImpl2 {
|
|||
//l.setVelocity(vx, vy, vz);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static int playbackId = 0;
|
||||
private static final HashMap<String,AudioBufferX> loadedSoundFiles = new HashMap();
|
||||
private static AudioContext audioctx = null;
|
||||
private static float playbackOffsetDelay = 0.03f;
|
||||
|
||||
public static final void setPlaybackOffsetDelay(float f) {
|
||||
playbackOffsetDelay = f;
|
||||
}
|
||||
|
||||
@Async
|
||||
public static native AudioBuffer decodeAudioAsync(ArrayBuffer buffer);
|
||||
|
@ -1208,7 +1233,7 @@ public class EaglerAdapterImpl2 {
|
|||
s.connect(g);
|
||||
g.connect(p);
|
||||
p.connect(audioctx.getDestination());
|
||||
s.start(0.0d, 0.03d);
|
||||
s.start(0.0d, playbackOffsetDelay);
|
||||
final int theId = ++playbackId;
|
||||
activeSoundEffects.put(theId, new AudioBufferSourceNodeX(s, p, g));
|
||||
s.setOnEnded(new EventListener<MediaEvent>() {
|
||||
|
@ -1231,7 +1256,7 @@ public class EaglerAdapterImpl2 {
|
|||
g.getGain().setValue(volume > 1.0f ? 1.0f : volume);
|
||||
s.connect(g);
|
||||
g.connect(audioctx.getDestination());
|
||||
s.start(0.0d, 0.03d);
|
||||
s.start(0.0d, playbackOffsetDelay);
|
||||
final int theId = ++playbackId;
|
||||
activeSoundEffects.put(theId, new AudioBufferSourceNodeX(s, null, g));
|
||||
s.setOnEnded(new EventListener<MediaEvent>() {
|
||||
|
@ -1316,6 +1341,9 @@ public class EaglerAdapterImpl2 {
|
|||
|
||||
}
|
||||
|
||||
@JSBody(params = { }, script = "return window.navigator.userAgent;")
|
||||
public static native String getUserAgent();
|
||||
|
||||
private static String[] LWJGLKeyNames = new String[] {"NONE", "ESCAPE", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "MINUS", "EQUALS", "BACK", "TAB", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "LBRACKET", "RBRACKET", "RETURN", "LCONTROL", "A", "S", "D", "F", "G", "H", "J", "K", "L", "SEMICOLON", "APOSTROPHE", "GRAVE", "LSHIFT", "BACKSLASH", "Z", "X", "C", "V", "B", "N", "M", "COMMA", "PERIOD", "SLASH", "RSHIFT", "MULTIPLY", "LMENU", "SPACE", "CAPITAL", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "NUMLOCK", "SCROLL", "NUMPAD7", "NUMPAD8", "NUMPAD9", "SUBTRACT", "NUMPAD4", "NUMPAD5", "NUMPAD6", "ADD", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD0", "DECIMAL", "null", "null", "null", "F11", "F12", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "F13", "F14", "F15", "F16", "F17", "F18", "null", "null", "null", "null", "null", "null", "KANA", "F19", "null", "null", "null", "null", "null", "null", "null", "CONVERT", "null", "NOCONVERT", "null", "YEN", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "NUMPADEQUALS", "null", "null", "CIRCUMFLEX", "AT", "COLON", "UNDERLINE", "KANJI", "STOP", "AX", "UNLABELED", "null", "null", "null", "null", "NUMPADENTER", "RCONTROL", "null", "null", "null", "null", "null", "null", "null", "null", "null", "SECTION", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "NUMPADCOMMA", "null", "DIVIDE", "null", "SYSRQ", "RMENU", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "FUNCTION", "PAUSE", "null", "HOME", "UP", "PRIOR", "null", "LEFT", "null", "RIGHT", "null", "END", "DOWN", "NEXT", "INSERT", "DELETE", "null", "null", "null", "null", "null", "null", "CLEAR", "LMETA", "RMETA", "APPS", "POWER", "SLEEP", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null", "null"};
|
||||
|
||||
private static int[] LWJGLKeyCodes = new int[] {
|
||||
|
@ -1574,11 +1602,29 @@ public class EaglerAdapterImpl2 {
|
|||
return (k > LWJGLKeyCodes.length || k < 0) ? -1 : LWJGLKeyCodes[k];
|
||||
}
|
||||
|
||||
public static final String getClipboard() {
|
||||
return ""; //TODO: html5 clipboard
|
||||
@JSFunctor
|
||||
private static interface StupidFunctionResolveString extends JSObject {
|
||||
void resolveStr(String s);
|
||||
}
|
||||
|
||||
public static final void setClipboard(String str) {
|
||||
@Async
|
||||
public static native String getClipboard();
|
||||
|
||||
private static void getClipboard(final AsyncCallback<String> cb) {
|
||||
getClipboard0(new StupidFunctionResolveString() {
|
||||
@Override
|
||||
public void resolveStr(String s) {
|
||||
cb.complete(s);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@JSBody(params = { "cb" }, script = "window.navigator.clipboard.readText().then(function(s) { cb(s); }, function(s) { cb(null); });")
|
||||
private static native void getClipboard0(StupidFunctionResolveString cb);
|
||||
|
||||
@JSBody(params = { "str" }, script = "window.navigator.clipboard.writeText(str);")
|
||||
public static native void setClipboard(String str);
|
||||
|
||||
@JSBody(params = { "obj" }, script = "return typeof obj === \"string\";")
|
||||
private static native boolean isString(JSObject obj);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user