Merge branch 'FlamedDogo99:main' into main

This commit is contained in:
radmanplays 2024-05-28 21:36:56 +03:30 committed by GitHub
commit dd65423625
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 175 additions and 132 deletions

22
README.md Normal file
View File

@ -0,0 +1,22 @@
# Eagler Mobile
## A userscript that allows eaglercraft to run on iOS safari
To-do
- [ ] Strafe buttons when holding forward
- [ ] Crouch lock on hold
- [ ] Sprint button (sperate from double tapping forward)
- [ ] Gamepad support
- [ ] Cancel button for file upload
- [ ] Styling for file upload
- [ ] Pick block button
- [ ] Back button for Kiwi browser?
Implemented
- [x] Fake pointerlock API (tricks the client into loading)
- [x] Fake fullscreen API (so that selecting full screen doesn't crash the client)
- [x] Custom upload button for files (because safari is a pain with button clicks)
- [x] Fake mousemove events (Allows touch and drag to simulate mouse movement)
- [x] Fake cursor scroll events (Allows scrolling through hotbar and in menus)
- [x] On-screen controls (Movement, block placement/removal, inventory, item dropping, keyboard, and exiting keys)
- [x] Styling for html, body, and canvas (So that the canvas doesn't ignore the navigation bars for viewport sizing)

View File

@ -7,12 +7,21 @@
// @license Apache License 2.0 - http://www.apache.org/licenses/
// @match https://eaglercraft.com/mc/*
// @grant none
// @version 1.2
// @version 1.3
// @updateURL https://raw.githubusercontent.com/FlamedDogo99/EaglerMobile/main/eaglermobile.user.js
// @run-at document-start
// ==/UserScript==
function isMobile() {
try {
document.createEvent("TouchEvent");
return true;
} catch (e) {
return false;
}
}
if(!isMobile()){alert("WARNING: This script doesn't play well with non-mobile browsers. Proceed at your own risk!")};
// Hides inventory button
window.inInventory = false;
// Used for changing touchmove events to mousemove events
@ -298,6 +307,18 @@ function insertCanvasElements() {
exitButton.addEventListener("touchend", function(e){keyEvent("À", "keyup")}, false);
exitButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(exitButton);
var hiddenInput = document.createElement('input');
hiddenInput.id = "hiddenInput"
hiddenInput.style.cssText = "opacity:0;z-index:-99999";
document.body.appendChild(hiddenInput);
var keyboardButton = document.createElement('button');
keyboardButton.id = "keyboardButton"
keyboardButton.textContent = "⌨️";
keyboardButton.style.cssText = "left:10vh;top:0vh;"
keyboardButton.addEventListener("touchstart", function(e){e.preventDefault();hiddenInput.blur()}, false);
keyboardButton.addEventListener("touchend", function(e){hiddenInput.select()}, false);
keyboardButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(keyboardButton);
var placeButton = document.createElement('button');
placeButton.id = "hideButton"
placeButton.textContent = "⊹";