public void SetTileEntity(int x, int y, int z, TileEntity te) { BlockInfoEx info = BlockInfo.BlockTable[_blocks[x, y, z]] as BlockInfoEx; if (info == null) { throw new InvalidOperationException("The given block is of a type that does not support TileEntities."); } if (te.GetType() != TileEntityFactory.Lookup(info.TileEntityName)) { throw new ArgumentException("The TileEntity type is not valid for this block.", "te"); } BlockKey key = (TranslateCoordinates != null) ? TranslateCoordinates(x, y, z) : new BlockKey(x, y, z); TagNodeCompound oldte; if (_tileEntityTable.TryGetValue(key, out oldte)) { _tileEntities.Remove(oldte); } te.X = key.x; te.Y = key.y; te.Z = key.z; TagNodeCompound tree = te.BuildTree() as TagNodeCompound; _tileEntities.Add(tree); _tileEntityTable[key] = tree; }
public void CreateTileEntity(int x, int y, int z) { BlockInfoEx info = BlockInfo.BlockTable[_blocks[x, y, z]] as BlockInfoEx; if (info == null) { throw new InvalidOperationException("The given block is of a type that does not support TileEntities."); } TileEntity te = TileEntityFactory.Create(info.TileEntityName); if (te == null) { throw new UnknownTileEntityException("The TileEntity type '" + info.TileEntityName + "' has not been registered with the TileEntityFactory."); } BlockKey key = (TranslateCoordinates != null) ? TranslateCoordinates(x, y, z) : new BlockKey(x, y, z); TagNodeCompound oldte; if (_tileEntityTable.TryGetValue(key, out oldte)) { _tileEntities.Remove(oldte); } te.X = key.x; te.Y = key.y; te.Z = key.z; TagNodeCompound tree = te.BuildTree() as TagNodeCompound; _tileEntities.Add(tree); _tileEntityTable[key] = tree; }
static McBlocks() { Air = new BlockInfo(0, "Air").SetOpacity(0).SetState(BlockState.Non_Solid); Stone = new BlockInfo(1, "Stone"); Grass = new BlockInfo(2, "Grass").SetTick(10); Dirt = new BlockInfo(3, "Dirt"); Cobblestone = new BlockInfo(4, "Cobblestone"); WoodPlank = new BlockInfo(5, "Wooden Plank"); Sapling = new BlockInfo(6, "Sapling").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Bedrock = new BlockInfo(7, "Bedrock"); Water = new BlockInfo(8, "Water").SetOpacity(3).SetState(BlockState.Fluid).SetTick(5); StationaryWater = new BlockInfo(9, "Stationary Water").SetOpacity(3).SetState(BlockState.Fluid); Lava = new BlockInfo(10, "Lava").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE).SetState(BlockState.Fluid).SetTick(30); StationaryLava = new BlockInfo(11, "Stationary Lava").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE).SetState(BlockState.Fluid).SetTick(10); Sand = new BlockInfo(12, "Sand").SetTick(3); Gravel = new BlockInfo(13, "Gravel").SetTick(3); GoldOre = new BlockInfo(14, "Gold Ore"); IronOre = new BlockInfo(15, "Iron Ore"); CoalOre = new BlockInfo(16, "Coal Ore"); Wood = new BlockInfo(17, "Wood"); Leaves = new BlockInfo(18, "Leaves").SetOpacity(1).SetTick(10); Sponge = new BlockInfo(19, "Sponge"); Glass = new BlockInfo(20, "Glass").SetOpacity(0); LapisOre = new BlockInfo(21, "Lapis Lazuli Ore"); LapisBlock = new BlockInfo(22, "Lapis Lazuli Block"); Dispenser = (BlockInfoEx)new BlockInfoEx(23, "Dispenser").SetTick(4); Sandstone = new BlockInfo(24, "Sandstone"); NoteBlock = new BlockInfoEx(25, "Note Block"); Bed = new BlockInfo(26, "Bed").SetOpacity(0); PoweredRail = new BlockInfo(27, "Powered Rail").SetOpacity(0).SetState(BlockState.Non_Solid); DetectorRail = new BlockInfo(28, "Detector Rail").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(20); StickyPiston = new BlockInfo(29, "Sticky Piston").SetOpacity(0); Cobweb = new BlockInfo(30, "Cobweb").SetOpacity(0).SetState(BlockState.Non_Solid); TallGrass = new BlockInfo(31, "Tall Grass").SetOpacity(0).SetState(BlockState.Non_Solid); DeadShrub = new BlockInfo(32, "Dead Shrub").SetOpacity(0).SetState(BlockState.Non_Solid); Piston = new BlockInfo(33, "Piston").SetOpacity(0); PistonHead = new BlockInfo(34, "Piston Head").SetOpacity(0); Wool = new BlockInfo(35, "Wool"); PistonMoving = (BlockInfoEx)new BlockInfoEx(36, "Piston Moving").SetOpacity(0); YellowFlower = new BlockInfo(37, "Yellow Flower").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); RedRose = new BlockInfo(38, "Red Rose").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); BrownMushroom = new BlockInfo(39, "Brown Mushroom").SetOpacity(0).SetLuminance(1).SetState(BlockState.Non_Solid).SetTick(10); RedMushroom = new BlockInfo(40, "Red Mushroom").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); GoldBlock = new BlockInfo(41, "Gold Block"); IronBlock = new BlockInfo(42, "Iron Block"); DoubleStoneSlab = new BlockInfo(43, "Double Slab"); StoneSlab = new BlockInfo(44, "Slab").SetOpacity(0); BrickBlock = new BlockInfo(45, "Brick Block"); TNT = new BlockInfo(46, "TNT"); Bookshelf = new BlockInfo(47, "Bookshelf"); MossStone = new BlockInfo(48, "Moss Stone"); Obsidian = new BlockInfo(49, "Obsidian"); Torch = new BlockInfo(50, "Torch").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE - 1).SetState(BlockState.Non_Solid).SetTick(10); Fire = new BlockInfo(51, "Fire").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE).SetState(BlockState.Non_Solid).SetTick(40); MonsterSpawner = (BlockInfoEx)new BlockInfoEx(52, "Monster Spawner").SetOpacity(0); WoodStairs = new BlockInfo(53, "Wooden Stairs").SetOpacity(0); Chest = (BlockInfoEx)new BlockInfoEx(54, "Chest").SetOpacity(0); RedstoneWire = new BlockInfo(55, "Redstone Wire").SetOpacity(0).SetState(BlockState.Non_Solid); DiamondOre = new BlockInfo(56, "Diamond Ore"); DiamondBlock = new BlockInfo(57, "Diamond Block"); CraftTable = new BlockInfo(58, "Crafting Table"); Crops = new BlockInfo(59, "Crops").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Farmland = new BlockInfo(60, "Farmland").SetOpacity(0).SetTick(10); Furnace = new BlockInfoEx(61, "Furnace"); BurningFurnace = (BlockInfoEx)new BlockInfoEx(62, "Burning Furnace").SetLuminance(BlockInfo.MAX_LUMINANCE - 1); SignPost = (BlockInfoEx)new BlockInfoEx(63, "Sign Post").SetOpacity(0).SetState(BlockState.Non_Solid); WoodDoor = new BlockInfo(64, "Wooden Door").SetOpacity(0); Ladder = new BlockInfo(65, "Ladder").SetOpacity(0); Rails = new BlockInfo(66, "Rails").SetOpacity(0).SetState(BlockState.Non_Solid); CobbleStairs = new BlockInfo(67, "Cobblestone Stairs").SetOpacity(0); WallSign = (BlockInfoEx)new BlockInfoEx(68, "Wall Sign").SetOpacity(0).SetState(BlockState.Non_Solid); Lever = new BlockInfo(69, "Lever").SetOpacity(0).SetState(BlockState.Non_Solid); StonePlate = new BlockInfo(70, "Stone Pressure Plate").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(20); IronDoor = new BlockInfo(71, "Iron Door").SetOpacity(0); WoodPlate = new BlockInfo(72, "Wooden Pressure Plate").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(20); RedstoneOre = new BlockInfo(73, "Redstone Ore").SetTick(30); GlowRedstoneOre = new BlockInfo(74, "Glowing Redstone Ore").SetLuminance(9).SetTick(30); RedstoneTorch = new BlockInfo(75, "Redstone Torch (Off)").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(2); RedstoneTorchOn = new BlockInfo(76, "Redstone Torch (On)").SetOpacity(0).SetLuminance(7).SetState(BlockState.Non_Solid).SetTick(2); StoneButton = new BlockInfo(77, "Stone Button").SetOpacity(0).SetState(BlockState.Non_Solid); Snow = new BlockInfo(78, "Snow").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Ice = new BlockInfo(79, "Ice").SetOpacity(3).SetTick(10); SnowBlock = new BlockInfo(80, "Snow Block").SetTick(10); Cactus = new BlockInfo(81, "Cactus").SetOpacity(0).SetTick(10); ClayBlock = new BlockInfo(82, "Clay Block"); SugarCane = new BlockInfo(83, "Sugar Cane").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Jukebox = new BlockInfo(84, "Jukebox"); Fence = new BlockInfo(85, "Fence").SetOpacity(0); Pumpkin = new BlockInfo(86, "Pumpkin"); Netherrack = new BlockInfo(87, "Netherrack"); SoulSand = new BlockInfo(88, "Soul Sand"); Glowstone = new BlockInfo(89, "Glowstone Block").SetLuminance(BlockInfo.MAX_LUMINANCE); Portal = new BlockInfo(90, "Portal").SetOpacity(0).SetLuminance(11).SetState(BlockState.Non_Solid); JackOLantern = new BlockInfo(91, "Jack-O-Lantern").SetLuminance(BlockInfo.MAX_LUMINANCE); CakeBlock = new BlockInfo(92, "Cake Block").SetOpacity(0); RedstoneRepeater = new BlockInfo(93, "Redstone Repeater (Off)").SetOpacity(0).SetTick(10); RedstoneRepeaterOn = new BlockInfo(94, "Redstone Repeater (On)").SetOpacity(0).SetLuminance(7).SetTick(10); LockedChest = (BlockInfoEx)new BlockInfoEx(95, "Locked Chest").SetLuminance(BlockInfo.MAX_LUMINANCE).SetTick(10); Trapdoor = new BlockInfo(96, "Trapdoor").SetOpacity(0); SilverfishStone = new BlockInfo(97, "Stone with Silverfish"); StoneBrick = new BlockInfo(98, "Stone Brick"); HugeRedMushroom = new BlockInfo(99, "Huge Red Mushroom"); HugeBrownMushroom = new BlockInfo(100, "Huge Brown Mushroom"); IronBars = new BlockInfo(101, "Iron Bars").SetOpacity(0); GlassPane = new BlockInfo(102, "Glass Pane").SetOpacity(0); Melon = new BlockInfo(103, "Melon"); PumpkinStem = new BlockInfo(104, "Pumpkin Stem").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); MelonStem = new BlockInfo(105, "Melon Stem").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Vines = new BlockInfo(106, "Vines").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); FenceGate = new BlockInfo(107, "Fence Gate").SetOpacity(0); BrickStairs = new BlockInfo(108, "Brick Stairs").SetOpacity(0); StoneBrickStairs = new BlockInfo(109, "Stone Brick Stairs").SetOpacity(0); Mycelium = new BlockInfo(110, "Mycelium").SetTick(10); LillyPad = new BlockInfo(111, "Lilly Pad").SetOpacity(0).SetState(BlockState.Non_Solid); NetherBrick = new BlockInfo(112, "Nether Brick"); NetherBrickFence = new BlockInfo(113, "Nether Brick Fence").SetOpacity(0); NetherBrickStairs = new BlockInfo(114, "Nether Brick Stairs").SetOpacity(0); NetherWart = new BlockInfo(115, "Nether Wart").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); EnchantmentTable = (BlockInfoEx)new BlockInfoEx(116, "Enchantment Table").SetOpacity(0); BrewingStand = (BlockInfoEx)new BlockInfoEx(117, "Brewing Stand").SetOpacity(0); Cauldron = new BlockInfo(118, "Cauldron").SetOpacity(0); EndPortal = (BlockInfoEx)new BlockInfoEx(119, "End Portal").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE).SetState(BlockState.Non_Solid); EndPortalFrame = new BlockInfo(120, "End Portal Frame").SetLuminance(BlockInfo.MAX_LUMINANCE); EndStone = new BlockInfo(121, "End Stone"); DragonEgg = new BlockInfo(122, "Dragon Egg").SetOpacity(0).SetLuminance(1).SetTick(3); RedstoneLampOff = new BlockInfo(123, "Redstone Lamp (Off)").SetTick(2); RedstoneLampOn = new BlockInfo(124, "Redstone Lamp (On)").SetLuminance(15).SetTick(2); DoubleWoodSlab = new BlockInfo(125, "Double Wood Slab"); WoodSlab = new BlockInfo(126, "Wood Slab"); CocoaPlant = new BlockInfo(127, "Cocoa Plant").SetLuminance(2).SetOpacity(0); SandstoneStairs = new BlockInfo(128, "Sandstone Stairs").SetOpacity(0); EmeraldOre = new BlockInfo(129, "Emerald Ore"); EnderChest = (BlockInfoEx)new BlockInfoEx(130, "Ender Chest").SetLuminance(7).SetOpacity(0); TripwireHook = new BlockInfo(131, "Tripwire Hook").SetOpacity(0).SetState(BlockState.Non_Solid); Tripwire = new BlockInfo(132, "Tripwire").SetOpacity(0).SetState(BlockState.Non_Solid); EmeraldBlock = new BlockInfo(133, "Emerald Block"); SpruceWoodStairs = new BlockInfo(134, "Sprice Wood Stairs").SetOpacity(0); BirchWoodStairs = new BlockInfo(135, "Birch Wood Stairs").SetOpacity(0); JungleWoodStairs = new BlockInfo(136, "Jungle Wood Stairs").SetOpacity(0); CommandBlock = (BlockInfoEx)new BlockInfoEx(137, "Command Block"); BeaconBlock = (BlockInfoEx)new BlockInfoEx(138, "Beacon Block").SetOpacity(0).SetLuminance(BlockInfo.MAX_LUMINANCE); CobblestoneWall = new BlockInfo(139, "Cobblestone Wall").SetOpacity(0); FlowerPot = new BlockInfo(140, "Flower Pot").SetOpacity(0); Carrots = new BlockInfo(141, "Carrots").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Potatoes = new BlockInfo(142, "Potatoes").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); WoodButton = new BlockInfo(143, "Wooden Button").SetOpacity(0).SetState(BlockState.Non_Solid); Heads = new BlockInfo(144, "Heads").SetOpacity(0); Anvil = new BlockInfo(145, "Anvil").SetOpacity(0); TrappedChest = (BlockInfoEx)new BlockInfoEx(146, "Trapped Chest").SetOpacity(0).SetTick(10); WeightedPressurePlateLight = new BlockInfo(147, "Weighted Pressure Plate (Light)").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(20); WeightedPressurePlateHeavy = new BlockInfo(148, "Weighted Pressure Plate (Heavy)").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(20); RedstoneComparatorInactive = new BlockInfo(149, "Redstone Comparator (Inactive)").SetOpacity(0).SetTick(10); RedstoneComparatorActive = new BlockInfo(150, "Redstone Comparator (Active)").SetOpacity(0).SetLuminance(9).SetTick(10); DaylightSensor = new BlockInfo(151, "Daylight Sensor").SetOpacity(0).SetTick(10); RedstoneBlock = new BlockInfo(152, "Block of Redstone").SetTick(10); NetherQuartzOre = new BlockInfo(153, "Neither Quartz Ore"); Hopper = (BlockInfoEx)new BlockInfoEx(154, "Hopper").SetOpacity(0).SetTick(10); QuartzBlock = new BlockInfo(155, "Block of Quartz"); QuartzStairs = new BlockInfo(156, "Quartz Stairs").SetOpacity(0); ActivatorRail = new BlockInfo(157, "Activator Rail").SetOpacity(0).SetState(BlockState.Non_Solid).SetTick(10); Dropper = (BlockInfoEx)new BlockInfoEx(158, "Dropper").SetTick(10); StainedClay = new BlockInfo(159, "Stained Clay"); HayBlock = new BlockInfo(170, "Hay Block"); Carpet = new BlockInfo(171, "Carpet").SetOpacity(0); HardenedClay = new BlockInfo(172, "Hardened Clay"); CoalBlock = new BlockInfo(173, "Block of Coal"); // Override default light transmission rules Lava.SetLightTransmission(false); StationaryLava.SetLightTransmission(false); StoneSlab.SetLightTransmission(false); WoodStairs.SetLightTransmission(false); Farmland.SetLightTransmission(false); CobbleStairs.SetLightTransmission(false); BrickStairs.SetLightTransmission(false); StoneBrickStairs.SetLightTransmission(false); NetherBrickStairs.SetLightTransmission(false); WoodSlab.SetLightTransmission(false); SandstoneStairs.SetLightTransmission(false); SpruceWoodStairs.SetLightTransmission(false); BirchWoodStairs.SetLightTransmission(false); JungleWoodStairs.SetLightTransmission(false); QuartzStairs.SetLightTransmission(false); Carpet.SetLightTransmission(false); // Override default fluid blocking rules SignPost.SetBlocksFluid(true); WallSign.SetBlocksFluid(true); Cactus.SetBlocksFluid(false); // Set Tile Entity Data Dispenser.SetTileEntity("Trap"); NoteBlock.SetTileEntity("Music"); PistonMoving.SetTileEntity("Piston"); MonsterSpawner.SetTileEntity("MobSpawner"); Chest.SetTileEntity("Chest"); Furnace.SetTileEntity("Furnace"); BurningFurnace.SetTileEntity("Furnace"); SignPost.SetTileEntity("Sign"); WallSign.SetTileEntity("Sign"); EnchantmentTable.SetTileEntity("EnchantTable"); BrewingStand.SetTileEntity("Cauldron"); EndPortal.SetTileEntity("Airportal"); EnderChest.SetTileEntity("EnderChest"); CommandBlock.SetTileEntity("Control"); BeaconBlock.SetTileEntity("Beacon"); TrappedChest.SetTileEntity("Chest"); Hopper.SetTileEntity("Hopper"); Dropper.SetTileEntity("Dropper"); // Set Data Limits Wood.SetDataLimits(0, 2, 0); Leaves.SetDataLimits(0, 2, 0); Jukebox.SetDataLimits(0, 2, 0); Sapling.SetDataLimits(0, 15, 0); Cactus.SetDataLimits(0, 15, 0); SugarCane.SetDataLimits(0, 15, 0); Water.SetDataLimits(0, 7, 0x8); Lava.SetDataLimits(0, 7, 0x8); TallGrass.SetDataLimits(0, 2, 0); Crops.SetDataLimits(0, 7, 0); PoweredRail.SetDataLimits(0, 5, 0x8); DetectorRail.SetDataLimits(0, 5, 0x8); StickyPiston.SetDataLimits(1, 5, 0x8); Piston.SetDataLimits(1, 5, 0x8); PistonHead.SetDataLimits(1, 5, 0x8); Wool.SetDataLimits(0, 15, 0); Torch.SetDataLimits(1, 5, 0); RedstoneTorch.SetDataLimits(0, 5, 0); RedstoneTorchOn.SetDataLimits(0, 5, 0); Rails.SetDataLimits(0, 9, 0); Ladder.SetDataLimits(2, 5, 0); WoodStairs.SetDataLimits(0, 3, 0x4); CobbleStairs.SetDataLimits(0, 3, 0x4); Lever.SetDataLimits(0, 6, 0x8); WoodDoor.SetDataLimits(0, 3, 0xC); IronDoor.SetDataLimits(0, 3, 0xC); StoneButton.SetDataLimits(1, 4, 0x8); Snow.SetDataLimits(0, 7, 0); SignPost.SetDataLimits(0, 15, 0); WallSign.SetDataLimits(2, 5, 0); Furnace.SetDataLimits(2, 5, 0); BurningFurnace.SetDataLimits(2, 5, 0); Dispenser.SetDataLimits(2, 5, 0); Pumpkin.SetDataLimits(0, 3, 0); JackOLantern.SetDataLimits(0, 3, 0); StonePlate.SetDataLimits(0, 0, 0x1); WoodPlate.SetDataLimits(0, 0, 0x1); StoneSlab.SetDataLimits(0, 5, 0); DoubleStoneSlab.SetDataLimits(0, 5, 0x8); Cactus.SetDataLimits(0, 5, 0); Bed.SetDataLimits(0, 3, 0x8); RedstoneRepeater.SetDataLimits(0, 0, 0xF); RedstoneRepeaterOn.SetDataLimits(0, 0, 0xF); Trapdoor.SetDataLimits(0, 3, 0x4); StoneBrick.SetDataLimits(0, 2, 0); HugeRedMushroom.SetDataLimits(0, 10, 0); HugeBrownMushroom.SetDataLimits(0, 10, 0); Vines.SetDataLimits(0, 0, 0xF); FenceGate.SetDataLimits(0, 3, 0x4); SilverfishStone.SetDataLimits(0, 2, 0); BrewingStand.SetDataLimits(0, 0, 0x7); Cauldron.SetDataLimits(0, 3, 0); EndPortalFrame.SetDataLimits(0, 0, 0x7); WoodSlab.SetDataLimits(0, 5, 0); DoubleWoodSlab.SetDataLimits(0, 5, 0x8); TripwireHook.SetDataLimits(0, 3, 0xC); Tripwire.SetDataLimits(0, 0, 0x5); Anvil.SetDataLimits(0, 0, 0xD); QuartzBlock.SetDataLimits(0, 4, 0); QuartzStairs.SetDataLimits(0, 3, 0x4); Carpet.SetDataLimits(0, 15, 0); Dropper.SetDataLimits(0, 5, 0); Hopper.SetDataLimits(0, 5, 0); }