diff --git a/src/js/net/minecraft/client/Minecraft.js b/src/js/net/minecraft/client/Minecraft.js index a9f792b..fe834cc 100644 --- a/src/js/net/minecraft/client/Minecraft.js +++ b/src/js/net/minecraft/client/Minecraft.js @@ -158,6 +158,9 @@ window.Minecraft = class { this.window.exitFocus(); screen.setup(this, this.window.width, this.window.height); } + + // Update items + this.itemRenderer.rebuildAllItems(); } onTick() { diff --git a/src/js/net/minecraft/client/render/BlockRenderer.js b/src/js/net/minecraft/client/render/BlockRenderer.js index ae82c5b..1e52b4c 100644 --- a/src/js/net/minecraft/client/render/BlockRenderer.js +++ b/src/js/net/minecraft/client/render/BlockRenderer.js @@ -252,7 +252,7 @@ window.BlockRenderer = class { } } - renderGuiBlock(group, block, x, y, size) { + renderGuiBlock(group, block, x, y, size, brightness) { this.tessellator.startDrawing(); let boundingBox = block.getBoundingBox(null, 0, 0, 0); @@ -269,6 +269,9 @@ window.BlockRenderer = class { break; } + // Change brightness + this.tessellator.transformBrightness(brightness); + // Create mesh let mesh = this.tessellator.draw(group); mesh.geometry.center(); diff --git a/src/js/net/minecraft/client/render/Tessellator.js b/src/js/net/minecraft/client/render/Tessellator.js index b3d8a2e..cb62497 100644 --- a/src/js/net/minecraft/client/render/Tessellator.js +++ b/src/js/net/minecraft/client/render/Tessellator.js @@ -44,6 +44,12 @@ window.Tessellator = class { this.colors.push(this.blue); } + transformBrightness(brightness) { + for (let i in this.colors) { + this.colors[i] *= brightness; + } + } + draw(group) { let geometry = new THREE.BufferGeometry(); geometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(this.vertices), 3)); diff --git a/src/js/net/minecraft/client/render/gui/ItemRenderer.js b/src/js/net/minecraft/client/render/gui/ItemRenderer.js index 9ae08e0..adf8a4d 100644 --- a/src/js/net/minecraft/client/render/gui/ItemRenderer.js +++ b/src/js/net/minecraft/client/render/gui/ItemRenderer.js @@ -53,21 +53,35 @@ window.ItemRenderer = class { if (typeof meta === "undefined") { let meta = {}; + // To make the items darker + let paused = this.minecraft.isPaused(); + + // Render item let group = new THREE.Group(); - this.minecraft.worldRenderer.blockRenderer.renderGuiBlock(group, block, x, y, 10); + this.minecraft.worldRenderer.blockRenderer.renderGuiBlock(group, block, x, y, 10, paused ? 0.5 : 1); this.scene.add(group); + // Create meta meta.group = group; meta.typeId = block.getId(); meta.x = x; meta.y = y; + meta.dirty = false; this.items[renderId] = meta; } else { - if (meta.typeId !== block.getId() || meta.x !== x || meta.y !== y) { + // Check if rendered item has changed + if (meta.dirty || meta.typeId !== block.getId() || meta.x !== x || meta.y !== y) { + // Rebuild item this.scene.remove(meta.group); delete this.items[renderId]; this.renderItemInGui(renderId, block, x, y); } } } + + rebuildAllItems() { + for (let i in this.items) { + this.items[i].dirty = true; + } + } } \ No newline at end of file