From 9e0045f807a49e1c469a6d96de5cdb0a820c0079 Mon Sep 17 00:00:00 2001 From: LabyStudio Date: Sat, 12 Feb 2022 22:42:35 +0100 Subject: [PATCH] implement save and load settings --- src/js/net/minecraft/client/GameSettings.js | 20 +++++++++++++++++++ src/js/net/minecraft/client/Minecraft.js | 6 ++++++ src/js/net/minecraft/client/gui/GuiScreen.js | 4 ++++ .../client/gui/screens/GuiControls.js | 5 +++++ .../minecraft/client/render/Tessellator.js | 3 +-- 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/js/net/minecraft/client/GameSettings.js b/src/js/net/minecraft/client/GameSettings.js index 9177078..601d691 100644 --- a/src/js/net/minecraft/client/GameSettings.js +++ b/src/js/net/minecraft/client/GameSettings.js @@ -5,4 +5,24 @@ window.GameSettings = class { this.sprinting = 'ControlLeft'; } + load() { + for (let prop in this) { + let nameEQ = prop + "="; + let ca = document.cookie.split(';'); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) { + this[prop] = c.substring(nameEQ.length, c.length); + } + } + } + } + + save() { + for (let prop in this) { + document.cookie = prop + "=" + (this[prop] || "") + "; path=/"; + } + } + } \ No newline at end of file diff --git a/src/js/net/minecraft/client/Minecraft.js b/src/js/net/minecraft/client/Minecraft.js index f53773b..6f4593d 100644 --- a/src/js/net/minecraft/client/Minecraft.js +++ b/src/js/net/minecraft/client/Minecraft.js @@ -13,6 +13,7 @@ window.Minecraft = class { this.timer = new Timer(20); this.settings = new GameSettings(); + this.settings.load(); // Create window and world renderer this.window = new GameWindow(this, canvasWrapperId); @@ -139,6 +140,11 @@ window.Minecraft = class { return; } + // Close previous screen + if (!(this.currentScreen === null)) { + this.currentScreen.onClose(); + } + // Switch screen this.currentScreen = screen; diff --git a/src/js/net/minecraft/client/gui/GuiScreen.js b/src/js/net/minecraft/client/gui/GuiScreen.js index 1aaaf4c..8b211f8 100644 --- a/src/js/net/minecraft/client/gui/GuiScreen.js +++ b/src/js/net/minecraft/client/gui/GuiScreen.js @@ -18,6 +18,10 @@ window.GuiScreen = class extends Gui { this.buttonList = []; } + onClose() { + + } + drawScreen(stack, mouseX, mouseY, partialTicks) { for (let i in this.buttonList) { let button = this.buttonList[i]; diff --git a/src/js/net/minecraft/client/gui/screens/GuiControls.js b/src/js/net/minecraft/client/gui/screens/GuiControls.js index 4ae8b8b..8d83786 100644 --- a/src/js/net/minecraft/client/gui/screens/GuiControls.js +++ b/src/js/net/minecraft/client/gui/screens/GuiControls.js @@ -37,4 +37,9 @@ window.GuiControls = class extends GuiScreen { super.drawScreen(stack, mouseX, mouseY, partialTicks); } + onClose() { + // Save settings + this.minecraft.settings.save(); + } + } \ No newline at end of file diff --git a/src/js/net/minecraft/client/render/Tessellator.js b/src/js/net/minecraft/client/render/Tessellator.js index e9db17a..758cbe3 100644 --- a/src/js/net/minecraft/client/render/Tessellator.js +++ b/src/js/net/minecraft/client/render/Tessellator.js @@ -3,8 +3,7 @@ window.Tessellator = class { constructor() { this.material = new THREE.MeshBasicMaterial({ vertexColors: THREE.VertexColors, - //side: THREE.BackSide, - side: THREE.DoubleSide, + side: THREE.BackSide, transparent: true, depthTest: true });