Main code

This commit is contained in:
voxonoly 2024-05-28 21:49:44 -05:00
parent bee4f7731e
commit 0a34c5c857
108 changed files with 193615 additions and 2 deletions

View File

@ -1,2 +1,29 @@
# eaglercraft-mobile
A branch off of FlamedDogo99's mc mobile UI
# Eaglercraft Mobile UI
A branch off of FlamedDogo99's eaglercraft mobile UI!<br>
Don't know how to manage pull requests so here we are!<br>
Currently **stil in beta** testing/making so expect some bugs!
<hr>
## Implementation
Add following code into `index.html` file of eaglercraft<br>
```javascript
<script type="text/javascript" src="mobile/mobile.js"></script>
```
Then add the `mobile` folder into the same folder.<br>
A demo of the code can be seen in the [Demo's folder](https://github.com/irv77/eaglercraft-mobile/tree/main/demo/)
<hr>
## Features
- Pocket Edition UI
- Better controls positioning
- Toggle perspective
- Bug fixes from original
<hr>
Finally [here](https://irv77.github.io/eaglercraft-mobile/demo/) is the live version of the code!

BIN
demo/assets.epk Normal file

Binary file not shown.

44842
demo/classes.js Normal file

File diff suppressed because it is too large Load Diff

1
demo/classes.js.map Normal file

File diff suppressed because one or more lines are too long

BIN
demo/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

60
demo/index.html Normal file
View File

@ -0,0 +1,60 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Play minecraft 1.8 in your browser" />
<meta name="keywords" content="eaglercraft, eaglercraftx, minecraft, 1.8, 1.8.8" />
<title>EaglercraftX 1.8</title>
<meta property="og:locale" content="en-US" />
<meta property="og:type" content="website" />
<meta property="og:title" content="EaglercraftX 1.8" />
<meta property="og:description" content="Play minecraft 1.8 in your browser" />
<meta property="og:image" content="favicon.png" />
<link type="image/png" rel="shortcut icon" href="favicon.png" />
<script type="text/javascript" src="classes.js"></script>
<script type="text/javascript" src="mobile/mobile.js"></script>
<script type="text/javascript">
"use strict";
window.addEventListener("load", () => {
if(document.location.href.startsWith("file:")) {
alert("HTTP please, do not open this file locally, run a local HTTP server and load it via HTTP");
}else {
// %%%%%%%%% launch options %%%%%%%%%%%%
const relayId = Math.floor(Math.random() * 3);
window.eaglercraftXOpts = {
demoMode: false,
container: "game_frame",
assetsURI: "assets.epk",
localesURI: "lang/",
worldsDB: "worlds",
servers: [
/* example: { addr: "ws://localhost:8081/", name: "Local test server" } */
],
relays: [
{ addr: "wss://relay.deev.is/", comment: "lax1dude relay #1", primary: relayId == 0 },
{ addr: "wss://relay.lax1dude.net/", comment: "lax1dude relay #2", primary: relayId == 1 },
{ addr: "wss://relay.shhnowisnottheti.me/", comment: "ayunami relay #1", primary: relayId == 2 }
]
};
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
var q = window.location.search;
if(typeof q === "string" && q.startsWith("?")) {
q = new URLSearchParams(q);
var s = q.get("server");
if(s) window.eaglercraftXOpts.joinServer = s;
}
main();
}
});
</script>
</head>
<body style="margin:0px;width:100vw;height:100vh;overflow:hidden;" id="game_frame">
</body>
</html>

1683
demo/lang/af_ZA.lang Normal file

File diff suppressed because it is too large Load Diff

1696
demo/lang/ar_SA.lang Normal file

File diff suppressed because it is too large Load Diff

1812
demo/lang/ast_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1604
demo/lang/az_AZ.lang Normal file

File diff suppressed because it is too large Load Diff

2516
demo/lang/bg_BG.lang Normal file

File diff suppressed because it is too large Load Diff

1869
demo/lang/ca_ES.lang Normal file

File diff suppressed because it is too large Load Diff

2375
demo/lang/cs_CZ.lang Normal file

File diff suppressed because it is too large Load Diff

1573
demo/lang/cy_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1819
demo/lang/da_DK.lang Normal file

File diff suppressed because it is too large Load Diff

2512
demo/lang/de_DE.lang Normal file

File diff suppressed because it is too large Load Diff

1709
demo/lang/el_GR.lang Normal file

File diff suppressed because it is too large Load Diff

1778
demo/lang/en_AU.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/en_CA.lang Normal file

File diff suppressed because it is too large Load Diff

2515
demo/lang/en_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1929
demo/lang/en_PT.lang Normal file

File diff suppressed because it is too large Load Diff

1770
demo/lang/eo_UY.lang Normal file

File diff suppressed because it is too large Load Diff

2514
demo/lang/es_AR.lang Normal file

File diff suppressed because it is too large Load Diff

2515
demo/lang/es_ES.lang Normal file

File diff suppressed because it is too large Load Diff

2496
demo/lang/es_MX.lang Normal file

File diff suppressed because it is too large Load Diff

1807
demo/lang/es_UY.lang Normal file

File diff suppressed because it is too large Load Diff

1999
demo/lang/es_VE.lang Normal file

File diff suppressed because it is too large Load Diff

2124
demo/lang/et_EE.lang Normal file

File diff suppressed because it is too large Load Diff

1864
demo/lang/eu_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1490
demo/lang/fa_IR.lang Normal file

File diff suppressed because it is too large Load Diff

2378
demo/lang/fi_FI.lang Normal file

File diff suppressed because it is too large Load Diff

1636
demo/lang/fil_PH.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/fr_CA.lang Normal file

File diff suppressed because it is too large Load Diff

2518
demo/lang/fr_FR.lang Normal file

File diff suppressed because it is too large Load Diff

1774
demo/lang/ga_IE.lang Normal file

File diff suppressed because it is too large Load Diff

1565
demo/lang/gl_ES.lang Normal file

File diff suppressed because it is too large Load Diff

1528
demo/lang/gv_IM.lang Normal file

File diff suppressed because it is too large Load Diff

1585
demo/lang/he_IL.lang Normal file

File diff suppressed because it is too large Load Diff

1412
demo/lang/hi_IN.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/hr_HR.lang Normal file

File diff suppressed because it is too large Load Diff

2515
demo/lang/hu_HU.lang Normal file

File diff suppressed because it is too large Load Diff

1363
demo/lang/hy_AM.lang Normal file

File diff suppressed because it is too large Load Diff

1836
demo/lang/id_ID.lang Normal file

File diff suppressed because it is too large Load Diff

1891
demo/lang/is_IS.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/it_IT.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/ja_JP.lang Normal file

File diff suppressed because it is too large Load Diff

2514
demo/lang/ka_GE.lang Normal file

File diff suppressed because it is too large Load Diff

2492
demo/lang/ko_KR.lang Normal file

File diff suppressed because it is too large Load Diff

1628
demo/lang/kw_GB.lang Normal file

File diff suppressed because it is too large Load Diff

1624
demo/lang/la_LA.lang Normal file

File diff suppressed because it is too large Load Diff

1910
demo/lang/lb_LU.lang Normal file

File diff suppressed because it is too large Load Diff

2518
demo/lang/lt_LT.lang Normal file

File diff suppressed because it is too large Load Diff

1754
demo/lang/lv_LV.lang Normal file

File diff suppressed because it is too large Load Diff

458
demo/lang/mi_NZ.lang Normal file
View File

@ -0,0 +1,458 @@
addServer.add=Oti
addServer.enterIp=Wāhi noho o te tūmau
addServer.enterName=Ingoa o te tūmau
addServer.hideAddress=huna wāhitau
addServer.resourcePack=Pōkai Rauemi Tūmau
addServer.resourcePack.disabled=Monokia
addServer.resourcePack.enabled=Mkakaurangi
addServer.resourcePack.prompt=Tohuāki
addServer.title=Whakatika i te tūmau
book.editTitle=Tomo Book Taitara:
book.finalizeButton=Tohu me Katia
book.finalizeWarning=Kia mōhio mai! A, no te haina koe i te pukapuka, ka kore e taea te reira.
book.signButton=Tohu
chat.cannotSend=Kāore e taea te tukatuka kōrerorero karere
chat.copy=Tārua ki Papatopenga
chat.link.confirm=Kei te hiahia koe ki te whakatuwhera i te hononga ki a koutou?
chat.link.confirmTrusted=E hiahia ana koe ki te whakatūwhera mai tēnei hono ranei te tārua te reira ki o koutou papatopenga?
chat.link.open=Whakatūwhera i roto i te Browser
chat.link.warning=Kaua e whakat hononga i tangata ke!
chat.stream.emote=(%s) * %s %s
chat.stream.text=(%s) <%s> %s
chat.type.achievement=%s kua tika roaa te paetae %s
connect.authorizing=Takiuru in...
connect.connecting=E hono ana ki te tūmau...
connect.failed=I rahua te hono ki te tūmau
controls.title=Mana
createWorld.customize.custom.presets=Tatūkē
createWorld.customize.flat.addLayer=tāpiri kahu-
createWorld.customize.flat.editLayer=apa whakatika
createWorld.customize.flat.height=teitei
createWorld.customize.flat.layer.bottom=raro %s
createWorld.customize.flat.layer.top=runga -%s
createWorld.customize.flat.removeLayer=tango kahu-
createWorld.customize.flat.tile=Apa nāunau
createWorld.customize.flat.title=Whakaraupapa Superflat
createWorld.customize.presets=Tatūkē
createWorld.customize.presets.list=Tērā rānei, konei te etahi hanga tatou i mua!
createWorld.customize.presets.select=whakamahi tatūkē
createWorld.customize.presets.share=E hiahia ana ki te faaite i to koutou tatūkē ki te tangata? Whakamahia te pouaka i raro nei!
createWorld.customize.presets.title=tīpako i te tatūkē
demo.day.1=Tenei demo ka muri e rima nga ra game, koutou pai te mahi!
demo.day.2=ra e rua
demo.day.3=ra e toru
demo.day.4=ra e wha
demo.day.5=Ko koutou ra whakamutunga tenei!
demo.day.6=kua mutu e rima nga ra. Press "F5" ki te tango he pikitia o to koutou hanga
demo.day.warning=Ko to koutou wa tata ake!
demo.demoExpired=Demo oti!
demo.help.buy=hoko Minecraft inaianei!
demo.help.fullWrapped=Tenei demo ka muri e rima nga ra (e pā ana ki 1 haora me te 40 miniti o te wā tūturu). Tirohia te whakatutukitanga mō ngā tīwhiri! Kia ngahau!
demo.help.inventory=Whakamahia %1$s ki te whakatuwhera i tō peke
demo.help.jump=Peke mā te pēhi i %1$s
demo.help.later=Tonu tākaro!
demo.help.movement=Whakamahia %1$s, %2$s, %3$s, %4$s me te kiore ki te neke a tawhio noa
demo.help.movementMouse=Titiro huri noa te whakamahi i te kiore
demo.help.movementShort=Neke mā te pēhi i %1$s, %2$s, %3$s, %4$s
demo.help.title=Aratau Demo Minecraft
demo.remainingTime=te wā e toe ana: %s
demo.reminder=Kua mutu te demo. te hoko i te kēmu ki te haere tonu tīmata ranei te ao hou!
disconnect.closed=katia hononga
disconnect.disconnected=Kua momotu i te Tūmau
disconnect.endOfStream=Mutunga o te Awa
disconnect.kicked=I whana i te kēmu
disconnect.loginFailed=I rahua te takiuru
disconnect.loginFailedInfo=I rahua te takiuru: %s
disconnect.loginFailedInfo.invalidSession=Wātū muhu (Me tīmata anō i tō kēmu)
disconnect.loginFailedInfo.serversUnavailable=Ko te motuhēhēnga he wā ki raro mo te tiaki.
disconnect.lost=hononga ngaro
disconnect.overflow=papare te waipuke
disconnect.quitting=whakamutu
disconnect.spam=Whana hoki whakamuhani
disconnect.timeout=pau i roto i
entity.Boat.name=Waka
entity.EntityHorse.name=Hoiho
entity.horse.name=Hoiho
gameMode.adventure=Aratau Adventure
gameMode.changed=Kua whakahoutia te gameplay
gameMode.creative=Aratau Creative
gameMode.hardcore=aratau tino!
gameMode.survival=Aratau Survival
generator.amplified=ô-
generator.amplified.info=pānui: anake hoki ngahau, me nui rorohiko
generator.default=taunoa
generator.flat=Superflat
generator.largeBiomes=ngā wāhi nui
gui.all=Katoa
gui.back=Hoki
gui.cancel=Whakakore
gui.done=Oti
gui.down=iho
gui.no=Kāo
gui.toMenu=hoki ki te mata taitara
gui.up=Ake
gui.yes=Āe
item.apple.name=Āporo
item.arrow.name=Pere
item.bed.name=Moenga
item.beefCooked.name=Kotinga mīti
item.boat.name=Waka
item.bone.name=Wheua
item.bow.name=Kopere
item.bread.name=Parāoa
item.bucket.name=Pēre
item.cake.name=Keke
item.carrots.name=Kāreti
item.charcoal.name=Waro
item.clock.name=Karaka
item.coal.name=Waro
item.compass.name=Kāpehu
item.cookie.name=Pihikete
item.diamond.name=Taimana
item.egg.name=Hēki
item.emerald.name=Kahurangi
item.feather.name=Piki
item.fishingRod.name=Matira
item.flint.name=Matā
item.hatchetWood.name=Tuaina ki rakau
item.ingotGold.name=Gold Ingot
item.ingotIron.name=Iron Ingot
item.leather.name=Rera
item.map.name=Mapi
item.painting.name=Waituhi
item.pickaxeWood.name=Keriwhenua ki rakau
item.saddle.name=Tera
item.seeds.name=Purapura
item.shovelWood.name=koko rakau
item.sign.name=Pouārahi
item.snowball.name=Poi huka
item.stick.name=Rākau
item.sulphur.name=Paura
item.swordIron.name=Iron Hoari
item.swordWood.name=te hoari rakau
item.wheat.name=Wīti
key.categories.inventory=Rārangi taonga
key.categories.multiplayer=Multiplayer
key.inventory=Rārangi taonga
key.jump=Peke
lanServer.otherPlayers=i ngā tautuhinga mō ētahi atu kaitākaro
lanServer.scanning=matawai mō ngā kēmu i runga i tō whatunga rohe
lanServer.start=tīmata LAN ao
lanServer.title=LAN te ao
language.code=mi_NZ
language.name=Te Reo Māori
language.region=Aotearoa
mcoServer.title=hou te ao ipurangi Minecraft
menu.convertingLevel=Faafariuraa o te ao
menu.disconnect=Wetea
menu.game=tahua kēmu
menu.generatingLevel=Auaha te ao
menu.generatingTerrain=Auaha te whenua
menu.loadingLevel=Rāwekeweke te ao
menu.multiplayer=huihui
menu.options=nga kōwhiringa...
menu.playdemo=Te tākaro Demo World
menu.quit=Putanga
menu.resetdemo=Tautuhi anō Demo World
menu.respawning=whakawhānau takarure
menu.returnToGame=Hoki ki te kēmu
menu.returnToMenu=Putanga me haere ki te rārangi tono
menu.shareToLan=tuwhera tō LAN
menu.simulating=Construction o te ao i roto i nga paraire
menu.singleplayer=anake
menu.switchingLevel=Whakawhitiwhiti nga ao
multiplayer.connect=Hono
multiplayer.downloadingStats=Te tikiake i ngā tatauranga & whakatutukitanga ...
multiplayer.downloadingTerrain=Tikiake ana i nga whenua
multiplayer.info1=Minecraft Multiplayer kore tēnei wā kei te oti, engari i reira
multiplayer.info2=whakamātautau bug wawe puta.
multiplayer.ipinfo=Tomo i te IP o te tūmau, ki te hono atu ki reira:
multiplayer.player.joined=%s uru atu te kēmu
multiplayer.player.joined.renamed=%s (e mōhiotia i mua kia rite ki %s) i uru ki te kēmu
multiplayer.player.left=%s mahue te kēmu
multiplayer.stopSleeping=waiho Bed
multiplayer.texturePrompt.line1=E taunaki ana tēnei tūmau i te whakamahi o te mōkihi rauemi ritenga.
multiplayer.texturePrompt.line2=E hiahia ana koe ki te tiki ake me te tāuta i te reira aunoa?
multiplayer.title=te tākaro multiplayer
options.advancedButton=Settings Ataata Arā...
options.advancedOpengl=OpenGL Arā
options.advancedVideoTitle=Settings Ataata Arā
options.anaglyph=3D Anaglyph
options.ao=Whakamumuratanga Whakaene
options.ao.max=Mōrahi
options.ao.min=Mōkito
options.ao.off=OFF
options.chat.color=Tae
options.chat.height.unfocused=Not Focused Height
options.chat.links=Hononga Tukutuku
options.chat.links.prompt=Tohuāki i runga i Hononga
options.chat.opacity=Opacity
options.chat.scale=Tauine
options.chat.title=Settings kōrerorero...
options.chat.visibility=kōrerorero
options.chat.visibility.full=whakaaturia
options.chat.visibility.hidden=Huna
options.chat.visibility.system=tono anake
options.chat.width=Whānuitanga
options.controls=Mana...
options.difficulty=Uaua
options.difficulty.easy=Ngāwari
options.difficulty.hard=Māro
options.difficulty.hardcore=Hardcore
options.difficulty.normal=Pūnoa
options.difficulty.peaceful=Rangimārie
options.farWarning1=Tūtohutia te tāutanga Java 64 bit te
options.farWarning2='Far' hoatu tawhiti (koe 32 bit)
options.fboEnable=Whakahohe i FBOs
options.fov=FOV
options.fov.max=Quake PROV
options.fov.min=Pūnoa
options.framerateLimit=Mokatere tāpare Max
options.framerateLimit.max=Unlimited
options.gamma=Gile
options.gamma.max=Kanapa
options.gamma.min=Moody
options.graphics=Whakairoiro
options.graphics.fancy=Fancy
options.graphics.fast=Nohopuku
options.guiScale=GUI Tauine
options.guiScale.auto=Car
options.guiScale.large=Nui
options.guiScale.normal=Pūnoa
options.guiScale.small=Iti
options.hidden=Huna
options.invertMouse=Huripoki Kiore
options.language=Reo...
options.languageWarning=E kore ai translations reo e tōtika 100%%
options.multiplayer.title=Settings Multiplayer...
options.music=Puoro
options.off=OFF
options.on=ON
options.particles=matūriki
options.particles.all=Katoa
options.particles.decreased=Heke
options.particles.minimal=Iti
options.performanceButton=Settings Mahinga Ataata...
options.performanceVideoTitle=Settings Mahinga Ataata
options.postButton=Settings Post-Processing...
options.postProcessEnable=Whakahohetia te Post-Processing
options.postVideoTitle=Settings Post-Processing
options.qualityButton=Settings Kounga Ataata...
options.qualityVideoTitle=Settings Kounga Ataata
options.renderClouds=Kapua
options.renderDistance=Hoatu tawhiti
options.renderDistance.far=Tawhiti
options.renderDistance.normal=Pūnoa
options.renderDistance.short=Poto
options.renderDistance.tiny=Iti
options.saturation=waiwai
options.sensitivity=Rauangi
options.sensitivity.max=HYPERSPEED!!!
options.sensitivity.min=*Oha*
options.snooper=Tukua popore
options.sound=tangi
options.sounds=Music & Oro...
options.sounds.title=Kōwhiringa Music & Sound
options.stream=Pāohotanga Settings...
options.stream.changes=Me tīmata anō pea koutou awa koe mo ki enei rerekētanga tango i te wahi.
options.stream.compression.high=Tiketike
options.stream.compression.low=Iti
options.stream.compression.medium=Waenga
options.stream.mic_toggle.talk=Kōrero
options.title=kōwhiringa
options.video=Settings Video...
options.videoTitle=Settings Video
options.viewBobbing=Tirohia te whāwhā
options.visible=whakaaturia
record.nowPlaying=tākaro Na: %s
selectServer.add=Tāpiri Tūmau
selectServer.defaultName=Tūmau Minecraft
selectServer.delete=Porowhiu
selectServer.deleteButton=Porowhiu
selectServer.deleteQuestion=Whakaū i te tango o tenei tūmau?
selectServer.deleteWarning=Ngaro ka ake ake! (Te wa i!)
selectServer.direct=Whakarerekē
selectServer.edit=Whakarerekē
selectServer.empty=tahanga
selectServer.hiddenAddress=(Huna)
selectServer.refresh=Update
selectServer.select=amui atu tūmau
selectServer.title=te tīpako i te tūmau
selectWorld.allowCommands=Tuku i te whakahau:
selectWorld.allowCommands.info=Kainga, herehere, i ētahi atu momo ao... /gamemode, /xp
selectWorld.bonusItems=utu uma:
selectWorld.cheats=Tinihanga
selectWorld.conversion=Me tahuri!
selectWorld.create=Waihanga he world new
selectWorld.createDemo=Te tākaro New Demo World
selectWorld.customizeType=Whakatauritea
selectWorld.delete=Porowhiu
selectWorld.deleteButton=Porowhiu
selectWorld.deleteQuestion=E hiahia ana koe ki te muku i tēnei ao ki a koutou?
selectWorld.deleteWarning=ka ngaro ake ake! (He roa te wā!)
selectWorld.empty=tahanga
selectWorld.enterName=ingoa ao
selectWorld.enterSeed=uri mo te kaihanga ao
selectWorld.gameMode=Aratau Game
selectWorld.gameMode.adventure=Haere māia
selectWorld.gameMode.adventure.line1=Rite aratau ora, engari e kore e taea e poraka
selectWorld.gameMode.adventure.line2=tāpiri, te tango ranei,
selectWorld.gameMode.creative=auaha
selectWorld.gameMode.creative.line1=rauemi mure ore, e rere ana, me te kore utu
selectWorld.gameMode.creative.line2=Top -%s
selectWorld.gameMode.hardcore=tino
selectWorld.gameMode.hardcore.line1=Rite aratau ora, kua kiia i faingataa
selectWorld.gameMode.hardcore.line2=uaua, a kotahi te ora anake
selectWorld.gameMode.survival=Noho ora
selectWorld.gameMode.survival.line1=Rapu mō te rauemi, ke fokotuutuu, taonga
selectWorld.gameMode.survival.line2=taumata, te hauora, me te matekai
selectWorld.hardcoreMode=tino:
selectWorld.hardcoreMode.info=mukua ao te ki runga ki te mate
selectWorld.mapFeatures=Whakaputa hanganga:
selectWorld.mapFeatures.info=Kainga, herehere, i ētahi atu momo ao
selectWorld.mapType=Momo o te ao:
selectWorld.mapType.normal=Noa
selectWorld.moreWorldOptions=Ētahi atu Kōwhiringa Ao ...
selectWorld.newWorld=ao hou
selectWorld.newWorld.copyOf=kape o te %s
selectWorld.recreate=Waihangatia tētahi atu wā
selectWorld.rename=Huria te ingoa
selectWorld.renameButton=whakaingoa
selectWorld.renameTitle=whakaingoa World
selectWorld.resultFolder=ka ora i roto i:
selectWorld.seedInfo=waiho kia pātea tonu hoki te uri tupurangi
selectWorld.select=Te tākaro i te ao kua tīpakohia
selectWorld.title=Tīpakohia te ao
selectWorld.world=Ao
soundCategory.ambient=Ambient / Taiao
soundCategory.block=poraka
soundCategory.hostile=Vaerua kaikiri
soundCategory.master=rōrahi te Kaiwhakaako
soundCategory.music=Puoro
soundCategory.neutral=Vaerua hoa
soundCategory.player=kaitākaro
soundCategory.record=Poraka rekoata / Tuhipoka
soundCategory.weather=Weather
tile.activatorRail.name=Activator Rail
tile.anvil.name=Paepae maitai
tile.bedrock.name=maka tefito
tile.blockCoal.name=Poraka o Coal
tile.blockDiamond.name=Poraka o Diamond
tile.bookshelf.name=PukaPuka
tile.brick.name=Pereki
tile.button.name=Pātene
tile.cake.name=Keke
tile.carrots.name=Kāreti
tile.chest.name=pouaka
tile.chestTrap.name=aaka mau
tile.cloth.name=Wūru
tile.cocoa.name=Koukou
tile.crops.name=Kai
tile.deadbush.name=mate Bush
tile.detectorRail.name=pūkimi Rail
tile.dirt.default.name=Oneone
tile.dirt.podzol.name=Onemata
tile.doorIron.name=Iron Door
tile.doorWood.name=Door Rakau
tile.doublePlant.fern.name=Ponga
tile.doublePlant.rose.name=Rōha
tile.doublePlant.sunflower.name=Putiputi rā
tile.farmland.name=Papanga pāmu
tile.fence.name=Taiepa
tile.fire.name=Ahi
tile.flower1.dandelion.name=Tawao
tile.flower2.allium.name=Allium
tile.flower2.houstonia.name=Azure Bluet
tile.flower2.tulipRed.name=Whero Tulip
tile.furnace.name=Oumu
tile.glass.name=Karaehe
tile.goldenRail.name=Rail Powered
tile.grass.name=tarutaru Poraka
tile.gravel.name=Tuakirikiri
tile.hayBlock.name=hay wuru
tile.ice.name=Haupapa
tile.ladder.name=Arawhata
tile.lava.name=Tahepuia
tile.leaves.acacia.name=hitimi Rau
tile.leaves.big_oak.name=Dark Oak Rau
tile.leaves.birch.name=birch Rau
tile.leaves.jungle.name=uru raau no Rau
tile.leaves.name=Ngā rau
tile.leaves.oak.name=Rau oki
tile.leaves.spruce.name=Rau te puruhi
tile.lever.name=Ara
tile.log.acacia.name=hitimi Wood
tile.log.big_oak.name=Dark Oak Wood
tile.log.birch.name=Birch Wood
tile.log.jungle.name=uru raau no Wood
tile.log.name=Rākau
tile.log.oak.name=Rākau oke
tile.log.spruce.name=te puruhi mo Wood
tile.mobSpawner.name=Monster Spawner
tile.obsidian.name=Matā
tile.oreCoal.name=Coal Ore
tile.oreDiamond.name=Diamond Ore
tile.oreGold.name=Gold Ore
tile.oreIron.name=Iron Ore
tile.potatoes.name=Rīwai
tile.pumpkin.name=Paukena
tile.rail.name=Ara tereina
tile.redstoneDust.name=Redstone puehu
tile.sand.default.name=Kirikiri
tile.sand.red.name=Kirikiri whero
tile.sandStone.chiseled.name=whaoa hōanga
tile.sandStone.default.name=Hōanga
tile.sandStone.name=Hōanga
tile.sandStone.smooth.name=hōanga Whakaene
tile.sapling.acacia.name=hitimi Māhuri
tile.sapling.birch.name=Birch Māhuri
tile.sapling.jungle.name=uru raau no Māhuri
tile.sapling.oak.name=Oak Māhuri
tile.sapling.spruce.name=te puruhi mo Māhuri
tile.sign.name=Tohu
tile.snow.name=Huka
tile.stainedGlass.black.name=Black ōpure koata
tile.stainedGlass.blue.name=Blue ōpure koata
tile.stainedGlass.brown.name=Brown ōpure koata
tile.stainedGlass.cyan.name=Urikiko ōpure koata
tile.stainedGlass.gray.name=Gray ōpure koata
tile.stainedGlass.green.name=Green ōpure koata
tile.stainedGlass.name=ōpure koata
tile.stainedGlass.pink.name=Pink ōpure koata
tile.stainedGlass.purple.name=Papura ōpure koata
tile.stainedGlass.red.name=Whero ōpure koata
tile.stainedGlass.silver.name=Light Gray ōpure koata
tile.stairsSandStone.name=hōanga Arawhata
tile.stairsStone.name=Stone Arawhata
tile.stairsWood.name=Oak Wood Arawhata
tile.stairsWoodAcacia.name=Hitimi Wood Arawhata
tile.stairsWoodBirch.name=Birch Wood Arawhata
tile.stairsWoodDarkOak.name=Dark Oak Wood Arawhata
tile.stairsWoodJungle.name=Uru raau no Wood Arawhata
tile.stairsWoodSpruce.name=Te puruhi mo Wood Arawhata
tile.stoneMoss.name=Moss Stone
tile.stonebrick.name=Cobblestone
tile.tallgrass.fern.name=Ponga
tile.tallgrass.grass.name=Karaihe
tile.tallgrass.name=Karaihe
tile.tallgrass.shrub.name=Riki
tile.thinGlass.name=Pihanga
tile.tnt.name=TNT
tile.torch.name=Rama
tile.water.name=Wai
tile.weightedPlate_heavy.name=Plate Pressure tautaha (Taumaha)
tile.weightedPlate_light.name=Plate Pressure tautaha (Light)
tile.wood.acacia.name=Hitimi Wood papa
tile.wood.big_oak.name=Dark Oak Wood papa
tile.wood.birch.name=Birch Wood papa
tile.wood.jungle.name=Uru raau no Wood papa
tile.wood.name=papa rākau
tile.wood.oak.name=Oak papa rakau
tile.wood.spruce.name=Te puruhi mo Wood papa
tile.woodSlab.acacia.name=Hitimi Wood papa
tile.woodSlab.big_oak.name=Dark Oak Wood papa
tile.woodSlab.birch.name=Birch Wood Papa
tile.woodSlab.jungle.name=Uru raau no Wood papa
tile.woodSlab.oak.name=Oak Wood Papa
tile.woodSlab.spruce.name=Te puruhi mo Wood papa
tile.workbench.name=Papamahi

1534
demo/lang/ms_MY.lang Normal file

File diff suppressed because it is too large Load Diff

1909
demo/lang/mt_MT.lang Normal file

File diff suppressed because it is too large Load Diff

1739
demo/lang/nds_DE.lang Normal file

File diff suppressed because it is too large Load Diff

2516
demo/lang/nl_NL.lang Normal file

File diff suppressed because it is too large Load Diff

1630
demo/lang/nn_NO.lang Normal file

File diff suppressed because it is too large Load Diff

1852
demo/lang/no_NO.lang Normal file

File diff suppressed because it is too large Load Diff

2490
demo/lang/oc_FR.lang Normal file

File diff suppressed because it is too large Load Diff

1981
demo/lang/pl_PL.lang Normal file

File diff suppressed because it is too large Load Diff

2516
demo/lang/pt_BR.lang Normal file

File diff suppressed because it is too large Load Diff

1989
demo/lang/pt_PT.lang Normal file

File diff suppressed because it is too large Load Diff

1104
demo/lang/qya_AA.lang Normal file

File diff suppressed because it is too large Load Diff

2515
demo/lang/ro_RO.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/ru_RU.lang Normal file

File diff suppressed because it is too large Load Diff

436
demo/lang/se_NO.lang Normal file
View File

@ -0,0 +1,436 @@
achievement.bakeCake=Gielis
achievement.bakeCake.desc=Nisut, sohkar, mielki ja monit!
achievement.blazeRod=Dollii
achievement.bookcase=Girjerájusbargi
achievement.buildBetterPickaxe=Buoredat
achievement.diamonds=DIAMÁNTTAT!
achievement.killWither=Álgu.
achievement.spawnWither=Álgu?
achievement.theEnd=Loahppa?
achievement.theEnd2=Loahppa.
addServer.add=Gárvvis
attribute.name.generic.movementSpeed=Johtilvuohta
book.finalizeButton=Sivdnidat ja dahppat
book.generation.0=Originála
book.signButton=Sivdnidat
chat.stream.emote=(%s) * %s %s
chat.stream.text=(%s) <%s> %s
commands.ban.failed=Ii máhte gieldit čuojaheadji %s
commands.ban.success=Čuojaheaddji %s lea gieldán
commands.ban.usage=/ban <nama> [sivva...]
commands.clone.usage=/clone <x1> <y1> <z1> <x2> <y2> <z2> <x> <y> <z> [mode]
commands.compare.usage=/testforblocks <x1> <y1> <z1> <x2> <y2> <z2><x><y><z>[mode]
commands.defaultgamemode.usage=/defaultgamemode <modus>
commands.deop.failed=Ii máhte de-op %s
commands.deop.usage=/deop <čuojaheadji>
commands.difficulty.usage=/difficulty <ođđa áŧestus>
commands.entitydata.noPlayers=%s lea čuojaheaddji ja ii máhte rievdaduvvot
commands.gamemode.usage=/gamemode <modus> [čuojaheaddji]
commands.generic.usage=Geavahus: %s
commands.kick.usage=/kick <čuojaheadji> [sivva...]
commands.message.display.incoming=%s savkala dutnje: %s
commands.message.display.outgoing=Don savkalat čuojaheaddjai %s: %s
commands.op.failed=Ii máhte op %s
commands.op.usage=/op <čuojaheadji>
commands.particle.usage=/particle <name> <x> <y> <z> <xd> <yd> <zd> <speed> [count] [mode]
commands.say.usage=/say <dieđáhus>
commands.scoreboard.teams.add.alreadyExists=Joavku namain %s juo gávdno
commands.scoreboard.teams.add.success=Joavku '%s' lea lasihan
commands.scoreboard.teams.leave.noTeam=Don it leat joavkkus
commands.scoreboard.teams.list.entry=- %1$s: čájáhusanamma '%2$s', čuojaheaddjit %3$s
commands.scoreboard.teams.list.player.empty=Eai leat čuojaheaddjit joavkkus %s
commands.scoreboard.teams.list.usage=/scoreboard teams list [namma]
commands.scoreboard.teams.option.usage=/scoreboard teams option <team> <friendlyfire|color|seeFriendlyInvisibles|nametagVisibility|deathMessageVisibility> <value>
commands.scoreboard.teams.remove.success=Joavku %s lea sihkkon
commands.seed.success=Seed: %s
commands.setworldspawn.usage=/setworldspawn [<x> <y> <z>]
commands.stats.block.usage=/stats block <x> <y> <z> <mode> ...
commands.testfor.success=%s lea gávdnan
commands.time.query=Diibmu lea %s
commands.title.usage.clear=/title <čuojaheaddji> clear|reset
commands.unban.failed=Ii máhte eahpegieldit čuojaheadji %s
commands.unban.success=Čuojaheaddji %s lea eahpegieldán
commands.unban.usage=/pardon <nama>
commands.unbanip.usage=/pardon-ip <adreassa>
commands.whitelist.add.usage=/whitelist add <čuojaheadji>
commands.whitelist.remove.usage=/whitelist sihko <čuojaheadji>
commands.worldborder.center.usage=/worldborder center <x> <z>
container.enchant.clue=%s . . . ?
container.furnace=Steaikauvdna
container.isLocked=%s lea lohkkadan!
createWorld.customize.custom.confirmTitle=Varuhus!
createWorld.customize.custom.next=Viidáseappot
createWorld.customize.custom.preset.goodLuck=Ollu lihkku
createWorld.customize.custom.preset.isleLand=Sulloeatnan
createWorld.customize.custom.preset.waterWorld=Čázi máilbmi
createWorld.customize.custom.prev=Ruoktu
createWorld.customize.custom.riverSize=Joga sturrodat
createWorld.customize.custom.useCaves=Čiehppasat
createWorld.customize.custom.useLavaLakes=Lava jávrrit
createWorld.customize.custom.useRavines=Ruččut
createWorld.customize.custom.useTemples=Tempelat
createWorld.customize.custom.useVillages=Gávpogat
createWorld.customize.custom.useWaterLakes=Čázi jávrrit
createWorld.customize.flat.height=Allodat
createWorld.customize.flat.layer.bottom=Bodni - %s
createWorld.customize.flat.layer.top=Giera + %s
death.attack.generic=%1$s jámii
deathScreen.score=Čuoggát
deathScreen.title=Don leat jábmi!
demo.day.2=Nubbi beaivi
demo.day.3=Goalmmát beaivi
demo.day.4=Njealját beaivi
demo.day.5=Dát lea du maŋimus beaivi!
demo.help.buy=Oasttát dál!
demo.help.later=Joatkkát ja čuojahat!
disconnect.quitting=Guođđit
disconnect.timeout=Mihkkege vástádus
enchantment.level.1=I
enchantment.level.10=X
enchantment.level.2=II
enchantment.level.3=III
enchantment.level.4=IV
enchantment.level.5=V
enchantment.level.6=VI
enchantment.level.7=VII
enchantment.level.8=VIII
enchantment.level.9=IX
entity.Boat.name=Fanas
entity.Cat.name=Bussá
entity.Chicken.name=Vuonccis
entity.Cow.name=Gussa
entity.Creeper.name=Creeper
entity.EntityHorse.name=Heasta
entity.Item.name=Diŋga
entity.Pig.name=Spiidni
entity.Rabbit.name=Kaniidna
entity.Sheep.name=Sávza
entity.SnowMan.name=Čagigolem
entity.Spider.name=Heavdni
entity.Villager.librarian=Girjerájusbargi
entity.VillagerGolem.name=Ruovddigolem
entity.Wolf.name=Gumpe
entity.Zombie.name=Zombi
entity.generic.name=dovdameahttun
entity.horse.name=Heasta
entity.zombiehorse.name=Zombi heasta
gameMode.adventure=Máinasmodus
gameMode.hardcore=Hardcore-modus!
gui.all=Buot
gui.back=Ruoktu
gui.cancel=Šluhtte
gui.done=Gárvvis
gui.down=vulos
gui.no=Ii
gui.none=Ii mihkkege
gui.stats=Statistihkat
gui.toMenu=Ruoktu váldufálus
gui.up=Bajás
gui.yes=Gal
inventory.binSlot=Billistát diŋgga
item.apple.name=Eappel
item.banner.black.name=Čáhppat leavga
item.banner.blue.name=Alit leavga
item.banner.brown.name=Ruškat leavga
item.banner.gray.name=Ránis leavga
item.banner.green.name=Ruoná leavga
item.banner.mojang.black=Čáhppat ášši
item.banner.mojang.blue=Alit ášši
item.banner.mojang.brown=Ruškat ášši
item.banner.mojang.gray=Ránis ášši
item.banner.mojang.green=Ruoná ášši
item.banner.mojang.orange=Oránša ášši
item.banner.mojang.pink=Guvgesruoksa ášši
item.banner.mojang.purple=Sáhppat ášši
item.banner.mojang.red=Ruoksat ášši
item.banner.mojang.white=Vielgat ášši
item.banner.mojang.yellow=Fiskat ášši
item.banner.orange.name=Oránša leavga
item.banner.pink.name=Guvgesruoksat leavga
item.banner.purple.name=Sáhppat leavga
item.banner.red.name=Ruoksat leavga
item.banner.small_stripes.black=Čáhppat ráidá
item.banner.small_stripes.blue=Alit ráidá
item.banner.small_stripes.brown=Ruškat
ráidá
item.banner.small_stripes.gray=Ránis ráidá
item.banner.small_stripes.green=Ruoná ráidá
item.banner.small_stripes.orange=Oránša ráidá
item.banner.small_stripes.pink=Guvgeruoksat ráidá
item.banner.small_stripes.purple=Sáhppat ráidá
item.banner.small_stripes.red=Ruoksat ráidá
item.banner.small_stripes.white=Vielgat ráidá
item.banner.small_stripes.yellow=Fiskat ráidá
item.banner.straight_cross.black=Čáhppat ruossa
item.banner.straight_cross.blue=Alit ruossa
item.banner.straight_cross.brown=Ruškat ruossa
item.banner.straight_cross.gray=Ránis ruossa
item.banner.straight_cross.green=Ruoná ruossa
item.banner.straight_cross.orange=Oránša ruossa
item.banner.straight_cross.pink=Guvgesruoksat ruossa
item.banner.straight_cross.purple=Sáhppat ruossa
item.banner.straight_cross.red=Ruoksat ruossa
item.banner.straight_cross.white=Vielgat ruossa
item.banner.straight_cross.yellow=Fiskat ruossa
item.banner.white.name=Vielgat leavga
item.banner.yellow.name=Fiskat leavga
item.bed.name=Seaŋga
item.boat.name=Fanas
item.book.name=Girji
item.bow.name=Dávgi
item.bowl.name=Bolljá
item.bread.name=Láibi
item.bucket.name=Skállu
item.bucketLava.name=Lavaskállu
item.bucketWater.name=Čáziskállu
item.cake.name=Gáhkku
item.clay.name=láira
item.cookie.name=Keaksa
item.diamond.name=Diamántta
item.egg.name=Monni
item.feather.name=Dávgi
item.fireworksCharge.black=Čáhppat
item.fireworksCharge.blue=Alit
item.fireworksCharge.gray=Ránis
item.fireworksCharge.green=Ruoná
item.fireworksCharge.orange=Oránša
item.fireworksCharge.red=Ruoksat
item.fireworksCharge.white=Vielgat
item.hatchetDiamond.name=Diamántta-ákšu
item.hatchetGold.name=Golliákšu
item.hatchetIron.name=Ruovddiákšu
item.hatchetStone.name=Geađggiákšu
item.hatchetWood.name=Muorra-ákšu
item.leaves.name=Lasttat
item.map.name=Gárta
item.melon.name=Melovdna
item.milk.name=Mielki
item.paper.name=Bábir
item.pickaxeDiamond.name=Diamánttaguohkki
item.pickaxeGold.name=Golliguohkki
item.pickaxeIron.name=Ruovddiguohkki
item.pickaxeStone.name=Geađggiguohkki
item.pickaxeWood.name=Muorraguohkki
item.potion.name=Juhkamuš
item.record.11.desc=C418 - 11
item.record.13.desc=C418 - 13
item.record.blocks.desc=C418 - blocks
item.record.cat.desc=C418 - cat
item.record.chirp.desc=C418 - chirp
item.record.far.desc=C418 - far
item.record.mall.desc=C418 - mall
item.record.mellohi.desc=C418 - mellohi
item.record.stal.desc=C418 - stal
item.record.strad.desc=C418 - strad
item.record.wait.desc=C418 - wait
item.record.ward.desc=C418 - ward
item.redstone.name=Ruoksatgeađgi
item.saddle.name=Sále
item.sign.name=Galba
item.skull.char.name=Oaivi
item.skull.creeper.name=Creeper oaivi
item.skull.player.name=Čuojaheadji %s oaivi
item.skull.zombie.name=Zombi oaivi
item.stick.name=Sággi
item.sugar.name=Sohkar
item.sulphur.name=Rukta
item.swordDiamond.name=Diamánttamiehkki
item.swordGold.name=Gollimiehkki
item.swordIron.name=Ruovddimiehkki
item.swordStone.name=Geađggimiehkki
item.swordWood.name=Muorramiehkki
itemGroup.combat=Dáistaleapmi
itemGroup.food=Borramuš
itemGroup.redstone= Ruoksatgeađgi
itemGroup.tools=Reaiddut
key.categories.movement=Johtu
key.jump=Njuiket
key.mouseButton=Boallu %1$s
key.playerlist=Čuojaheadjelistu
key.sprint=Viegat
lanServer.title=LAN máilbmi
language.code=sme
language.name=Davvisámegiella
language.region=Sápmi
menu.disconnect=Guođe
menu.options=Heivehusat...
menu.quit=Guođe spealus
menu.returnToGame=Ruoktu spealluin
menu.switchingLevel=Molssut máilmmiid
multiplayer.connect=Čanat
multiplayer.downloadingTerrain=Viežžá eanadaga
multiplayer.player.joined=%s lea laktásan spealu
multiplayer.player.left=%s guđii spealus
multiplayer.stopSleeping=Guođđit seaŋggas
options.ao.off=II ALDE
options.blockAlternatives=Molssoeavttolaččat blohkat
options.chat.color=Ivnnit
options.chat.visibility.hidden=Čiegus
options.chat.width=Viidodat
options.difficulty=Áŧestus
options.difficulty.easy=Geahpas
options.difficulty.hard=Lossat
options.difficulty.hardcore=Hardcore
options.difficulty.normal=Normála
options.difficulty.peaceful= Ráfálaš
options.fov.max=Quake Pro
options.fov.min=Normála
options.graphics=Grafihkka
options.graphics.fancy=Fiinnis
options.graphics.fast=Johtil
options.guiScale.auto=Automáhtalaš
options.guiScale.large=Stuoris
options.guiScale.normal=Normála
options.guiScale.small=Uhcci
options.hidden=Čiegus
options.language=Giella...
options.modelPart.cape=Gákti
options.modelPart.hat=Háhtta
options.modelPart.jacket=Jáhkka
options.music=Musihkka
options.off=II ALDE
options.on=ALDE
options.particles=Partihkalat
options.particles.all=Buot
options.renderClouds=Balvvat
options.renderDistance.far=Viiddis
options.renderDistance.normal=Normála
options.renderDistance.short=Oanehaš
options.renderDistance.tiny=Smávis
options.sensitivity.max=HYPERJOHTIL!!!
options.sound=Jienat
options.sounds=Musihkka ja jienat...
options.stream.bytesPerPixel=Dássu
options.stream.chat.enabled.always=Álo
options.stream.chat.enabled.never=Ii goassige
options.stream.chat.userFilter=Geavaheadjifilttar
options.stream.mic_toggle.mute=Váidudat
options.stream.mic_toggle.talk=Humat
options.title=Heivehusat
potion.damageBoost=Vuoibmi
potion.digSpeed=Hoahppu
potion.hunger=Nealgi
potion.moveSpeed=Johtilvuohta
potion.poison=Mirko
potion.potency.1=II
potion.potency.2=III
potion.potency.3=IV
potion.prefix.mundane=Dábálaš
potion.prefix.uninteresting=Ahkit
selectServer.delete=Sihko
selectServer.deleteButton=Sihko
selectServer.edit=Rievdádeapmi
selectServer.empty=guoros
selectServer.hiddenAddress=(Čiegus)
selectWorld.create=Luova ođđasa máilmmi
selectWorld.delete=Sihko
selectWorld.deleteButton=Sihko
selectWorld.empty=guoros
selectWorld.enterName=Máilmmi namma
selectWorld.gameMode=Spealumodus
selectWorld.gameMode.adventure=Máinnas
selectWorld.gameMode.creative=Kreatiiva
selectWorld.gameMode.hardcore=Hardcore
selectWorld.hardcoreMode=Hardcore:
selectWorld.mapType=Máilmmi tiipa:
selectWorld.mapType.normal=Normála
selectWorld.moreWorldOptions=Eanet máilmmiheivehusat...
selectWorld.newWorld=Ođđa máilbmi
selectWorld.newWorld.copyOf="%s" máŋggus
selectWorld.rename=Attát ođđasa nama
selectWorld.renameButton=Attát ođđasa nama
selectWorld.renameTitle=Attát máilbmái ođđasa nama
selectWorld.title=Vállje máilmmi
selectWorld.world=Máilbmi
soundCategory.block=Blohkat
soundCategory.music=Musihkka
soundCategory.player=Čuojaheaddjit
soundCategory.weather=Dálki
stat.itemsButton=Diŋggat
stream.unavailable.initialization_failure.extra=(Sivva: %s)
stream.unavailable.no_fbo.version=Dál don atnát: %s
stream.unavailable.not_supported.mac.okay=Buoredat
stream.unavailable.report_to_mojang=Dieđihát Mojangai
stream.user.mode.banned=Gieldán
stream.user.mode.banned.other=Gieldán %s gulahallangaskaoamis
stream.user.mode.banned.self=Gieldán du gulahallangaskaoamis
stream.user.mode.broadcaster=Doaimmaheaddji
stream.user.mode.broadcaster.other=Doaimmaheaddji
stream.user.mode.broadcaster.self=Doaimmaheaddji (Don!)
stream.userinfo.ban=Gielddát
stream.userinfo.unban=Eahpegielddát
tile.anvil.intact.name=Stáđđi
tile.anvil.name=Stáđđi
tile.barrier.name=Eastta
tile.bed.name=Seaŋga
tile.blockCoal.name=Hilablohkka
tile.blockDiamond.name=Diamánttablohkka
tile.blockGold.name=Golliblohkka
tile.blockIron.name=Ruovddiblohkka
tile.blockRedstone.name=Ruoksatgeađggiblohkka
tile.brick.name=Tiillat
tile.cake.name=Gáhkku
tile.carrots.name=Rušppit
tile.clay.name=láira
tile.cloth.black.name=Čáhppat ullu
tile.cloth.blue.name=Alit ullu
tile.cloth.brown.name=Ruškat ullu
tile.cloth.gray.name=Ránis ullu
tile.cloth.green.name=Ruoná ullu
tile.cloth.name=Ullu
tile.cloth.orange.name=Oránša ullu
tile.cloth.pink.name=Guvgesruoksat ullu
tile.cloth.purple.name=Sáhppat ullu
tile.cloth.red.name=Ruoksat ullu
tile.cloth.white.name=Ullu
tile.cloth.yellow.name=Fiskat ullu
tile.cocoa.name=Kakáo
tile.dirt.coarse.name=Roavis eana
tile.dirt.default.name=Eana
tile.dirt.name=Eana
tile.doublePlant.name=Šaddu
tile.fire.name=Dolla
tile.flower1.name=Lieđđi
tile.flower2.name=Lieđđi
tile.glass.name=Glássa
tile.gravel.name=Čievra
tile.ice.name=Jiekŋa
tile.lava.name=Lava
tile.leaves.name=Lasttat
tile.litpumpkin.name=Gurbetlikta
tile.log.name=Muorra
tile.melon.name=Melovdna
tile.mushroom.name=Guoppar
tile.potatoes.name=Buđeitad
tile.pumpkin.name=Gurbbet
tile.redSandStone.chiseled.name=Luokčan Ruoksat Sáttogeađgi
tile.redSandStone.default.name=Ruoksat Sáttogeađgi
tile.redSandStone.name=Ruoksat Sáttogeađgi
tile.sand.default.name=Sáttu
tile.sand.name=Sáttu
tile.sand.red.name=Ruoksat sáttu
tile.sandStone.chiseled.name=Luokčan sáttogeađgi
tile.sandStone.default.name=Sáttogeađgi
tile.sandStone.name=Sáttogeađgi
tile.sign.name=Galba
tile.sponge.dry.name=Guopparas
tile.sponge.wet.name=Njuoskkas guopparas
tile.stone.stone.name=Geađgi
tile.tallgrass.grass.name=Rássi
tile.tallgrass.name=Rássi
tile.tallgrass.shrub.name=Miestta
tile.tnt.name=TNT
tile.torch.name=Spáiddar
tile.water.name=Čáhci
tile.woolCarpet.black.name=Čáhppat lávdebeaitta
tile.woolCarpet.blue.name=Alit lávdebeaitta
tile.woolCarpet.brown.name=Ruškat lávdebeaitta
tile.woolCarpet.gray.name=Ránis lávdebeaitta
tile.woolCarpet.green.name=Ruoná lávdebeaitta
tile.woolCarpet.name=Lávdebeaitta
tile.woolCarpet.orange.name=Oránša lávdebeaitta
tile.woolCarpet.pink.name=Guvgesruoksat lávdebeaitta
tile.woolCarpet.purple.name=Sáhppat lávdebeaitta
tile.woolCarpet.red.name=Ruoksat lávdebeaitta
tile.woolCarpet.white.name=Lávdebeaitta
tile.woolCarpet.yellow.name=Fiskat lávdebeaitta

1849
demo/lang/sk_SK.lang Normal file

File diff suppressed because it is too large Load Diff

1574
demo/lang/sl_SI.lang Normal file

File diff suppressed because it is too large Load Diff

1820
demo/lang/sr_SP.lang Normal file

File diff suppressed because it is too large Load Diff

2516
demo/lang/sv_SE.lang Normal file

File diff suppressed because it is too large Load Diff

1729
demo/lang/th_TH.lang Normal file

File diff suppressed because it is too large Load Diff

1253
demo/lang/tlh_AA.lang Normal file

File diff suppressed because it is too large Load Diff

2518
demo/lang/tr_TR.lang Normal file

File diff suppressed because it is too large Load Diff

2471
demo/lang/uk_UA.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/val_ES.lang Normal file

File diff suppressed because it is too large Load Diff

2492
demo/lang/vi_VN.lang Normal file

File diff suppressed because it is too large Load Diff

2516
demo/lang/zh_CN.lang Normal file

File diff suppressed because it is too large Load Diff

2517
demo/lang/zh_TW.lang Normal file

File diff suppressed because it is too large Load Diff

365
demo/mobile/mobile.js Normal file
View File

@ -0,0 +1,365 @@
// ==UserScript==
// @name Eagler Mobile
// @description Allows eaglercraft to run on mobile, adds touch controls, and fixes a few mobile-related crashes
// @author FlamedDogo99
// @namespace http://github.com/FlamedDogo99
// @downloadURL https://raw.githubusercontent.com/FlamedDogo99/EaglerMobile/main/eaglermobile.js
// @license Apache License 2.0 - http://www.apache.org/licenses/
// @match https://eaglercraft.com/mc/*
// @grant none
// @version 1.1
// @updateURL https://raw.githubusercontent.com/FlamedDogo99/EaglerMobile/main/eaglermobile.js
// @run-at document-start
// ==/UserScript==
// Hides inventory button
window.inInventory = false;
// Used for changing touchmove events to mousemove events
var previousX = null;
var previousY = null;
// Key and mouse events
function keyEvent(name, state) {
const keyName = name.toUpperCase().charCodeAt(0)
window.dispatchEvent(new KeyboardEvent(state, {
key: name,
keyCode: keyName,
which: keyName
}));
}
function shiftKey(state) {
window.dispatchEvent(new KeyboardEvent(state, {
keyCode: 16,
which: 16
}));
}
function mouseEvent(number, state, canvas) {
canvas.dispatchEvent(new PointerEvent(state, {"button": number}))
}
// POINTERLOCK
// When requestpointerlock is called, this dispatches an event, saves the requested element to window.fakelock, and unhides the touch controls
window.fakelock = null;
Element.prototype.requestPointerLock = function() {
window.fakelock = this
document.dispatchEvent(new Event('pointerlockchange'));
console.log("requested pointerlock")
var hideButtonStyleDOM = document.getElementById('hideButtonStyle');
var hideInventoryStyleDOM = document.getElementById('hideInventoryStyle');
hideButtonStyleDOM.disabled = true;
hideInventoryStyleDOM.disabled = true;
return true
}
// Makes pointerLockElement return window.fakelock
Object.defineProperty(document, "pointerLockElement", {
get: function() {
return window.fakelock;
}
});
// When exitPointerLock is called, this dispatches an event, clears the
document.exitPointerLock = function() {
window.fakelock = null
document.dispatchEvent(new Event('pointerlockchange'));
var hideButtonStyleDOM = document.getElementById('hideButtonStyle');
var hideInventoryStyleDOM = document.getElementById('hideInventoryStyle');
hideButtonStyleDOM.disabled = false;
hideInventoryStyleDOM.disabled = window.inInventory;
return true
}
// FULLSCREEN
window.fakefull = null;
// Stops the client from crashing when fullscreen is requested
Element.prototype.requestFullscreen = function() {
window.fakefull = this
document.dispatchEvent(new Event('fullscreenchange'));
return true
}
Object.defineProperty(document, "fullscreenElement", {
get: function() {
return window.fakefull;
}
});
document.exitFullscreen = function() {
window.fakefull = null
document.dispatchEvent(new Event('fullscreenchange'));
return true
}
// FILE UPLOADING
// Safari doesn't recognize the element.click() used to display the file uplaoder as an action performed by the user, so it ignores it.
// This hijacks the element.createElement() function to add the file upload to the DOM, so the user can manually press the button again.
var oldCreate = document.createElement;
document.createElement = function(type) {
this.oldCreate = oldCreate;
var element = this.oldCreate(type);
if(type == "input") {
var newElement = document.querySelector('input');
if(!newElement) {
this.body.appendChild(element);
newElement = document.querySelector('input');
newElement.addEventListener('change', function(e) {
this.hidden = true;
})
}
newElement.value = null;
newElement.style.cssText ="position:absolute;left:0%;right:100%;top:0%;bottom:100%;width:100%;height:100%;background-color:rgba(255,255,255,0.5);";
newElement.hidden = false;
return newElement;
}
return this.oldCreate(type);
}
// CSS for touch screen buttons, along with fixing iOS's issues with 100vh ignoring the naviagtion bar, and actually disabling zoom because safari ignores user-scalable=no :(
let customStyle = document.createElement("style");
customStyle.textContent = `
button {
position: absolute;
width: 9vh;
height: 9vh;
font-size:4vh;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
line-height: 0px;
padding:0px;
color: ##252525;
text-shadow: 0.35vh 0.35vh #000000;
box-sizing: content-box;
image-rendering: pixelated;
background: url(mobile/uiButtonCap.png) no-repeat right center, url(mobile/uiButton.png) no-repeat left center;
background-size: contain, cover;
outline:none;
box-shadow: none;
border: none;
margin: 1vh;
opacity: .5;
font-weight: 900;
}
button:active {
opacity: .75;
}
.mini {
width: 3.5vw;
height: 3.5vw;
margin: 1vh 0vh;
}
.crouch {
background:url(mobile/uiCrouch.png) no-repeat center;
background-size: contain, cover;
}
.crouch:active {
background:url(mobile/uiCrouchSel.png) no-repeat center;
background-size: contain, cover;
}
html, body {
height: -webkit-fill-available !important;
touch-action: pan-x pan-y;
}
`;
document.documentElement.appendChild(customStyle);
// Lazy way to hide touch controls through CSS.
let hideButtonStyle = document.createElement("style");
hideButtonStyle.id = "hideButtonStyle";
hideButtonStyle.textContent = `
#hideButton {
display: none;
}`;
document.documentElement.appendChild(hideButtonStyle);
let hideInventoryStyle = document.createElement("style");
hideInventoryStyle.id = "hideInventoryStyle";
hideInventoryStyle.textContent = `
#hideInventory {
display: none;
}`;
document.documentElement.appendChild(hideInventoryStyle);
// The canvas is created by the client after it finishes unzipping and loading. When the canvas is created, this applies any necessary event listeners
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
});
}
waitForElm('canvas').then(() => {insertCanvasElements()});
function insertCanvasElements() {
// Translates touchmove events to mousemove events
var canvas = document.querySelector('canvas');
canvas.addEventListener("touchmove", (e) => {
const touch = e.targetTouches[0]; // We can get away with this because every other touch event will be on different elements
if (!previousX) {
previousX = touch.pageX;
previousY = touch.pageY;
}
e.movementX = touch.pageX - previousX;
e.movementY = touch.pageY - previousY;
var evt = new MouseEvent("mousemove", {
movementX: e.movementX,
movementY: e.movementY
});
canvas.dispatchEvent(evt);
previousX = touch.pageX;
previousY = touch.pageY;
event.preventDefault();
}, false);
canvas.addEventListener("touchend", (e) => {
previousX = null;
previousY = null;
}, false)
// Adds all of the touch screen controls
// Theres probably a better way to do this but this works for now
var forwardButton = document.createElement('button');
forwardButton.id = "hideButton"
forwardButton.style.cssText = "left:14vh;bottom:22vh;background:url(mobile/uiUp.png) no-repeat center;background-size: contain, cover;"
forwardButton.addEventListener("touchstart", function(e){keyEvent("w", "keydown")}, false);
forwardButton.addEventListener("touchend", function(e){keyEvent("w", "keyup")}, false);
forwardButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(forwardButton);
var rightButton = document.createElement('button');
rightButton.id = "hideButton"
rightButton.style.cssText = "left:24vh;bottom:12vh;background:url(mobile/uiRight.png) no-repeat center;background-size: contain, cover;"
rightButton.addEventListener("touchstart", function(e){keyEvent("d", "keydown")}, false);
rightButton.addEventListener("touchend", function(e){keyEvent("d", "keyup")}, false);
rightButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(rightButton);
var leftButton = document.createElement('button');
leftButton.id = "hideButton"
leftButton.style.cssText = "left: 4vh; bottom:12vh;background:url(mobile/uiLeft.png) no-repeat center;background-size: contain, cover;"
leftButton.addEventListener("touchstart", function(e){keyEvent("a", "keydown")}, false);
leftButton.addEventListener("touchend", function(e){keyEvent("a", "keyup")}, false);
leftButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(leftButton);
var backButton = document.createElement('button');
backButton.id = "hideButton"
backButton.style.cssText = "left:14vh;bottom:2vh;background:url(mobile/uiDown.png) no-repeat center;background-size: contain, cover;"
backButton.addEventListener("touchstart", function(e){keyEvent("s", "keydown")}, false);
backButton.addEventListener("touchend", function(e){keyEvent("s", "keyup")}, false);
backButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(backButton);
var jumpButton = document.createElement('button');
jumpButton.id = "hideButton"
jumpButton.style.cssText = "right:20vh;bottom:20vh;background:url(mobile/uiJump.png) no-repeat center;background-size: contain, cover;"
jumpButton.addEventListener("touchstart", function(e){keyEvent(" ", "keydown")}, false);
jumpButton.addEventListener("touchend", function(e){keyEvent(" ", "keyup")}, false);
jumpButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(jumpButton);
var crouchButton = document.createElement('button');
crouchButton.id = "hideButton"
crouchButton.classList = "crouch"
crouchButton.style.cssText = "left:14vh;bottom:12vh;"
crouchButton.addEventListener("touchstart", function(e){shiftKey("keydown")}, false);
crouchButton.addEventListener("touchend", function(e){shiftKey("keyup")}, false);
crouchButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(crouchButton);
var inventoryButton = document.createElement('button');
inventoryButton.id = "hideInventory"
inventoryButton.classList = "mini"
inventoryButton.style.cssText = "right:11vw;bottom:0vh;background:url(mobile/uiInventory.png) no-repeat center;background-size: contain, cover;"
inventoryButton.addEventListener("touchstart", function(e){
window.inInventory = (window.fakelock != null)
keyEvent("e", "keydown");
}, false);
inventoryButton.addEventListener("touchend", function(e){keyEvent("e", "keyup")}, false);
inventoryButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(inventoryButton);
var chatButton = document.createElement('button');
chatButton.id = "hideButton"
chatButton.classList = "mini"
chatButton.style.cssText = "left:43.5vw;top:0vh;background:url(mobile/uiChat.png) no-repeat center;background-size: contain, cover;"
chatButton.addEventListener("touchstart", function(e){keyEvent("t", "keydown")}, false);
chatButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(chatButton);
var angleButton = document.createElement('button');
angleButton.id = "hideButton"
angleButton.classList = "mini"
angleButton.style.cssText = "left:51.5vw;top:0vh;background:url(mobile/uiAngle.png) no-repeat center;background-size: contain, cover;"
angleButton.addEventListener("touchstart", function(e){keyEvent("f", "keydown"), keyEvent("5", "keydown")}, false);
angleButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(angleButton);
var exitButton = document.createElement('button');
exitButton.id = "hideButton"
exitButton.classList = "mini"
exitButton.style.cssText = "left:47.5vw;top:0vh;background:url(mobile/uiPause.png) no-repeat center;background-size: contain, cover;"
exitButton.addEventListener("touchstart", function(e){keyEvent("À", "keydown")}, false);
exitButton.addEventListener("touchend", function(e){keyEvent("À", "keyup")}, false);
exitButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(exitButton);
var placeButton = document.createElement('button');
placeButton.id = "hideButton"
placeButton.textContent = "⊹";
placeButton.style.cssText = "right:5vh;bottom:35vh;"
placeButton.addEventListener("touchstart", function(e){mouseEvent(2, "mousedown", canvas)}, false);
placeButton.addEventListener("touchend", function(e){mouseEvent(2, "mouseup", canvas)}, false);
placeButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(placeButton);
var breakButton = document.createElement('button');
breakButton.id = "hideButton"
breakButton.textContent = "🗡";
breakButton.style.cssText = "right:25vh;bottom:45vh;"
breakButton.addEventListener("touchstart", function(e){mouseEvent(0, "mousedown", canvas)}, false);
breakButton.addEventListener("touchend", function(e){mouseEvent(0, "mouseup", canvas)}, false);
breakButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(breakButton);
var scrollUpButton = document.createElement('button');
scrollUpButton.id = "hideButton"
scrollUpButton.classList = "mini"
scrollUpButton.textContent = "⇨";
scrollUpButton.style.cssText = "right:3vw;bottom:0vh;"
scrollUpButton.addEventListener("touchstart", function(e){
canvas.dispatchEvent(new WheelEvent("wheel", {"wheelDeltaY": -10}))
}, false);
scrollUpButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(scrollUpButton);
var scrollDownButton = document.createElement('button');
scrollDownButton.id = "hideButton"
scrollDownButton.classList = "mini"
scrollDownButton.textContent = "⇦";
scrollDownButton.style.cssText = "right:15vw;bottom:0vh;"
scrollDownButton.addEventListener("touchstart", function(e){
canvas.dispatchEvent(new WheelEvent("wheel", {"wheelDeltaY": 10}))
}, false);
scrollDownButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(scrollDownButton);
var throwButton = document.createElement('button');
throwButton.id = "hideButton"
throwButton.classList = "mini"
throwButton.textContent = "Q";
throwButton.style.cssText = "right:7vw;bottom:0vh;"
throwButton.addEventListener("touchstart", function(e){
window.inInventory = (window.fakelock != null)
keyEvent("q", "keydown");
}, false);
throwButton.addEventListener("touchend", function(e){keyEvent("q", "keyup")}, false);
throwButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(throwButton);
}

BIN
demo/mobile/uiAngle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

BIN
demo/mobile/uiButton.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
demo/mobile/uiButtonCap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

BIN
demo/mobile/uiChat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

BIN
demo/mobile/uiCrouch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

BIN
demo/mobile/uiCrouchSel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

BIN
demo/mobile/uiDown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

BIN
demo/mobile/uiInventory.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

BIN
demo/mobile/uiJump.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

BIN
demo/mobile/uiLeft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

BIN
demo/mobile/uiPause.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

BIN
demo/mobile/uiRight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

BIN
demo/mobile/uiUp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

365
source/mobile/mobile.js Normal file
View File

@ -0,0 +1,365 @@
// ==UserScript==
// @name Eagler Mobile
// @description Allows eaglercraft to run on mobile, adds touch controls, and fixes a few mobile-related crashes
// @author FlamedDogo99
// @namespace http://github.com/FlamedDogo99
// @downloadURL https://raw.githubusercontent.com/FlamedDogo99/EaglerMobile/main/eaglermobile.js
// @license Apache License 2.0 - http://www.apache.org/licenses/
// @match https://eaglercraft.com/mc/*
// @grant none
// @version 1.1
// @updateURL https://raw.githubusercontent.com/FlamedDogo99/EaglerMobile/main/eaglermobile.js
// @run-at document-start
// ==/UserScript==
// Hides inventory button
window.inInventory = false;
// Used for changing touchmove events to mousemove events
var previousX = null;
var previousY = null;
// Key and mouse events
function keyEvent(name, state) {
const keyName = name.toUpperCase().charCodeAt(0)
window.dispatchEvent(new KeyboardEvent(state, {
key: name,
keyCode: keyName,
which: keyName
}));
}
function shiftKey(state) {
window.dispatchEvent(new KeyboardEvent(state, {
keyCode: 16,
which: 16
}));
}
function mouseEvent(number, state, canvas) {
canvas.dispatchEvent(new PointerEvent(state, {"button": number}))
}
// POINTERLOCK
// When requestpointerlock is called, this dispatches an event, saves the requested element to window.fakelock, and unhides the touch controls
window.fakelock = null;
Element.prototype.requestPointerLock = function() {
window.fakelock = this
document.dispatchEvent(new Event('pointerlockchange'));
console.log("requested pointerlock")
var hideButtonStyleDOM = document.getElementById('hideButtonStyle');
var hideInventoryStyleDOM = document.getElementById('hideInventoryStyle');
hideButtonStyleDOM.disabled = true;
hideInventoryStyleDOM.disabled = true;
return true
}
// Makes pointerLockElement return window.fakelock
Object.defineProperty(document, "pointerLockElement", {
get: function() {
return window.fakelock;
}
});
// When exitPointerLock is called, this dispatches an event, clears the
document.exitPointerLock = function() {
window.fakelock = null
document.dispatchEvent(new Event('pointerlockchange'));
var hideButtonStyleDOM = document.getElementById('hideButtonStyle');
var hideInventoryStyleDOM = document.getElementById('hideInventoryStyle');
hideButtonStyleDOM.disabled = false;
hideInventoryStyleDOM.disabled = window.inInventory;
return true
}
// FULLSCREEN
window.fakefull = null;
// Stops the client from crashing when fullscreen is requested
Element.prototype.requestFullscreen = function() {
window.fakefull = this
document.dispatchEvent(new Event('fullscreenchange'));
return true
}
Object.defineProperty(document, "fullscreenElement", {
get: function() {
return window.fakefull;
}
});
document.exitFullscreen = function() {
window.fakefull = null
document.dispatchEvent(new Event('fullscreenchange'));
return true
}
// FILE UPLOADING
// Safari doesn't recognize the element.click() used to display the file uplaoder as an action performed by the user, so it ignores it.
// This hijacks the element.createElement() function to add the file upload to the DOM, so the user can manually press the button again.
var oldCreate = document.createElement;
document.createElement = function(type) {
this.oldCreate = oldCreate;
var element = this.oldCreate(type);
if(type == "input") {
var newElement = document.querySelector('input');
if(!newElement) {
this.body.appendChild(element);
newElement = document.querySelector('input');
newElement.addEventListener('change', function(e) {
this.hidden = true;
})
}
newElement.value = null;
newElement.style.cssText ="position:absolute;left:0%;right:100%;top:0%;bottom:100%;width:100%;height:100%;background-color:rgba(255,255,255,0.5);";
newElement.hidden = false;
return newElement;
}
return this.oldCreate(type);
}
// CSS for touch screen buttons, along with fixing iOS's issues with 100vh ignoring the naviagtion bar, and actually disabling zoom because safari ignores user-scalable=no :(
let customStyle = document.createElement("style");
customStyle.textContent = `
button {
position: absolute;
width: 9vh;
height: 9vh;
font-size:4vh;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
line-height: 0px;
padding:0px;
color: ##252525;
text-shadow: 0.35vh 0.35vh #000000;
box-sizing: content-box;
image-rendering: pixelated;
background: url(mobile/uiButtonCap.png) no-repeat right center, url(mobile/uiButton.png) no-repeat left center;
background-size: contain, cover;
outline:none;
box-shadow: none;
border: none;
margin: 1vh;
opacity: .5;
font-weight: 900;
}
button:active {
opacity: .75;
}
.mini {
width: 3.5vw;
height: 3.5vw;
margin: 1vh 0vh;
}
.crouch {
background:url(mobile/uiCrouch.png) no-repeat center;
background-size: contain, cover;
}
.crouch:active {
background:url(mobile/uiCrouchSel.png) no-repeat center;
background-size: contain, cover;
}
html, body {
height: -webkit-fill-available !important;
touch-action: pan-x pan-y;
}
`;
document.documentElement.appendChild(customStyle);
// Lazy way to hide touch controls through CSS.
let hideButtonStyle = document.createElement("style");
hideButtonStyle.id = "hideButtonStyle";
hideButtonStyle.textContent = `
#hideButton {
display: none;
}`;
document.documentElement.appendChild(hideButtonStyle);
let hideInventoryStyle = document.createElement("style");
hideInventoryStyle.id = "hideInventoryStyle";
hideInventoryStyle.textContent = `
#hideInventory {
display: none;
}`;
document.documentElement.appendChild(hideInventoryStyle);
// The canvas is created by the client after it finishes unzipping and loading. When the canvas is created, this applies any necessary event listeners
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
});
}
waitForElm('canvas').then(() => {insertCanvasElements()});
function insertCanvasElements() {
// Translates touchmove events to mousemove events
var canvas = document.querySelector('canvas');
canvas.addEventListener("touchmove", (e) => {
const touch = e.targetTouches[0]; // We can get away with this because every other touch event will be on different elements
if (!previousX) {
previousX = touch.pageX;
previousY = touch.pageY;
}
e.movementX = touch.pageX - previousX;
e.movementY = touch.pageY - previousY;
var evt = new MouseEvent("mousemove", {
movementX: e.movementX,
movementY: e.movementY
});
canvas.dispatchEvent(evt);
previousX = touch.pageX;
previousY = touch.pageY;
event.preventDefault();
}, false);
canvas.addEventListener("touchend", (e) => {
previousX = null;
previousY = null;
}, false)
// Adds all of the touch screen controls
// Theres probably a better way to do this but this works for now
var forwardButton = document.createElement('button');
forwardButton.id = "hideButton"
forwardButton.style.cssText = "left:14vh;bottom:22vh;background:url(mobile/uiUp.png) no-repeat center;background-size: contain, cover;"
forwardButton.addEventListener("touchstart", function(e){keyEvent("w", "keydown")}, false);
forwardButton.addEventListener("touchend", function(e){keyEvent("w", "keyup")}, false);
forwardButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(forwardButton);
var rightButton = document.createElement('button');
rightButton.id = "hideButton"
rightButton.style.cssText = "left:24vh;bottom:12vh;background:url(mobile/uiRight.png) no-repeat center;background-size: contain, cover;"
rightButton.addEventListener("touchstart", function(e){keyEvent("d", "keydown")}, false);
rightButton.addEventListener("touchend", function(e){keyEvent("d", "keyup")}, false);
rightButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(rightButton);
var leftButton = document.createElement('button');
leftButton.id = "hideButton"
leftButton.style.cssText = "left: 4vh; bottom:12vh;background:url(mobile/uiLeft.png) no-repeat center;background-size: contain, cover;"
leftButton.addEventListener("touchstart", function(e){keyEvent("a", "keydown")}, false);
leftButton.addEventListener("touchend", function(e){keyEvent("a", "keyup")}, false);
leftButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(leftButton);
var backButton = document.createElement('button');
backButton.id = "hideButton"
backButton.style.cssText = "left:14vh;bottom:2vh;background:url(mobile/uiDown.png) no-repeat center;background-size: contain, cover;"
backButton.addEventListener("touchstart", function(e){keyEvent("s", "keydown")}, false);
backButton.addEventListener("touchend", function(e){keyEvent("s", "keyup")}, false);
backButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(backButton);
var jumpButton = document.createElement('button');
jumpButton.id = "hideButton"
jumpButton.style.cssText = "right:20vh;bottom:20vh;background:url(mobile/uiJump.png) no-repeat center;background-size: contain, cover;"
jumpButton.addEventListener("touchstart", function(e){keyEvent(" ", "keydown")}, false);
jumpButton.addEventListener("touchend", function(e){keyEvent(" ", "keyup")}, false);
jumpButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(jumpButton);
var crouchButton = document.createElement('button');
crouchButton.id = "hideButton"
crouchButton.classList = "crouch"
crouchButton.style.cssText = "left:14vh;bottom:12vh;"
crouchButton.addEventListener("touchstart", function(e){shiftKey("keydown")}, false);
crouchButton.addEventListener("touchend", function(e){shiftKey("keyup")}, false);
crouchButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(crouchButton);
var inventoryButton = document.createElement('button');
inventoryButton.id = "hideInventory"
inventoryButton.classList = "mini"
inventoryButton.style.cssText = "right:11vw;bottom:0vh;background:url(mobile/uiInventory.png) no-repeat center;background-size: contain, cover;"
inventoryButton.addEventListener("touchstart", function(e){
window.inInventory = (window.fakelock != null)
keyEvent("e", "keydown");
}, false);
inventoryButton.addEventListener("touchend", function(e){keyEvent("e", "keyup")}, false);
inventoryButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(inventoryButton);
var chatButton = document.createElement('button');
chatButton.id = "hideButton"
chatButton.classList = "mini"
chatButton.style.cssText = "left:43.5vw;top:0vh;background:url(mobile/uiChat.png) no-repeat center;background-size: contain, cover;"
chatButton.addEventListener("touchstart", function(e){keyEvent("t", "keydown")}, false);
chatButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(chatButton);
var angleButton = document.createElement('button');
angleButton.id = "hideButton"
angleButton.classList = "mini"
angleButton.style.cssText = "left:51.5vw;top:0vh;background:url(mobile/uiAngle.png) no-repeat center;background-size: contain, cover;"
angleButton.addEventListener("touchstart", function(e){keyEvent("f", "keydown"), keyEvent("5", "keydown")}, false);
angleButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(angleButton);
var exitButton = document.createElement('button');
exitButton.id = "hideButton"
exitButton.classList = "mini"
exitButton.style.cssText = "left:47.5vw;top:0vh;background:url(mobile/uiPause.png) no-repeat center;background-size: contain, cover;"
exitButton.addEventListener("touchstart", function(e){keyEvent("À", "keydown")}, false);
exitButton.addEventListener("touchend", function(e){keyEvent("À", "keyup")}, false);
exitButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(exitButton);
var placeButton = document.createElement('button');
placeButton.id = "hideButton"
placeButton.textContent = "⊹";
placeButton.style.cssText = "right:5vh;bottom:35vh;"
placeButton.addEventListener("touchstart", function(e){mouseEvent(2, "mousedown", canvas)}, false);
placeButton.addEventListener("touchend", function(e){mouseEvent(2, "mouseup", canvas)}, false);
placeButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(placeButton);
var breakButton = document.createElement('button');
breakButton.id = "hideButton"
breakButton.textContent = "🗡";
breakButton.style.cssText = "right:25vh;bottom:45vh;"
breakButton.addEventListener("touchstart", function(e){mouseEvent(0, "mousedown", canvas)}, false);
breakButton.addEventListener("touchend", function(e){mouseEvent(0, "mouseup", canvas)}, false);
breakButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(breakButton);
var scrollUpButton = document.createElement('button');
scrollUpButton.id = "hideButton"
scrollUpButton.classList = "mini"
scrollUpButton.textContent = "⇨";
scrollUpButton.style.cssText = "right:3vw;bottom:0vh;"
scrollUpButton.addEventListener("touchstart", function(e){
canvas.dispatchEvent(new WheelEvent("wheel", {"wheelDeltaY": -10}))
}, false);
scrollUpButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(scrollUpButton);
var scrollDownButton = document.createElement('button');
scrollDownButton.id = "hideButton"
scrollDownButton.classList = "mini"
scrollDownButton.textContent = "⇦";
scrollDownButton.style.cssText = "right:15vw;bottom:0vh;"
scrollDownButton.addEventListener("touchstart", function(e){
canvas.dispatchEvent(new WheelEvent("wheel", {"wheelDeltaY": 10}))
}, false);
scrollDownButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(scrollDownButton);
var throwButton = document.createElement('button');
throwButton.id = "hideButton"
throwButton.classList = "mini"
throwButton.textContent = "Q";
throwButton.style.cssText = "right:7vw;bottom:0vh;"
throwButton.addEventListener("touchstart", function(e){
window.inInventory = (window.fakelock != null)
keyEvent("q", "keydown");
}, false);
throwButton.addEventListener("touchend", function(e){keyEvent("q", "keyup")}, false);
throwButton.addEventListener("touchmove", function(e){e.preventDefault()}, false);
document.body.appendChild(throwButton);
}

BIN
source/mobile/uiAngle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

BIN
source/mobile/uiButton.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

BIN
source/mobile/uiChat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

BIN
source/mobile/uiCrouch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Some files were not shown because too many files have changed in this diff Show More