diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/celesta.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/celesta.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/celesta.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/celesta.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chant.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chant.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chant.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chant.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chip_triangle.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chip_triangle.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chip_triangle.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/chip_triangle.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/drum_steel.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/drum_steel.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/drum_steel.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/drum_steel.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/guitar_electric.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/guitar_electric.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/guitar_electric.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/guitar_electric.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/wood_block.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/wood_block.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/wood_block.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/note/wood_block.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement1.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement1.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement1.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement1.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement2.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement2.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement2.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/achievement2.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite_extended.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite_extended.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite_extended.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/bite_extended.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/equip.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/equip.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/equip.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/equip.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/page.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/page.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/page.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/page.ogg
diff --git a/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/scrape.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/scrape.ogg
new file mode 100644
index 000000000..152af219c
Binary files /dev/null and b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/scrape.ogg differ
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_in.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_in.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_in.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_in.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_out.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_out.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_out.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/random/whoosh_out.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json
similarity index 90%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json
index 73da5471f..687f3140a 100644
--- a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json
+++ b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/sounds.json
@@ -36,16 +36,22 @@
             "random/page.ogg"
         ]
     },
-    "random.whoose.in": {
+    "random.whoosh_in": {
         "sounds": [
             "random/whoosh_in.ogg"
         ]
     },
-    "random.whoose.out": {
+    "random.whoosh_out": {
         "sounds": [
             "random/whoosh_out.ogg"
         ]
     },
+    "random.scrape": {
+        "subtitle": "subtitles.random.stone_scrape",
+        "sounds": [
+            "random/scrape.ogg"
+        ]
+    },
     "note.chant": {
         "subtitle": "subtitles.note.chant",
         "sounds": [
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost1.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost1.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost1.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost1.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost2.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost2.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost2.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost2.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost3.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost3.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost3.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost3.ogg
diff --git a/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost4.ogg b/game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost4.ogg
similarity index 100%
rename from devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost4.ogg
rename to game/client/devPacks/inTestingSoundsPack/assets/minecraft/sounds/step/permafrost4.ogg
diff --git a/devPacks/inTestingSoundsPack/credits.txt b/game/client/devPacks/inTestingSoundsPack/credits.txt
similarity index 84%
rename from devPacks/inTestingSoundsPack/credits.txt
rename to game/client/devPacks/inTestingSoundsPack/credits.txt
index 332dbfb0d..10211b19f 100644
--- a/devPacks/inTestingSoundsPack/credits.txt
+++ b/game/client/devPacks/inTestingSoundsPack/credits.txt
@@ -9,4 +9,5 @@ step.permafrost3 | H2_AIL
 step.permafrost4 | H2_AIL
 random.equip | Bones edited some freesounds sounds lol
 random.bite | mzov4j
-random.bite_extended | mzov4j
\ No newline at end of file
+random.bite_extended | mzov4j
+random.scrape | jonkadelic
\ No newline at end of file
diff --git a/devPacks/inTestingSoundsPack/manifest.json b/game/client/devPacks/inTestingSoundsPack/manifest.json
similarity index 100%
rename from devPacks/inTestingSoundsPack/manifest.json
rename to game/client/devPacks/inTestingSoundsPack/manifest.json
diff --git a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelPiePumpkin.java b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelPiePumpkin.java
index 9a241f8f9..c9dbad2b4 100644
--- a/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelPiePumpkin.java
+++ b/game/client/src/main/java/net/minecraft/client/render/block/model/BlockModelPiePumpkin.java
@@ -15,42 +15,41 @@ public class BlockModelPiePumpkin<T extends BlockLogicEdible> extends BlockModel
     protected IconCoordinate insideTexture = TextureRegistry.getTexture("minecraft:block/pumpkin_pie/inner");
     protected IconCoordinate topTexture = TextureRegistry.getTexture("minecraft:block/pumpkin_pie/top");
 
-    public BlockModelPiePumpkin(Block<T> block) {
+    public BlockModelPiePumpkin(final Block<T> block) {
         super(block);
-        float f = 0.0625F;
-        float f1 = 0.375F;
+        final float f = 0.0625F;
+        final float f1 = 0.375F;
         withCustomItemBounds(f, 0.0F, f, 1.0F - f, f1, 1.0F - f);
     }
 
-    public void renderSliceSide(Tessellator tessellator, WorldSource worldSource, AABB bounds, int x, int y, int z, Side side, boolean overrideTex) {
+    public void renderSliceSide(final Tessellator tessellator, final WorldSource worldSource, final AABB bounds, final int x, final int y, final int z, final Side side, final boolean overrideTex) {
         if(overrideTex)
-            renderBlocks.overrideBlockTexture = insideTexture;
-        renderBlocks.renderSide(tessellator, worldSource, this, bounds, x, y, z, 0, 0, 0, side, 0);
+            renderBlocks.overrideBlockTexture = this.insideTexture;
+        renderBlocks.renderSide(tessellator, worldSource, this, bounds, x, y, z, 1, 1, 1, side, 0);
         if(overrideTex)
             renderBlocks.overrideBlockTexture = null;
     }
 
-    private void renderSlice(Tessellator tessellator, WorldSource worldSource, AABB bounds, int x, int y, int z, int sliceX, int sliceZ) {
+    private void renderSlice(final Tessellator tessellator, final WorldSource worldSource, final AABB bounds, final int x, final int y, final int z, final int sliceX, final int sliceZ) {
 
-        double onePix = 0.0625;
-        double sliceWidth = onePix * 8;
+        final double onePix = 0.0625;
+        final double sliceWidth = onePix * 8;
 
-        double xMin = 0.0F + (sliceWidth * sliceX);
-        double xMax = xMin + sliceWidth;
+        final double xMin = 0.0F + (sliceWidth * sliceX);
+        final double xMax = xMin + sliceWidth;
 
-        double zMin =  0.0F + (sliceWidth * sliceZ);
-        double zMax = zMin + sliceWidth;
-        double offsetXMin = sliceX == 0 ? onePix : 0;
-        double offsetXMax = sliceX == 1 ? onePix : 0;
-        double offsetZMin = sliceZ == 0 ? onePix : 0;
-        double offsetZMax = sliceZ == 1 ? onePix : 0;
+        final double zMin =  0.0F + (sliceWidth * sliceZ);
+        final double zMax = zMin + sliceWidth;
+        final double offsetXMin = sliceX == 0 ? onePix : 0;
+        final double offsetXMax = sliceX == 1 ? onePix : 0;
+        final double offsetZMin = sliceZ == 0 ? onePix : 0;
+        final double offsetZMax = sliceZ == 1 ? onePix : 0;
 
-        boolean insideSouth = sliceZ == 0;
-        boolean insideNorth = sliceZ == 1;
-        boolean insideEast = sliceX == 0 ;
-        boolean insideWest = sliceX == 1;
+        final boolean insideSouth = sliceZ == 0;
+        final boolean insideNorth = sliceZ == 1;
+        final boolean insideEast = sliceX == 0 ;
+        final boolean insideWest = sliceX == 1;
 
-        maxSlices = block.getLogic().maxBites;
         bounds.set(xMin + offsetXMin, 0.0F, zMin + offsetZMin, xMax - offsetXMax, 0.375F, zMax - offsetZMax);
         renderBlocks.renderSide(tessellator, worldSource, this, bounds, x, y, z, 1, 1, 1, Side.TOP, 0);
         renderBlocks.renderSide(tessellator, worldSource, this, bounds, x, y, z, 1, 1, 1, Side.BOTTOM, 0);
@@ -63,12 +62,12 @@ public class BlockModelPiePumpkin<T extends BlockLogicEdible> extends BlockModel
     }
 
     @Override
-    public boolean render(@NotNull Tessellator tessellator, @NotNull WorldSource worldSource, int x, int y, int z) {
-        AABB bounds = block.getBlockBoundsFromState(worldSource, x, y, z);
+    public boolean render(@NotNull final Tessellator tessellator, @NotNull final WorldSource worldSource, final int x, final int y, final int z) {
+        final AABB bounds = this.block.getBlockBoundsFromState(worldSource, x, y, z);
 
         final int meta = worldSource.getBlockMetadata(x, y, z);
         renderBlocks.enableAO = true;
-        renderBlocks.cache.setupCache(block, worldSource, x, y, z);
+        renderBlocks.cache.setupCache(this.block, worldSource, x, y, z);
         int slices = 0;
         for(int xSlice = 0; xSlice < 2; xSlice++){
             for(int zSlice = 0; zSlice < 2; zSlice++) {
@@ -83,8 +82,6 @@ public class BlockModelPiePumpkin<T extends BlockLogicEdible> extends BlockModel
         return true;
     }
 
-    public int maxSlices;
-
 
 
 }
diff --git a/game/client/src/main/java/net/minecraft/client/render/tileentity/TileEntityRendererStatue.java b/game/client/src/main/java/net/minecraft/client/render/tileentity/TileEntityRendererStatue.java
index 1f0593d94..b325afe95 100644
--- a/game/client/src/main/java/net/minecraft/client/render/tileentity/TileEntityRendererStatue.java
+++ b/game/client/src/main/java/net/minecraft/client/render/tileentity/TileEntityRendererStatue.java
@@ -1,16 +1,22 @@
 package net.minecraft.client.render.tileentity;
 
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.render.TextureManager;
 import net.minecraft.client.render.item.model.ItemModelDispatcher;
 import net.minecraft.client.render.model.ModelBiped;
 import net.minecraft.client.render.model.ModelPigman;
 import net.minecraft.client.render.model.ModelPlayer;
 import net.minecraft.client.render.tessellator.Tessellator;
+import net.minecraft.core.Global;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.entity.TileEntityStatue;
 import net.minecraft.core.entity.IArmorWearing;
 import net.minecraft.core.enums.HumanArmorShape;
 import net.minecraft.core.item.*;
+import net.minecraft.core.util.helper.MathHelper;
+import net.minecraft.core.util.phys.AABB;
+import net.minecraft.core.world.World;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.lwjgl.opengl.GL11;
@@ -131,6 +137,7 @@ public class TileEntityRendererStatue extends TileEntityRenderer<TileEntityStatu
     public void doRender(Tessellator tessellator, TileEntityStatue tileEntity, double x, double y, double z,
                          float partialTick) {
         renderAt(tileEntity.getHeldItem(), tileEntity.getBlockMeta(), tileEntity.getBlock(), tileEntity.getPose(), tileEntity, x, y, z);
+        renderShadow(Minecraft.getMinecraft().currentWorld, tessellator, tileEntity.x, tileEntity.y, tileEntity.z, x, y, z, 2.0f, partialTick);
     }
 
     private boolean renderArmor(final @NotNull IArmorWearing<HumanArmorShape> armorWearer, int layer, TileEntityStatue.Pose pose) {
@@ -178,4 +185,65 @@ public class TileEntityRendererStatue extends TileEntityRenderer<TileEntityStatu
         }
         return false;
     }
+
+    private void renderShadow(World world, Tessellator tessellator, int bx, int by, int bz, double rx, double ry, double rz, float opacity, float partialTick)
+    {
+        GL11.glEnable(GL11.GL_BLEND);
+        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+        TextureManager textureManager = renderDispatcher.textureManager;
+        textureManager.bindTexture(textureManager.loadTexture("/assets/minecraft/textures/misc/shadow.png"));
+        float shadowSize = 0.5f;
+        float shadowOffs = 0.8f / 2.0f;
+        GL11.glDepthMask(false);
+        tessellator.startDrawingQuads();
+
+        int blockId = world.getBlockId(bx, by - 1, bz);
+        if(blockId > 0 && world.getBlockLightValue(bx, by, bz) > 3)
+        {
+            renderShadowOnBlock(world, tessellator, Blocks.blocksList[blockId], bx, by, bz, rx, ry + (double)shadowOffs, rz, opacity, shadowSize);
+        }
+
+        tessellator.draw();
+        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+        GL11.glDisable(GL11.GL_BLEND);
+        GL11.glDepthMask(true);
+    }
+
+    private void renderShadowOnBlock(World world, Tessellator tessellator, Block<?> block, int bx, int by, int bz, double rx, double ry, double rz,
+                                     float opacity, float size)
+    {
+        if(!block.isCubeShaped())
+        {
+            return;
+        }
+        double brightness = world.getLightBrightness(bx, by, bz);
+        if (Global.accessor.isFullbrightEnabled()) brightness = 1.0f;
+        double alpha = ((double)opacity / 2D) * 0.5D * brightness;
+        if(alpha < 0.0D)
+        {
+            return;
+        }
+        if(alpha > 1.0D)
+        {
+            alpha = 1.0D;
+        }
+        tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float)alpha);
+        AABB aabb = block.getCollisionBoundingBoxFromPool(world, bx, by - 1, bz);
+        if(aabb == null) {
+            return;
+        }
+        double xMin = rx - 0.5f;
+        double xMax = rx + (aabb.maxX - aabb.minX) - 0.5f;
+        double yMin = (ry + (aabb.maxY - aabb.minY)) - 1.39;
+        double zMin = rz - 0.5f;
+        double zMax = rz + (aabb.maxZ - aabb.minZ) - 0.5f;
+        float f2 = (float)((rx - xMin) / 2D / (double)size + 0.5D);
+        float f3 = (float)((rx - xMax) / 2D / (double)size + 0.5D);
+        float f4 = (float)((rz - zMin) / 2D / (double)size + 0.5D);
+        float f5 = (float)((rz - zMax) / 2D / (double)size + 0.5D);
+        tessellator.addVertexWithUV(xMin + 0.5f, yMin, zMin + 0.5f, f2, f4);
+        tessellator.addVertexWithUV(xMin + 0.5f, yMin, zMax + 0.5f, f2, f5);
+        tessellator.addVertexWithUV(xMax + 0.5f, yMin, zMax + 0.5f, f3, f5);
+        tessellator.addVertexWithUV(xMax + 0.5f, yMin, zMin + 0.5f, f3, f4);
+    }
 }
diff --git a/game/core/src/main/java/net/minecraft/core/block/BlockLogicStatue.java b/game/core/src/main/java/net/minecraft/core/block/BlockLogicStatue.java
index 871d61085..d5b1c3008 100644
--- a/game/core/src/main/java/net/minecraft/core/block/BlockLogicStatue.java
+++ b/game/core/src/main/java/net/minecraft/core/block/BlockLogicStatue.java
@@ -9,6 +9,7 @@ import net.minecraft.core.enums.HumanArmorShape;
 import net.minecraft.core.item.IArmorItem;
 import net.minecraft.core.item.Item;
 import net.minecraft.core.item.ItemStack;
+import net.minecraft.core.sound.SoundCategory;
 import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.world.World;
@@ -50,6 +51,7 @@ public class BlockLogicStatue extends BlockLogic {
         // Sneaking overrides all - next pose
         if (player.isSneaking()) {
             statueEntity.nextPose();
+            world.playSoundEffect(player, SoundCategory.WORLD_SOUNDS, (double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "random.scrape", 0.7F, 0.2F + world.rand.nextFloat() * 0.4F);
             return true;
         }
 
@@ -139,7 +141,10 @@ public class BlockLogicStatue extends BlockLogic {
             }
         }
 
-        return false;
+        // All else fails - next pose
+        statueEntity.nextPose();
+        world.playSoundEffect(player, SoundCategory.WORLD_SOUNDS, (double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "random.scrape", 0.7F, 0.2F + world.rand.nextFloat() * 0.2F);
+        return true;
     }
 
     @Override
diff --git a/game/core/src/main/resources/lang/en_US/subtitles.lang b/game/core/src/main/resources/lang/en_US/subtitles.lang
index 2853ba3af..ac0d5cdfd 100644
--- a/game/core/src/main/resources/lang/en_US/subtitles.lang
+++ b/game/core/src/main/resources/lang/en_US/subtitles.lang
@@ -67,6 +67,7 @@ subtitles.random.splash=Splash
 subtitles.random.breath=Breath
 subtitles.random.bite=Player Eating
 subtitles.random.equip=Armor Equipped
+subtitles.random.stone_scrape=Stone scrape
 
 subtitles.note.snare=Note snare
 subtitles.note.harp=Note harp
