games/prismlauncher: New port: Minecraft launcher with ability to manage multiple instances

A custom launcher for Minecraft that allows you to easily manage
multiple installations of Minecraft at once. (Fork of MultiMC)

https://prismlauncher.org

Differential Revision:	https://reviews.freebsd.org/D44661
This commit is contained in:
Alexander Vereeken 2024-09-09 21:00:06 +03:00 committed by Vladimir Druzenko
parent 5b3354a080
commit cfd09d6e9d
11 changed files with 154 additions and 0 deletions

View file

@ -790,6 +790,7 @@
SUBDIR += prboom
SUBDIR += prboom-plus
SUBDIR += primateplunge
SUBDIR += prismlauncher
SUBDIR += puckman
SUBDIR += punchy
SUBDIR += pvpgn

View file

@ -0,0 +1,35 @@
PORTNAME= prismlauncher
DISTVERSION= 8.4
CATEGORIES= games java
MAINTAINER= Alexander88207@protonmail.com
COMMENT= Minecraft launcher with ability to manage multiple instances
WWW= https://prismlauncher.org/
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/COPYING.md
LIB_DEPENDS= libcmark.so:textproc/cmark \
libquazip1-qt6.so:archivers/quazip@qt6 \
libtomlplusplus.so:devel/tomlplusplus
RUN_DEPENDS= lwjgl>0:games/lwjgl \
lwjgl3>0:games/lwjgl3 \
openjdk21>0:java/openjdk21 \
xrandr:x11/xrandr
USES= cmake compiler:c++17-lang desktop-file-utils gl kde:6 qt:6 \
shared-mime-info
USE_GITHUB= yes
GH_ACCOUNT= PrismLauncher
GH_PROJECT= ${GH_ACCOUNT}
GH_TUPLE= gulrak:filesystem:2fc4b463:filesystem/libraries/filesystem \
PrismLauncher:libnbtplusplus:23b95512:libnbtplusplus/libraries/libnbtplusplus
USE_GL= opengl
USE_JAVA= yes
USE_KDE= ecm:build
USE_QT= 5compat base
CMAKE_ARGS= -DJAVA_HOME=${JAVA_HOME} -DJava_JAVAC_EXECUTABLE=${JAVAC} \
-DLauncher_BUILD_PLATFORM=FreeBSD
.include <bsd.port.mk>

View file

@ -0,0 +1,7 @@
TIMESTAMP = 1725714249
SHA256 (PrismLauncher-PrismLauncher-8.4_GH0.tar.gz) = e3268a787d326c7c71f63093a2b411d6735c07b3751b426db6d50a0386311c76
SIZE (PrismLauncher-PrismLauncher-8.4_GH0.tar.gz) = 4397390
SHA256 (gulrak-filesystem-2fc4b463_GH0.tar.gz) = 270eead1276da3af72e6f1c5b819d0b2a7b24ddc3e4e7a1a0b69ffba8d07228f
SIZE (gulrak-filesystem-2fc4b463_GH0.tar.gz) = 211853
SHA256 (PrismLauncher-libnbtplusplus-23b95512_GH0.tar.gz) = 4393bc210d2025029fc364d761d339c88223a3cdd03b401ebee58d5e3cddb4dc
SIZE (PrismLauncher-libnbtplusplus-23b95512_GH0.tar.gz) = 48603

View file

@ -0,0 +1,18 @@
# Patch taken from er2off: https://github.com/er2off/freebsd-ports
--- launcher/minecraft/LaunchProfile.cpp.orig 2023-11-27 12:45:04 UTC
+++ launcher/minecraft/LaunchProfile.cpp
@@ -344,6 +344,14 @@ void LaunchProfile::getLibraryFiles(const RuntimeConte
jars.clear();
nativeJars.clear();
for (auto lib : getLibraries()) {
+#ifdef Q_OS_FREEBSD
+ // HACKHACK: use system lwjgl3 until mojang will fix it
+ QString artifact = lib->artifactId();
+ if (artifact.startsWith("lwjgl") && lib->version().startsWith("3.")) {
+ jars += "/usr/local/share/java/classes/lwjgl3/" + artifact + ".jar";
+ continue;
+ }
+#endif
lib->getApplicableFiles(runtimeContext, jars, nativeJars, native32, native64, overridePath);
}
// NOTE: order is important here, add main jar last to the lists

View file

@ -0,0 +1,20 @@
# Patch taken from er2off: https://github.com/er2off/freebsd-ports
--- launcher/minecraft/MinecraftInstance.cpp.orig 2023-11-27 12:44:40 UTC
+++ launcher/minecraft/MinecraftInstance.cpp
@@ -305,7 +305,16 @@ QString MinecraftInstance::getNativePath() const
QString MinecraftInstance::getNativePath() const
{
+#ifdef Q_OS_FREEBSD
+ Version instance_ver{ getPackProfile()->getComponentVersion("net.minecraft") };
+ QDir natives_dir;
+ if (instance_ver < Version("1.13.0"))
+ natives_dir = QDir("/usr/local/lib/lwjgl/");
+ else
+ natives_dir = QDir("/usr/local/lib/lwjgl3/");
+#else
QDir natives_dir(FS::PathCombine(instanceRoot(), "natives/"));
+#endif
return natives_dir.absolutePath();
}

View file

@ -0,0 +1,19 @@
# Patch taken from er2off: https://github.com/er2off/freebsd-ports
--- launcher/ui/pages/global/AccountListPage.cpp.orig 2024-03-03 19:37:21 UTC
+++ launcher/ui/pages/global/AccountListPage.cpp
@@ -147,6 +147,7 @@ void AccountListPage::on_actionAddOffline_triggered()
void AccountListPage::on_actionAddOffline_triggered()
{
+#ifdef NO_OFFLINE
if (!m_accounts->anyAccountIsValid()) {
QMessageBox::warning(this, tr("Error"),
tr("You must add a Microsoft account that owns Minecraft before you can add an offline account."
@@ -154,6 +155,7 @@ void AccountListPage::on_actionAddOffline_triggered()
"If you have lost your account you can contact Microsoft for support."));
return;
}
+#endif
MinecraftAccountPtr account =
OfflineLoginDialog::newAccount(this, tr("Please enter your desired username to add your offline account."));

View file

@ -0,0 +1,11 @@
--- libraries/javacheck/CMakeLists.txt.orig 2024-06-18 18:07:06 UTC
+++ libraries/javacheck/CMakeLists.txt
@@ -4,7 +4,7 @@ set(CMAKE_JAVA_JAR_ENTRY_POINT JavaCheck)
include(UseJava)
set(CMAKE_JAVA_JAR_ENTRY_POINT JavaCheck)
-set(CMAKE_JAVA_COMPILE_FLAGS -target 7 -source 7 -Xlint:deprecation -Xlint:unchecked)
+set(CMAKE_JAVA_COMPILE_FLAGS -target 8 -source 8 -Xlint:deprecation -Xlint:unchecked)
set(SRC
JavaCheck.java

View file

@ -0,0 +1,11 @@
--- libraries/launcher/CMakeLists.txt.orig 2024-06-18 18:07:06 UTC
+++ libraries/launcher/CMakeLists.txt
@@ -4,7 +4,7 @@ set(CMAKE_JAVA_JAR_ENTRY_POINT org.prismlauncher.Entry
include(UseJava)
set(CMAKE_JAVA_JAR_ENTRY_POINT org.prismlauncher.EntryPoint)
-set(CMAKE_JAVA_COMPILE_FLAGS -target 7 -source 7)
+set(CMAKE_JAVA_COMPILE_FLAGS -target 8 -source 8)
set(SRC
org/prismlauncher/EntryPoint.java

View file

@ -0,0 +1,2 @@
A custom launcher for Minecraft that allows you to easily manage
multiple installations of Minecraft at once. (Fork of MultiMC)

View file

@ -0,0 +1,20 @@
[
{
message: <<EOM
NVIDIA users have probably to add the following to the
environment variables section:
LD_LIBMAP libGLX.so libGL-NVIDIA.so
libGLX.so.0 libGL-NVIDIA.so.1
For older cards that dont support OpenGL 4
you have to add the following to the environment variables section:
MESA_GL_VERSION_OVERRIDE 3.2
MESA_GLSL_VERSION_OVERRIDE 330
Have Fun!
EOM
}
]

View file

@ -0,0 +1,10 @@
bin/prismlauncher
share/PrismLauncher/JavaCheck.jar
share/PrismLauncher/NewLaunch.jar
share/PrismLauncher/NewLaunchLegacy.jar
share/PrismLauncher/qtlogging.ini
share/applications/org.prismlauncher.PrismLauncher.desktop
share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg
share/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml
share/mime/packages/modrinth-mrpack-mime.xml
share/qlogging-categories6/prismlauncher.categories