Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Finds a chunk that contains the specified block coordinates.
 /// </summary>
 public Chunk FindChunk(Coordinates3D coordinates)
 {
     Chunk chunk;
     FindBlockPosition(coordinates, out chunk);
     return chunk;
 }
Ejemplo n.º 4
0
 protected internal virtual void OnBlockChange(Coordinates3D coordinates)
 {
     if (BlockChange != null) BlockChange(this, new BlockChangeEventArgs(coordinates));
 }
Ejemplo n.º 5
0
 public static bool IsValidPosition(Coordinates3D position)
 {
     return position.Y >= 0 && position.Y <= 255;
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public void SetBlockLight(Coordinates3D coordinates, byte value)
 {
     Chunk chunk;
     coordinates = FindBlockPosition(coordinates, out chunk);
     chunk.SetBlockLight(coordinates, value);
 }
Ejemplo n.º 8
0
 public void SetMetadata(Coordinates3D coordinates, byte value)
 {
     Chunk chunk;
     var adjustedCoordinates = FindBlockPosition(coordinates, out chunk);
     chunk.SetMetadata(adjustedCoordinates, value);
     OnBlockChange(coordinates);
 }
Ejemplo n.º 9
0
 internal static void DefaultItemUsedOnBlockHandler(ItemDescriptor item, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition)
 {
 }
Ejemplo n.º 10
0
 public byte GetBlockLight(Coordinates3D coordinates)
 {
     Chunk chunk;
     coordinates = FindBlockPosition(coordinates, out chunk);
     return chunk.GetBlockLight(coordinates);
 }
Ejemplo n.º 11
0
 public byte GetMetadata(Coordinates3D coordinates)
 {
     Chunk chunk;
     coordinates = FindBlockPosition(coordinates, out chunk);
     return chunk.GetMetadata(coordinates);
 }
Ejemplo n.º 12
0
 public short GetBlockId(Coordinates3D coordinates)
 {
     Chunk chunk;
     coordinates = FindBlockPosition(coordinates, out chunk);
     return chunk.GetBlockId(coordinates);
 }
Ejemplo n.º 13
0
 public BlockChangeEventArgs(Coordinates3D coordinates)
 {
     Coordinates = coordinates;
 }
Ejemplo n.º 14
0
 public static void OnItemUsedOnBlock(ItemDescriptor item, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition)
 {
     GetLogicDescriptor(item).ItemUsedOnBlock(item, world, clickedBlock, clickedSide, cursorPosition);
 }
Ejemplo n.º 15
0
 public void SetBlockId(Coordinates3D coordinates, short value)
 {
     Chunk chunk;
     var adjustedCoordinates = FindBlockPosition(coordinates, out chunk);
     chunk.SetBlockId(adjustedCoordinates, value);
     OnBlockChange(coordinates);
 }
Ejemplo n.º 16
0
 public static BlockDescriptor GetBlock(this World world, Coordinates3D coordinates)
 {
     return new BlockDescriptor(
         world.GetBlockId(coordinates), world.GetMetadata(coordinates),
         world.GetBlockLight(coordinates), world.GetSkyLight(coordinates));
 }
Ejemplo n.º 17
0
 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);
 }