This commit is contained in:
龙腾猫跃
2023-08-15 16:38:52 +08:00
parent e1e084aea3
commit 79778490d5
21 changed files with 753 additions and 231 deletions
@@ -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")
@@ -50,13 +50,31 @@
'触发点击事件
Private Sub Button_MouseUp(sender As Object, e As MouseButtonEventArgs) Handles Me.MouseLeftButtonUp
If IsMouseDown Then
If Not IsMouseDown Then Return
Log("[Control] 按下图标按钮" & If(String.IsNullOrEmpty(Name), "", ":" & Name))
RaiseEvent Click(sender, e)
e.Handled = True
Button_MouseUp()
End If
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
@@ -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
@@ -152,6 +152,7 @@
''' </summary>
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()
''' <summary>
''' 即将切换到其他页面,需要强制完成页面状态清理。
''' 需要立即切换至 Empty。
@@ -252,7 +252,7 @@
End If
Catch ex As Exception
Log(ex, "刷新按钮颜色出错")
Log(ex, "刷新单选按钮颜色出错")
End Try
End Sub
+7
View File
@@ -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
@@ -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
@@ -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)
@@ -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)
@@ -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 是快照版
Case 20
If McVersionCurrent.Version.McCodeSub <= 1 Then
PackFormat = 15
Case Else
PackFormat = 16
Else
PackFormat = 17
End If
Case Else '快照版是 99
PackFormat = 17
'https://minecraft.fandom.com/zh/wiki/数据包#数据包版本
End Select
McLaunchLog("正在构建自定义皮肤资源包,格式为:" & PackFormat)
@@ -1,7 +1,4 @@
Imports System.IO.Compression
Imports NAudio.Gui
Public Module ModMinecraft
Public Module ModMinecraft
#Region "文件夹"
@@ -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
+4 -4
View File
@@ -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()
+14 -14
View File
@@ -5,7 +5,7 @@
''' <summary>
''' 接下来要播放的音乐文件路径。未初始化时为 Nothing。
''' </summary>
Public MusicToplayList As List(Of String) = Nothing
Public MusicWaitingList As List(Of String) = Nothing
''' <summary>
''' 全部音乐文件路径。未初始化时为 Nothing。
''' </summary>
@@ -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 @@
''' </summary>
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 @@
''' 继续音乐播放,返回是否成功切换了状态。
''' </summary>
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
@@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices
' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
' 方法是按如下所示使用“*”
<Assembly: AssemblyVersion("2.6.4.0")>
<Assembly: AssemblyFileVersion("2.6.4.0")>
<Assembly: AssemblyVersion("2.6.5.0")>
<Assembly: AssemblyFileVersion("2.6.5.0")>
<Assembly: NeutralResourcesLanguage("")>
@@ -10,9 +10,12 @@
<StackPanel x:Name="PanCustom">
</StackPanel>
<local:MyCard Margin="0,0,0,15" Title="快照版提示" x:Name="PanHint">
<StackPanel Margin="25,40,23,12">
<TextBlock x:Name="LabHint1" TextWrapping="Wrap" Margin="0,0,0,2" />
<TextBlock x:Name="LabHint2" TextWrapping="Wrap" Margin="0,0,0,2" />
<local:MyIconButton LogoScale="1.1" Logo="F1 M2,0 L0,2 8,10 0,18 2,20 10,12 18,20 20,18 12,10 20,2 18,0 10,8 2,0Z"
Height="20" Margin="10" HorizontalAlignment="Right" VerticalAlignment="Top"
x:Name="BtnHintClose" />
<StackPanel Margin="25,38,23,15">
<TextBlock x:Name="LabHint1" TextWrapping="Wrap" Margin="0,0,0,2" FontSize="13.5" />
<TextBlock x:Name="LabHint2" TextWrapping="Wrap" Margin="0,0,0,2" FontSize="13.5" />
</StackPanel>
</local:MyCard>
<local:MyCard Margin="0,0,0,15" Title="启动日志" x:Name="PanLog">
@@ -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 "自定义主页"
''' <summary>
''' 刷新自定义的主页。返回是否成功。
''' 刷新自定义主页。
''' </summary>
Private Sub RefreshCustom()
If IsRefreshing Then
ShouldRefresh = True
Exit Sub
End If
Try
IsRefreshing = True
PanCustom.Children.Clear()
Private Sub Refresh() Handles Me.Loaded
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 = "<StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:PCL;assembly=Plain Craft Launcher 2"">" & FileContent & "</StackPanel>"
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, "主页自定义刷新")
SyncLock RefreshLock
RefreshReal()
End SyncLock
Catch ex As Exception
Log(ex, "加载 PCL 主页自定义信息失败", LogLevel.Msgbox)
IsRefreshing = False
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 = "
<local:MyCard Title=""你知道吗?"" Margin=""0,0,0,15"">
<TextBlock Margin=""25,38,23,15"" FontSize=""13.5"" IsHitTestVisible=""False"" Text=""{hint}"" TextWrapping=""Wrap"" Foreground=""{DynamicResource ColorBrush1}"" />
<local:MyIconButton Height=""22"" Width=""22"" Margin=""9"" VerticalAlignment=""Top"" HorizontalAlignment=""Right""
EventType=""刷新主页"" EventData=""/""
Logo=""M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z"" />
</local:MyCard>"
Case 1 '回声洞
Log("[Page] 主页预设:回声洞")
Content = "
<local:MyCard Title=""回声洞"" Margin=""0,0,0,15"">
<TextBlock Margin=""25,38,23,15"" FontSize=""13.5"" IsHitTestVisible=""False"" Text=""{cave}"" TextWrapping=""Wrap"" Foreground=""{DynamicResource ColorBrush1}"" />
<local:MyIconButton Height=""22"" Width=""22"" Margin=""9"" VerticalAlignment=""Top"" HorizontalAlignment=""Right""
EventType=""刷新主页"" EventData=""/""
Logo=""M875.52 148.48C783.36 56.32 655.36 0 512 0 291.84 0 107.52 138.24 30.72 332.8l122.88 46.08C204.8 230.4 348.16 128 512 128c107.52 0 199.68 40.96 271.36 112.64L640 384h384V0L875.52 148.48zM512 896c-107.52 0-199.68-40.96-271.36-112.64L384 640H0v384l148.48-148.48C240.64 967.68 368.64 1024 512 1024c220.16 0 404.48-138.24 481.28-332.8L870.4 645.12C819.2 793.6 675.84 896 512 896z"" />
</local:MyCard>"
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
'获取版本校验地址
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, $"联网下载自定义主页失败({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)
''' <summary>
''' 立即强制刷新自定义主页。
''' 必须在 UI 线程调用。
''' </summary>
Public Sub ForceRefresh()
Log("[Page] 要求强制刷新自定义主页")
ClearCache()
'实际的刷新
If FrmMain.PageCurrent.Page = FormMain.PageType.Launch Then
PanBack.ScrollToHome()
Refresh()
Else
FrmMain.PageChange(FormMain.PageType.Launch)
Init()
End If
End Sub
''' <summary>
''' 清空自定义主页缓存信息。
''' </summary>
Private Sub ClearCache()
LoadedContentHash = -1
OnlineLoader.Input = ""
Setup.Set("CacheSavedPageUrl", "")
Setup.Set("CacheSavedPageVersion", "")
Log("[Page] 已清空自定义主页缓存")
End Sub
''' <summary>
''' 从文本内容中加载自定义主页。
''' 必须在 UI 线程调用。
''' </summary>
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 = "<StackPanel xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:local=""clr-namespace:PCL;assembly=Plain Craft Launcher 2"">" & Content & "</StackPanel>"
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
@@ -213,7 +213,7 @@
</Grid>
</StackPanel>
</local:MyCard>
<local:MyCard Margin="0,0,0,15" Title="高级设置" IsSwaped="True" CanSwap="True">
<local:MyCard Margin="0,0,0,15" Title="高级启动选项" IsSwaped="True" CanSwap="True">
<Grid Margin="25,40,25,15">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Name" />
@@ -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
Binary file not shown.
+453 -80
View File
@@ -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@
@@ -11198,3 +11198,376 @@ armor-status-hud-renewed|耐久信息显示:重生 (Armor Status HUD Renewed)
boblib
placeable-mobs
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