diff --git a/build.gradle.kts b/build.gradle.kts
index bccdb3470..0a876d2c9 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -129,7 +129,7 @@ val lwjglNatives = Pair(
 }
 dependencies {
     implementation("org.jetbrains:annotations:24.0.0")?.let { clientInclude(it); serverInclude(it) }
-    implementation("legacy-lwjgl3:legacy-lwjgl3:1.0.0")?.let { clientInclude(it) }
+    implementation("legacy-lwjgl3:legacy-lwjgl3:1.0.1")?.let { clientInclude(it) }
     implementation(platform("org.lwjgl:lwjgl-bom:$lwjglVersion"))
 
     implementation("org.lwjgl", "lwjgl")
diff --git a/src/main/java/net/minecraft/client/gui/ItemElement.java b/src/main/java/net/minecraft/client/gui/ItemElement.java
index e2fb3ba1c..fecfc5fdb 100644
--- a/src/main/java/net/minecraft/client/gui/ItemElement.java
+++ b/src/main/java/net/minecraft/client/gui/ItemElement.java
@@ -51,6 +51,14 @@ public class ItemElement extends Gui
                     hasDrawnSlotBackground = true;
                 }
             }
+
+            if (slot.isLocked()) {
+                GL11.glColor4f(1, 1, 1, 1);
+                GL11.glDisable(GL11.GL_LIGHTING);
+                final IconCoordinate iconCoordinate = TextureRegistry.getTexture("minecraft:gui/slot_locked");
+                drawGuiIcon(x - 1, y - 1, 18, 18, iconCoordinate);
+                GL11.glEnable(GL11.GL_LIGHTING);
+            }
         }
 
         // Draw item
diff --git a/src/main/java/net/minecraft/client/gui/container/InventoryScreen.java b/src/main/java/net/minecraft/client/gui/container/InventoryScreen.java
index 3da55e4d7..54389afd7 100644
--- a/src/main/java/net/minecraft/client/gui/container/InventoryScreen.java
+++ b/src/main/java/net/minecraft/client/gui/container/InventoryScreen.java
@@ -264,13 +264,6 @@ public class InventoryScreen extends AbstractContainerScreen
         int j = (width - xSize) / 2;
         int k = (height - ySize) / 2;
         drawTexturedModalRect(j, k, 0, 0, xSize, ySize);
-        if (mc.thePlayer.inventory.currentItemLocked()) {
-            mc.textureManager.loadTexture("/assets/minecraft/textures/gui/sprites/slot_locked.png").bind();
-            int xOff = (18 * (mc.thePlayer.inventory.getCurrentItemIndex() % 9));
-            int hotbar = (((mc.thePlayer.inventory.getHotbarOffset() + 27) / 9) % 4);
-            int yOff = (18 * hotbar) + ((hotbar == 3) ? 4 : 0);
-            drawTexturedModalRect(j + 7 + xOff, k + 83 + yOff, 0, 0, 18, 18, 1f/18, 1f/18);
-        }
 
         GL11.glEnable(GL12.GL_RESCALE_NORMAL);
         GL11.glEnable(GL11.GL_COLOR_MATERIAL);
diff --git a/src/main/java/net/minecraft/client/gui/container/InventoryScreenCreative.java b/src/main/java/net/minecraft/client/gui/container/InventoryScreenCreative.java
index 70cb0b08e..f7722ea52 100644
--- a/src/main/java/net/minecraft/client/gui/container/InventoryScreenCreative.java
+++ b/src/main/java/net/minecraft/client/gui/container/InventoryScreenCreative.java
@@ -183,13 +183,7 @@ public class InventoryScreenCreative extends InventoryScreen implements ITextCha
         searchField.xPosition = x + 183;
         searchField.yPosition = y + 7;
         drawTexturedModalRect((double)x, (double)y, 0, 0, xSize, ySize, xSize / 2, ySize / 2);
-		if (mc.thePlayer.inventory.currentItemLocked()) {
-			mc.textureManager.loadTexture("/assets/minecraft/textures/gui/sprites/slot_locked.png").bind();
-			int xOff = (18 * (mc.thePlayer.inventory.getCurrentItemIndex() % 9));
-			int hotbar = (((mc.thePlayer.inventory.getHotbarOffset() + 27) / 9) % 4);
-			int yOff = (18 * hotbar) + ((hotbar == 3) ? 4 : 0);
-			drawTexturedModalRect(x + 7 + xOff, y + 83 + yOff, 0, 0, 18, 18, 1f/18, 1f/18);
-		}
+
         GL11.glEnable(GL12.GL_RESCALE_NORMAL);
         GL11.glEnable(GL11.GL_COLOR_MATERIAL);
         GL11.glEnable(GL11.GL_DEPTH_TEST);
diff --git a/src/main/java/net/minecraft/core/block/entity/BlastFurnaceBlockEntity.java b/src/main/java/net/minecraft/core/block/entity/BlastFurnaceBlockEntity.java
index 41fd7caf2..62473f635 100644
--- a/src/main/java/net/minecraft/core/block/entity/BlastFurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/core/block/entity/BlastFurnaceBlockEntity.java
@@ -95,7 +95,7 @@ public class BlastFurnaceBlockEntity extends FurnaceBlockEntity
             		if(furnaceItemStacks[1] != null && furnaceItemStacks[1].itemID == Blocks.NETHERRACK.id) {
             			furnaceItemStacks[1].stackSize--;
             			if(furnaceItemStacks[1].stackSize <= 0) furnaceItemStacks[1] = null;
-            			updateFurnace();
+            			updateFurnace(true);
             			furnaceUpdated = true;
             		}
             	}
@@ -132,7 +132,7 @@ public class BlastFurnaceBlockEntity extends FurnaceBlockEntity
             if(isBurnTimeHigherThan0 != (currentBurnTime > 0))
             {
                 furnaceUpdated = true;
-                updateFurnace();
+                updateFurnace(false);
             }
         }
         if(furnaceUpdated)
@@ -142,11 +142,11 @@ public class BlastFurnaceBlockEntity extends FurnaceBlockEntity
     }
 
     @Override
-    protected void updateFurnace(){
+    protected void updateFurnace(boolean forceLit){
         if (worldObj != null) {
-            BlastFurnaceBlock.updateFurnaceBlockState(currentBurnTime > 0, worldObj, x, y, z);
+            BlastFurnaceBlock.updateFurnaceBlockState(forceLit | (currentBurnTime > 0), worldObj, x, y, z);
         } else if (carriedBlock != null) {
-            carriedBlock.block = currentBurnTime > 0 ? Blocks.FURNACE_BLAST_ACTIVE : Blocks.FURNACE_BLAST_IDLE;
+            carriedBlock.block = (forceLit | (currentBurnTime > 0)) ? Blocks.FURNACE_BLAST_ACTIVE : Blocks.FURNACE_BLAST_IDLE;
         }
     }
 
diff --git a/src/main/java/net/minecraft/core/block/entity/FurnaceBlockEntity.java b/src/main/java/net/minecraft/core/block/entity/FurnaceBlockEntity.java
index 92f4f32d4..517a1590b 100644
--- a/src/main/java/net/minecraft/core/block/entity/FurnaceBlockEntity.java
+++ b/src/main/java/net/minecraft/core/block/entity/FurnaceBlockEntity.java
@@ -186,7 +186,7 @@ public class FurnaceBlockEntity extends BlockEntity
             		if(furnaceItemStacks[1] != null && furnaceItemStacks[1].itemID == Blocks.NETHERRACK.id) {
             			furnaceItemStacks[1].stackSize--;
             			if(furnaceItemStacks[1].stackSize <= 0) furnaceItemStacks[1] = null;
-            			updateFurnace();
+            			updateFurnace(true);
             			furnaceUpdated = true;
             		}
             	}
@@ -231,7 +231,7 @@ public class FurnaceBlockEntity extends BlockEntity
             if(isBurnTimeHigherThan0 != (currentBurnTime > 0))
             {
                 furnaceUpdated = true;
-                updateFurnace();
+                updateFurnace(false);
             }
         }
         if(furnaceUpdated)
@@ -307,11 +307,11 @@ public class FurnaceBlockEntity extends BlockEntity
         }
     }
 
-    protected void updateFurnace(){
+    protected void updateFurnace(boolean forceLit){
         if (worldObj != null) {
-            FurnaceBlock.updateFurnaceBlockState(currentBurnTime > 0, worldObj, x, y, z);
+            FurnaceBlock.updateFurnaceBlockState( forceLit | (currentBurnTime > 0), worldObj, x, y, z);
         } else if (carriedBlock != null) {
-            carriedBlock.block = currentBurnTime > 0 ? Blocks.FURNACE_STONE_ACTIVE : Blocks.FURNACE_STONE_IDLE;
+            carriedBlock.block = (forceLit | (currentBurnTime > 0)) ? Blocks.FURNACE_STONE_ACTIVE : Blocks.FURNACE_STONE_IDLE;
         }
     }
 
@@ -386,7 +386,7 @@ public class FurnaceBlockEntity extends BlockEntity
     public boolean tryPlace(World world, Entity holder, int blockX, int blockY, int blockZ, Side side, double xPlaced, double yPlaced) {
         boolean success = super.tryPlace(world, holder, blockX, blockY, blockZ, side, xPlaced, yPlaced);
         if (success) {
-            updateFurnace();
+            updateFurnace(false);
         }
         return success;
     }
diff --git a/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java b/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
index 490c9ef3d..64d5110c2 100644
--- a/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
+++ b/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
@@ -67,7 +67,7 @@ public class Slot
 
 	public boolean mayPlace(final ItemStack itemstack)
 	{
-		return container != null && !container.locked(slot);
+		return container != null && !isLocked();
 	}
 
 	public void onTake(final ItemStack itemstack)
@@ -100,15 +100,19 @@ public class Slot
 	}
 	
 	public boolean enableDragAndPickup() {
-		return !container.locked(slot);
+		return !isLocked();
 	}
 	
 	public boolean allowItemInteraction() {
-		return !container.locked(slot);
+		return !isLocked();
 	}
 
 	public boolean getIsDiscovered(Player player){
 		return discovered;
 	}
 
+	public boolean isLocked() {
+		return container != null && container.locked(slot);
+	}
+
 }
