From c5d52879383cd692c196b00d6ef47e4b063772ee Mon Sep 17 00:00:00 2001 From: BruceChen Date: Wed, 7 Sep 2022 17:25:06 +0800 Subject: [PATCH] Improve IsOnGround --- MinecraftClient/Mapping/MaterialExtensions.cs | 196 ++++++++++++++++-- MinecraftClient/Mapping/Movement.cs | 32 ++- 2 files changed, 208 insertions(+), 20 deletions(-) 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); } ///