提交合并...
@ -97,6 +97,8 @@
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="Modules\CTZServer\CTZServer.cs" />
|
||||
<Compile Include="Modules\Minecraft\ServerInfo.cs" />
|
||||
<Compile Include="Tools\MinecraftTools.cs" />
|
||||
<Compile Include="Tools\SystemTools.cs" />
|
||||
<Compile Include="Tools\UsefulTools.cs" />
|
||||
<Compile Include="Tools\ZipTools.cs" />
|
||||
@ -197,6 +199,25 @@
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="bg\bg10.jpg" />
|
||||
<Resource Include="bg\bg11.jpg" />
|
||||
<Resource Include="bg\bg12.jpg" />
|
||||
<Resource Include="bg\bg13.jpg" />
|
||||
<Resource Include="bg\bg14.jpg" />
|
||||
<Resource Include="bg\bg15.jpg" />
|
||||
<Resource Include="bg\bg16.jpg" />
|
||||
<Resource Include="bg\bg17.jpg" />
|
||||
<Resource Include="bg\bg18.jpg" />
|
||||
<Resource Include="bg\bg19.jpg" />
|
||||
<Resource Include="bg\bg20.jpg" />
|
||||
<Resource Include="bg\bg21.jpg" />
|
||||
<Resource Include="bg\bg22.jpg" />
|
||||
<Resource Include="bg\bg6.jpg" />
|
||||
<Resource Include="bg\bg7.jpg" />
|
||||
<Resource Include="bg\bg8.jpg" />
|
||||
<Resource Include="bg\bg9.jpg" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
@ -42,10 +42,6 @@
|
||||
<Image HorizontalAlignment="Left" Height="50" Margin="15,5,0,0" VerticalAlignment="Top" Width="50" Source="ico.ico" RenderTransformOrigin="0.56,0.24"/>
|
||||
<Label Content="魔方" HorizontalAlignment="Left" Height="50" Margin="90,5,0,0" VerticalAlignment="Top" Width="74" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="STXingkai" Foreground="White" FontSize="35" />
|
||||
</Grid>
|
||||
|
||||
|
||||
|
||||
|
||||
<Grid Name="LoginWindow" Margin="20,60,20,20" Background="White">
|
||||
<Grid Height="270" VerticalAlignment="Top">
|
||||
<Grid Margin="20,20,0,0" HorizontalAlignment="Left" Width="400" >
|
||||
@ -55,9 +51,9 @@
|
||||
<Grid>
|
||||
<Grid Margin="10,10,10,0" Height="174" VerticalAlignment="Top">
|
||||
<Label Content="————— 游 戏 帐 号 —————" VerticalAlignment="Top" Margin="10,0" HorizontalContentAlignment="Center" FontSize="15"/>
|
||||
<TextBox x:Name="username" Template="{StaticResource CornerTextBox}" Height="34" TextWrapping="Wrap" Text="" VerticalAlignment="Top" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,30,30,0" />
|
||||
<TextBox x:Name="username" Template="{StaticResource CornerTextBox}" Height="34" TextWrapping="Wrap" Text="" VerticalAlignment="Top" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,30,30,0" KeyDown="username_KeyDown" />
|
||||
<Label Content="————— 游 戏 密 码 —————" VerticalAlignment="Top" Margin="10,69,10,0" HorizontalContentAlignment="Center" FontSize="15"/>
|
||||
<TextBox x:Name="password" Template="{StaticResource CornerTextBox}" TextWrapping="Wrap" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,104,30,0" Height="34" VerticalAlignment="Top" Tag="{}{"areas":[{"name":"\u7eaf\u51c0\u5927\u533a","servers":[{"name":"\u5149\u677f\u5c0f\u9547","address":"CityCraft.cn","port":25565,"info":"\u7eaf\u51c0\u670d\u52a1\u5668","version":"1.8-Forge","url":"CityCraft.cn"}]},{"name":"\u6a21\u7ec4\u5927\u533a","servers":[{"name":"\u5149\u677f\u5c0f\u9547","address":"CityCraft.cn","port":25573,"info":"MOD\u670d\u52a1\u5668: \u8c46\u8150 \u5bb6\u5177 ","version":"1.7.10-Forge","url":"CityCraft.cn"}]}]}" />
|
||||
<TextBox x:Name="password" Template="{StaticResource CornerTextBox}" TextWrapping="Wrap" HorizontalContentAlignment="Center" FontFamily="微软雅黑" FontSize="20" Margin="30,104,30,0" Height="34" VerticalAlignment="Top" Tag="{}{"areas":[{"name":"\u7eaf\u51c0\u5927\u533a","servers":[{"name":"\u5149\u677f\u5c0f\u9547","address":"CityCraft.cn","port":25565,"info":"\u7eaf\u51c0\u670d\u52a1\u5668","version":"1.8-Forge","url":"CityCraft.cn"}]},{"name":"\u6a21\u7ec4\u5927\u533a","servers":[{"name":"\u5149\u677f\u5c0f\u9547","address":"CityCraft.cn","port":25573,"info":"MOD\u670d\u52a1\u5668: \u8c46\u8150 \u5bb6\u5177 ","version":"1.7.10-Forge","url":"CityCraft.cn"}]}]}" KeyDown="password_KeyDown" />
|
||||
<Button x:Name="forget" Margin="217,106,33,0" Template="{StaticResource CornerButton}" Height="30" Content="?" VerticalAlignment="Top" />
|
||||
</Grid>
|
||||
<Grid Margin="10,0,10,10" Height="50" VerticalAlignment="Bottom">
|
||||
@ -105,10 +101,6 @@
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
|
||||
|
||||
|
||||
<Grid Margin="20,60,20,20" Background="White" x:Name="ServerWindow" Visibility="Hidden">
|
||||
<!--Visibility="Hidden"-->
|
||||
<Grid HorizontalAlignment="Left" Width="400" Margin="20,20,0,20">
|
||||
|
@ -1,4 +1,5 @@
|
||||
using CTZLauncher.Modules.CTZServer;
|
||||
using CTZLauncher.Tools;
|
||||
using KMCCC.Authentication;
|
||||
using KMCCC.Launcher;
|
||||
using KMCCC.Tools;
|
||||
@ -8,6 +9,7 @@ using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
@ -94,7 +96,7 @@ namespace CTZLauncher
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerWindow.Visibility = System.Windows.Visibility.Visible;
|
||||
ServerWindow.Visibility = Visibility.Visible;
|
||||
RotateTransform rtf = new RotateTransform();
|
||||
ServerWindow.RenderTransform = rtf;
|
||||
LoginWindow.RenderTransform = rtf;
|
||||
@ -237,6 +239,13 @@ namespace CTZLauncher
|
||||
serverinfo.Content = server.Info;
|
||||
selserver.Content = server.Name;
|
||||
needclient.Content = server.Version;
|
||||
online.Content = "获取中...";
|
||||
MinecraftServer ms = new MinecraftServer(server.Address, server.Port);
|
||||
var info = ms.DoAsync();
|
||||
if (info != null)
|
||||
online.Content = info.Players.Online + "/" + info.Players.Max;
|
||||
else
|
||||
online.Content = "获取失败!";
|
||||
}
|
||||
|
||||
private void StartGame_Click(object sender, RoutedEventArgs e)
|
||||
@ -262,5 +271,17 @@ namespace CTZLauncher
|
||||
Console.WriteLine(log);
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void username_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
password.Focus();
|
||||
}
|
||||
|
||||
private void password_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
Login_Click(sender, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
49
CTZLauncher/Modules/Minecraft/Serverinfo.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using LitJson;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CTZLauncher.Modules.Minecraft
|
||||
{
|
||||
public class ServerInfo
|
||||
{
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
[JsonPropertyName("players")]
|
||||
public Players Players { get; set; }
|
||||
[JsonPropertyName("version")]
|
||||
public Version Version { get; set; }
|
||||
[JsonPropertyName("modinfo")]
|
||||
public ModInfo ModInfo { get; set; }
|
||||
}
|
||||
|
||||
public class ModInfo
|
||||
{
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; }
|
||||
[JsonPropertyName("modList")]
|
||||
public List<Mod> ModList { get; set; }
|
||||
}
|
||||
|
||||
public class Mod
|
||||
{
|
||||
[JsonPropertyName("modid")]
|
||||
public string Modid { get; set; }
|
||||
[JsonPropertyName("version")]
|
||||
public string Version { get; set; }
|
||||
}
|
||||
|
||||
public class Version
|
||||
{
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
[JsonPropertyName("protocol")]
|
||||
public int Protocol { get; set; }
|
||||
}
|
||||
|
||||
public class Players
|
||||
{
|
||||
[JsonPropertyName("max")]
|
||||
public int Max { get; set; }
|
||||
[JsonPropertyName("online")]
|
||||
public int Online { get; set; }
|
||||
}
|
||||
}
|
98
CTZLauncher/Tools/MinecraftTools.cs
Normal file
@ -0,0 +1,98 @@
|
||||
using CTZLauncher.Modules.Minecraft;
|
||||
using LitJson;
|
||||
using System;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace CTZLauncher.Tools
|
||||
{
|
||||
public class MinecraftServer
|
||||
{
|
||||
string address;
|
||||
int port;
|
||||
bool finish;
|
||||
ServerInfo serverinfo;
|
||||
|
||||
/// <summary>
|
||||
/// 获取服务器详细信息
|
||||
/// </summary>
|
||||
/// <param name="address">服务器地址</param>
|
||||
/// <param name="port">服务器端口</param>
|
||||
public MinecraftServer(string address, int port)
|
||||
{
|
||||
this.address = address;
|
||||
this.port = port;
|
||||
}
|
||||
/// <summary>
|
||||
/// 模仿C#的Application.Doevent函数。可以适当添加try catch 模块
|
||||
/// </summary>
|
||||
public void DoEvent()
|
||||
{
|
||||
DispatcherFrame frame = new DispatcherFrame();
|
||||
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrame), frame);
|
||||
Dispatcher.PushFrame(frame);
|
||||
}
|
||||
public object ExitFrame(object f)
|
||||
{
|
||||
((DispatcherFrame)f).Continue = false;
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 异步获取服务器信息
|
||||
/// </summary>
|
||||
/// <returns>服务器信息</returns>
|
||||
public ServerInfo DoAsync()
|
||||
{
|
||||
new Thread(new ThreadStart(GetInfoAsync)).Start();
|
||||
while (finish == false) { DoEvent(); }
|
||||
return serverinfo;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取服务器信息
|
||||
/// </summary>
|
||||
/// <returns>服务器信息</returns>
|
||||
public ServerInfo Do()
|
||||
{
|
||||
return GetInfo();
|
||||
}
|
||||
public void GetInfoAsync()
|
||||
{
|
||||
finish = false;
|
||||
serverinfo = GetInfo();
|
||||
finish = true;
|
||||
}
|
||||
public ServerInfo GetInfo()
|
||||
{
|
||||
using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||
{
|
||||
try
|
||||
{
|
||||
client.Connect(address, port);
|
||||
if (client.Connected)
|
||||
{
|
||||
client.Send(new byte[] { 0x0f, 0x00, 0x04, 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x63, 0xdd, 0x01 });
|
||||
client.Send(new byte[] { 0x01, 0x00 });
|
||||
byte[] header = new byte[5];
|
||||
client.Receive(header, header.Length, SocketFlags.None);
|
||||
byte[] buffer = new byte[1024];
|
||||
int recover = client.Receive(buffer, buffer.Length, SocketFlags.None);
|
||||
byte[] data = new byte[recover];
|
||||
Array.Copy(buffer, data, recover);
|
||||
string info = Encoding.UTF8.GetString(data);
|
||||
return JsonMapper.ToObject<ServerInfo>(info);
|
||||
}
|
||||
Console.WriteLine("网络连接失败!");
|
||||
return null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
Console.WriteLine(e.StackTrace);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
CTZLauncher/bg/bg10.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
CTZLauncher/bg/bg11.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
CTZLauncher/bg/bg12.jpg
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
CTZLauncher/bg/bg13.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
CTZLauncher/bg/bg14.jpg
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
CTZLauncher/bg/bg15.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
CTZLauncher/bg/bg16.jpg
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
CTZLauncher/bg/bg17.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
CTZLauncher/bg/bg18.jpg
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
CTZLauncher/bg/bg19.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
CTZLauncher/bg/bg20.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
CTZLauncher/bg/bg21.jpg
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
CTZLauncher/bg/bg22.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
CTZLauncher/bg/bg6.jpg
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
CTZLauncher/bg/bg7.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
CTZLauncher/bg/bg8.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
CTZLauncher/bg/bg9.jpg
Normal file
After Width: | Height: | Size: 49 KiB |
@ -11,7 +11,7 @@ namespace MinecraftServerInfo
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
using (Socket client = new Socket(SocketType.Stream, ProtocolType.Tcp))
|
||||
using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||
try
|
||||
{
|
||||
client.Connect("four.mengcraft.com", 11133);
|
||||
@ -19,7 +19,7 @@ namespace MinecraftServerInfo
|
||||
if (client.Connected)
|
||||
{
|
||||
Console.WriteLine("发送数据");
|
||||
client.Send(new byte[] { 0x0F, 0x00, 0x2F, 0x09, 0x31, 0x32, 0x37, 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x31, 0x63, 0xDD, 0x01 });
|
||||
client.Send(new byte[] { 0x0F, 0x00, 0x04, 0x09, 0x31, 0x32, 0x37, 0x2E, 0x30, 0x2E, 0x30, 0x2E, 0x31, 0x63, 0xDD, 0x01 });
|
||||
client.Send(new byte[] { 0x01, 0x00 });
|
||||
Console.WriteLine("读取头数据");
|
||||
byte[] header = new byte[5];
|
||||
|