diff --git a/game/client/src/main/java/net/minecraft/client/gui/modelviewer/ScreenModelViewer.java b/game/client/src/main/java/net/minecraft/client/gui/modelviewer/ScreenModelViewer.java
index 8b83cc91c..f93d80aea 100644
--- a/game/client/src/main/java/net/minecraft/client/gui/modelviewer/ScreenModelViewer.java
+++ b/game/client/src/main/java/net/minecraft/client/gui/modelviewer/ScreenModelViewer.java
@@ -331,6 +331,8 @@ public class ScreenModelViewer extends ScreenPhotoMode implements ListenerTextFi
             this.lastInfo = null;
         }
 
+        this.mc.fullbright = true;
+
         GL41.glViewport(0, 0, this.mc.gameWindow.getWidthPixels(), this.mc.gameWindow.getHeightPixels());
         GLRenderer.projectionM4f().identity().ortho(0.0f, (float) this.mc.resolution.getExactScaledWidthScreenCoords(), (float) this.mc.resolution.getExactScaledHeightScreenCoords(), 0.0f, 1000f, 3000f);
         GLRenderer.viewM4f().identity();
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicBasket.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicBasket.java
index 43067d9e0..2c3d16b1c 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicBasket.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicBasket.java
@@ -66,11 +66,12 @@ public class BlockLogicBasket extends BlockLogic {
     }
 
     public int getFillLevel(final @NotNull WorldSource source, final @NotNull TilePosc tilePos) {
-        final @NotNull TileEntityBasket tileEntity = (TileEntityBasket) Objects.requireNonNull(source.getTileEntity(tilePos));
-
-        final float fill = MathHelper.clamp(tileEntity.getNumUnitsInside() / (float) tileEntity.getMaxUnits(), 0, 1); // Clamps the visual effect even if the basket gets overstuffed
+        if (source.getTileEntity(tilePos) instanceof TileEntityBasket basket) { // Instance check done to avoid a class cast exception that seems to sometimes happen on pushed baskets in mp, sometimes. Probably a synchronization issue in MP needs further evaluation
+            final float fill = MathHelper.clamp(basket.getNumUnitsInside() / (float) basket.getMaxUnits(), 0, 1); // Clamps the visual effect even if the basket gets overstuffed
 
-        return (int) Math.ceil(10 * fill);
+            return (int) Math.ceil(10 * fill);
+        }
+        return 0;
     }
 
     @Deprecated
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicFluid.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicFluid.java
index 82fb7ea0d..0859e3683 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicFluid.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicFluid.java
@@ -8,6 +8,7 @@ import net.minecraft.core.entity.Entity;
 import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.sound.SoundCategory;
+import net.minecraft.core.util.helper.Direction;
 import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
@@ -24,6 +25,7 @@ import java.util.Random;
 
 public abstract class BlockLogicFluid extends BlockLogic {
     protected final @NotNull Fluid fluid;
+    protected static final Direction[] CHECK_HARDEN_DIRECTIONS = new Direction[] {Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST, Direction.UP};
 
     public BlockLogicFluid(final @NotNull Block<?> block, final @NotNull Material material, final @NotNull Fluid fluid) {
         super(block, material);
@@ -163,11 +165,10 @@ public abstract class BlockLogicFluid extends BlockLogic {
             return;
         }
         TilePos queryPos = new TilePos();
-        this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.north(queryPos)));
-        this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.south(queryPos)));
-        this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.west(queryPos)));
-        this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.east(queryPos)));
-        this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.up(queryPos)));
+        for (int i = 0; i < CHECK_HARDEN_DIRECTIONS.length; i++) {
+            if (this.fluid.checkForHarden(this, world, tilePos, world.getBlockMaterial(tilePos.add(CHECK_HARDEN_DIRECTIONS[i], queryPos)))) return;
+
+        }
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/block/Fluid.java b/game/core/src/main/java/net/minecraft/core/block/Fluid.java
index db88f38da..531d4e431 100644
--- a/game/core/src/main/java/net/minecraft/core/block/Fluid.java
+++ b/game/core/src/main/java/net/minecraft/core/block/Fluid.java
@@ -21,7 +21,7 @@ public interface Fluid {
     default void checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final int x, final int y, final int z, final @NotNull Material encountered) {
         checkForHarden(logicFluid, world, new TilePos(x, y, z), encountered);
     }
-    void checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered);
+    boolean checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered);
 
     boolean shouldTick();
 
diff --git a/game/core/src/main/java/net/minecraft/core/block/FluidLava.java b/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
index f5b700143..df9175d55 100644
--- a/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
+++ b/game/core/src/main/java/net/minecraft/core/block/FluidLava.java
@@ -31,7 +31,7 @@ public class FluidLava
     }
 
     @Override
-    public void checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered) {
+    public boolean checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered) {
         if (encountered == Materials.WATER) {
             final int data = world.getBlockData(tilePos) & 0x0F;
             if (data == 0) {
@@ -48,7 +48,9 @@ public class FluidLava
                 world.setBlockTypeNotify(tilePos, Blocks.COBBLE_BASALT);
             }
             BlockLogicFluid.fizz(world, tilePos);
+            return true;
         }
+        return false;
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/block/FluidWater.java b/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
index c82b7cd1b..1f7f3d6c7 100644
--- a/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
+++ b/game/core/src/main/java/net/minecraft/core/block/FluidWater.java
@@ -36,14 +36,16 @@ public class FluidWater
     }
 
     @Override
-    public void checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered) {
+    public boolean checkForHarden(final @NotNull BlockLogicFluid logicFluid, final @NotNull World world, final @NotNull TilePosc tilePos, final @NotNull Material encountered) {
         if (encountered == Materials.LAVA) {
             final int data = world.getBlockData(tilePos) & 0x0F;
             if (data == 0) {
                 world.setBlockTypeNotify(tilePos, Blocks.COBBLE_LIMESTONE);
                 BlockLogicFluid.fizz(world, tilePos);
             }
+            return true;
         }
+        return false;
     }
 
     @Override
diff --git a/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java b/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
index d42de7173..4f6cef628 100644
--- a/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
+++ b/game/core/src/main/java/net/minecraft/core/entity/animal/MobChicken.java
@@ -91,7 +91,7 @@ public class MobChicken
         }
 
         final @Nullable ItemStack heldItem = player.getHeldItem();
-        if (heldItem != null && heldItem.getItem() instanceof ItemToolShears && this.getHealth() > 0) {
+        if (heldItem != null && heldItem.getItem() instanceof ItemToolShears && this.getHealth() > 0 && this.hurtTime <= 0) {
             if (!this.world.isClientSide) {
                 final int count = 1 + this.random.nextInt(2);
                 for (int j = 0; j < count; j++) {
diff --git a/game/core/src/main/java/net/minecraft/core/item/ItemFireStriker.java b/game/core/src/main/java/net/minecraft/core/item/ItemFireStriker.java
index 20777f0b1..d4204c0b5 100644
--- a/game/core/src/main/java/net/minecraft/core/item/ItemFireStriker.java
+++ b/game/core/src/main/java/net/minecraft/core/item/ItemFireStriker.java
@@ -47,7 +47,7 @@ public class ItemFireStriker extends Item {
             blockPos = blockPos.add(direction, new TilePos());
             TilePos queryPos = new TilePos();
             Block<?> b = world.getBlockType(blockPos);
-            if (Block.getLogicClass(b) instanceof BlockLogicBrazier brazier && brazier.isBurning()) {
+            if (Block.getLogicClass(b) instanceof BlockLogicBrazier brazier && !brazier.isBurning()) {
                 if (Block.hasLogicClass(world.getBlockType(blockPos.east(queryPos)), BlockLogicFluid.class) ||
                     Block.hasLogicClass(world.getBlockType(blockPos.west(queryPos)), BlockLogicFluid.class) ||
                     Block.hasLogicClass(world.getBlockType(blockPos.south(queryPos)), BlockLogicFluid.class) ||
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java b/game/core/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
index 8d9780774..c731aeac4 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
@@ -23,6 +23,7 @@ import net.minecraft.core.world.chunk.writer.ChunkWriter;
 import net.minecraft.core.world.data.ChunkNibbleArray;
 import net.minecraft.core.world.data.ChunkUnsignedByteArray;
 import net.minecraft.core.world.save.LevelData;
+import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 
 import java.io.File;
@@ -260,7 +261,7 @@ public class ChunkLoaderLegacy
     public static Chunk loadChunkIntoWorldFromCompound(World world, CompoundTag tag)
     {
         int version = tag.getIntegerOrDefault("Version", -1);
-        ChunkReader reader = getChunkReaderByVersion(world, tag, version);
+        ChunkReader reader = getChunkReaderByVersion(tag, version);
 
         // Read tags
         int x = reader.getX();
@@ -371,19 +372,14 @@ public class ChunkLoaderLegacy
         }
     }
 
-    private static ChunkReader getChunkReaderByVersion(World world, CompoundTag tag, int version)
+    private static @NotNull ChunkReader getChunkReaderByVersion(@NotNull CompoundTag tag, int version)
     {
-        switch (version)
-        {
-            case 1:
-                return new ChunkReaderVersion1(world, tag);
-            case 2:
-                return new ChunkReaderVersion2(world, tag);
-            case 3:
-                return new ChunkReaderVersion3(world, tag);
-            default:
-                return new ChunkReaderLegacy(world, tag);
-        }
+        return switch (version) {
+            case 1 -> new ChunkReaderVersion1(tag);
+            case 2 -> new ChunkReaderVersion2(tag);
+            case 3 -> new ChunkReaderVersion3(tag);
+            default -> new ChunkReaderLegacy(tag);
+        };
     }
 
     private File worldDir;
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReader.java b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReader.java
index 5c236d4a2..ad4ece43c 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReader.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReader.java
@@ -3,7 +3,6 @@ package net.minecraft.core.world.chunk.reader;
 import com.mojang.nbt.tags.CompoundTag;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import net.minecraft.core.NextTickListEntry;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.data.ChunkNibbleArray;
 import net.minecraft.core.world.data.ChunkUnsignedByteArray;
 import org.jetbrains.annotations.NotNull;
@@ -11,10 +10,8 @@ import org.jetbrains.annotations.Nullable;
 
 public abstract class ChunkReader {
     protected final @NotNull CompoundTag tag;
-    protected final @Nullable World world;
 
-    public ChunkReader(final @Nullable World world, final @NotNull CompoundTag chunkTag) {
-        this.world = world;
+    public ChunkReader(final @NotNull CompoundTag chunkTag) {
         this.tag = chunkTag;
     }
 
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderLegacy.java b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderLegacy.java
index 6085e74d0..ee2564abb 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderLegacy.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderLegacy.java
@@ -3,7 +3,6 @@ package net.minecraft.core.world.chunk.reader;
 import com.mojang.nbt.tags.CompoundTag;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import net.minecraft.core.NextTickListEntry;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.data.ChunkNibbleArray;
@@ -29,9 +28,9 @@ public class ChunkReaderLegacy
         return (x * 16 * 256) + (z * 256) + y;
     }
 
-    public ChunkReaderLegacy(World world, CompoundTag tag)
+    public ChunkReaderLegacy(@NotNull CompoundTag tag)
     {
-        super(world, tag);
+        super(tag);
 
         this.blocks = tag.getShortArrayOrDefault("Blocks", null);
         this.data = tag.getByteArrayOrDefault("Data", null);
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
index 5de21fa4d..b9d858e21 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
@@ -5,7 +5,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import net.minecraft.core.NextTickListEntry;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.Registry;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.data.ChunkNibbleArray;
@@ -33,8 +32,8 @@ public class ChunkReaderVersion1
         return (x * 16 * 256) + (z * 256) + y;
     }
 
-    public ChunkReaderVersion1(final @Nullable World world, final @NotNull CompoundTag tag) {
-        super(world, tag);
+    public ChunkReaderVersion1(final @NotNull CompoundTag tag) {
+        super(tag);
 
         this.blocks = tag.getShortArrayOrDefault("Blocks", null);
         this.data = tag.getByteArrayOrDefault("Data", null);
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
index d7b8f5f06..0fdc35e76 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
@@ -7,7 +7,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import net.minecraft.core.NextTickListEntry;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.Registry;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.data.ChunkNibbleArray;
@@ -21,19 +20,18 @@ public class ChunkReaderVersion2
     extends ChunkReader {
     private final ListTag sectionsTag;
 
-    public ChunkReaderVersion2(World world, CompoundTag chunkTag) {
-        super(world, chunkTag);
+    public ChunkReaderVersion2(@NotNull CompoundTag chunkTag) {
+        super(chunkTag);
 
         this.sectionsTag = chunkTag.getList("Sections");
     }
 
     private CompoundTag findSection(int y) {
         for (Tag<?> tag : this.sectionsTag) {
-            if (tag instanceof CompoundTag) {
-                CompoundTag cTag = (CompoundTag) tag;
-                int tagY = cTag.getInteger("yPos");
+            if (tag instanceof CompoundTag compoundTag) {
+                int tagY = compoundTag.getInteger("yPos");
                 if (tagY == y) {
-                    return cTag;
+                    return compoundTag;
                 }
             }
         }
diff --git a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion3.java b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion3.java
index ac9fb11da..38d7edcae 100644
--- a/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion3.java
+++ b/game/core/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion3.java
@@ -8,7 +8,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import net.minecraft.core.NextTickListEntry;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.Registry;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.data.ChunkNibbleArray;
@@ -22,19 +21,18 @@ public class ChunkReaderVersion3
     extends ChunkReader {
     private final @NotNull ListTag sectionsTag;
 
-    public ChunkReaderVersion3(final @Nullable World world, final @NotNull CompoundTag chunkTag) {
-        super(world, chunkTag);
+    public ChunkReaderVersion3(final @NotNull CompoundTag chunkTag) {
+        super(chunkTag);
 
         this.sectionsTag = chunkTag.getList("Sections");
     }
 
     private @Nullable CompoundTag findSection(final int y) {
         for (final @NotNull Tag<?> tag : this.sectionsTag) {
-            if (tag instanceof CompoundTag) {
-                final @NotNull CompoundTag cTag = (CompoundTag) tag;
-                final int tagY = cTag.getInteger("yPos");
+            if (tag instanceof @NotNull CompoundTag compoundTag) {
+                final int tagY = compoundTag.getInteger("yPos");
                 if (tagY == y) {
-                    return cTag;
+                    return compoundTag;
                 }
             }
         }
diff --git a/util/seed-viewer/src/main/java/org/useless/seedviewer/bta/worldloader/ChunkLoader.java b/util/seed-viewer/src/main/java/org/useless/seedviewer/bta/worldloader/ChunkLoader.java
index c2b441e6a..e20cfe7ad 100644
--- a/util/seed-viewer/src/main/java/org/useless/seedviewer/bta/worldloader/ChunkLoader.java
+++ b/util/seed-viewer/src/main/java/org/useless/seedviewer/bta/worldloader/ChunkLoader.java
@@ -15,7 +15,6 @@ import net.minecraft.core.world.chunk.provider.ChunkProvider;
 import net.minecraft.core.world.chunk.reader.*;
 import net.minecraft.core.world.pos.ChunkPos;
 import net.minecraft.core.world.pos.ChunkPosc;
-import net.minecraft.core.world.save.LevelStorageDummy;
 import net.minecraft.core.world.save.mcregion.RegionFileCache;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -25,7 +24,6 @@ import org.useless.seedviewer.bta.DummyWorld;
 import java.io.DataInputStream;
 import java.io.File;
 import java.io.IOException;
-import java.lang.reflect.Field;
 import java.util.Arrays;
 
 public class ChunkLoader implements ChunkProvider {
@@ -80,7 +78,7 @@ public class ChunkLoader implements ChunkProvider {
         return loadChunkFromCompound(tag.getCompound("Level"));
     }
 
-    public Chunk loadChunkFromCompound(CompoundTag tag) {
+    public @NotNull Chunk loadChunkFromCompound(@NotNull CompoundTag tag) {
         int version = tag.getIntegerOrDefault("Version", -1);
         ChunkReader reader = getChunkReaderByVersion(tag, version);
         int x = reader.getX();
@@ -119,17 +117,13 @@ public class ChunkLoader implements ChunkProvider {
 
         return chunk;
     }
-    private static ChunkReader getChunkReaderByVersion(CompoundTag tag, int version) {
-        switch (version) {
-            case 1:
-                return new ChunkReaderVersion1(null, tag);
-            case 2:
-                return new ChunkReaderVersion2(null, tag);
-            case 3:
-                return new ChunkReaderVersion3(null, tag);
-            default:
-                return new ChunkReaderLegacy(null, tag);
-        }
+    private static @NotNull ChunkReader getChunkReaderByVersion(@NotNull CompoundTag tag, int version) {
+        return switch (version) {
+            case 1 -> new ChunkReaderVersion1(tag);
+            case 2 -> new ChunkReaderVersion2(tag);
+            case 3 -> new ChunkReaderVersion3(tag);
+            default -> new ChunkReaderLegacy(tag);
+        };
     }
 
     @Override
