public static void SetBlock(this World world, Coordinates3D coordinates, BlockDescriptor value) { world.SetBlockId(coordinates, value.Id); world.SetMetadata(coordinates, value.Metadata); world.SetSkyLight(coordinates, value.SkyLight); world.SetBlockLight(coordinates, value.BlockLight); }
public static void Main(string[] args) { var endPoint = ParseEndPoint(args[0]); var ping = ServerPing.DoPing(endPoint); Console.WriteLine("{0}/{1} {2} ({3}): {4} [{5}ms latency]", ping.Players.OnlinePlayers, ping.Players.MaxPlayers, ping.Version.Name, ping.Version.ProtocolVersion, ping.Description, (int)ping.Latency.TotalMilliseconds); Console.WriteLine("Player list sample:"); if (ping.Players.Players != null) foreach (var player in ping.Players.Players) Console.WriteLine("{0} ({1})", player.Name, player.Id); if (!string.IsNullOrEmpty(ping.Icon)) Console.WriteLine("Server icon: {0}", ping.Icon); //var lastLogin = LastLogin.GetLastLogin(); //var session = Session.DoLogin(lastLogin.Username, lastLogin.Password); var session = new Session("TestBot"); // Connect to server var client = new MinecraftClient(session); client.Connect(endPoint); client.ChatMessage += (sender, e) => Console.WriteLine(e.RawMessage); string command; do { command = Console.ReadLine(); if (command == null) continue; // MonoDevelop debugger does this sometimes if (command.StartsWith("say ")) client.SendChat(command.Substring(4)); if (command == "detect") { var coordinates = new Coordinates3D((int)client.Position.X, (int)client.Position.Y - 1, (int)client.Position.Z); Console.WriteLine("Looking up " + coordinates); var id = client.World.GetBlockId(coordinates); Console.WriteLine("Block ID: " + id); } } while (command != "quit"); client.Disconnect("Quitting"); }
/// <summary> /// Finds a chunk that contains the specified block coordinates. /// </summary> public Chunk FindChunk(Coordinates3D coordinates) { Chunk chunk; FindBlockPosition(coordinates, out chunk); return chunk; }
protected internal virtual void OnBlockChange(Coordinates3D coordinates) { if (BlockChange != null) BlockChange(this, new BlockChangeEventArgs(coordinates)); }
public static bool IsValidPosition(Coordinates3D position) { return position.Y >= 0 && position.Y <= 255; }
public Coordinates3D FindBlockPosition(Coordinates3D coordinates, out Chunk chunk) { if (coordinates.Y < 0 || coordinates.Y >= Chunk.Height) throw new ArgumentOutOfRangeException("coordinates", "Coordinates are out of range"); var chunkX = (int)Math.Floor((double)coordinates.X / Chunk.Width); var chunkZ = (int)Math.Floor((double)coordinates.Z / Chunk.Depth); chunk = GetChunk(new Coordinates2D(chunkX, chunkZ)); return new Coordinates3D( (coordinates.X - chunkX * Chunk.Width) % Chunk.Width, coordinates.Y, (coordinates.Z - chunkZ * Chunk.Depth) % Chunk.Depth); }
public void SetBlockLight(Coordinates3D coordinates, byte value) { Chunk chunk; coordinates = FindBlockPosition(coordinates, out chunk); chunk.SetBlockLight(coordinates, value); }
public void SetMetadata(Coordinates3D coordinates, byte value) { Chunk chunk; var adjustedCoordinates = FindBlockPosition(coordinates, out chunk); chunk.SetMetadata(adjustedCoordinates, value); OnBlockChange(coordinates); }
internal static void DefaultItemUsedOnBlockHandler(ItemDescriptor item, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition) { }
public byte GetBlockLight(Coordinates3D coordinates) { Chunk chunk; coordinates = FindBlockPosition(coordinates, out chunk); return chunk.GetBlockLight(coordinates); }
public byte GetMetadata(Coordinates3D coordinates) { Chunk chunk; coordinates = FindBlockPosition(coordinates, out chunk); return chunk.GetMetadata(coordinates); }
public short GetBlockId(Coordinates3D coordinates) { Chunk chunk; coordinates = FindBlockPosition(coordinates, out chunk); return chunk.GetBlockId(coordinates); }
public BlockChangeEventArgs(Coordinates3D coordinates) { Coordinates = coordinates; }
public static void OnItemUsedOnBlock(ItemDescriptor item, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition) { GetLogicDescriptor(item).ItemUsedOnBlock(item, world, clickedBlock, clickedSide, cursorPosition); }
public void SetBlockId(Coordinates3D coordinates, short value) { Chunk chunk; var adjustedCoordinates = FindBlockPosition(coordinates, out chunk); chunk.SetBlockId(adjustedCoordinates, value); OnBlockChange(coordinates); }
public static BlockDescriptor GetBlock(this World world, Coordinates3D coordinates) { return new BlockDescriptor( world.GetBlockId(coordinates), world.GetMetadata(coordinates), world.GetBlockLight(coordinates), world.GetSkyLight(coordinates)); }
public static void OnItemUsedOnBlock(ItemDescriptor item, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition) { if (world.GetBlockId(clickedBlock + clickedSide) == 0) world.SetBlockId(clickedBlock + clickedSide, CakeBlock.BlockId); }