diff --git a/MinecraftClient/Mapping/MaterialExtensions.cs b/MinecraftClient/Mapping/MaterialExtensions.cs
index d10913c2..cf29dd71 100644
--- a/MinecraftClient/Mapping/MaterialExtensions.cs
+++ b/MinecraftClient/Mapping/MaterialExtensions.cs
@@ -19,32 +19,40 @@ namespace MinecraftClient.Mapping
{
switch (m)
{
+ case Material.AcaciaDoor:
case Material.AcaciaFence:
case Material.AcaciaFenceGate:
case Material.AcaciaLeaves:
case Material.AcaciaLog:
case Material.AcaciaPlanks:
+ case Material.AcaciaPressurePlate:
+ case Material.AcaciaSign:
case Material.AcaciaSlab:
case Material.AcaciaStairs:
case Material.AcaciaTrapdoor:
+ case Material.AcaciaWallSign:
case Material.AcaciaWood:
case Material.AmethystBlock:
case Material.AmethystCluster:
+ case Material.AncientDebris:
case Material.Andesite:
case Material.AndesiteSlab:
case Material.AndesiteStairs:
case Material.AndesiteWall:
case Material.Anvil:
+ case Material.AttachedMelonStem:
+ case Material.AttachedPumpkinStem:
case Material.Azalea:
case Material.AzaleaLeaves:
case Material.Bamboo:
+ case Material.BambooSapling:
case Material.Barrel:
case Material.Barrier:
case Material.Basalt:
case Material.Beacon:
case Material.Bedrock:
- case Material.BeeNest:
case Material.Beehive:
+ case Material.BeeNest:
case Material.Bell:
case Material.BirchDoor:
case Material.BirchFence:
@@ -52,10 +60,14 @@ namespace MinecraftClient.Mapping
case Material.BirchLeaves:
case Material.BirchLog:
case Material.BirchPlanks:
+ case Material.BirchPressurePlate:
+ case Material.BirchSign:
case Material.BirchSlab:
case Material.BirchStairs:
case Material.BirchTrapdoor:
+ case Material.BirchWallSign:
case Material.BirchWood:
+ case Material.BlackBanner:
case Material.BlackBed:
case Material.BlackCandle:
case Material.BlackCandleCake:
@@ -68,9 +80,12 @@ namespace MinecraftClient.Mapping
case Material.Blackstone:
case Material.BlackstoneSlab:
case Material.BlackstoneStairs:
+ case Material.BlackstoneWall:
case Material.BlackTerracotta:
+ case Material.BlackWallBanner:
case Material.BlackWool:
case Material.BlastFurnace:
+ case Material.BlueBanner:
case Material.BlueBed:
case Material.BlueCandle:
case Material.BlueCandleCake:
@@ -82,15 +97,17 @@ namespace MinecraftClient.Mapping
case Material.BlueStainedGlass:
case Material.BlueStainedGlassPane:
case Material.BlueTerracotta:
+ case Material.BlueWallBanner:
case Material.BlueWool:
case Material.BoneBlock:
case Material.Bookshelf:
case Material.BrainCoralBlock:
case Material.BrewingStand:
+ case Material.Bricks:
case Material.BrickSlab:
case Material.BrickStairs:
case Material.BrickWall:
- case Material.Bricks:
+ case Material.BrownBanner:
case Material.BrownBed:
case Material.BrownCandle:
case Material.BrownCandleCake:
@@ -102,6 +119,7 @@ namespace MinecraftClient.Mapping
case Material.BrownStainedGlass:
case Material.BrownStainedGlassPane:
case Material.BrownTerracotta:
+ case Material.BrownWallBanner:
case Material.BrownWool:
case Material.BubbleColumn:
case Material.BubbleCoralBlock:
@@ -115,10 +133,13 @@ namespace MinecraftClient.Mapping
case Material.CartographyTable:
case Material.CarvedPumpkin:
case Material.Cauldron:
+ case Material.Chain:
case Material.ChainCommandBlock:
case Material.Chest:
case Material.ChippedAnvil:
case Material.ChiseledDeepslate:
+ case Material.ChiseledNetherBricks:
+ case Material.ChiseledPolishedBlackstone:
case Material.ChiseledQuartzBlock:
case Material.ChiseledRedSandstone:
case Material.ChiseledSandstone:
@@ -137,6 +158,7 @@ namespace MinecraftClient.Mapping
case Material.CobblestoneSlab:
case Material.CobblestoneStairs:
case Material.CobblestoneWall:
+ case Material.Cobweb:
case Material.CommandBlock:
case Material.Composter:
case Material.Conduit:
@@ -144,10 +166,26 @@ namespace MinecraftClient.Mapping
case Material.CopperOre:
case Material.CrackedDeepslateBricks:
case Material.CrackedDeepslateTiles:
+ case Material.CrackedNetherBricks:
+ case Material.CrackedPolishedBlackstoneBricks:
case Material.CrackedStoneBricks:
case Material.CraftingTable:
case Material.CreeperHead:
case Material.CreeperWallHead:
+ case Material.CrimsonDoor:
+ case Material.CrimsonFence:
+ case Material.CrimsonFenceGate:
+ case Material.CrimsonHyphae:
+ case Material.CrimsonNylium:
+ case Material.CrimsonPlanks:
+ case Material.CrimsonPressurePlate:
+ case Material.CrimsonSign:
+ case Material.CrimsonSlab:
+ case Material.CrimsonStairs:
+ case Material.CrimsonStem:
+ case Material.CrimsonTrapdoor:
+ case Material.CrimsonWallSign:
+ case Material.CryingObsidian:
case Material.CutCopper:
case Material.CutCopperSlab:
case Material.CutCopperStairs:
@@ -155,6 +193,7 @@ namespace MinecraftClient.Mapping
case Material.CutRedSandstoneSlab:
case Material.CutSandstone:
case Material.CutSandstoneSlab:
+ case Material.CyanBanner:
case Material.CyanBed:
case Material.CyanCandle:
case Material.CyanCandleCake:
@@ -165,6 +204,7 @@ namespace MinecraftClient.Mapping
case Material.CyanStainedGlass:
case Material.CyanStainedGlassPane:
case Material.CyanTerracotta:
+ case Material.CyanWallBanner:
case Material.CyanWool:
case Material.DamagedAnvil:
case Material.DarkOakDoor:
@@ -173,29 +213,54 @@ namespace MinecraftClient.Mapping
case Material.DarkOakLeaves:
case Material.DarkOakLog:
case Material.DarkOakPlanks:
+ case Material.DarkOakPressurePlate:
+ case Material.DarkOakSign:
case Material.DarkOakSlab:
case Material.DarkOakStairs:
case Material.DarkOakTrapdoor:
+ case Material.DarkOakWallSign:
case Material.DarkOakWood:
case Material.DarkPrismarine:
case Material.DarkPrismarineSlab:
case Material.DarkPrismarineStairs:
case Material.DaylightDetector:
+ case Material.DeadBrainCoral:
case Material.DeadBrainCoralBlock:
+ case Material.DeadBrainCoralFan:
+ case Material.DeadBrainCoralWallFan:
+ case Material.DeadBubbleCoral:
case Material.DeadBubbleCoralBlock:
+ case Material.DeadBubbleCoralFan:
+ case Material.DeadBubbleCoralWallFan:
+ case Material.DeadFireCoral:
case Material.DeadFireCoralBlock:
+ case Material.DeadFireCoralFan:
+ case Material.DeadFireCoralWallFan:
+ case Material.DeadHornCoral:
case Material.DeadHornCoralBlock:
+ case Material.DeadHornCoralFan:
+ case Material.DeadHornCoralWallFan:
+ case Material.DeadTubeCoral:
case Material.DeadTubeCoralBlock:
+ case Material.DeadTubeCoralFan:
+ case Material.DeadTubeCoralWallFan:
case Material.Deepslate:
+ case Material.DeepslateBricks:
case Material.DeepslateBrickSlab:
case Material.DeepslateBrickStairs:
case Material.DeepslateBrickWall:
- case Material.DeepslateBricks:
+ case Material.DeepslateCoalOre:
case Material.DeepslateCopperOre:
+ case Material.DeepslateDiamondOre:
+ case Material.DeepslateEmeraldOre:
+ case Material.DeepslateGoldOre:
+ case Material.DeepslateIronOre:
+ case Material.DeepslateLapisOre:
+ case Material.DeepslateRedstoneOre:
+ case Material.DeepslateTiles:
case Material.DeepslateTileSlab:
case Material.DeepslateTileStairs:
case Material.DeepslateTileWall:
- case Material.DeepslateTiles:
case Material.DiamondBlock:
case Material.DiamondOre:
case Material.Diorite:
@@ -214,14 +279,14 @@ namespace MinecraftClient.Mapping
case Material.EmeraldBlock:
case Material.EmeraldOre:
case Material.EnchantingTable:
+ case Material.EnderChest:
case Material.EndPortalFrame:
case Material.EndRod:
case Material.EndStone:
+ case Material.EndStoneBricks:
case Material.EndStoneBrickSlab:
case Material.EndStoneBrickStairs:
case Material.EndStoneBrickWall:
- case Material.EndStoneBricks:
- case Material.EnderChest:
case Material.ExposedCopper:
case Material.ExposedCutCopper:
case Material.ExposedCutCopperSlab:
@@ -229,11 +294,12 @@ namespace MinecraftClient.Mapping
case Material.Farmland:
case Material.FireCoralBlock:
case Material.FletchingTable:
- case Material.FlowerPot:
case Material.FloweringAzalea:
case Material.FloweringAzaleaLeaves:
+ case Material.FlowerPot:
case Material.FrostedIce:
case Material.Furnace:
+ case Material.GildedBlackstone:
case Material.Glass:
case Material.GlassPane:
case Material.Glowstone:
@@ -245,6 +311,7 @@ namespace MinecraftClient.Mapping
case Material.GraniteWall:
case Material.GrassBlock:
case Material.Gravel:
+ case Material.GrayBanner:
case Material.GrayBed:
case Material.GrayCandle:
case Material.GrayCandleCake:
@@ -255,7 +322,9 @@ namespace MinecraftClient.Mapping
case Material.GrayStainedGlass:
case Material.GrayStainedGlassPane:
case Material.GrayTerracotta:
+ case Material.GrayWallBanner:
case Material.GrayWool:
+ case Material.GreenBanner:
case Material.GreenBed:
case Material.GreenCandle:
case Material.GreenCandleCake:
@@ -266,9 +335,11 @@ namespace MinecraftClient.Mapping
case Material.GreenStainedGlass:
case Material.GreenStainedGlassPane:
case Material.GreenTerracotta:
+ case Material.GreenWallBanner:
case Material.GreenWool:
case Material.Grindstone:
case Material.HayBlock:
+ case Material.HeavyWeightedPressurePlate:
case Material.HoneyBlock:
case Material.HoneycombBlock:
case Material.Hopper:
@@ -295,9 +366,12 @@ namespace MinecraftClient.Mapping
case Material.JungleLeaves:
case Material.JungleLog:
case Material.JunglePlanks:
+ case Material.JunglePressurePlate:
+ case Material.JungleSign:
case Material.JungleSlab:
case Material.JungleStairs:
case Material.JungleTrapdoor:
+ case Material.JungleWallSign:
case Material.JungleWood:
case Material.Ladder:
case Material.Lantern:
@@ -306,6 +380,7 @@ namespace MinecraftClient.Mapping
case Material.LargeAmethystBud:
case Material.LavaCauldron:
case Material.Lectern:
+ case Material.LightBlueBanner:
case Material.LightBlueBed:
case Material.LightBlueCandle:
case Material.LightBlueCandleCake:
@@ -316,7 +391,9 @@ namespace MinecraftClient.Mapping
case Material.LightBlueStainedGlass:
case Material.LightBlueStainedGlassPane:
case Material.LightBlueTerracotta:
+ case Material.LightBlueWallBanner:
case Material.LightBlueWool:
+ case Material.LightGrayBanner:
case Material.LightGrayBed:
case Material.LightGrayCandle:
case Material.LightGrayCandleCake:
@@ -327,9 +404,12 @@ namespace MinecraftClient.Mapping
case Material.LightGrayStainedGlass:
case Material.LightGrayStainedGlassPane:
case Material.LightGrayTerracotta:
+ case Material.LightGrayWallBanner:
case Material.LightGrayWool:
case Material.LightningRod:
+ case Material.LightWeightedPressurePlate:
case Material.LilyPad:
+ case Material.LimeBanner:
case Material.LimeBed:
case Material.LimeCandle:
case Material.LimeCandleCake:
@@ -340,8 +420,11 @@ namespace MinecraftClient.Mapping
case Material.LimeStainedGlass:
case Material.LimeStainedGlassPane:
case Material.LimeTerracotta:
+ case Material.LimeWallBanner:
case Material.LimeWool:
+ case Material.Lodestone:
case Material.Loom:
+ case Material.MagentaBanner:
case Material.MagentaBed:
case Material.MagentaCandle:
case Material.MagentaCandleCake:
@@ -352,39 +435,55 @@ namespace MinecraftClient.Mapping
case Material.MagentaStainedGlass:
case Material.MagentaStainedGlassPane:
case Material.MagentaTerracotta:
+ case Material.MagentaWallBanner:
case Material.MagentaWool:
case Material.MagmaBlock:
+ case Material.MangroveDoor:
+ case Material.MangroveFence:
+ case Material.MangroveFenceGate:
case Material.MangroveLeaves:
case Material.MangroveLog:
case Material.MangrovePlanks:
case Material.MangrovePressurePlate:
case Material.MangroveRoots:
+ case Material.MangroveSign:
case Material.MangroveSlab:
case Material.MangroveStairs:
+ case Material.MangroveTrapdoor:
+ case Material.MangroveWallSign:
case Material.MangroveWood:
case Material.MediumAmethystBud:
case Material.Melon:
+ case Material.MelonStem:
case Material.MossBlock:
case Material.MossCarpet:
case Material.MossyCobblestone:
case Material.MossyCobblestoneSlab:
case Material.MossyCobblestoneStairs:
case Material.MossyCobblestoneWall:
+ case Material.MossyStoneBricks:
case Material.MossyStoneBrickSlab:
case Material.MossyStoneBrickStairs:
case Material.MossyStoneBrickWall:
- case Material.MossyStoneBricks:
case Material.MovingPiston:
+ case Material.Mud:
+ case Material.MudBricks:
+ case Material.MudBrickSlab:
+ case Material.MudBrickStairs:
+ case Material.MudBrickWall:
+ case Material.MuddyMangroveRoots:
case Material.MushroomStem:
case Material.Mycelium:
case Material.NetherBrickFence:
+ case Material.NetherBricks:
case Material.NetherBrickSlab:
case Material.NetherBrickStairs:
case Material.NetherBrickWall:
- case Material.NetherBricks:
+ case Material.NetherGoldOre:
+ case Material.NetheriteBlock:
case Material.NetherQuartzOre:
- case Material.NetherWartBlock:
case Material.Netherrack:
+ case Material.NetherWartBlock:
case Material.NoteBlock:
case Material.OakDoor:
case Material.OakFence:
@@ -392,12 +491,17 @@ namespace MinecraftClient.Mapping
case Material.OakLeaves:
case Material.OakLog:
case Material.OakPlanks:
+ case Material.OakPressurePlate:
+ case Material.OakSign:
case Material.OakSlab:
case Material.OakStairs:
case Material.OakTrapdoor:
+ case Material.OakWallSign:
case Material.OakWood:
case Material.Observer:
case Material.Obsidian:
+ case Material.OchreFroglight:
+ case Material.OrangeBanner:
case Material.OrangeBed:
case Material.OrangeCandle:
case Material.OrangeCandleCake:
@@ -408,13 +512,17 @@ namespace MinecraftClient.Mapping
case Material.OrangeStainedGlass:
case Material.OrangeStainedGlassPane:
case Material.OrangeTerracotta:
+ case Material.OrangeWallBanner:
case Material.OrangeWool:
case Material.OxidizedCopper:
case Material.OxidizedCutCopper:
case Material.OxidizedCutCopperSlab:
case Material.OxidizedCutCopperStairs:
case Material.PackedIce:
+ case Material.PackedMud:
+ case Material.PearlescentFroglight:
case Material.PetrifiedOakSlab:
+ case Material.PinkBanner:
case Material.PinkBed:
case Material.PinkCandle:
case Material.PinkCandleCake:
@@ -425,6 +533,7 @@ namespace MinecraftClient.Mapping
case Material.PinkStainedGlass:
case Material.PinkStainedGlassPane:
case Material.PinkTerracotta:
+ case Material.PinkWallBanner:
case Material.PinkWool:
case Material.Piston:
case Material.PistonHead:
@@ -436,6 +545,15 @@ namespace MinecraftClient.Mapping
case Material.PolishedAndesiteSlab:
case Material.PolishedAndesiteStairs:
case Material.PolishedBasalt:
+ case Material.PolishedBlackstone:
+ case Material.PolishedBlackstoneBricks:
+ case Material.PolishedBlackstoneBrickSlab:
+ case Material.PolishedBlackstoneBrickStairs:
+ case Material.PolishedBlackstoneBrickWall:
+ case Material.PolishedBlackstonePressurePlate:
+ case Material.PolishedBlackstoneSlab:
+ case Material.PolishedBlackstoneStairs:
+ case Material.PolishedBlackstoneWall:
case Material.PolishedDeepslate:
case Material.PolishedDeepslateSlab:
case Material.PolishedDeepslateStairs:
@@ -475,13 +593,15 @@ namespace MinecraftClient.Mapping
case Material.PottedWitherRose:
case Material.PowderSnowCauldron:
case Material.Prismarine:
+ case Material.PrismarineBricks:
case Material.PrismarineBrickSlab:
case Material.PrismarineBrickStairs:
- case Material.PrismarineBricks:
case Material.PrismarineSlab:
case Material.PrismarineStairs:
case Material.PrismarineWall:
case Material.Pumpkin:
+ case Material.PumpkinStem:
+ case Material.PurpleBanner:
case Material.PurpleBed:
case Material.PurpleCandle:
case Material.PurpleCandleCake:
@@ -492,18 +612,21 @@ namespace MinecraftClient.Mapping
case Material.PurpleStainedGlass:
case Material.PurpleStainedGlassPane:
case Material.PurpleTerracotta:
+ case Material.PurpleWallBanner:
case Material.PurpleWool:
case Material.PurpurBlock:
case Material.PurpurPillar:
case Material.PurpurSlab:
case Material.PurpurStairs:
case Material.QuartzBlock:
+ case Material.QuartzBricks:
case Material.QuartzPillar:
case Material.QuartzSlab:
case Material.QuartzStairs:
case Material.RawCopperBlock:
case Material.RawGoldBlock:
case Material.RawIronBlock:
+ case Material.RedBanner:
case Material.RedBed:
case Material.RedCandle:
case Material.RedCandleCake:
@@ -511,10 +634,10 @@ namespace MinecraftClient.Mapping
case Material.RedConcretePowder:
case Material.RedGlazedTerracotta:
case Material.RedMushroomBlock:
+ case Material.RedNetherBricks:
case Material.RedNetherBrickSlab:
case Material.RedNetherBrickStairs:
case Material.RedNetherBrickWall:
- case Material.RedNetherBricks:
case Material.RedSand:
case Material.RedSandstone:
case Material.RedSandstoneSlab:
@@ -523,21 +646,29 @@ namespace MinecraftClient.Mapping
case Material.RedShulkerBox:
case Material.RedStainedGlass:
case Material.RedStainedGlassPane:
- case Material.RedTerracotta:
- case Material.RedWool:
case Material.RedstoneBlock:
case Material.RedstoneLamp:
case Material.RedstoneOre:
+ case Material.RedTerracotta:
+ case Material.RedWallBanner:
+ case Material.RedWool:
+ case Material.ReinforcedDeepslate:
case Material.RepeatingCommandBlock:
+ case Material.RespawnAnchor:
case Material.RootedDirt:
case Material.Sand:
case Material.Sandstone:
case Material.SandstoneSlab:
case Material.SandstoneStairs:
case Material.SandstoneWall:
+ case Material.Sculk:
+ case Material.SculkCatalyst:
case Material.SculkSensor:
+ case Material.SculkShrieker:
+ case Material.SculkVein:
case Material.SeaLantern:
case Material.SeaPickle:
+ case Material.Shroomlight:
case Material.ShulkerBox:
case Material.SkeletonSkull:
case Material.SkeletonWallSkull:
@@ -558,6 +689,8 @@ namespace MinecraftClient.Mapping
case Material.SmoothStone:
case Material.SmoothStoneSlab:
case Material.SnowBlock:
+ case Material.SoulCampfire:
+ case Material.SoulLantern:
case Material.SoulSand:
case Material.SoulSoil:
case Material.Spawner:
@@ -568,32 +701,43 @@ namespace MinecraftClient.Mapping
case Material.SpruceLeaves:
case Material.SpruceLog:
case Material.SprucePlanks:
+ case Material.SprucePressurePlate:
+ case Material.SpruceSign:
case Material.SpruceSlab:
case Material.SpruceStairs:
case Material.SpruceTrapdoor:
+ case Material.SpruceWallSign:
case Material.SpruceWood:
case Material.StickyPiston:
case Material.Stone:
+ case Material.StoneBricks:
case Material.StoneBrickSlab:
case Material.StoneBrickStairs:
case Material.StoneBrickWall:
- case Material.StoneBricks:
+ case Material.Stonecutter:
+ case Material.StonePressurePlate:
case Material.StoneSlab:
case Material.StoneStairs:
- case Material.Stonecutter:
case Material.StrippedAcaciaLog:
case Material.StrippedAcaciaWood:
case Material.StrippedBirchLog:
case Material.StrippedBirchWood:
+ case Material.StrippedCrimsonHyphae:
+ case Material.StrippedCrimsonStem:
case Material.StrippedDarkOakLog:
case Material.StrippedDarkOakWood:
case Material.StrippedJungleLog:
case Material.StrippedJungleWood:
+ case Material.StrippedMangroveLog:
+ case Material.StrippedMangroveWood:
case Material.StrippedOakLog:
case Material.StrippedOakWood:
case Material.StrippedSpruceLog:
case Material.StrippedSpruceWood:
+ case Material.StrippedWarpedHyphae:
+ case Material.StrippedWarpedStem:
case Material.StructureBlock:
+ case Material.Target:
case Material.Terracotta:
case Material.TintedGlass:
case Material.Tnt:
@@ -601,6 +745,21 @@ namespace MinecraftClient.Mapping
case Material.TubeCoralBlock:
case Material.Tuff:
case Material.TurtleEgg:
+ case Material.VerdantFroglight:
+ case Material.WarpedDoor:
+ case Material.WarpedFence:
+ case Material.WarpedFenceGate:
+ case Material.WarpedHyphae:
+ case Material.WarpedNylium:
+ case Material.WarpedPlanks:
+ case Material.WarpedPressurePlate:
+ case Material.WarpedSign:
+ case Material.WarpedSlab:
+ case Material.WarpedStairs:
+ case Material.WarpedStem:
+ case Material.WarpedTrapdoor:
+ case Material.WarpedWallSign:
+ case Material.WarpedWartBlock:
case Material.WaterCauldron:
case Material.WaxedCopperBlock:
case Material.WaxedCutCopper:
@@ -623,6 +782,7 @@ namespace MinecraftClient.Mapping
case Material.WeatheredCutCopperSlab:
case Material.WeatheredCutCopperStairs:
case Material.WetSponge:
+ case Material.WhiteBanner:
case Material.WhiteBed:
case Material.WhiteCandle:
case Material.WhiteCandleCake:
@@ -633,9 +793,11 @@ namespace MinecraftClient.Mapping
case Material.WhiteStainedGlass:
case Material.WhiteStainedGlassPane:
case Material.WhiteTerracotta:
+ case Material.WhiteWallBanner:
case Material.WhiteWool:
case Material.WitherSkeletonSkull:
case Material.WitherSkeletonWallSkull:
+ case Material.YellowBanner:
case Material.YellowBed:
case Material.YellowCandle:
case Material.YellowCandleCake:
@@ -646,10 +808,10 @@ namespace MinecraftClient.Mapping
case Material.YellowStainedGlass:
case Material.YellowStainedGlassPane:
case Material.YellowTerracotta:
+ case Material.YellowWallBanner:
case Material.YellowWool:
case Material.ZombieHead:
case Material.ZombieWallHead:
- case Material.AcaciaDoor:
return true;
default:
return false;
diff --git a/MinecraftClient/Mapping/Movement.cs b/MinecraftClient/Mapping/Movement.cs
index 97af6359..5cde8624 100644
--- a/MinecraftClient/Mapping/Movement.cs
+++ b/MinecraftClient/Mapping/Movement.cs
@@ -462,11 +462,37 @@ namespace MinecraftClient.Mapping
/// True if the specified location is on the ground
public static bool IsOnGround(World world, Location location)
{
- if (world.GetChunkColumn(location) == null || world.GetChunkColumn(location).FullyLoaded == false)
+ ChunkColumn? chunkColumn = world.GetChunkColumn(location);
+ if (chunkColumn == null || chunkColumn.FullyLoaded == false)
return true; // avoid moving downward in a not loaded chunk
- return world.GetBlock(Move(location, Direction.Down)).Type.IsSolid()
- && (location.Y <= Math.Truncate(location.Y) + 0.0001);
+ Location down = Move(location, Direction.Down);
+
+ bool result = world.GetBlock(down).Type.IsSolid();
+
+ bool northCheck = 1 + Math.Floor(down.Z) - down.Z > 0.7;
+ bool eastCheck = down.X - Math.Floor(down.X) > 0.7;
+ bool southCheck = down.Z - Math.Floor(down.Z) > 0.7;
+ bool westCheck = 1 + Math.Floor(down.X) - down.X > 0.7;
+
+ if (!result && northCheck)
+ result |= world.GetBlock(Move(down, Direction.North)).Type.IsSolid();
+ if (!result && northCheck && eastCheck)
+ result |= world.GetBlock(Move(down, Direction.NorthEast)).Type.IsSolid();
+ if (!result && eastCheck)
+ result |= world.GetBlock(Move(down, Direction.East)).Type.IsSolid();
+ if (!result && eastCheck && southCheck)
+ result |= world.GetBlock(Move(down, Direction.SouthEast)).Type.IsSolid();
+ if (!result && southCheck)
+ result |= world.GetBlock(Move(down, Direction.South)).Type.IsSolid();
+ if (!result && southCheck && westCheck)
+ result |= world.GetBlock(Move(down, Direction.SouthWest)).Type.IsSolid();
+ if (!result && westCheck)
+ result |= world.GetBlock(Move(down, Direction.West)).Type.IsSolid();
+ if (!result && westCheck && northCheck)
+ result |= world.GetBlock(Move(down, Direction.NorthWest)).Type.IsSolid();
+
+ return result && (location.Y <= Math.Truncate(location.Y) + 0.0001);
}
///