diff --git a/Plain Craft Launcher 2/Controls/MyHint.xaml.vb b/Plain Craft Launcher 2/Controls/MyHint.xaml.vb
index a04d73be..09ce3ad4 100644
--- a/Plain Craft Launcher 2/Controls/MyHint.xaml.vb
+++ b/Plain Craft Launcher 2/Controls/MyHint.xaml.vb
@@ -11,17 +11,17 @@
If _IsWarn = value Then Exit Property
_IsWarn = value
If _IsWarn Then
- BorderBrush = New MyColor("#99FF4444")
- Gradient1.Color = New MyColor("#88FFBBBB")
- Gradient2.Color = New MyColor("#88FF8888")
+ BorderBrush = New MyColor("#CCFF4444")
+ Gradient1.Color = New MyColor("#BBFFBBBB")
+ Gradient2.Color = New MyColor("#BBFF8888")
Path.Fill = New MyColor("#BF0000")
LabText.Foreground = New MyColor("#BF0000")
BtnClose.Foreground = New MyColor("#BF0000")
Path.Data = (New GeometryConverter).ConvertFromString("F1 M 58.5832,55.4172L 17.4169,55.4171C 15.5619,53.5621 15.5619,50.5546 17.4168,48.6996L 35.201,15.8402C 37.056,13.9852 40.0635,13.9852 41.9185,15.8402L 58.5832,48.6997C 60.4382,50.5546 60.4382,53.5622 58.5832,55.4172 Z M 34.0417,25.7292L 36.0208,41.9584L 39.9791,41.9583L 41.9583,25.7292L 34.0417,25.7292 Z M 38,44.3333C 36.2511,44.3333 34.8333,45.7511 34.8333,47.5C 34.8333,49.2489 36.2511,50.6667 38,50.6667C 39.7489,50.6667 41.1666,49.2489 41.1666,47.5C 41.1666,45.7511 39.7489,44.3333 38,44.3333 Z ")
Else
- BorderBrush = New MyColor("#994D76FF")
- Gradient1.Color = New MyColor("#88B0D0FF")
- Gradient2.Color = New MyColor("#889EBAFF")
+ BorderBrush = New MyColor("#CC4D76FF")
+ Gradient1.Color = New MyColor("#BBB0D0FF")
+ Gradient2.Color = New MyColor("#BB9EBAFF")
Path.Fill = New MyColor("#0062BF")
LabText.Foreground = New MyColor("#0062BF")
BtnClose.Foreground = New MyColor("#0062BF")
diff --git a/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb b/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb
index d599fb4f..d3ab3722 100644
--- a/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb
+++ b/Plain Craft Launcher 2/Controls/MyIconButton.xaml.vb
@@ -50,13 +50,31 @@
'触发点击事件
Private Sub Button_MouseUp(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonUp
- If IsMouseDown Then
- Log("[Control] 按下图标按钮" & If(String.IsNullOrEmpty(Name), "", ":" & Name))
- RaiseEvent Click(sender, e)
- e.Handled = True
- Button_MouseUp()
- End If
+ If Not IsMouseDown Then Return
+ Log("[Control] 按下图标按钮" & If(String.IsNullOrEmpty(Name), "", ":" & Name))
+ RaiseEvent Click(sender, e)
+ e.Handled = True
+ Button_MouseUp()
+ ModEvent.TryStartEvent(EventType, EventData)
End Sub
+ Public Property EventType As String
+ Get
+ Return GetValue(EventTypeProperty)
+ End Get
+ Set(value As String)
+ SetValue(EventTypeProperty, value)
+ End Set
+ End Property
+ Public Shared ReadOnly EventTypeProperty As DependencyProperty = DependencyProperty.Register("EventType", GetType(String), GetType(MyIconButton), New PropertyMetadata(Nothing))
+ Public Property EventData As String
+ Get
+ Return GetValue(EventDataProperty)
+ End Get
+ Set(value As String)
+ SetValue(EventDataProperty, value)
+ End Set
+ End Property
+ Public Shared ReadOnly EventDataProperty As DependencyProperty = DependencyProperty.Register("EventData", GetType(String), GetType(MyIconButton), New PropertyMetadata(Nothing))
'鼠标点击判定(务必放在点击事件之后,以使得 Button_MouseUp 先于 Button_MouseLeave 执行)
Private IsMouseDown As Boolean = False
diff --git a/Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.vb b/Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.vb
index 6176f1ac..5fc46254 100644
--- a/Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.vb
+++ b/Plain Craft Launcher 2/Controls/MyIconTextButton.xaml.vb
@@ -73,6 +73,10 @@
IsMouseDown = True
RefreshColor()
End Sub
+ Private Sub MyIconTextButton_MouseLeave() Handles Me.MouseLeave
+ IsMouseDown = False
+ RefreshColor()
+ End Sub
Public Property EventType As String
Get
Return GetValue(EventTypeProperty)
@@ -96,7 +100,7 @@
Private Const AnimationTimeOfMouseIn As Integer = 100 '鼠标指向动画长度
Private Const AnimationTimeOfMouseOut As Integer = 150 '鼠标移出动画长度
- Private Sub RefreshColor(Optional obj = Nothing, Optional e = Nothing) Handles Me.MouseEnter, Me.MouseLeave, Me.Loaded, Me.IsEnabledChanged
+ Private Sub RefreshColor(Optional obj = Nothing, Optional e = Nothing) Handles Me.MouseEnter, Me.Loaded, Me.IsEnabledChanged
Try
If IsLoaded AndAlso AniControlEnabled = 0 AndAlso Not False.Equals(e) Then '防止默认属性变更触发动画,若强制不执行动画,则 e 为 False
@@ -173,7 +177,7 @@
End If
Catch ex As Exception
- Log(ex, "刷新按钮颜色出错")
+ Log(ex, "刷新带图标按钮颜色出错")
End Try
End Sub
diff --git a/Plain Craft Launcher 2/Controls/MyPageRight.vb b/Plain Craft Launcher 2/Controls/MyPageRight.vb
index b67c64f5..5f44169e 100644
--- a/Plain Craft Launcher 2/Controls/MyPageRight.vb
+++ b/Plain Craft Launcher 2/Controls/MyPageRight.vb
@@ -152,6 +152,7 @@
'''
Public Sub PageOnExit()
If ModeDebug Then Log("[UI] 已触发 PageOnExit")
+ RaiseEvent PageExit()
Select Case PageState
Case PageStates.ContentEnter, PageStates.ContentStay
PageState = PageStates.PageExit
@@ -168,6 +169,7 @@
Case PageStates.PageExit, PageStates.Empty
End Select
End Sub
+ Public Event PageExit()
'''
''' 即将切换到其他页面,需要强制完成页面状态清理。
''' 需要立即切换至 Empty。
diff --git a/Plain Craft Launcher 2/Controls/MyRadioButton.xaml.vb b/Plain Craft Launcher 2/Controls/MyRadioButton.xaml.vb
index 54e48de1..c147a2f3 100644
--- a/Plain Craft Launcher 2/Controls/MyRadioButton.xaml.vb
+++ b/Plain Craft Launcher 2/Controls/MyRadioButton.xaml.vb
@@ -252,7 +252,7 @@
End If
Catch ex As Exception
- Log(ex, "刷新按钮颜色出错")
+ Log(ex, "刷新单选按钮颜色出错")
End Try
End Sub
diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb
index ba3bcac4..bfadf9b0 100644
--- a/Plain Craft Launcher 2/FormMain.xaml.vb
+++ b/Plain Craft Launcher 2/FormMain.xaml.vb
@@ -116,6 +116,12 @@ Public Class FormMain
'3:BUG+ IMP* FEAT-
'2:BUG* IMP-
'1:BUG-
+ If LastVersion < 299 Then 'Snapshot 2.6.5
+ FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持选择多种预设的主页"))
+ FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化联网获取的主页的加载与缓存"))
+ FeatureCount += 18
+ BugCount += 13
+ End If
If LastVersion < 298 Then 'Snapshot 2.6.4
FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "Mod 管理中允许多选 Mod 进行批量操作"))
FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化崩溃分析,添加多种崩溃情况的判断"))
@@ -824,6 +830,7 @@ Public Class FormMain
RunInUi(Sub()
Setup.Set("UiCustomType", 1)
FrmLaunchRight.ForceRefresh()
+ Hint("已加载主页自定义文件!", HintType.Finish)
End Sub)
Exit Sub
End If
diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb
index 5d2f6da3..0225bce5 100644
--- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb
+++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb
@@ -11,12 +11,12 @@ Public Module ModBase
#Region "声明"
'下列版本信息由更新器自动修改
- Public Const VersionBaseName As String = "2.6.4" '不含分支前缀的显示用版本名
- Public Const VersionStandardCode As String = "2.6.4." & VersionBranchCode '标准格式的四段式版本号
+ Public Const VersionBaseName As String = "2.6.5" '不含分支前缀的显示用版本名
+ Public Const VersionStandardCode As String = "2.6.5." & VersionBranchCode '标准格式的四段式版本号
#If BETA Then
Public Const VersionCode As Integer = 296 'Release
#Else
- Public Const VersionCode As Integer = 298 'Snapshot
+ Public Const VersionCode As Integer = 299 'Snapshot
#End If
'自动生成的版本信息
Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName
diff --git a/Plain Craft Launcher 2/Modules/Base/ModNet.vb b/Plain Craft Launcher 2/Modules/Base/ModNet.vb
index 5ffbcad0..a81b0c2b 100644
--- a/Plain Craft Launcher 2/Modules/Base/ModNet.vb
+++ b/Plain Craft Launcher 2/Modules/Base/ModNet.vb
@@ -106,15 +106,15 @@ Retry:
Retry:
Select Case RetryCount
Case 0 '正常尝试
- Return NetGetCodeRequest(Url, Encode, 10000, IsJson, Accept)
+ Return NetGetCodeByRequestOnce(Url, Encode, 10000, IsJson, Accept)
Case 1 '慢速重试
Thread.Sleep(500)
- Return NetGetCodeRequest(If(BackupUrl, Url), Encode, 30000, IsJson, Accept)
+ Return NetGetCodeByRequestOnce(If(BackupUrl, Url), Encode, 30000, IsJson, Accept)
Case Else '快速重试
If GetTimeTick() - StartTime > 5500 Then
'若前两次加载耗费 5 秒以上,才进行重试
Thread.Sleep(500)
- Return NetGetCodeRequest(If(BackupUrl, Url), Encode, 4000, IsJson, Accept)
+ Return NetGetCodeByRequestOnce(If(BackupUrl, Url), Encode, 4000, IsJson, Accept)
Else
Throw RetryException
End If
@@ -148,7 +148,7 @@ Retry:
For i = 1 To 4
Dim th As New Thread(Sub()
Try
- RequestResult = NetGetCodeRequest(Url, Encode, 30000, IsJson, Accept)
+ RequestResult = NetGetCodeByRequestOnce(Url, Encode, 30000, IsJson, Accept)
Catch ex As Exception
FailCount += 1
RequestEx = ex
@@ -182,10 +182,10 @@ RequestFinished:
Loop
Throw New Exception("未知错误")
End Function
- Private Function NetGetCodeRequest(Url As String, Encode As Encoding, Timeout As Integer, IsJson As Boolean, Accept As String)
+ Public Function NetGetCodeByRequestOnce(Url As String, Optional Encode As Encoding = Nothing, Optional Timeout As Integer = 30000, Optional IsJson As Boolean = False, Optional Accept As String = "")
If RunInUi() AndAlso Not Url.Contains("//127.") Then Throw New Exception("在 UI 线程执行了网络请求")
Url = SecretCdnSign(Url)
- Log("[Net] 获取网络结果:" & Url & ",最大超时 " & Timeout)
+ Log($"[Net] 获取网络结果:{Url},超时 {Timeout}ms{If(IsJson, ",要求 json", "")}")
Dim Request As HttpWebRequest = WebRequest.Create(Url)
Dim Result As New List(Of Byte)
Try
@@ -269,6 +269,8 @@ RequestFinished:
'下载
Using Client As New WebClient
Try
+ Client.Headers(HttpRequestHeader.UserAgent) = "PCL2/" & VersionStandardCode & " Mozilla/5.0 AppleWebKit/537.36 Chrome/63.0.3239.132 Safari/537.36"
+ Client.Headers(HttpRequestHeader.Referer) = "http://" & VersionCode & ".pcl2.server/"
Client.DownloadFile(Url, LocalFile)
Catch ex As Exception
Throw New WebException("直接下载文件失败(" & Url & ")。", ex)
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
index 81a31f96..285ca468 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
@@ -111,8 +111,9 @@
IsJre = Not File.Exists(PathFolder & "javac.exe")
'运行 -version
Output = ShellAndGetOutput(PathFolder & "java.exe", "-version", 15000).ToLower
- If Output = "" Then Throw New Exception("尝试运行该 Java 失败")
+ If Output = "" Then Throw New ApplicationException("尝试运行该 Java 失败")
If ModeDebug Then Log("[Java] Java 检查输出:" & PathFolder & "java.exe" & vbCrLf & Output)
+ If Output.Contains("/lib/ext exists") Then Throw New ApplicationException("无法运行该 Java,请在删除 Java 文件夹中的 /lib/ext 文件夹后再试")
'获取详细信息
Dim VersionString = If(RegexSeek(Output, "(?<=version "")[^""]+"), If(RegexSeek(Output, "(?<=openjdk )[0-9]+"), "")).Replace("_", ".").Split("-").First
Do While VersionString.Split(".").Count < 4
@@ -122,6 +123,7 @@
VersionString = "1." & VersionString
End If
Loop
+ If VersionString = "" Then Throw New ApplicationException($"未找到该 Java 的版本号{If(Output.Length < 500, $"{vbCrLf}输出为:{vbCrLf}{Output}", "")}")
Version = New Version(VersionString)
If Version.Minor = 0 Then
Log("[Java] 疑似 X.0.X.X 格式版本号:" & Version.ToString)
@@ -129,10 +131,10 @@
End If
Is64Bit = Output.Contains("64-bit")
If Version.Minor <= 4 OrElse Version.Minor >= 25 Then Throw New Exception("分析详细信息失败,获取的版本为 " & Version.ToString)
- '基于 #2249 发现的 JRE 17 似乎也导致了 Forge 安装失败,干脆禁用更多版本的 JRE
- If IsJre AndAlso VersionCode >= 16 Then Throw New Exception("由于高版本 JRE 对 Minecraft 的兼容性很差,因此不再允许使用")
- ''无论如何不允许使用 JRE 16,它完全是炸的,安 OptiFine、Forge 和启动 MC 都会炸
- 'If IsJre AndAlso VersionCode = 16 Then Throw New Exception("由于 JRE 16 对 Minecraft 的兼容性很差,因此不再允许使用")
+ '基于 #2249 发现 JRE 17 似乎也导致了 Forge 安装失败,干脆禁用更多版本的 JRE
+ If IsJre AndAlso VersionCode >= 16 Then Throw New Exception("由于高版本 JRE 对游戏的兼容性很差,因此不再允许使用。你可以使用对应版本的 JDK,而非 JRE!")
+ Catch ex As ApplicationException
+ Throw ex
Catch ex As Exception
Log("[Java] 检查失败的 Java 输出:" & PathFolder & "java.exe" & vbCrLf & If(Output, "无程序输出"))
Throw New Exception("检查 Java 失败(" & If(PathJavaw, "Nothing") & ")", ex)
@@ -659,7 +661,7 @@ Wait:
SearchEntry.Contains("java") OrElse SearchEntry.Contains("jdk") OrElse SearchEntry.Contains("env") OrElse
SearchEntry.Contains("环境") OrElse SearchEntry.Contains("run") OrElse SearchEntry.Contains("软件") OrElse
SearchEntry.Contains("jre") OrElse SearchEntry = "bin" OrElse SearchEntry.Contains("mc") OrElse
- SearchEntry.Contains("software") OrElse SearchEntry.Contains("cache") OrElse SearchEntry.Contains("temp") OrElse
+ SearchEntry.Contains("soft") OrElse SearchEntry.Contains("cache") OrElse SearchEntry.Contains("temp") OrElse
SearchEntry.Contains("corretto") OrElse SearchEntry.Contains("roaming") OrElse SearchEntry.Contains("users") OrElse
SearchEntry.Contains("craft") OrElse SearchEntry.Contains("program") OrElse SearchEntry.Contains("世界") OrElse
SearchEntry.Contains("net") OrElse SearchEntry.Contains("游戏") OrElse SearchEntry.Contains("oracle") OrElse
@@ -675,7 +677,7 @@ Wait:
SearchEntry.Contains("mod") OrElse SearchEntry.Contains("高清") OrElse SearchEntry.Contains("download") OrElse
SearchEntry.Contains("launch") OrElse SearchEntry.Contains("程序") OrElse SearchEntry.Contains("path") OrElse
SearchEntry.Contains("version") OrElse SearchEntry.Contains("baka") OrElse SearchEntry.Contains("pcl") OrElse
- SearchEntry.Contains("local") OrElse SearchEntry.Contains("packages") OrElse SearchEntry.Contains("4297127D64EC6") OrElse '官启文件夹
+ SearchEntry.Contains("local") OrElse SearchEntry.Contains("packages") OrElse SearchEntry.Contains("4297127d64ec6") OrElse '官启文件夹
SearchEntry.Contains("国服") OrElse SearchEntry.Contains("网易") OrElse SearchEntry.Contains("ext") OrElse '网易 Java 文件夹名
SearchEntry.Contains("netease") OrElse SearchEntry.Contains("1.") OrElse SearchEntry.Contains("启动") Then
JavaSearchFolder(FolderInfo, Results, Source)
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
index 1908a4ba..7ca5ca24 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb
@@ -1120,8 +1120,8 @@ SystemBrowser:
ElseIf McVersionCurrent.Version.McCodeMain >= 8 AndAlso McVersionCurrent.Version.McCodeMain <= 11 Then
'1.8 - 1.11:必须恰好 Java 8
MinVer = New Version(1, 8, 0, 0) : MaxVer = New Version(1, 8, 999, 999)
- ElseIf McVersionCurrent.Version.McCodeMain = 12 AndAlso McVersionCurrent.Version.HasForge Then
- '1.12:若安装了 Forge,最高 Java 8
+ ElseIf McVersionCurrent.Version.McCodeMain = 12 Then
+ '1.12:最高 Java 8
MaxVer = New Version(1, 8, 999, 999)
End If
End If
@@ -1843,10 +1843,14 @@ NextVersion:
Else
PackFormat = 12
End If
- Case 20, 99 '99 是快照版
- PackFormat = 15
- Case Else
- PackFormat = 16
+ Case 20
+ If McVersionCurrent.Version.McCodeSub <= 1 Then
+ PackFormat = 15
+ Else
+ PackFormat = 17
+ End If
+ Case Else '快照版是 99
+ PackFormat = 17
'https://minecraft.fandom.com/zh/wiki/数据包#数据包版本
End Select
McLaunchLog("正在构建自定义皮肤资源包,格式为:" & PackFormat)
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb
index 7be93924..201ed358 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb
@@ -1,7 +1,4 @@
-Imports System.IO.Compression
-Imports NAudio.Gui
-
-Public Module ModMinecraft
+Public Module ModMinecraft
#Region "文件夹"
diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb
index 5059754a..ab5859ac 100644
--- a/Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb
+++ b/Plain Craft Launcher 2/Modules/Minecraft/ModWatcher.vb
@@ -272,7 +272,7 @@
If Not MinecraftWindowName.StartsWith("FML") Then
'已找到 Minecraft 窗口
WindowHandle = MinecraftWindowHandle
- WatcherLog("Minecraft 窗口已加载:" & MinecraftWindowName & "(" & MinecraftWindowHandle.ToInt64 & ")")
+ WatcherLog($"Minecraft 窗口已加载:{MinecraftWindowName}({MinecraftWindowHandle.ToInt64})")
IsWindowFinished = True
'最大化
If Setup.Get("LaunchArgumentWindowType") = 4 Then
@@ -282,6 +282,7 @@
'……虽然我很想这样说,但总有人反馈,算了
Thread.Sleep(2000)
ShowWindow(WindowHandle, 3)
+ WatcherLog($"已最大化 Minecraft 窗口:{MinecraftWindowHandle.ToInt64}")
Catch ex As Exception
Log(ex, "最大化 Minecraft 窗口时出现错误")
End Try
diff --git a/Plain Craft Launcher 2/Modules/ModEvent.vb b/Plain Craft Launcher 2/Modules/ModEvent.vb
index 51942e9f..752d5162 100644
--- a/Plain Craft Launcher 2/Modules/ModEvent.vb
+++ b/Plain Craft Launcher 2/Modules/ModEvent.vb
@@ -23,11 +23,9 @@
Case "打开文件", "打开帮助"
RunInThread(Sub()
Try
-
'确认实际路径
Dim ActualPaths = GetEventAbsoluteUrls(Data(0), Type)
Dim Location = ActualPaths(0), WorkingDir = ActualPaths(1)
-
'执行
If Type = "打开文件" Then
Dim Info As New ProcessStartInfo With {
@@ -39,13 +37,14 @@
Else '打开帮助
PageOtherHelp.EnterHelpPage(Location)
End If
-
Catch ex As Exception
Log(ex, "执行打开类自定义事件失败", LogLevel.Msgbox)
End Try
End Sub)
+
Case "启动游戏"
- If McLaunchStart(New McLaunchOptions With {.ServerIp = If(Data.Length >= 2, Data(1), Nothing), .Version = New McVersion(Data(0))}) Then
+ If McLaunchStart(New McLaunchOptions With
+ {.ServerIp = If(Data.Length >= 2, Data(1), Nothing), .Version = New McVersion(Data(0))}) Then
Hint("正在启动 " & Data(0) & "……")
End If
@@ -54,6 +53,7 @@
Case "刷新主页"
FrmLaunchRight.ForceRefresh()
+ If Data(0) = "" Then Hint("已刷新主页!", HintType.Finish)
Case "刷新帮助"
PageOtherLeft.RefreshHelp()
diff --git a/Plain Craft Launcher 2/Modules/ModMusic.vb b/Plain Craft Launcher 2/Modules/ModMusic.vb
index f973d7fe..ae5a191d 100644
--- a/Plain Craft Launcher 2/Modules/ModMusic.vb
+++ b/Plain Craft Launcher 2/Modules/ModMusic.vb
@@ -5,7 +5,7 @@
'''
''' 接下来要播放的音乐文件路径。未初始化时为 Nothing。
'''
- Public MusicToplayList As List(Of String) = Nothing
+ Public MusicWaitingList As List(Of String) = Nothing
'''
''' 全部音乐文件路径。未初始化时为 Nothing。
'''
@@ -31,11 +31,11 @@
Next
End If
'打乱顺序播放
- MusicToplayList = If(Setup.Get("UiMusicRandom"), Shuffle(New List(Of String)(MusicAllList)), New List(Of String)(MusicAllList))
- If Not IgnoreFirst = "" AndAlso Not MusicToplayList.Count = 0 AndAlso MusicToplayList(0) = IgnoreFirst Then
+ MusicWaitingList = If(Setup.Get("UiMusicRandom"), Shuffle(New List(Of String)(MusicAllList)), New List(Of String)(MusicAllList))
+ If Not IgnoreFirst = "" AndAlso Not MusicWaitingList.Count = 0 AndAlso MusicWaitingList(0) = IgnoreFirst Then
'若需要避免成为第一项的为第一项,则将它放在最后
- MusicToplayList.RemoveAt(0)
- MusicToplayList.Add(IgnoreFirst)
+ MusicWaitingList.RemoveAt(0)
+ MusicWaitingList.Add(IgnoreFirst)
End If
Catch ex As Exception
Log(ex, "初始化音乐列表失败", LogLevel.Feedback)
@@ -46,12 +46,11 @@
'''
Private Function DequeueNextMusicAddress() As String
'初始化,确保存在音乐
- If MusicAllList Is Nothing Then MusicListInit(False)
- If MusicAllList.Count = 0 Then Throw New Exception("在没有音乐时尝试获取音乐路径")
+ If MusicAllList Is Nothing OrElse MusicAllList.Count = 0 Then MusicListInit(False)
'出列下一个音乐,如果出列结束则生成新列表
- DequeueNextMusicAddress = MusicToplayList(0)
- MusicToplayList.RemoveAt(0)
- If MusicToplayList.Count = 0 Then MusicListInit(False, DequeueNextMusicAddress)
+ DequeueNextMusicAddress = MusicWaitingList(0)
+ MusicWaitingList.RemoveAt(0)
+ If MusicWaitingList.Count = 0 Then MusicListInit(False, DequeueNextMusicAddress)
End Function
#End Region
@@ -106,7 +105,8 @@
Case MusicStates.Play
MusicPause()
Case Else
- Hint("音乐目前为停止状态!", HintType.Critical)
+ Log("[Music] 音乐目前为停止状态,已强制尝试开始播放", LogLevel.Debug)
+ MusicRefreshPlay(False)
End Select
End If
End Sub
@@ -212,15 +212,15 @@
''' 继续音乐播放,返回是否成功切换了状态。
'''
Public Function MusicResume() As Boolean
- If MusicState = MusicStates.Pause Then
+ If MusicState = MusicStates.Play Then
+ Return False
+ Else
RunInThread(Sub()
MusicNAudio.Play()
MusicRefreshUI()
Log("[Music] 已恢复播放")
End Sub)
Return True
- Else
- Return False
End If
End Function
diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb
index 3e3c0d80..1526c16a 100644
--- a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb
+++ b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
' 方法是按如下所示使用“*”
-
-
+
+
diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
index ff0d1eea..77d82700 100644
--- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
+++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
@@ -10,9 +10,12 @@
-
-
-
+
+
+
+
diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb
index 10c0ad29..fe541d9b 100644
--- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb
+++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml.vb
@@ -3,100 +3,206 @@
Private Sub Init() Handles Me.Loaded
PanBack.ScrollToHome()
PanLog.Visibility = If(ModeDebug, Visibility.Visible, Visibility.Collapsed)
- '刷新主页
- If ShouldRefresh Then
- ShouldRefresh = False
- RefreshCustom()
- End If
'快照版提示
#If BETA Then
PanHint.Visibility = Visibility.Collapsed
#Else
- PanHint.Title = "快照版提示"
PanHint.Visibility = If(ThemeCheckGold(), Visibility.Collapsed, Visibility.Visible)
- LabHint1.Text = "快照版包含尚未在正式版发布的测试性功能,仅用于赞助者本人尝鲜。所以请不要发给其他人或者用于制作整合包哦!如果发现了 Bug,可以在 更多 → 反馈 中提交!"
- LabHint2.Text = "你可以通过赞助¥23.33 档位换取解锁码来隐藏这个提示。"
+ LabHint1.Text = "快照版包含尚未正式发布的测试功能,仅用于赞助者本人尝鲜。请不要发给其他人或者用来制作整合包哦!"
+ LabHint2.Text = $"若已累积赞助¥23.33,在爱发电私信发送 {vbLQ}解锁码{vbRQ} 即可永久隐藏此提示。"
#End If
End Sub
- Private LatestFileContent As String = ""
- Private LatestFileLink As String = Nothing
- Private IsRefreshing As Boolean = False
- Public ShouldRefresh As Boolean = True
+ '暂时关闭快照版提示
+#If Not BETA Then
+ Private Sub BtnHintClose_Click(sender As Object, e As EventArgs) Handles BtnHintClose.Click
+ AniDispose(PanHint, True)
+ End Sub
+#End If
+
+#Region "自定义主页"
+
'''
- ''' 刷新自定义的主页。返回是否成功。
+ ''' 刷新自定义主页。
'''
- Private Sub RefreshCustom()
- If IsRefreshing Then
- ShouldRefresh = True
- Exit Sub
- End If
+ Private Sub Refresh() Handles Me.Loaded
+ RunInNewThread(Sub()
+ Try
+ SyncLock RefreshLock
+ RefreshReal()
+ End SyncLock
+ Catch ex As Exception
+ Log(ex, "加载 PCL 主页自定义信息失败", LogLevel.Msgbox)
+ End Try
+ End Sub, $"刷新自定义主页 #{GetUuid()}")
+ End Sub
+ Private Sub RefreshReal()
+ Dim Content As String = ""
+ Dim Url As String
+ Select Case Setup.Get("UiCustomType")
+ Case 1
+ '加载本地文件
+ Log("[Page] 主页自定义数据来源:本地文件")
+ Content = ReadFile(Path & "PCL\Custom.xaml") 'ReadFile 会进行存在检测
+ Case 2
+ Url = Setup.Get("UiCustomNet")
+Download:
+ '加载联网文件
+ If String.IsNullOrWhiteSpace(Url) Then Exit Select
+ If Url = Setup.Get("CacheSavedPageUrl") AndAlso File.Exists(PathTemp & "Cache\Custom.xaml") Then
+ '缓存可用
+ Log("[Page] 主页自定义数据来源:联网缓存文件")
+ Content = ReadFile(PathTemp & "Cache\Custom.xaml")
+ '后台更新缓存
+ OnlineLoader.Start(Url)
+ Else
+ '缓存不可用
+ Log("[Page] 主页自定义数据来源:联网全新下载")
+ Hint("正在加载主页……")
+ RunInUiWait(Sub() LoadContent("")) '在加载结束前清空页面
+ Setup.Set("CacheSavedPageVersion", "")
+ OnlineLoader.Start(Url) '下载完成后将会再次触发更新
+ Exit Sub
+ End If
+ Case 3
+ Select Case Setup.Get("UiCustomPreset")
+ Case 0 '你知道吗
+ Log("[Page] 主页预设:你知道吗")
+ Content = "
+
+
+
+ "
+ Case 1 '回声洞
+ Log("[Page] 主页预设:回声洞")
+ Content = "
+
+
+
+ "
+ Case 2 '新闻主页
+ Log("[Page] 主页预设:Minecraft 新闻")
+ Url = "https://news.bugjump.net"
+ GoTo Download
+ End Select
+ End Select
+ RunInUi(Sub() LoadContent(Content))
+ End Sub
+ Private RefreshLock As New Object
+
+ '联网获取自定义主页文件
+ Private OnlineLoader As New LoaderTask(Of String, Integer)("自定义主页获取", AddressOf OnlineLoaderSub) With {.ReloadTimeout = 10 * 60 * 1000}
+ Private Sub OnlineLoaderSub(Task As LoaderTask(Of String, Integer))
Try
- IsRefreshing = True
- PanCustom.Children.Clear()
- RunInNewThread(Sub()
- Dim FileContent As String = ""
- Select Case Setup.Get("UiCustomType")
- Case 0
- '啥也不干
- Case 1
- '加载本地文件
- FileContent = ReadFile(Path & "PCL\Custom.xaml") 'ReadFile 会进行存在检测
- Log("[System] 尝试从本地文件读取主页自定义数据(" & FileContent.Length & ")")
- Case 2
- '加载联网文件
- Try
- Dim Link As String = Setup.Get("UiCustomNet")
- If Link = LatestFileLink Then
- FileContent = LatestFileContent
- Log("[System] 尝试缓存加载主页自定义数据(" & FileContent.Length & ")")
- ElseIf Not String.IsNullOrWhiteSpace(Link) Then
- Log("[System] 开始从网络读取主页自定义数据(" & Link & ")")
- FileContent = NetGetCodeByRequestRetry(Link)
- Log("[System] 尝试从网络读取主页自定义数据(" & FileContent.Length & ")")
- End If
- LatestFileLink = Link
- LatestFileContent = FileContent
- Catch ex As Exception
- Log(ex, "获取 PCL 主页自定义信息失败", LogLevel.Msgbox)
- LatestFileLink = ""
- End Try
- End Select
- If FileContent = "" Then
- IsRefreshing = False
- Exit Sub
- End If
- FileContent = "" & FileContent & ""
- FileContent = FileContent.Replace("{path}", Path)
- RunInUi(Sub()
- Try
- Log("[System] 加载主页自定义数据")
- PanCustom.Children.Add(GetObjectFromXML(FileContent))
- IsRefreshing = False
- Catch ex As Exception
- IsRefreshing = False
- Log("[System] 自定义信息内容:" & vbCrLf & FileContent)
- If MyMsgBox(ex.Message, "加载自定义主页失败", "重试", "取消") = 1 Then
- LatestFileLink = Nothing
- LatestFileContent = ""
- RefreshCustom()
- End If
- End Try
- End Sub)
- End Sub, "主页自定义刷新")
+ '获取版本校验地址
+ Dim VersionAddress As String
+ If Task.Input.Contains(".xaml") Then
+ VersionAddress = Task.Input.Replace(".xaml", ".xaml.ini")
+ Else
+ VersionAddress = Task.Input.Split("?").First
+ If Not VersionAddress.EndsWith("/") Then VersionAddress += "/"
+ VersionAddress += "version"
+ If Task.Input.Contains("?") Then VersionAddress += Task.Input.Split("?").Last
+ End If
+ '校验版本
+ Dim Version As String = ""
+ Dim NeedDownload As Boolean = True
+ Try
+ Version = NetGetCodeByRequestOnce(VersionAddress, Timeout:=10000)
+ If Version.Length > 100 Then Throw New Exception($"获取的自定义主页版本过长({Version.Length} 字符)")
+ Dim CurrentVersion As String = Setup.Get("CacheSavedPageVersion")
+ If Version <> "" AndAlso CurrentVersion <> "" AndAlso Version = CurrentVersion Then
+ Log($"[Page] 当前缓存的自定义主页已为最新,当前版本:{Version},检查源:{VersionAddress}")
+ NeedDownload = False
+ Else
+ Log($"[Page] 需要下载联网自定义主页,当前版本:{Version},检查源:{VersionAddress}")
+ End If
+ Catch exx As Exception
+ Log(exx, $"联网获取自定义主页版本失败", LogLevel.Developer)
+ Log($"[Page] 无法检查联网自定义主页版本,将直接下载,检查源:{VersionAddress}")
+ End Try
+ '实际下载
+ If NeedDownload Then
+ Dim FileContent As String = NetGetCodeByRequestRetry(Task.Input)
+ Log($"[Page] 已联网下载自定义主页,内容长度:{FileContent.Length},来源:{Task.Input}")
+ Setup.Set("CacheSavedPageUrl", Task.Input)
+ Setup.Set("CacheSavedPageVersion", Version)
+ WriteFile(PathTemp & "Cache\Custom.xaml", FileContent)
+ End If
+ '要求刷新
+ Refresh()
Catch ex As Exception
- Log(ex, "加载 PCL 主页自定义信息失败", LogLevel.Msgbox)
- IsRefreshing = False
+ Log(ex, $"联网下载自定义主页失败({Task.Input})", LogLevel.Hint)
+ Task.Input = ""
End Try
End Sub
- Public Sub ForceRefresh(Optional ShowHint As Boolean = True)
- ShouldRefresh = True
- LatestFileContent = ""
- LatestFileLink = Nothing
- If ShowHint Then Hint("已刷新主页!", HintType.Finish)
- FrmMain.PageChange(FormMain.PageType.Launch)
- Init()
+ '''
+ ''' 立即强制刷新自定义主页。
+ ''' 必须在 UI 线程调用。
+ '''
+ Public Sub ForceRefresh()
+ Log("[Page] 要求强制刷新自定义主页")
+ ClearCache()
+ '实际的刷新
+ If FrmMain.PageCurrent.Page = FormMain.PageType.Launch Then
+ PanBack.ScrollToHome()
+ Refresh()
+ Else
+ FrmMain.PageChange(FormMain.PageType.Launch)
+ End If
+ End Sub
+
+ '''
+ ''' 清空自定义主页缓存信息。
+ '''
+ Private Sub ClearCache()
+ LoadedContentHash = -1
+ OnlineLoader.Input = ""
+ Setup.Set("CacheSavedPageUrl", "")
+ Setup.Set("CacheSavedPageVersion", "")
+ Log("[Page] 已清空自定义主页缓存")
End Sub
+ '''
+ ''' 从文本内容中加载自定义主页。
+ ''' 必须在 UI 线程调用。
+ '''
+ Private Sub LoadContent(Content As String)
+ SyncLock LoadContentLock
+ '如果加载目标内容一致则不加载
+ Dim Hash = Content.GetHashCode()
+ If Hash = LoadedContentHash Then Exit Sub
+ LoadedContentHash = Hash
+ '实际加载内容
+ PanCustom.Children.Clear()
+ If String.IsNullOrWhiteSpace(Content) Then
+ Log($"[Page] 实例化:清空自定义主页 UI,来源为空")
+ Return
+ End If
+ Content = "" & Content & ""
+ Content = Content.Replace("{path}", Path).Replace("{hint}", PageOtherTest.GetRandomHint()).Replace("{cave}", PageOtherTest.GetRandomCave())
+ Log($"[Page] 实例化:加载自定义主页 UI,最终内容长度:{Content.Count}")
+ Try
+ PanCustom.Children.Add(GetObjectFromXML(Content))
+ Catch ex As Exception
+ Log("[Page] 加载失败的自定义主页内容:" & vbCrLf & Content)
+ If MyMsgBox($"自定义主页内容编写有误,请根据下列错误信息进行检查:{vbCrLf}{ex.Message}", "加载自定义主页失败", "重试", "取消") = 1 Then
+ GoTo Refresh '防止 SyncLock 死锁
+ End If
+ End Try
+ End SyncLock
+ Return
+Refresh:
+ ForceRefresh()
+ End Sub
+ Private LoadedContentHash As Integer = -1
+ Private LoadContentLock As New Object
+
+#End Region
+
End Class
diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
index 4d772ffb..4a58432a 100644
--- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
+++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml
@@ -213,7 +213,7 @@
-
+
diff --git a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb
index bbd3318a..b5bf4b4e 100644
--- a/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb
+++ b/Plain Craft Launcher 2/Pages/PageVersion/PageVersionMod.xaml.vb
@@ -1,7 +1,4 @@
-Imports System.Security.Principal
-Imports PCL.MyLoading
-
-Public Class PageVersionMod
+Public Class PageVersionMod
#Region "初始化"
@@ -336,8 +333,14 @@ Public Class PageVersionMod
'更新下边栏 UI
RefreshBottomBar()
End Sub
- Private Sub Load_State(sender As Object, newState As MyLoadingState, oldState As MyLoadingState) Handles Load.StateChanged
+ Private Sub UnselectedAllWithAnimation() Handles Load.StateChanged, Me.PageExit
+ Dim CacheAniControlEnabled = AniControlEnabled
+ AniControlEnabled = 0
ChangeAllSelected(False)
+ AniControlEnabled += CacheAniControlEnabled
+ End Sub
+ Private Sub PageVersionMod_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
+ If My.Computer.Keyboard.CtrlKeyDown AndAlso e.Key = Key.A Then ChangeAllSelected(True)
End Sub
#End Region
diff --git a/Plain Craft Launcher 2/Resources/Help.zip b/Plain Craft Launcher 2/Resources/Help.zip
index d2a0c1a1..481cadec 100644
Binary files a/Plain Craft Launcher 2/Resources/Help.zip and b/Plain Craft Launcher 2/Resources/Help.zip differ
diff --git a/Plain Craft Launcher 2/Resources/ModData.txt b/Plain Craft Launcher 2/Resources/ModData.txt
index 36815deb..959fd26a 100644
--- a/Plain Craft Launcher 2/Resources/ModData.txt
+++ b/Plain Craft Launcher 2/Resources/ModData.txt
@@ -1,6 +1,6 @@
-industrial-craft|工业时代2 (Industrial Craft 2)|515771
-@redpower2-core|红石力量2 (RedPower2)|71843
+industrial-craft|工业时代2 (Industrial Craft 2)|515771¨@industrial-craft|工业时代2 (Industrial Craft 2)|515771
+
buildcraft@|建筑 (BuildCraft)|884720
forestry@|林业*|708812
railcraft|铁路*|603270
@@ -37,7 +37,7 @@ player-api|玩家API (Player API) - 1.6-1.12.1¨playerapi|玩家API (Player API)
-
+ic2-classic|工业时代2经典版 (IC2 Classic)|1407663
not-enough-items-1-8|NEI物品管理器 (Not Enough Items) - 1.8+|389937¨notenoughitems|NEI物品管理器 (Not Enough Items) - <1.8|389937
@@ -114,7 +114,7 @@ bibliocraft|收藏馆 (BiblioCraft)|644088
natura|自然*
atomic-science|原子科学*
-atum|阿图姆:沙漠之旅/亚图姆:金沙之旅 (Atum 2: Return to the Sands)|1207987
+
blockphysics_by_id_miner|方块物理学 (BlockPhysics)
@@ -165,7 +165,7 @@ project-red-core|红石计划 (ProjectRed)¨project-red-base|红石计划 (Proje
dimensionaldoors|次元门 (Dimensional Doors)|896027
chickenchunks|区块载入器 (ChickenChunks)
-
+dlt2|动态蓄水槽 (Dynamic Liquid Tanks)
webdisplays-remasterd|内置网页浏览器 (WebDisplays)|778743
morph|变身*
@@ -257,7 +257,7 @@ redstone-arsenal|红石兵工厂*¨@redstone-arsenal|红石兵工厂 (Redstone A
big-reactors|大型反应堆*|348989
endertanks|末影水槽 (Ender Tanks) - Forge¨endertanks-fabric|末影水槽 (Ender Tanks) - Fabric
-applied-energistics-2@ae2|应用能源2*|798231
+
hopper-ducts|漏斗管道*
autofish|自动钓鱼*|630098
mrcrayfish-furniture-mod|MrCrayfish 的家具 (MrCrayfish's Furniture Mod)|321693
@@ -350,7 +350,7 @@ ex-aliquo
steves-carts-2|史蒂夫矿车2 (Steve's Carts 2)
mariculture|海洋物语*|321251
evilcraft|邪恶工艺 (EvilCraft)
-
+projecte|等价交换重制版 (ProjectE)|1109380
falling-meteors-mod|陨石 (Falling Meteors)
@@ -384,7 +384,7 @@ pchan3-steamship-steamboat-pirates|飞艇与汽船 (SteamShip - SteamBoat and Pi
thaumic-energistics|神秘能源*|791638
-chisel|凿子*|641383
+
nuclearcraft-mod|核电工艺 (NuclearCraft)
opencomputers|开放式电脑 (Open Computers)|618383
elemental-stones|元素之石*
@@ -393,7 +393,7 @@ waila-nbt|万用高亮显示 (Waila NBT)
thaumcraft-node-tracker|神秘节点追踪*
geochests|箱载世界*
parachutemod|降落伞 (Parachute)
-
+gem-buffs-infinite-potion-effects|宝石效果/增益宝石 (Gem Buffs)
rftools@|RF工具箱 (RFTools)|416167
atomicstrykers-magic-yarn|AtomicStryker的魔法线 (AtomicStryker's Magic Yarn)
@@ -544,7 +544,7 @@ dragonapi
electricraft|电力工艺 (ElectriCraft)
candycraft|糖果世界 (CandyCraft)|459723
-
+minefantasy2|我的幻想2 (MineFantasy2)
rails-of-war|铁路战争 (Rails of War)
actually-additions|实用拓展*|841281
@@ -574,12 +574,12 @@ llibrary
-projecte|等价交换重制版 (ProjectE)|1109380
-customthings|自定义物品 (CustomThings)
+@redpower2-core|红石力量2 (RedPower2)|71843
+applied-energistics-2@ae2|应用能源2*|798231
automagy|自动化魔法*
-minefantasy2|我的幻想2 (MineFantasy2)
+
environmental-tech@|环境科技*|644622
magic-cookies|魔法饼干*|710008
@@ -613,7 +613,7 @@ worldeditcui||1013295¨worldeditcui-fabric||1013295
ztones
dummycore¨dummycore-unofficial
-extra-utilities|更多实用设备*|868981
+extra-utilities|更多实用设备*|377817
openmodslib|开放式模组库 (OpenModsLib)
embers|余烬*
neat|极简血量显示* - Forge|938958¨neat-fabric-quilt|极简血量显示 (Neat) - Fabric & Quilt|938958¨@neat|极简血量显示 (Neat)|938958
@@ -832,7 +832,7 @@ re-zero-kara-hajimeru-isekai-seikatsu|RE:从零开始的异世界 (Re: Zero kara
minewatch||730508
thaumcraft-inventory-scanning|神秘时代物品栏扫描*
cyclic|循环*|648189
-
+chisel|凿子*|641383
redstoneplusplus|红石++ (Redstone++)
ctm|连接纹理 (ConnectedTexturesMod)
simulated-nights|夜晚模拟*
@@ -1018,7 +1018,7 @@ wrapup
nuclear-physics
wither-skeleton-tweaks|凋灵骷髅调整*
heat-and-climate|热量与气候*
-
+customthings|自定义物品 (CustomThings)
exgregilo|格雷矿筛 (ExGregilo)
placebo
plants
@@ -1027,7 +1027,7 @@ chinjufumod|镇守府 (ChinjufuMod +JapaneseBlock)|776626
track-api
immersive-railroading|沉浸铁路*|783016
-custom-main-menu|自定义主菜单*|769607
+
wildycraft||526348
@@ -1050,7 +1050,7 @@ biobomb|生物炸弹 (BioBomb)|785148
ender-hopper|末影漏斗*|784833
mine-souls|黑魂战斗*|683570
radixcore
-dlt2|动态蓄水槽 (Dynamic Liquid Tanks)
+
familiar-fauna|熟悉的动物*|785558
tinkers-tool-leveling|匠魂工具升级 (Tinkers' Tool Leveling)|646118
@@ -1068,7 +1068,7 @@ spawncontroller|自定义怪物生成 (SpawnController)|786558
wearable-backpacks|可穿戴背包*|664777
heart-drop|生命汲取*
omlib|开放式炮台库 (OMLib)
-
+dynamictrees|动态的树/有活力的树 (Dynamic Trees)|771545
merry-christmas|圣诞箱子 (Merry Christmas!)|786210
cloud-control|可控制的云*|785903
zombie-ore|矿石僵尸 (Zombie ore)|786883
@@ -1183,22 +1183,22 @@ infinity-item-editor|无尽物品编辑器*|791937
extra-rails|更多功能铁轨*|607938
gregtania
origin
-minecraft-transport-simulator@immersive-vehicles|沉浸车辆 (Immersive Vehicles)
+minecraft-transport-simulator@immersive-vehicles|沉浸车辆 (Immersive Vehicles)|946737
chest-transporter|搬箱器*|467680
i18nupdatemod@|自动汉化更新 (I18nUpdateMod)|1424533
realistic-item-drops|真实物品掉落*
pixelmon|像素精灵宝可梦 重铸*|291020
-controlling|键位冲突显示* - Forge/Fabric版|713187¨controlling-for-fabric|键位冲突显示 (Controlling) - Fabric|713187
+@controlling|键位冲突显示 (Controlling)|713187
simpleleather|腐肉烧皮革 (SimpleLeather)|660382
sync|克隆*|300110
chiseled-me|超级变变变*
progressive-automation-early-miner|进阶自动化 (Progressive Automation)
-matmos|真实环境音效 (MAtmos)
+matmos|真实环境音效 (MAtmos)|805720
ye-olde-tanks|水箱*
improving-minecraft|改善的世界*
-wawla|Wawla高亮显示 (What Are We Looking At)
+wawla@|Wawla高亮显示 (What Are We Looking At)
lightarea|点亮区域 (LightArea)|806149
@replaymod|录像回放 (Replay Mod)|952909
stellar-sky|群星璀璨*|502403
@@ -1207,7 +1207,7 @@ nei-addons|NEI扩充 (NEI Addons)
cucumber@
hunting-dimension|狩猎维度*|800351
runes-of-wizardry|符文魔法 (Runes-of-Wizardry)
-dynamictrees|动态的树/有活力的树 (Dynamic Trees)|771545
+
coffee-workshop|咖啡工坊*|808472
in-game-account-switcher@|游戏内账号切换 (In-Game Account Switcher)|1211916
consecration@|圣化*|849160
@@ -1237,7 +1237,7 @@ dragontech|龙之科技/龙鳞实验版 (DragonTech/Dragon Scales EX)
gravityfalls-mod|怪诞小镇 (Gravity Falls)
tfcbotania|TFC植物魔法 (TFCBotania)
no-recipe-guide|没有合成指南*|811530
-takumi-craft|爬行者世界/苦力怕世界* - curseforge上的原贴,现已删除¨takumicraft|爬行者世界/苦力怕世界 (Takumi Craft) - 新贴
+takumi-craft|爬行者世界/苦力怕世界* - curseforge上的原贴,现已删除¨takumicraft|爬行者世界/苦力怕世界 (Takumi Craft) - 新贴,现已失效
the-mists-of-riov|神秘世界 (The Mists of RioV Mod)
nsr-no-respawn-screen|无重生屏幕 (No Respawn Screen)|793776
@@ -1266,7 +1266,7 @@ refraction|折射*
librarianlib|图书馆 (LibrarianLib)
creeper-confetti@|烟花苦力怕*|775377
funnels|液体漏斗*
-advent-of-ascension-nevermine@adventofascension|虚无世界 (Nevermine)|325420
+advent-of-ascension-nevermine@adventofascension|虚无世界 (Nevermine)|290532
toroquest|托罗探索 (Toro Quest)|818183
rikmulds-core-mod
@@ -1287,7 +1287,7 @@ mobdrops|更多掉落 (MobDrops)
states|城邦*|819991
modular-machinery|模块化机械*
compositegear|复合齿轮/复合装甲 (Composite Gear)
-kiwi¨kiwi-fabric
+kiwi¨kiwi-fabric¨@kiwi
cuisine|料理工艺 🍳 (Cuisine 🍳)|821999
world-control|世界控制*
@@ -1328,7 +1328,7 @@ shields-plus|更多盾牌*
ghost-buster
culinary-construct@|自定义三明治*
armoreablemobs|怪物装备自定义 (ArmoreableMobs)
-gem-buffs-infinite-potion-effects|宝石效果/增益宝石 (Gem Buffs)
+
advanced-inventory
@@ -1390,7 +1390,7 @@ patchouli|帕秋莉手册* - Forge¨patchouli-fabric|帕秋莉手册 (Patchouli)
gases-framework
ranged-pumps|范围泵*|668293
bagginses|背包*|628505
-ic2-classic|工业时代2经典版 (IC2 Classic)|1407663
+
cubicworldgen
rally-health
@@ -1407,7 +1407,7 @@ sound-physics-fabric|物理声效 (Sound Physics)|676189
plethora-peripherals
simple-flight|简单的飞行*|374613
factory-tech|工厂科技 (FactoryTech)
-block-renderer¨blockrenderer
+
mysticallib
crissaegrim
@@ -1423,7 +1423,7 @@ u-team-core
ftb-quests|FTB任务 (FTB Quests) - Forge|849746¨ftb-quests-fabric|FTB任务 (FTB Quests) - Fabric|849746
texfix|材质修复 (TexFix)|771588
mapmakers-gadgets|地图作者小帮手 (Mapmaker's Gadgets)
-travellers-gear|旅者之器 (Traveller's Gear)
+
ceramics|陶瓷器*
slashblade-japanese-addon-pack|拔刀剑日系附属包 (SlashBlade Japanese Addon Pack)|1230741
@@ -1538,7 +1538,7 @@ just-enough-energistics-jee
ironman|钢铁侠 (IronMan)
chunk-animator|区块加载动画*
craftstudio-api
-
+travellers-gear|旅者之器 (Traveller's Gear)
fisks-superheroes-2|菲斯克的超级英雄 (Fisk's Superheroes)|806138
aiot-botania|植物魔法全能工具 (AIOT Botania)
@@ -1744,7 +1744,7 @@ giacomos-fishing-net
the-hospital-mod|医院Mod*|873210¨hospital-mod-facilities-pack|医院Mod (The Hospital Mod) - 设施包1.12.2|873210¨hospital-mod-theatres-pack|医院Mod (The Hospital Mod) - 墙壁和地板包1.12.2|873210¨hospital-mod-pharmacy-pack|医院Mod (The Hospital Mod) - 药房设施包1.12.2,1.14.4|873210
more-charcoal|更多木炭*
born-in-a-barn
-
+aqua-acrobatics|水游技艺*
better-animations-collection@|更好的动物动作*
quality-tools|工具品质*
@@ -1753,7 +1753,7 @@ pollutant-pump|污染泵*
infinite-pollution-filter|无限污染过滤器*
jei-hider
fastflyblockbreaking|飞行速破 (Fast Fly Block Breaking)
-
+exhausted-stamina|竭力攻击*
planttech-2|植物科技2 (PlantTech 2)|905616
toast-control|消息框控制*
@@ -1774,7 +1774,7 @@ up-and-down-and-all-around|颠倒世界*
lost-souls@|失落的灵魂*
intelligent-energistics|智能能源*
ender-compass|末影指南针*|785069
-
+ic2-tweaker
thaumic-gadgets|神秘宝具*
multi-mine|多人开采*
extra-foam-for-liteloader|Liteloader修复 (Extra Foam For LiteLoader)|982739
@@ -1797,7 +1797,7 @@ touhou-little-maid|车万女仆*|882845
eureka
lazy-ae2|懒人AE2 (Lazy AE2)
-
+libnine
equaldragons
berries
infinity-gauntlet-mod|无限手套 (Infinity Gauntlet)
@@ -1810,7 +1810,7 @@ the-ultimate-dimension|究极次元*|885906
advanced-mortars|更好的研钵*
crafttweaker-utils
-
+atum|阿图姆:沙漠之旅/亚图姆:金沙之旅 (Atum 2: Return to the Sands)|1207987
fps-reducer|FPS减速器 (FPS Reducer)
freelook|自由视角 (FreeLook)
@@ -1930,7 +1930,7 @@ damage-control|伤害控制*
prestige|成就点*
yukarilib
-energy-converters|能量桥接器*
+
signpost|路标*
diagonal-panes|对角线玻璃板*
forgelin
@@ -2094,7 +2094,7 @@ healing-campfire|治愈营火* - Forge¨healing-campfire-fabric|治愈营火 (He
jetif|物品丢入流体 (Just Enough Throwing In Fluids)
rftools-base@|RF工具:基础 (RFTools Base)
flopper|流体漏斗*
-exhausted-stamina|竭力攻击*
+
staminaplus|耐力值 (StaminaPlus)
enhanced-armaments|增强装备*|898546
spatialcompat|空间兼容 (SpatialCompat)
@@ -2284,7 +2284,7 @@ mahou-tsukai@|魔法使*|929252
moar-tinkers
baubley-heart-canisters|心之容器*|795294
jaopcasingularities|JAOPCA的奇点 (JAOPCA Singularities)|958964
-
+energy-converters|能量桥接器*
@@ -2301,8 +2301,8 @@ incorporeal|幻想多媒体*
amun-ra
mysterious-mountain-lib|妖怪之山通用库 (MysteriousMountainLib)
-
-
+loottweaker
+rediscovered|特性重现*|359096
kitchen-mod|厨房 (The Kitchen Mod)|295019
baubles-reborn|饰品栏重置版*
@@ -2322,7 +2322,7 @@ spartan-and-fire|斯巴达之冰与火 (Spartan and Fire)
beacons-for-all¨beacons-for-all-fabric¨@beacons-for-all
more-flowers|更多功能花*
-
+enchanting-with-thaumcraft|神秘附魔学*
buzzier-bees
lollipop|棒棒糖*
@@ -2331,7 +2331,7 @@ thaumic-restoration|神秘复辟*
primal-boat|原始船舶*
-
+eyes-in-the-darkness
thaumic-augmentation|神秘进阶*|1063250
lost-magic|失落的魔法*
thaumic-arcana
@@ -2441,7 +2441,7 @@ gottschcore
not-enough-crashes|崩溃优化* - Fabric|1097535¨not-enough-crashes-forge|崩溃优化 (Not Enough Crashes) - Forge|1097535¨@notenoughcrashes|崩溃优化 (Not Enough Crashes)|1097535
crash-to-main-menu|崩溃返回主菜单*
tinkers-jei
-loottweaker
+
better-questing-quest-book|更好的任务-任务书 (Better Questing - Quest Book)
engineers-doors|工程师的门 (Engineer's Doors)
tps-generator|TPS发电机 (TPS Generator)
@@ -2464,7 +2464,7 @@ moddirector
function-api
targetingapi
re-targetingapi
-libnine
+
dominionlib
endergetic|末地拓展 (The Endergetic Expansion)
@@ -2554,7 +2554,7 @@ bloomful
pick-pocketer|扒手*
terraforged||1157666
rad-metabolosis
-mmd-orespawn
+
tragicmc3|悲惨世界3 (TragicMC 3)|1233212
not-enough-rtgs|更多RTG (Not Enough RTGs)
@@ -2723,7 +2723,7 @@ nocurse|不诅咒 (NoCurse)|1066483
pretty-beaches||1113121¨pretty-beaches-fabric||1113121
qing_gong|轻功 (qing_gong)|1065957
remnants|腐败*
-rediscovered|特性重现*|359096
+
pane-in-the-glass
dynamic-dynamos|能源炉动画*
trophy-slots
@@ -2784,7 +2784,7 @@ mekanism-fluxified|“通量”机械*
stepup|平滑自动上坡 (StepUp)
@sodium|钠 (Sodium)|1079347¨sodium|钠*|1079347
-netherlicious||1104913
+
yungs-better-mineshafts-forge|YUNG的矿井优化 (YUNG's Better Mineshafts) - Forge¨yungs-better-mineshafts-fabric|YUNG的矿井优化 (YUNG's Better Mineshafts) - Fabric¨@yungs-better-mineshafts|YUNG的矿井优化 (YUNG's Better Mineshafts)
terrible-chest|可怕的箱子/可怖箱子*|922554
spartan-shields|斯巴达之盾*|672959
@@ -2819,7 +2819,7 @@ crash-utilities
eldritch-mobs
farmers-delight@|农夫乐事 (Farmer's Delight) - Forge¨farmers-delight-fabric@|农夫乐事 (Farmer's Delight) - Fabric
artifacts|奇异饰品* - Forge¨artifacts-fabric|奇异饰品 (Artifacts) - Fabric¨@artifacts|奇异饰品 (Artifacts)
-mechanized-steam-power|机械化蒸汽动力*
+
dynamictreestfc|动态的树:群峦传说附属 (Dynamic Trees-TFC)
dynamic-trees-the-twilight-forest|动态的树:暮色森林附属 (Dynamic Trees-The Twilight Forest)
@@ -2843,7 +2843,7 @@ survival-utilities|生存工具*
slashblade|拔刀剑 (SlashBlade)|726664
portal-blocks-2-0|传送门方块 (Portal Blocks)|1077770
slimecraft-add-tools-etc
-
+mechanized-steam-power|机械化蒸汽动力*
moreswordonline|动漫神域 (SwordCraftOnline)
camera-mod|照相机*|1162901
heartdrops|生命汲取 (Heart Drops)
@@ -2860,7 +2860,7 @@ project-red-illumination|红石计划:照明 (Project Red - Illumination)¨pro
project-red-world|红石计划:探索 (Project Red - World)
project-red-compat|红石计划:兼容性 (Project Red - Compat)
canvas-renderer|Canvas渲染器*|1211675¨@canvas|Canvas渲染器 (Canvas Renderer)|1211675
-
+custom-main-menu|自定义主菜单*|769607
coolfood|冷饮 (CoolFood)
infinitevillagertrading@|无限村民交易 (InfiniteVillagerTrading)
infinite-trading|无限交易* - Forge¨infinite-trading-fabric|无限交易 (Infinite Trading) - Fabric¨@infinite-trading|无限交易 (Infinite Trading)
@@ -2908,7 +2908,7 @@ drcyanos-lootable-bodies|可拾取尸体 (DrCyano's Lootable Bodies)|406482
simply-cats
pams-harvestcraft-2-crops|潘马斯农场2 - 作物 (Pam's HarvestCraft 2 - Crops)|1000336
base-metals|基础金属*
-
+mmd-orespawn
mmdlib
just-poop-mod|屎! (Poop Mod!)
costumes|服装*
@@ -2932,7 +2932,7 @@ pams-harvestcraft-2-food-extended|潘马斯农场2 - 食物拓展 (Pam's Harvest
pams-harvestcraft-2-trees|潘马斯农场2 - 果树 (Pam's HarvestCraft 2 - Trees)|1000336
minecart-direction-follow¨better-minecart-rotation-forge
modern-metals|现代金属*
-
+block-renderer¨blockrenderer
blockus
conjurers-cookbook
color-unchained
@@ -2955,7 +2955,7 @@ lambdynamiclights@|Lambda的动态光源 (LambDynamicLights)|1082100
realistic-torches|真实火把*|566201
durability-viewer|耐久显示器*|1086168
-
+netherlicious||1104913
ground-item-highlighting|地面物品高光显示*|1084931
@@ -2976,7 +2976,7 @@ packagedexcrafting|封包合成拓展 (PackagedExCrafting)
compactstorage|紧凑存储 (compactstorage)
useful-backpacks|实用背包*
-@conquest-reforged|征服者 (ConquestReforged)|1431287
+conquest-reforged|征服者 (ConquestReforged)|1431287
steelseries-gamesense
pizzaatimes-timber-mod
tellme
@@ -3059,7 +3059,7 @@ entity-culling|实体渲染机制优化*
hammerandvil|锻造锤与锤锻台 (HammerAndVil)
simply-backpacks|简易背包*
-@mermod
+mermod-fabric¨mermod-forge|Mermod / Mermaid Tail Mod - 1.19.2~1.18.2 Forge版本
better-placement|更好的放置*|730136
fat-cat|大资本家*
waystones2waypoints|传送石碑路径点 (Waystones2Waypoints)
@@ -3143,7 +3143,7 @@ demagnetize|消磁*
-
+controlling|键位冲突显示* - Forge/Fabric版|713187¨controlling-for-fabric|键位冲突显示 (Controlling) - Fabric|713187
cinderscapes|余烬奇景*
tfc-homestead
tfctinkers|群峦与匠魂 (TFC Tinkers)
@@ -3190,7 +3190,7 @@ ambience-extras|环境音乐:附加 (Ambience - Extras)
additions-mod
extracpus|更多CPU (Extra CPUs)
extra-crafting-storage
-conquest-reforged|征服者 (ConquestReforged)|1431287
+@conquest-reforged|征服者 (ConquestReforged)|1431287
underground-city-engineering@|地下城市工程*|943842
essentials
soul-shards-respawn
@@ -3246,7 +3246,7 @@ randompatches-integration
bubble-column-elevator-backport|1.13水域机制 (1.13 Water Mechanics)
basic-nether-ores|基础下界矿石*|1136294
nuclearcraft-reactor-builder|核电工艺反应堆建造机 (NuclearCraft Reactor Builder)
-pams-harvestcraft-2-food-core|潘马斯农场2 - 食物核心 (Pam's HarvestCraft 2 - Food Core)|1000336
+pams-harvestcraft-2-food-core|潘马斯农场2 - 食物核心 (Pam's HarvestCraft 2 - Food Core)|1313245
eki-lib
nodami|伤害免疫机制移除 (No Damage Immunity)
@@ -3265,7 +3265,7 @@ devtech|GTCEu-CrT开发套件*
jurassic-world-reborn-mod|侏罗纪世界重生*
cardboard@
-enchanting-with-thaumcraft|神秘附魔学*
+
crimson-revelations|血腥启示 (Crimson Revelation)
environmental-core@
bigger-crafting-tables
@@ -3303,7 +3303,7 @@ suspended-server|挂起服务器*
starlight@|星光* - Fabric|1216316¨starlight-forge@|星光 (Starlight) - Forge|1216316
research-table|研究台 🔬 (Research Table 🔬)|871188
shoulder-surfing-reloaded|越肩视角重制*|985499
-aqua-acrobatics|水游技艺*
+
silents-mechanisms|寂静机械 (Silent Mechanisms)
project-potman|背锅人计划 (ProjectPotman)
nbt-crafting@|数据包NBT合并*
@@ -3358,7 +3358,7 @@ vanilla-hammers|原版材质锤* - Fabric¨vanilla-hammers-forge|原版材质锤
imblocker|输入法冲突修复 (IMBlocker)|935619
hardcore-map-reset
tfc-aged-drinks|群峦陈酿 (TFC Aged Drinks)
-buildcraft-rf
+
youtubers-lucky-blocks|Youtuber的幸运方块 (Youtuber's Lucky Blocks)
wandering-trapper|流浪猎人*
chocolate-fix
@@ -3757,7 +3757,7 @@ loading-timer@|加载时长显示*
ocrocketry
chime-fabric@chime
witherite@|凋灵合金*
-mermod-fabric¨mermaid-tail-mod|人鱼尾*¨mermod-forge|Mermod / Mermaid Tail Mod - 1.19.2~1.18.2 Forge版本
+mermaid-tail-mod|人鱼尾*¨@mermod
astromine-core|天体矿工:核心 (Astromine: Core)
dungeondq
dynamic-trees-integrated-dynamics|动态的树:动态联合/集成动力附属 (Dynamic Trees - Integrated Dynamics)
@@ -4085,7 +4085,7 @@ ticktock@servertick
fps-reducre-for-fabric|FPS减速器(Fabric) (FPS Reducer (For Fabric))
art-artillery|艺术?火炮! (Art? Artillery!)
-minemenufabric@|我的菜单 Fabric 版 (MineMenuFabric)
+minemenu-refabricated@minemenufabric|我的菜单 Fabric 版 (MineMenuFabric)
@tabtps
@afkpeace¨afkpeace
@@ -4099,7 +4099,7 @@ searchable-containers|可搜索容器*
integrated-additions|集成扩展*
-matchlock-guns|火绳枪*
+
fabric-autoswitch@autoswitch|自动切换工具 (AutoSwitch)
inventory-profiles-next@|一键背包整理Next*
drill|钻头*
@@ -4112,7 +4112,7 @@ village-employment|村庄就业*
deathlog@|死亡日志*
automatic-elytra|自动鞘翅*
-axolotl-bucket-fix|美西螈桶修复*
+
xks-decoration|XK的装饰 (XK's Deco)|1214362
endgame-materials-addons|更多终局材料*
ravage-and-cabbage
@@ -4556,7 +4556,7 @@ multi-world
terralith¨@terralith
overworld-two¨overworld-two-forge
-xl-packets|XL数据包 (XL Packets) - Forge¨xl-packets-fabric|XL数据包 (XL Packets) - Fabric
+
rftools-storage@|RF工具:存储 (RFTools Storage)
rftools-builder@|RF工具:建造机 (RFTools Builder)
@@ -4604,7 +4604,7 @@ morevanillaarmor|更多原版盔甲 (MoreVanillaArmor)
eternal-tales@
oh-the-biomes-youll-go-fixes|“你将去的生物群系”修复模组 (Oh The Biomes You'll Go Fixes)
wild-world
-eyes-in-the-darkness
+
miskatonic-mysteries¨miskatonic-mysteries-legacy|Miskatonic Mysteries - Forge,未完成且已停更
harvesters-night|收割者之夜 (Harvester's Night)
slotlock@|锁定槽 (SlotLock)
@@ -4963,7 +4963,7 @@ one-block-forge
human-reborn
@addadd|额外扩展 (Additional Additions)|1427321¨additional-additions|额外扩展* - Fabric|1427321¨additional-additions-forge|额外扩展 (Additional Additions) - Forge|1427321
earlygame@
-
+happiness-is-a-warm-gun@
kvc-blocks|蛋挞君的原版补全方块篇 (KVCBlocks)|1239534
enigtech2-util
@@ -5581,7 +5581,7 @@ radium-reforged|镭*
backpackmod@
untamedwilds|不羁野性 (Untamed Wilds)|1211422
-
+advancements-tracker@|进度追踪器概览 (Advancements Tracker and Overview)
no-null-processors
ma-enchants|Ma 附魔*
@@ -5952,7 +5952,7 @@ fabricskyboxes@
@fvt
blue_skies_tcon
tdv-tweaks
-ic2-tweaker
+
picture-in-picture-pip
guilt-trip
parcool|跑酷! (ParCool!)
@@ -6659,7 +6659,7 @@ astemirs-fireflies
ender-crop¨@ender-crop
modupdater
fivehead
-
+axolotl-bucket-fix|美西螈桶修复*
attained-drops|可种植掉落物*
attained-drops-2|可种植掉落物2*
@@ -6823,7 +6823,7 @@ dumplings-delight@|饺子乐事*
thermal_extra
nether-sky-block@|下界空岛*
arte-magicum
-
+tinkers-craft|工匠创意 (Tinkers' Craft)
ocean-blender|海洋搅拌机 (OceanBlender)
buildcraft-fluxified
brewin-and-chewin|饮酒作乐 (Brewin' And Chewin')
@@ -7815,7 +7815,7 @@ advancedshader|光影前向兼容 (AdvancedShader)
the-wools|羊毛! (The Wools!)¨@the-wools|羊毛! (The Wools!)
fabric-enchantments
glued
-tinkers-craft|工匠创意 (Tinkers' Craft)
+
tinker-leveling
gtce-tj-edition|格雷科技社区版:TJ版 (GregTech Community Edition: TJ Edition)
upc
@@ -8090,7 +8090,7 @@ mob-catcher
guns-rpg-waystone-addon
biospheres-fabric|现代生物圈 (Modern Biospheres)
-better-snowball-fight-2@better-snowball-fight|更好的打雪仗 (Better Snowball Fight)|1323495
+better-snowball-fight-2@better-snowball-fight|更好的打雪仗 (Better Snowball Fight)|1396154
feathers
brb@|更好的配方书 (Better Recipe Book)
boatoverhaul-forge|行船机制修改 (Boat Overhaul) - Forge¨boatoverhaul-fabric|行船机制修改 (Boat Overhaul) - Fabric
@@ -8833,7 +8833,7 @@ kubejs-offline|KubeJS离线文档 (KubeJS Offline Documentation)
-advancements-tracker@|进度追踪器概览 (Advancements Tracker and Overview)
+
memory-settings|内存设置*
tiny-item-animations@
more-plates-revamped@|更多金属板重置版*
@@ -9078,7 +9078,7 @@ commandspy
slimyfloor
daily-dad@|每日冷笑话*¨daily-dad-server@|每日冷笑话 (Daily Dad) - Daily Dad - Server
good-ending
-
+xl-packets|XL数据包 (XL Packets) - Forge¨xl-packets-fabric|XL数据包 (XL Packets) - Fabric
creeper-nuggets
coherent-villages
@@ -9960,7 +9960,7 @@ enderio-unofficial|末影接口非官方版 (EnderIO Unofficial)
dimensional-gravity
-happiness-is-a-warm-gun@
+
bring-color-to-my-skies
portal-dungeons
@@ -10571,7 +10571,7 @@ warrior-rage@
pokefood
armor-souls-reforged
-
+matchlock-guns|火绳枪*
@the-aether-redux|天境:新生代 (The Aether: Redux)
@banner||1447687
staaaaaaaaaaaack@
@@ -11197,4 +11197,377 @@ hunger-reworked
armor-status-hud-renewed|耐久信息显示:重生 (Armor Status HUD Renewed)
boblib
placeable-mobs
-potion-blender
\ No newline at end of file
+potion-blender
+t6-auto-attack-mod@t6-auto-attack
+forceasciifont-backport
+@vmupdate|VM汉化更新 (VMTranslationUpdate)
+trample-no-more@
+
+directional-damage-indicator
+
+digs-dnd-origins
+superior-flat
+fungal-infection-spore
+@easy-tweak
+
+netherless-quartz
+@maple-api
+@reforged-fabric-api
+caffeinated
+buildcraft-rf
+gilded-ingot
+chatpatches@|聊天补丁 (Chat Patches)
+@burning-furnace
+shadowizardlib@
+ants-unleashed
+@seaborgium
+gold-fish
+pipeplus@
+
+
+deuf-refabricated
+
+runic-items@
+twist|诡变*
+@serverlistbufferfixer
+oil-refinery
+themangonewadvent
+@worthy-food
+
+
+better-nether-continuation|更好的下界延续 (BetterNether Continuing)
+stygian-end-continuation|末地:生物群系扩展延续*
+skill-slots¨skill-slots-fabric
+novam-terram-continuation
+@jade-feet|玉足 (Jade Feet)
+
+cutting-edge
+xp-from-harvest-forked
+
+
+mob-options
+mod-sets@|模组集*
+
+
+hold-that-chunk@
+dark-matter@
+@steal_dogs|偷狗 (Steal Dogs)
+@faster-random
+
+
+simply-steel-continued@
+simple-corinthium
+chidori-origins-collection
+enhancedp2p|增强的P2P (EnhancedP2P)
+custom-de-upgrade-recipes|自定义 DE 升级配方 (Custom DE Upgrade Recipes)
+mode-switch
+better-clouds-forge
+@better-clouds
+@easymapdownload
+
+client-crafting
+anvil-repairing@
+headcrabs
+kubejs-industrial-foregoing
+
+recipe-book-delight@|配方书乐事*
+chest-hoppers
+@gravy-delight
+@ubes-delight
+torcherino-unofficial
+more-bows-and-arrows
+xp-shop
+acclaimed-origins@
+replanter
+zombie-infection-vaccine
+simple-achievements
+achievement-books
+
+invocore-utility-mod
+saljus-quill
+
+derelict
+@charged-charms
+custom-villagers|自定义村民*
+turtlematic
+remove-base-origins
+@cobblemon-delights|方块宝可梦乐事 (Cobblemon Delights)
+redirectionor|异引定址*
+villager-mantle-fix|村民帽子修复*
+rechiseled-create@
+xaeroplus@|Xaero的地图增强 (XaeroPlus)
+cosmetic-nametags@
+thirdlife-rts@
+@real-peaceful-mode|真正的和平模式 (Real Peaceful Mode)
+niftyblocks
+elfs-dark-dimension
+xaeros-minimap-world-map-waystones-compability
+jagms-kiwis@
+@masaadditions
+@improved-trident-enchantments
+mystic-bows
+forgiving-world
+@skillcloaks
+swordinthestone@
+lazy-ae2-patch|懒人AE2补丁 (Lazy AE2 Patch)
+
+yamato-gun-mod@yamato-gun
+
+ars-mage-fight
+
+epicfight-pirates
+kubejs-entity-events-extension
+mc-dungeons-enchantments@
+rei-custom-command
+copperative@|铜心协力*
+growable-storage-cells
+growable-cells-2
+cinchcraft
+day-counter@ag-day-counter
+
+
+
+sculk-redstone-components@sculkredstonecomponents
+toggle-enchantments
+unbreakable-enchantment-forge@unbreakable-enchantment
+immersive-portal-gun@portal-gun|沉浸式传送枪*
+tac-craft-tactical-armor-pack
+@flexible-arms|灵巧双手 (Flexible Arms)
+boat-tweaks
+@effect-descriptions
+@diagonal-windows
+
+illager-invasion@
+
+
+@touhou-origins-blessings
+
+altorigingui@
+dynamic-trees-pams-harvestcraft-2
+dynamic-trees-hexerei
+@minium-stone
+
+@fastrtp
+@tech-decorators|科技装饰商 (Tech Decorators)
+dynamic-trees-ars-nouveau
+
+@kazzmons-magecraft
+@metal-bundles
+
+
+
+
+
+cute-kiwi-birds-new-animal
+moremobheads
+@ouchies
+@traditional-asphalt
+@thaumic_boots
+carpeted-stairs@
+just-enough-archaeology
+bedrock_world
+
+@world-preview
+
+the-five-nights-at-freddys-mod@the-five-nights-at-freddys-mod#all-versions|玩具熊的五夜后宫 (The Five Nights at Freddy's Mod)
+easylan@|自定义LAN局域网联机服务器 (EasyLAN)
+pelagic-prehistory
+@minerally
+better-jukeboxes
+patboxs-brewery@brewery
+
+stackable-stew-and-soup
+mindful-darkness@
+@sbet
+nature-arise@
+
+more-beautiful-torches
+quality-crops
+@individual-keep-inventory
+permanent-sponges@
+hang-glider@
+@auto-twerk
+block-beams@
+adorabuild-structures
+
+moogs-end-structures
+@brew-guide
+@oneclickcrafting
+@genshin-ui
+fenomena-structures@phenomena-structures
+first-join-message
+expansive-weaponry
+wabi-sabi-structures-forge¨wabi-sabi-structures-fabric
+@jobsaddon
+@partyaddon
+
+loading-backgrounds
+cuisine-delight@|料理乐事*
+iron-bookshelves@
+@dimensional-expansion
+danger-close
+hardcore-wither
+get-off-my-lawn-reserved@goml-reserved
+
+dangerousstonecutter@
+normal-damage
+
+crabbers-delight
+slot-cycler
+resource-pack-overrides@
+
+arcane-lanterns
+
+@crashma
+
+blackwolf-library¨blackwolf-library-fabric
+blues-scape-and-run-bosses
+gigeresque
+lookaround
+projectileimmunityfix
+@betterzoom
+@player-visibility
+bag-of-holding-forge@bag-of-holding
+
+
+
+fish-of-thieves@
+qualitys-delight
+arrows-info
+godly-vampirism
+itemlocks
+pick-block-pro@|选择方块专业版*
+skin-and-bones
+@pet-armor
+
+@more-nugget|更多矿物粒 (More Nugget)
+dual-swords@
+organizable-play-screens@
+labelling-containers@
+inventory-pause-forge@
+ready-player-fun
+condensed-creative@
+leaves-us-in-peace@
+yellow-snow@
+no-tnt-griefing@
+monster-plus
+ilmusu-enchantments@ilmusuenchantments
+
+desired-servers@
+attributizer@
+reactive@
+simple-deepslate
+minunrpg
+more-sheep-wools
+maturi-delight@
+
+forgified-fabric-api@
+artisanat
+devmode
+better-trims@bettertrims
+@doggo-mod-overhauled
+traders-nightmare
+command-block-ide@
+
+green-thing-mod
+lmft@
+peripheralium@
+@resource-switcher|资源切换器 (ResourceSwitcher)|1460184
+
+clutter@
+no-enchantment-cap-1-12-2-backport
+
+dimension-viewer@
+@more-food|更多食物 (More Food)
+tfcgyres-orehints
+badstdout@
+
+multiworld-mod
+miaooo
+pipeblocker@
+moa-decor-lights
+craft-saddles-forge-1-16-5
+
+@elytra-fix
+@ho-library
+
+riskofrainmod|雨中冒险 (Risk of Rain Mod)
+
+baddie-mobs-uwu
+beacons-revisioned
+silence-mobs@
+
+utilitix@
+
+tiny-coal@
+replay-mod-for-forge-reborn
+flib
+
+copper-revisioned
+
+fine-tuned-calibration@finetunedcalibration
+third-person-maps@
+carpet-minitweaks@minitweaks
+
+time-in-a-bottle-forge
+seared-ladder-backport@seared-ladder-(backport)
+wall-jumped@
+red-core@
+
+record-days-survived@
+veinminer-companion
+
+@leashable-players
+snowballs-freeze-mobs@
+guinea-pigs
+
+
+vault-research
+the-chaser
+bandaging
+enchanted-charms
+@nether-api
+mother-silverfish
+
+
+little-botanics
+ex-pattern-provider
+@integrated-circuit
+creative-disk
+engineers-construct
+@botools|假人映射 (Botools)
+witch-mobility
+gravestones-die-classy||530045
+
+
+
+@pebbles-begone
+eternal-eats
+zombiegame|僵尸游戏 (Zombie Game)
+effect-overhaul
+
+
+eidolon-patches
+fruity-random-teleport|紫颂果味随机传送*
+pipe-master-2000|管道专家 2000 (Pipe Master 2000 / Pipe Googles)
+@command-macros|命令宏 (Command Macros)
+@shwetro|上海地铁装饰组件 (The Shanghai Wetro Mod)
+
+tactical-aid|战术医疗*
+@clear-enchanting
+fishing-bobber-detector
+
+create-balanced-flight
+brewin-and-chewin-remastered
+cupboard
+mcinstance-loader@
+pre-fish-feed|打窝*
+armor-trim-item-fix@
+waffles-moss
+delightful-cuisine-for-woodheads
+towers-of-the-wild-modded|旷野之息高塔:再重制 (Towers of the Wild Modded)
+
+waffles-terracotta-plaster
+watermedia@
+@inverse-phantoms
+@cactus-storage
\ No newline at end of file