Minecraft-Console-Client/MinecraftClient/Mapping/MaterialExtensions.cs

695 lines
30 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MinecraftClient.Mapping
{
/// <summary>
/// Defines extension methods for the Material enumeration
/// </summary>
public static class MaterialExtensions
{
/// <summary>
/// Check if the player cannot pass through the specified material
/// </summary>
/// <param name="m">Material to test</param>
/// <returns>True if the material is harmful</returns>
public static bool IsSolid(this Material m)
{
switch (m)
{
case Material.AcaciaFence:
case Material.AcaciaFenceGate:
case Material.AcaciaLeaves:
case Material.AcaciaLog:
case Material.AcaciaPlanks:
case Material.AcaciaSlab:
case Material.AcaciaStairs:
case Material.AcaciaTrapdoor:
case Material.AcaciaWood:
case Material.AmethystBlock:
case Material.AmethystCluster:
case Material.Andesite:
case Material.AndesiteSlab:
case Material.AndesiteStairs:
case Material.AndesiteWall:
case Material.Anvil:
case Material.Azalea:
case Material.AzaleaLeaves:
case Material.Bamboo:
case Material.Barrel:
case Material.Barrier:
case Material.Basalt:
case Material.Beacon:
case Material.Bedrock:
case Material.BeeNest:
case Material.Beehive:
case Material.Bell:
case Material.BirchDoor:
case Material.BirchFence:
case Material.BirchFenceGate:
case Material.BirchLeaves:
case Material.BirchLog:
case Material.BirchPlanks:
case Material.BirchSlab:
case Material.BirchStairs:
case Material.BirchTrapdoor:
case Material.BirchWood:
case Material.BlackBed:
case Material.BlackCandle:
case Material.BlackCandleCake:
case Material.BlackConcrete:
case Material.BlackConcretePowder:
case Material.BlackGlazedTerracotta:
case Material.BlackShulkerBox:
case Material.BlackStainedGlass:
case Material.BlackStainedGlassPane:
case Material.BlackTerracotta:
case Material.BlackWool:
case Material.BlastFurnace:
case Material.BlueBed:
case Material.BlueCandle:
case Material.BlueCandleCake:
case Material.BlueConcrete:
case Material.BlueConcretePowder:
case Material.BlueGlazedTerracotta:
case Material.BlueIce:
case Material.BlueShulkerBox:
case Material.BlueStainedGlass:
case Material.BlueStainedGlassPane:
case Material.BlueTerracotta:
case Material.BlueWool:
case Material.BoneBlock:
case Material.Bookshelf:
case Material.BrainCoralBlock:
case Material.BrewingStand:
case Material.BrickSlab:
case Material.BrickStairs:
case Material.BrickWall:
case Material.Bricks:
case Material.BrownBed:
case Material.BrownCandle:
case Material.BrownCandleCake:
case Material.BrownConcrete:
case Material.BrownConcretePowder:
case Material.BrownGlazedTerracotta:
case Material.BrownMushroomBlock:
case Material.BrownShulkerBox:
case Material.BrownStainedGlass:
case Material.BrownStainedGlassPane:
case Material.BrownTerracotta:
case Material.BrownWool:
case Material.BubbleColumn:
case Material.BubbleCoralBlock:
case Material.BuddingAmethyst:
case Material.Cactus:
case Material.Cake:
case Material.Calcite:
case Material.Campfire:
case Material.Candle:
case Material.CandleCake:
case Material.CartographyTable:
case Material.CarvedPumpkin:
case Material.Cauldron:
case Material.ChainCommandBlock:
case Material.Chest:
case Material.ChippedAnvil:
case Material.ChiseledDeepslate:
case Material.ChiseledQuartzBlock:
case Material.ChiseledRedSandstone:
case Material.ChiseledSandstone:
case Material.ChiseledStoneBricks:
case Material.ChorusFlower:
case Material.ChorusPlant:
case Material.Clay:
case Material.CoalBlock:
case Material.CoalOre:
case Material.CoarseDirt:
case Material.CobbledDeepslate:
case Material.CobbledDeepslateSlab:
case Material.CobbledDeepslateStairs:
case Material.CobbledDeepslateWall:
case Material.Cobblestone:
case Material.CobblestoneSlab:
case Material.CobblestoneStairs:
case Material.CobblestoneWall:
case Material.CommandBlock:
case Material.Composter:
case Material.Conduit:
case Material.CopperBlock:
case Material.CopperOre:
case Material.CrackedDeepslateBricks:
case Material.CrackedDeepslateTiles:
case Material.CrackedStoneBricks:
case Material.CraftingTable:
case Material.CreeperHead:
case Material.CreeperWallHead:
case Material.CutCopper:
case Material.CutCopperSlab:
case Material.CutCopperStairs:
case Material.CutRedSandstone:
case Material.CutRedSandstoneSlab:
case Material.CutSandstone:
case Material.CutSandstoneSlab:
case Material.CyanBed:
case Material.CyanCandle:
case Material.CyanCandleCake:
case Material.CyanConcrete:
case Material.CyanConcretePowder:
case Material.CyanGlazedTerracotta:
case Material.CyanShulkerBox:
case Material.CyanStainedGlass:
case Material.CyanStainedGlassPane:
case Material.CyanTerracotta:
case Material.CyanWool:
case Material.DamagedAnvil:
case Material.DarkOakDoor:
case Material.DarkOakFence:
case Material.DarkOakFenceGate:
case Material.DarkOakLeaves:
case Material.DarkOakLog:
case Material.DarkOakPlanks:
case Material.DarkOakSlab:
case Material.DarkOakStairs:
case Material.DarkOakTrapdoor:
case Material.DarkOakWood:
case Material.DarkPrismarine:
case Material.DarkPrismarineSlab:
case Material.DarkPrismarineStairs:
case Material.DaylightDetector:
case Material.DeadBrainCoralBlock:
case Material.DeadBubbleCoralBlock:
case Material.DeadFireCoralBlock:
case Material.DeadHornCoralBlock:
case Material.DeadTubeCoralBlock:
case Material.Deepslate:
case Material.DeepslateBrickSlab:
case Material.DeepslateBrickStairs:
case Material.DeepslateBrickWall:
case Material.DeepslateBricks:
case Material.DeepslateCopperOre:
case Material.DeepslateTileSlab:
case Material.DeepslateTileStairs:
case Material.DeepslateTileWall:
case Material.DeepslateTiles:
case Material.DiamondBlock:
case Material.DiamondOre:
case Material.Diorite:
case Material.DioriteSlab:
case Material.DioriteStairs:
case Material.DioriteWall:
case Material.Dirt:
case Material.DirtPath:
case Material.Dispenser:
case Material.DragonEgg:
case Material.DragonHead:
case Material.DragonWallHead:
case Material.DriedKelpBlock:
case Material.DripstoneBlock:
case Material.Dropper:
case Material.EmeraldBlock:
case Material.EmeraldOre:
case Material.EnchantingTable:
case Material.EndPortalFrame:
case Material.EndRod:
case Material.EndStone:
case Material.EndStoneBrickSlab:
case Material.EndStoneBrickStairs:
case Material.EndStoneBrickWall:
case Material.EndStoneBricks:
case Material.EnderChest:
case Material.ExposedCopper:
case Material.ExposedCutCopper:
case Material.ExposedCutCopperSlab:
case Material.ExposedCutCopperStairs:
case Material.Farmland:
case Material.FireCoralBlock:
case Material.FletchingTable:
case Material.FlowerPot:
case Material.FloweringAzalea:
case Material.FloweringAzaleaLeaves:
case Material.FrostedIce:
case Material.Furnace:
case Material.Glass:
case Material.GlassPane:
case Material.Glowstone:
case Material.GoldBlock:
case Material.GoldOre:
case Material.Granite:
case Material.GraniteSlab:
case Material.GraniteStairs:
case Material.GraniteWall:
case Material.GrassBlock:
case Material.Gravel:
case Material.GrayBed:
case Material.GrayCandle:
case Material.GrayCandleCake:
case Material.GrayConcrete:
case Material.GrayConcretePowder:
case Material.GrayGlazedTerracotta:
case Material.GrayShulkerBox:
case Material.GrayStainedGlass:
case Material.GrayStainedGlassPane:
case Material.GrayTerracotta:
case Material.GrayWool:
case Material.GreenBed:
case Material.GreenCandle:
case Material.GreenCandleCake:
case Material.GreenConcrete:
case Material.GreenConcretePowder:
case Material.GreenGlazedTerracotta:
case Material.GreenShulkerBox:
case Material.GreenStainedGlass:
case Material.GreenStainedGlassPane:
case Material.GreenTerracotta:
case Material.GreenWool:
case Material.Grindstone:
case Material.HayBlock:
case Material.HoneyBlock:
case Material.HoneycombBlock:
case Material.Hopper:
case Material.HornCoralBlock:
case Material.Ice:
case Material.InfestedChiseledStoneBricks:
case Material.InfestedCobblestone:
case Material.InfestedCrackedStoneBricks:
case Material.InfestedDeepslate:
case Material.InfestedMossyStoneBricks:
case Material.InfestedStone:
case Material.InfestedStoneBricks:
case Material.IronBars:
case Material.IronBlock:
case Material.IronDoor:
case Material.IronOre:
case Material.IronTrapdoor:
case Material.JackOLantern:
case Material.Jigsaw:
case Material.Jukebox:
case Material.JungleDoor:
case Material.JungleFence:
case Material.JungleFenceGate:
case Material.JungleLeaves:
case Material.JungleLog:
case Material.JunglePlanks:
case Material.JungleSlab:
case Material.JungleStairs:
case Material.JungleTrapdoor:
case Material.JungleWood:
case Material.Ladder:
case Material.Lantern:
case Material.LapisBlock:
case Material.LapisOre:
case Material.LargeAmethystBud:
case Material.LavaCauldron:
case Material.Lectern:
case Material.LightBlueBed:
case Material.LightBlueCandle:
case Material.LightBlueCandleCake:
case Material.LightBlueConcrete:
case Material.LightBlueConcretePowder:
case Material.LightBlueGlazedTerracotta:
case Material.LightBlueShulkerBox:
case Material.LightBlueStainedGlass:
case Material.LightBlueStainedGlassPane:
case Material.LightBlueTerracotta:
case Material.LightBlueWool:
case Material.LightGrayBed:
case Material.LightGrayCandle:
case Material.LightGrayCandleCake:
case Material.LightGrayConcrete:
case Material.LightGrayConcretePowder:
case Material.LightGrayGlazedTerracotta:
case Material.LightGrayShulkerBox:
case Material.LightGrayStainedGlass:
case Material.LightGrayStainedGlassPane:
case Material.LightGrayTerracotta:
case Material.LightGrayWool:
case Material.LightningRod:
case Material.LilyPad:
case Material.LimeBed:
case Material.LimeCandle:
case Material.LimeCandleCake:
case Material.LimeConcrete:
case Material.LimeConcretePowder:
case Material.LimeGlazedTerracotta:
case Material.LimeShulkerBox:
case Material.LimeStainedGlass:
case Material.LimeStainedGlassPane:
case Material.LimeTerracotta:
case Material.LimeWool:
case Material.Loom:
case Material.MagentaBed:
case Material.MagentaCandle:
case Material.MagentaCandleCake:
case Material.MagentaConcrete:
case Material.MagentaConcretePowder:
case Material.MagentaGlazedTerracotta:
case Material.MagentaShulkerBox:
case Material.MagentaStainedGlass:
case Material.MagentaStainedGlassPane:
case Material.MagentaTerracotta:
case Material.MagentaWool:
case Material.MagmaBlock:
case Material.MangroveLeaves:
case Material.MangroveLog:
case Material.MangrovePlanks:
case Material.MangrovePressurePlate:
case Material.MangroveRoots:
case Material.MangroveSlab:
case Material.MangroveStairs:
case Material.MangroveWood:
case Material.MediumAmethystBud:
case Material.Melon:
case Material.MossBlock:
case Material.MossCarpet:
case Material.MossyCobblestone:
case Material.MossyCobblestoneSlab:
case Material.MossyCobblestoneStairs:
case Material.MossyCobblestoneWall:
case Material.MossyStoneBrickSlab:
case Material.MossyStoneBrickStairs:
case Material.MossyStoneBrickWall:
case Material.MossyStoneBricks:
case Material.MovingPiston:
case Material.MushroomStem:
case Material.Mycelium:
case Material.NetherBrickFence:
case Material.NetherBrickSlab:
case Material.NetherBrickStairs:
case Material.NetherBrickWall:
case Material.NetherBricks:
case Material.NetherQuartzOre:
case Material.NetherWartBlock:
case Material.Netherrack:
case Material.NoteBlock:
case Material.OakDoor:
case Material.OakFence:
case Material.OakFenceGate:
case Material.OakLeaves:
case Material.OakLog:
case Material.OakPlanks:
case Material.OakSlab:
case Material.OakStairs:
case Material.OakTrapdoor:
case Material.OakWood:
case Material.Observer:
case Material.Obsidian:
case Material.OrangeBed:
case Material.OrangeCandle:
case Material.OrangeCandleCake:
case Material.OrangeConcrete:
case Material.OrangeConcretePowder:
case Material.OrangeGlazedTerracotta:
case Material.OrangeShulkerBox:
case Material.OrangeStainedGlass:
case Material.OrangeStainedGlassPane:
case Material.OrangeTerracotta:
case Material.OrangeWool:
case Material.OxidizedCopper:
case Material.OxidizedCutCopper:
case Material.OxidizedCutCopperSlab:
case Material.OxidizedCutCopperStairs:
case Material.PackedIce:
case Material.PetrifiedOakSlab:
case Material.PinkBed:
case Material.PinkCandle:
case Material.PinkCandleCake:
case Material.PinkConcrete:
case Material.PinkConcretePowder:
case Material.PinkGlazedTerracotta:
case Material.PinkShulkerBox:
case Material.PinkStainedGlass:
case Material.PinkStainedGlassPane:
case Material.PinkTerracotta:
case Material.PinkWool:
case Material.Piston:
case Material.PistonHead:
case Material.PlayerHead:
case Material.PlayerWallHead:
case Material.Podzol:
case Material.PointedDripstone:
case Material.PolishedAndesite:
case Material.PolishedAndesiteSlab:
case Material.PolishedAndesiteStairs:
case Material.PolishedBasalt:
case Material.PolishedDeepslate:
case Material.PolishedDeepslateSlab:
case Material.PolishedDeepslateStairs:
case Material.PolishedDeepslateWall:
case Material.PolishedDiorite:
case Material.PolishedDioriteSlab:
case Material.PolishedDioriteStairs:
case Material.PolishedGranite:
case Material.PolishedGraniteSlab:
case Material.PolishedGraniteStairs:
case Material.PottedAcaciaSapling:
case Material.PottedAllium:
case Material.PottedAzaleaBush:
case Material.PottedAzureBluet:
case Material.PottedBamboo:
case Material.PottedBirchSapling:
case Material.PottedBlueOrchid:
case Material.PottedBrownMushroom:
case Material.PottedCactus:
case Material.PottedCornflower:
case Material.PottedDandelion:
case Material.PottedDarkOakSapling:
case Material.PottedDeadBush:
case Material.PottedFern:
case Material.PottedFloweringAzaleaBush:
case Material.PottedJungleSapling:
case Material.PottedLilyOfTheValley:
case Material.PottedOakSapling:
case Material.PottedOrangeTulip:
case Material.PottedOxeyeDaisy:
case Material.PottedPinkTulip:
case Material.PottedPoppy:
case Material.PottedRedMushroom:
case Material.PottedRedTulip:
case Material.PottedSpruceSapling:
case Material.PottedWhiteTulip:
case Material.PottedWitherRose:
case Material.PowderSnowCauldron:
case Material.Prismarine:
case Material.PrismarineBrickSlab:
case Material.PrismarineBrickStairs:
case Material.PrismarineBricks:
case Material.PrismarineSlab:
case Material.PrismarineStairs:
case Material.PrismarineWall:
case Material.Pumpkin:
case Material.PurpleBed:
case Material.PurpleCandle:
case Material.PurpleCandleCake:
case Material.PurpleConcrete:
case Material.PurpleConcretePowder:
case Material.PurpleGlazedTerracotta:
case Material.PurpleShulkerBox:
case Material.PurpleStainedGlass:
case Material.PurpleStainedGlassPane:
case Material.PurpleTerracotta:
case Material.PurpleWool:
case Material.PurpurBlock:
case Material.PurpurPillar:
case Material.PurpurSlab:
case Material.PurpurStairs:
case Material.QuartzBlock:
case Material.QuartzPillar:
case Material.QuartzSlab:
case Material.QuartzStairs:
case Material.RawCopperBlock:
case Material.RawGoldBlock:
case Material.RawIronBlock:
case Material.RedBed:
case Material.RedCandle:
case Material.RedCandleCake:
case Material.RedConcrete:
case Material.RedConcretePowder:
case Material.RedGlazedTerracotta:
case Material.RedMushroomBlock:
case Material.RedNetherBrickSlab:
case Material.RedNetherBrickStairs:
case Material.RedNetherBrickWall:
case Material.RedNetherBricks:
case Material.RedSand:
case Material.RedSandstone:
case Material.RedSandstoneSlab:
case Material.RedSandstoneStairs:
case Material.RedSandstoneWall:
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.RepeatingCommandBlock:
case Material.RootedDirt:
case Material.Sand:
case Material.Sandstone:
case Material.SandstoneSlab:
case Material.SandstoneStairs:
case Material.SandstoneWall:
case Material.SculkSensor:
case Material.SeaLantern:
case Material.SeaPickle:
case Material.ShulkerBox:
case Material.SkeletonSkull:
case Material.SkeletonWallSkull:
case Material.SlimeBlock:
case Material.SmallAmethystBud:
case Material.SmithingTable:
case Material.Smoker:
case Material.SmoothBasalt:
case Material.SmoothQuartz:
case Material.SmoothQuartzSlab:
case Material.SmoothQuartzStairs:
case Material.SmoothRedSandstone:
case Material.SmoothRedSandstoneSlab:
case Material.SmoothRedSandstoneStairs:
case Material.SmoothSandstone:
case Material.SmoothSandstoneSlab:
case Material.SmoothSandstoneStairs:
case Material.SmoothStone:
case Material.SmoothStoneSlab:
case Material.SnowBlock:
case Material.SoulSand:
case Material.SoulSoil:
case Material.Spawner:
case Material.Sponge:
case Material.SpruceDoor:
case Material.SpruceFence:
case Material.SpruceFenceGate:
case Material.SpruceLeaves:
case Material.SpruceLog:
case Material.SprucePlanks:
case Material.SpruceSlab:
case Material.SpruceStairs:
case Material.SpruceTrapdoor:
case Material.SpruceWood:
case Material.StickyPiston:
case Material.Stone:
case Material.StoneBrickSlab:
case Material.StoneBrickStairs:
case Material.StoneBrickWall:
case Material.StoneBricks:
case Material.StoneSlab:
case Material.StoneStairs:
case Material.Stonecutter:
case Material.StrippedAcaciaLog:
case Material.StrippedAcaciaWood:
case Material.StrippedBirchLog:
case Material.StrippedBirchWood:
case Material.StrippedDarkOakLog:
case Material.StrippedDarkOakWood:
case Material.StrippedJungleLog:
case Material.StrippedJungleWood:
case Material.StrippedOakLog:
case Material.StrippedOakWood:
case Material.StrippedSpruceLog:
case Material.StrippedSpruceWood:
case Material.StructureBlock:
case Material.Terracotta:
case Material.TintedGlass:
case Material.Tnt:
case Material.TrappedChest:
case Material.TubeCoralBlock:
case Material.Tuff:
case Material.TurtleEgg:
case Material.WaterCauldron:
case Material.WaxedCopperBlock:
case Material.WaxedCutCopper:
case Material.WaxedCutCopperSlab:
case Material.WaxedCutCopperStairs:
case Material.WaxedExposedCopper:
case Material.WaxedExposedCutCopper:
case Material.WaxedExposedCutCopperSlab:
case Material.WaxedExposedCutCopperStairs:
case Material.WaxedOxidizedCopper:
case Material.WaxedOxidizedCutCopper:
case Material.WaxedOxidizedCutCopperSlab:
case Material.WaxedOxidizedCutCopperStairs:
case Material.WaxedWeatheredCopper:
case Material.WaxedWeatheredCutCopper:
case Material.WaxedWeatheredCutCopperSlab:
case Material.WaxedWeatheredCutCopperStairs:
case Material.WeatheredCopper:
case Material.WeatheredCutCopper:
case Material.WeatheredCutCopperSlab:
case Material.WeatheredCutCopperStairs:
case Material.WetSponge:
case Material.WhiteBed:
case Material.WhiteCandle:
case Material.WhiteCandleCake:
case Material.WhiteConcrete:
case Material.WhiteConcretePowder:
case Material.WhiteGlazedTerracotta:
case Material.WhiteShulkerBox:
case Material.WhiteStainedGlass:
case Material.WhiteStainedGlassPane:
case Material.WhiteTerracotta:
case Material.WhiteWool:
case Material.WitherSkeletonSkull:
case Material.WitherSkeletonWallSkull:
case Material.YellowBed:
case Material.YellowCandle:
case Material.YellowCandleCake:
case Material.YellowConcrete:
case Material.YellowConcretePowder:
case Material.YellowGlazedTerracotta:
case Material.YellowShulkerBox:
case Material.YellowStainedGlass:
case Material.YellowStainedGlassPane:
case Material.YellowTerracotta:
case Material.YellowWool:
case Material.ZombieHead:
case Material.ZombieWallHead:
case Material.AcaciaDoor:
return true;
default:
return false;
}
}
/// <summary>
/// Check if contact with the provided material can harm players
/// </summary>
/// <param name="m">Material to test</param>
/// <returns>True if the material is harmful</returns>
public static bool CanHarmPlayers(this Material m)
{
switch (m)
{
case Material.Fire:
case Material.Cactus:
case Material.Lava:
case Material.MagmaBlock:
case Material.Campfire:
case Material.PowderSnow:
return true;
default:
return false;
}
}
/// <summary>
/// Check if the provided material is a liquid a player can swim into
/// </summary>
/// <param name="m">Material to test</param>
/// <returns>True if the material is a liquid</returns>
public static bool IsLiquid(this Material m)
{
switch (m)
{
case Material.Water:
case Material.Lava:
return true;
default:
return false;
}
}
}
}