Skip to content

Commit

Permalink
Merge pull request #4 from PCL-Community/Silverteal-commits
Browse files Browse the repository at this point in the history
Silverteal commits. add a configuration option
  • Loading branch information
Silverteal authored Jun 9, 2024
2 parents 6ec8308 + 36224a6 commit 5c9c1dc
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 11 deletions.
16 changes: 16 additions & 0 deletions Plain Craft Launcher 2/Modules/Base/ModBase.vb
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,22 @@ Re:
Return tmp.ToString()
End Function
''' <summary>
''' 将没有或有符号的UUID转换为有符号UUID,没有进行格式检查
''' </summary>
Public Function GetSignedUuid(Str As String) As String
If Not Str.Contains("-") Then
Return Str.Substring(0, 8) & "-" & Str.Substring(8, 4) & "-" & Str.Substring(12, 4) & "-" & Str.Substring(16, 4) & "-" & Str.Substring(20)
Else
Return Str
End If
End Function
''' <summary>
''' 将没有或有符号的UUID转换为无符号UUID,没有进行格式检查
''' </summary>
Public Function GetUnignedUuid(Str As String) As String
Return Str.Replace("-", "")
End Function
''' <summary>
''' 检查字符串中的字符是否均为 ASCII 字符。
''' </summary>
<Extension> Public Function IsASCII(Input As String) As Boolean
Expand Down
24 changes: 20 additions & 4 deletions Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
Original file line number Diff line number Diff line change
Expand Up @@ -1075,8 +1075,23 @@ SystemBrowser:
If Uuid.EndsWithF("FFFFF") Then Uuid = Mid(Uuid, 1, 32 - 5) & "00000"
Uuid = Mid(Uuid, 1, 32 - 5) & (Long.Parse(Right(Uuid, 5), Globalization.NumberStyles.AllowHexSpecifier) + 1).ToString("X")
Loop
Case 5 '每次都询问
Uuid = Uuid.ToLower()
Dim UuidAsked As String = MyMsgBoxInput(
Title:="设置自定义 UUID",
Text:="",
DefaultInput:=GetSignedUuid(Uuid),
ValidateRules:=New ObjectModel.Collection(Of Validate) From {New ValidateRegex("([A-Fa-f0-9]{32}|[A-Fa-f0-9]{8}(-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12})", "请输入一个UUID")},
HintText:=GetSignedUuid(Uuid),
Button1:="使用此UUID",
Button2:="使用默认UUID"
)
If UuidAsked IsNot Nothing Then
Uuid = GetUnignedUuid(Uuid)
End If

End Select
Log("[Uuid-Fix]登录使用的 Uuid:" & Uuid)
Log("[Uuid-Fix] 登录使用的离线 UUID:" & Uuid, LogLevel.Hint)
Return Uuid
End Function
'根据用户名返回对应 UUID,需要多线程
Expand Down Expand Up @@ -1107,9 +1122,10 @@ SystemBrowser:
Dim NameHash As String = GetStringMD5("OfflinePlayer:" & Name)
Dim PendingVariant As Integer = Conversion.Val("&H" & NameHash(16))
PendingVariant = (PendingVariant Mod 4) + 8
Dim FinalVarient As String = PendingVariant.ToString("X")
Dim FinalHash As String = NameHash.Substring(0, 12) & "3" & NameHash.Substring(13, 3) & FinalVarient & NameHash.Substring(17, 15)
Return FinalHash.ToUpper()
Dim FinalVarient As String = PendingVariant.ToString("x")
Dim FinalUuid As String = (NameHash.Substring(0, 12) & "3" & NameHash.Substring(13, 3) & FinalVarient & NameHash.Substring(17, 15)).ToLower()
Log("[Uuid-Fix] 根据用户名生成的离线 UUID:" & FinalUuid, LogLevel.Debug)
Return FinalUuid
'Dim FullUuid As String = StrFill(Name.Length.ToString("X"), "0", 16) & StrFill(GetHash(Name).ToString("X"), "0", 16)
'Return FullUuid.Substring(0, 12) & "3" & FullUuid.Substring(13, 3) & "9" & FullUuid.Substring(17, 15)
End Function
Expand Down
2 changes: 1 addition & 1 deletion Plain Craft Launcher 2/Modules/ModSecret.vb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Friend Module ModSecret
''' 获取设备标识码。
''' </summary>
Friend Function SecretGetUniqueAddress() As String
Return "PCL2-DONT-SHAR-THIS"
Return "UUID-FIXD-ONTS-HARE"
End Function

Friend Sub SecretLaunchJvmArgs(ByRef DataList As List(Of String))
Expand Down
2 changes: 1 addition & 1 deletion Plain Craft Launcher 2/Pages/PageSetup/ModSetup.vb
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@
RunInUi(Sub()
If Not IsNothing(FrmSetupLaunch) Then
Select Case Value
Case 0, 1, 2 '默认
Case 0, 1, 2, 5 '默认
FrmSetupLaunch.PanSkinID.Visibility = Visibility.Collapsed
FrmSetupLaunch.PanSkinChange.Visibility = Visibility.Collapsed
Case 3 '正版
Expand Down
10 changes: 6 additions & 4 deletions Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,20 @@

<local:MyCard x:Name="CardSkin" Margin="0,15" Title="离线 UUID 和皮肤">
<StackPanel Margin="25,40,25,15">
<local:MyHint Text="由于PCL-Community专门版本的修改,此部分选项可能工作不正常或完全不工作" IsWarn="False" Margin="0,0,0,10" />
<local:MyHint Text="由于PCL-Community的修改,这些选项可能导致您以前的配置工作不完全或完全不工作" IsWarn="True" Margin="0,0,0,10" />
<Grid Margin="-1,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<local:MyRadioBox Text="默认" x:Name="RadioSkinType0" Tag="LaunchSkinType/0" Grid.Column="0" ToolTip="通过登录时的用户名生成 UUID 。和服务器的兼容性好" />
<local:MyRadioBox Text="Steve(当前版本不支持)" x:Name="RadioSkinType1" Tag="LaunchSkinType/1" Grid.Column="3" IsEnabled="False" Visibility="Hidden" />
<local:MyRadioBox Text="Alex(当前版本不支持)" x:Name="RadioSkinType2" Tag="LaunchSkinType/2" Grid.Column="3" IsEnabled="False" Visibility="Hidden" />
<local:MyRadioBox Text="Steve(当前版本不支持)" x:Name="RadioSkinType1" Tag="LaunchSkinType/1" Grid.Column="3" IsEnabled="False" Visibility="Collapsed" />
<local:MyRadioBox Text="Alex(当前版本不支持)" x:Name="RadioSkinType2" Tag="LaunchSkinType/2" Grid.Column="3" IsEnabled="False" Visibility="Collapsed" />
<local:MyRadioBox Text="正版玩家" x:Name="RadioSkinType3" Tag="LaunchSkinType/3" Grid.Column="1" ToolTip="使用指定正版玩家的 UUID 登录" />
<local:MyRadioBox Text="默认 UUID 自定义皮肤" x:Name="RadioSkinType4" Tag="LaunchSkinType/4" Grid.Column="2" ToolTip="使用默认 UUID 的同时以资源包的形式加载自定义皮肤。&#xa;使用此方式更换的皮肤在多人游戏中仅自己可见,且会替换游戏中所有的该角色。" />
<local:MyRadioBox Text="启动时询问" x:Name="RadioSkinType5" Tag="LaunchSkinType/5" Grid.Column="2" ToolTip="每次启动时询问需要使用到 UUID" />
<local:MyRadioBox Text="自定义皮肤" x:Name="RadioSkinType4" Tag="LaunchSkinType/4" Grid.Column="3" ToolTip="使用默认 UUID 的同时以资源包的形式加载自定义皮肤。&#xa;使用此方式更换的皮肤在多人游戏中仅自己可见,且会替换游戏中所有的该角色。" />
</Grid>
<Grid x:Name="PanSkinID" Margin="0,14,0,2" Visibility="Collapsed">
<Grid.ColumnDefinitions>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
End Sub

'将控件改变路由到设置改变
Private Shared Sub RadioBoxChange(sender As MyRadioBox, e As Object) Handles RadioSkinType0.Check, RadioSkinType1.Check, RadioSkinType2.Check, RadioSkinType3.Check, RadioSkinType4.Check, RadioRamType0.Check, RadioRamType1.Check
Private Shared Sub RadioBoxChange(sender As MyRadioBox, e As Object) Handles RadioSkinType0.Check, RadioSkinType1.Check, RadioSkinType2.Check, RadioSkinType3.Check, RadioSkinType4.Check, RadioSkinType5.Check, RadioRamType0.Check, RadioRamType1.Check
If AniControlEnabled = 0 Then Setup.Set(sender.Tag.ToString.Split("/")(0), Val(sender.Tag.ToString.Split("/")(1)))
End Sub
Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextSkinID.ValidatedTextChanged, TextArgumentWindowHeight.ValidatedTextChanged, TextArgumentWindowWidth.ValidatedTextChanged, TextArgumentInfo.ValidatedTextChanged, TextAdvanceGame.ValidatedTextChanged, TextAdvanceJvm.ValidatedTextChanged, TextArgumentTitle.ValidatedTextChanged, TextAdvanceRun.ValidatedTextChanged
Expand Down

0 comments on commit 5c9c1dc

Please sign in to comment.