public void SetBlock(int x, int y, Block B) { try { BlockTable[x, y] = B; } catch { Logger.Write("Invalid usage of SetBlock function in MultiBLockDefinition"); } }
public static void RegisterBlock(Block B) { B.LoadTextures(); B.CreateShape(); BlockRegist.Add(B.Id, B); //BlockRegistry.Add(new KeyValuePair<int, Block>(B.Id, B)); }
public void SetBackgroundBlock(Vector2 Vect, Block B) { Vector2 ChunkV = new Vector2((int)Math.Floor((double)Vect.X / ChunkSize), (int)Math.Floor((double)Vect.Y / ChunkSize)); if (this.Chunks.ContainsKey(ChunkV)) { int PosX = (int)Math.Floor(Vect.X) - (int)ChunkV.X * ChunkSize; int PosY = (int)Math.Floor(Vect.Y) - (int)ChunkV.Y * ChunkSize; if (PosX < 0) PosX = 15 - PosX; if (PosY < 0) PosY = 15 - PosY; Chunks[ChunkV].BackgroundBlocks[PosX, PosY] = B; Chunks[ChunkV].BackgroundBlockState[PosX, PosY] = 0; UpdateBackgroundBlock((int)Math.Floor(Vect.X), (int)Math.Floor(Vect.Y)); UpdateBackgroundBlock((int)Math.Floor(Vect.X) - 1, (int)Math.Floor(Vect.Y)); UpdateBackgroundBlock((int)Math.Floor(Vect.X) + 1, (int)Math.Floor(Vect.Y)); UpdateBackgroundBlock((int)Math.Floor(Vect.X), (int)Math.Floor(Vect.Y) - 1); UpdateBackgroundBlock((int)Math.Floor(Vect.X), (int)Math.Floor(Vect.Y) + 1); } else { //NOPE } }
public void SetBlock(Vector2 Vect, Block B) { Vector2 ChunkV = WorldHelper.GetChunkPos(Vect); if (this.Chunks.ContainsKey(ChunkV)) { int PosX = (int)Math.Floor(Vect.X) - (int)ChunkV.X * ChunkSize; int PosY = (int)Math.Floor(Vect.Y) - (int)ChunkV.Y * ChunkSize; if (PosX < 0) PosX = 15 - PosX; if (PosY < 0) PosY = 15 - PosY; Chunks[ChunkV].Blocks[PosX,PosY] = B; Chunks[ChunkV].BlockState[PosX, PosY] = 0; Chunks[ChunkV].RemoveShadow(PosX, PosY); if (Chunks[ChunkV].TileEntities[PosX, PosY] != null) { Chunks[ChunkV].TileEntities[PosX, PosY].Kill(); } if (B.IsSolid) { Chunks[ChunkV].CreateShadow(PosX, PosY); } UpdateBlock((int)Math.Floor(Vect.X), (int) Math.Floor(Vect.Y)); UpdateBlock((int)Math.Floor(Vect.X) - 1, (int) Math.Floor(Vect.Y)); UpdateBlock((int)Math.Floor(Vect.X) + 1, (int)Math.Floor(Vect.Y)); UpdateBlock((int)Math.Floor(Vect.X), (int)Math.Floor(Vect.Y) - 1); UpdateBlock((int)Math.Floor(Vect.X), (int)Math.Floor(Vect.Y) + 1); Chunks[ChunkV].CalcLights(); } else { //NOPE } }
public bool PlaceBlock(Block B, Vector2 Vect) { if (!World.RaycastAny(Position + new Vector2(CollisionX / 2, CollisionY / 2), Vect / 32)) { if (World.GetBlock(Vect) == Block.GetBlock(0)) { if (B is IEntityBlock) { TileEntity TE = (B as IEntityBlock).GetNewTE(this.World, Vect * 32 - Vector2.One * 16); TE.Initalize(); TE.Position = Vect; if (TE is TileEntities.IMultiBlockTE) { if (!(TE as TileEntities.IMultiBlockTE).CanBePlaced(Vect)) return false; } World.SetBlock(Vect, TE); return true; } else { World.SetBlock(Vect, B); return true; } } } return false; }