Skip to content

Commit 8dc6922

Browse files
committed
implement session saving, fix some bugs, version 1.1.8
1 parent 1f4e90c commit 8dc6922

File tree

6 files changed

+65
-13
lines changed

6 files changed

+65
-13
lines changed

src/js/net/minecraft/client/GameSettings.js

+11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ export default class GameSettings {
88
this.keyOpenInventory = 'KeyE';
99
this.keyPlayerList = 'Tab';
1010

11+
this.session = null;
12+
1113
this.thirdPersonView = 0;
1214
this.fov = 70;
1315
this.viewBobbing = true;
@@ -30,6 +32,15 @@ export default class GameSettings {
3032
if (value.match(/^[0-9]+$/)) {
3133
value = parseInt(value);
3234
}
35+
if (value === 'true') {
36+
value = true;
37+
}
38+
if (value === 'false') {
39+
value = false;
40+
}
41+
if (value === 'null') {
42+
value = null;
43+
}
3344
this[prop] = value;
3445
}
3546
}

src/js/net/minecraft/client/Minecraft.js

+26-6
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import PlayerControllerMultiplayer from "./network/controller/PlayerControllerMu
2626

2727
export default class Minecraft {
2828

29-
static VERSION = "1.1.7"
29+
static VERSION = "1.1.8"
3030
static URL_GITHUB = "https://github.com/labystudio/js-minecraft";
3131
static PROTOCOL_VERSION = 47; //758;
3232

@@ -50,16 +50,21 @@ export default class Minecraft {
5050
this.fps = 0;
5151
this.maxFps = 0;
5252

53-
let username = "Player" + Math.floor(Math.random() * 100);
54-
let profile = new GameProfile(UUID.randomUUID(), username);
55-
this.session = new Session(profile, "");
56-
5753
// Tick timer
5854
this.timer = new Timer(20);
5955

6056
this.settings = new GameSettings();
6157
this.settings.load();
6258

59+
// Load session from settings
60+
if (this.settings.session === null) {
61+
let username = "Player" + Math.floor(Math.random() * 100);
62+
let profile = new GameProfile(UUID.randomUUID(), username);
63+
this.setSession(new Session(profile, ""));
64+
} else {
65+
this.setSession(Session.fromJson(this.settings.session));
66+
}
67+
6368
// Create window and world renderer
6469
this.window = new GameWindow(this, canvasWrapperId);
6570

@@ -119,6 +124,10 @@ export default class Minecraft {
119124
if (networkHandler.getNetworkManager().isConnected()) {
120125
networkHandler.getNetworkManager().close();
121126
}
127+
128+
// Reset header and footer
129+
this.ingameOverlay.playerListOverlay.setHeader(null);
130+
this.ingameOverlay.playerListOverlay.setFooter(null);
122131
}
123132
this.playerController = null;
124133

@@ -469,8 +478,19 @@ export default class Minecraft {
469478
return !this.hasInGameFocus() && this.loadingScreen === null && this.isSingleplayer();
470479
}
471480

472-
setSession(session) {
481+
setSession(session, save = false) {
473482
this.session = session;
483+
484+
// Save session
485+
if (save) {
486+
this.settings.session = session.toJson();
487+
this.settings.save();
488+
}
489+
}
490+
491+
updateAccessToken(token) {
492+
this.session.setAccessToken(token);
493+
this.setSession(this.session, true);
474494
}
475495

476496
getSession() {

src/js/net/minecraft/client/entity/PlayerEntity.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ export default class PlayerEntity extends EntityLiving {
8686
let prevMoveForward = this.moveForward;
8787
let prevJumping = this.jumping;
8888

89-
this.updateKeyboardInput();
89+
if (this === this.minecraft.player) {
90+
this.updateKeyboardInput();
91+
}
9092

9193
// Toggle jumping
9294
if (!prevJumping && this.jumping) {

src/js/net/minecraft/client/gui/overlay/PlayerListOverlay.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,9 @@ export default class PlayerListOverlay extends Gui {
125125
let indexX = Math.floor(i / rows);
126126
let indexY = i % rows;
127127

128-
let entryX = x + indexX * columnWidth + indexX * 5 - 1;
128+
let entryX = x + indexX * columnWidth + indexX * 5;
129129
let entryY = y + indexY * FontRenderer.FONT_HEIGHT;
130130

131-
let rightX = entryX + columnWidth - 1;
132-
133131
// Check if index is inside of range
134132
if (i < playerInfoMap.size) {
135133
let pingX = entryX + columnWidth - 1;
@@ -140,7 +138,7 @@ export default class PlayerListOverlay extends Gui {
140138
stack,
141139
entryX,
142140
entryY,
143-
entryX + columnWidth,
141+
entryX + columnWidth - 1,
144142
entryY + (FontRenderer.FONT_HEIGHT - 1),
145143
'rgba(255,255,255,0.13)'
146144
);

src/js/net/minecraft/client/render/entity/entity/PlayerRenderer.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ export default class PlayerRenderer extends EntityRenderer {
2222
}
2323

2424
rebuild(entity) {
25+
let isSelf = entity === this.worldRenderer.minecraft.player;
2526
let firstPerson = this.worldRenderer.minecraft.settings.thirdPersonView === 0;
26-
let itemId = firstPerson ? this.worldRenderer.itemToRender : entity.inventory.getItemInSelectedSlot();
27+
let itemId = firstPerson && isSelf ? this.worldRenderer.itemToRender : entity.inventory.getItemInSelectedSlot();
2728
let hasItem = itemId !== 0;
28-
let isSelf = entity === this.worldRenderer.minecraft.player;
2929

3030
if (firstPerson && hasItem && isSelf) {
3131
super.rebuild(entity);

src/js/net/minecraft/util/Session.js

+21
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
import GameProfile from "./GameProfile.js";
2+
13
export default class Session {
24

35
constructor(profile, accessToken) {
46
this.profile = profile;
57
this.accessToken = accessToken;
68
}
79

10+
setAccessToken(accessToken) {
11+
this.accessToken = accessToken;
12+
}
13+
814
getProfile() {
915
return this.profile;
1016
}
@@ -13,4 +19,19 @@ export default class Session {
1319
return this.accessToken;
1420
}
1521

22+
toJson() {
23+
return JSON.stringify({
24+
profile: {
25+
uuid: this.profile.uuid.toString(),
26+
username: this.profile.username
27+
},
28+
accessToken: this.accessToken
29+
});
30+
}
31+
32+
static fromJson(json) {
33+
let data = JSON.parse(json);
34+
return new Session(new GameProfile(data.profile.uuid, data.profile.username), data.accessToken);
35+
}
36+
1637
}

0 commit comments

Comments
 (0)