A RuneTek3 client (377) that is deobfuscated, converted to Kotlin, and includes QoL improvements.
0

Configure Feed

Select the types of activity you want to include in your feed.

bunch of fixes

+26 -9
+6
.gitignore
··· 60 60 61 61 # Config 62 62 config/client-config.yaml 63 + DumpedData 64 + 65 + # jdtls LSP 66 + .classpath 67 + .project 68 + .settings
+1
.ignore
··· 1 + !client-config.yaml
+7 -2
build.gradle
··· 8 8 } 9 9 10 10 dependencies { 11 - compile 'org.yaml:snakeyaml:1.25' 11 + implementation 'org.yaml:snakeyaml:1.25' 12 12 testImplementation('org.junit.jupiter:junit-jupiter:5.5.2') 13 13 } 14 14 ··· 17 17 testLogging { 18 18 events "passed", "skipped", "failed" 19 19 } 20 - } 20 + } 21 + 22 + task run(type: JavaExec) { 23 + mainClass = 'com.jagex.runescape.Game' 24 + classpath = sourceSets.main.runtimeClasspath 25 + }
+1
config/EXAMPLE-client-config.yaml
··· 8 8 cacheDir: .377cache 9 9 jaggrabEnabled: false 10 10 rsa: 11 + rsaEnabled: false 11 12 rsaPub: 65537 12 13 rsaModulus: 170266381807335046121774073514220583891686029487165562794998484549236036467227923571770256617931840775621072487838687650522710227973331693237285456731778528244126984080232314114323601116304887478969296070648644633713088027922830600712492972687351204275625149978223159432963210789506993409208545916714905193639 13 14 login:
+1 -2
src/main/java/com/jagex/runescape/Game.java
··· 6335 6335 outBuffer.putString(username); 6336 6336 outBuffer.putString(password); 6337 6337 6338 - if (Configuration.RSA_ENABLED) 6339 - outBuffer.encrypt(Configuration.RSA_MODULUS, Configuration.RSA_PUBLIC_KEY); 6338 + outBuffer.encrypt(Configuration.RSA_MODULUS, Configuration.RSA_PUBLIC_KEY); 6340 6339 6341 6340 tempBuffer.currentPosition = 0; 6342 6341
+2 -1
src/main/java/com/jagex/runescape/config/Configuration.java
··· 28 28 HTTP_PORT = (int) net.get("http_port"); 29 29 CACHE_NAME = (String) cache.get("cacheDir"); 30 30 JAGGRAB_ENABLED = (boolean) cache.get("jaggrabEnabled"); 31 + RSA_ENABLED = (boolean) rsa.get("rsaEnabled"); 31 32 RSA_PUBLIC_KEY = new BigInteger(String.valueOf((int) rsa.get("rsaPub"))); 32 33 RSA_MODULUS = (BigInteger) rsa.get("rsaModulus"); 33 34 USE_STATIC_DETAILS = (boolean) login.get("useStaticCredentials"); ··· 35 36 PASSWORD = (String) login.get("password"); 36 37 ROOFS_ENABLED = (boolean) game.get("roofsEnabled"); 37 38 FREE_TELEPORTS = (boolean) game.get("freeTeleports"); 38 - DEBUG_CONTEXT = (boolean) game.get("debugContextMenu"); 39 + DEBUG_CONTEXT = (boolean) game.get("debugContext"); 39 40 40 41 if(USERNAME == null) { 41 42 USERNAME = "";
+7 -2
src/main/java/com/jagex/runescape/net/Buffer.java
··· 1 1 package com.jagex.runescape.net; 2 2 3 3 import com.jagex.runescape.collection.CacheableNode; 4 + import com.jagex.runescape.config.Configuration; 4 5 5 6 import java.math.BigInteger; 6 7 ··· 222 223 getBytes(bytes, 0, length); 223 224 224 225 BigInteger raw = new BigInteger(bytes); 225 - BigInteger encrypted = raw.modPow(key, modulus); 226 - bytes = encrypted.toByteArray(); 226 + 227 + if (Configuration.RSA_ENABLED) 228 + bytes = raw.modPow(key, modulus).toByteArray(); 229 + else 230 + bytes = raw.toByteArray(); 231 + 227 232 currentPosition = 0; 228 233 229 234 putByte(bytes.length);
+1 -2
src/main/java/com/jagex/runescape/scene/MapRegion.java
··· 452 452 if(textureid >= 0) { 453 453 rgbBitset = Rasterizer3D.getAverageRgbColorForTexture(textureid); 454 454 hslBitset = -1; 455 - 456 455 } else if(floor.rgbColor == 0xff00ff) { 457 456 hslBitset = -2; 458 457 textureid = -1; 459 - rgbBitset = 0; 458 + rgbBitset = (Rasterizer3D.hsl2rgb[mixLightnessSigned(floor.hslColor2, 96)]); 460 459 } else { 461 460 hslBitset = getHSLBitset(floor.hue2, floor.saturation, floor.lightness); 462 461 rgbBitset = (Rasterizer3D.hsl2rgb[mixLightnessSigned(floor.hslColor2, 96)]);