Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2014 10:45:12 +0000 (UTC)
From:      John Marino <marino@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r358549 - in head/games/minecraft-client: . files
Message-ID:  <201406201045.s5KAjCop035927@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marino
Date: Fri Jun 20 10:45:11 2014
New Revision: 358549
URL: http://svnweb.freebsd.org/changeset/ports/358549
QAT: https://qat.redports.org/buildarchive/r358549/

Log:
  games/minecraft-client: Use OpenJDK8 to fix spawning problem
  
  PR:		189028
  Submitted by:	Sean Bruno
  Fix by:		Kris Moore

Added:
  head/games/minecraft-client/files/Notifer.java   (contents, props changed)
  head/games/minecraft-client/files/minecraft-runtime   (contents, props changed)
Modified:
  head/games/minecraft-client/Makefile
  head/games/minecraft-client/files/minecraft-client
  head/games/minecraft-client/pkg-plist

Modified: head/games/minecraft-client/Makefile
==============================================================================
--- head/games/minecraft-client/Makefile	Fri Jun 20 10:45:05 2014	(r358548)
+++ head/games/minecraft-client/Makefile	Fri Jun 20 10:45:11 2014	(r358549)
@@ -3,6 +3,7 @@
 
 PORTNAME=	minecraft-client
 PORTVERSION=	1.7.9
+PORTREVISION=	1
 CATEGORIES=	games java
 MASTER_SITES=	http://s3.amazonaws.com/Minecraft.Download/launcher/:minecraft \
 		http://media-mcw.cursecdn.com/c/c5/:icon
@@ -14,12 +15,15 @@ EXTRACT_ONLY=
 MAINTAINER=	ports@FreeBSD.org
 COMMENT=	Client for the block building game
 
+RUN_DEPENDS=	${JAVALIBDIR}/lwjgl/lwjgl.jar:${PORTSDIR}/games/lwjgl \
+		bash:${PORTSDIR}/shells/bash
+
 WRKSRC=		${WRKDIR}
 NO_BUILD=	yes
 USE_JAVA=	yes
 JAVA_OS=	native
 JAVA_VENDOR=	openjdk
-JAVA_VERSION=	1.7+
+JAVA_VERSION=	1.8+
 DESKTOP_ENTRIES="Minecraft" \
 		"Block building game" \
 		"${PREFIX}/share/pixmaps/minecraft-client.png" \
@@ -38,5 +42,7 @@ do-install:
 		-e 's|JAVA_CMD|${JAVA}|' ${FILESDIR}/minecraft-client \
 		> ${WRKDIR}/minecraft-client
 	${INSTALL_SCRIPT} ${WRKDIR}/minecraft-client ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_SCRIPT} ${FILESDIR}/minecraft-runtime ${STAGEDIR}${DATADIR}
+	${INSTALL_DATA} ${FILESDIR}/Notifer.java ${STAGEDIR}${DATADIR}
 
 .include <bsd.port.mk>

Added: head/games/minecraft-client/files/Notifer.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/minecraft-client/files/Notifer.java	Fri Jun 20 10:45:11 2014	(r358549)
@@ -0,0 +1,40 @@
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import javax.swing.Icon;
+import java.awt.EventQueue;
+
+public class Notifer extends JFrame{
+    
+    //Using a standard Java icon
+    private Icon optionIcon = UIManager.getIcon("FileView.computerIcon");
+    
+    public static void main(String[] args) {
+     
+     EventQueue.invokeLater(new Runnable()
+     {
+         public void run()
+         {
+             //create GUI frame
+             new Notifer().setVisible(true);          
+         }
+     });
+              
+    }
+    
+    public Notifer()
+    {
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        //setTitle("Simple Dialog Box Example");
+        //setSize(500,500);
+        
+        setLocationRelativeTo(null); 
+        
+        // Show our warning to first time users
+        JOptionPane.showMessageDialog(this, "After the first time logging in with a new user, you will need to close the Minecraft Launcher and restart before the game will run." 
+                ,"Important Notification", JOptionPane.PLAIN_MESSAGE);
+
+	System.exit(0);
+        
+    }
+}

Modified: head/games/minecraft-client/files/minecraft-client
==============================================================================
--- head/games/minecraft-client/files/minecraft-client	Fri Jun 20 10:45:05 2014	(r358548)
+++ head/games/minecraft-client/files/minecraft-client	Fri Jun 20 10:45:11 2014	(r358549)
@@ -1,50 +1,44 @@
 #!/bin/sh
 export JAVA_HOME=JAVA_HOME
-/bin/cat << EOF
-When starting a version for the first time, select the version you want in your
-profile, start Minecraft, close Minecraft and launcher, run minecraft-client
-again, then select version "x-freebsd" in your profile.
-
-If you run versions older than 1.6.1 in the Launcher, add
--Djava.net.preferIPv4Stack=true to JVM Arguments in the profile.
-
-EOF
-LIBDIR="${HOME}/.minecraft/libraries/"
-
-for i in ${LIBDIR}/org/lwjgl/lwjgl/lwjgl-platform/*/lwjgl-platform-*-natives-linux.jar; do
-  if [ -f "${i}" ]; then
-    cmp -s "PREFIX/share/minecraft-client/lwjgl-native-libs.jar" "${i%linux.jar}freebsd.jar"
-    if [ $? -ne 0 ]; then
-      cp -v "PREFIX/share/minecraft-client/lwjgl-native-libs.jar" "${i%linux.jar}freebsd.jar"
-    fi
-  fi
-done
-
-versions_base="${HOME}/.minecraft/versions"
-
-for i in ${HOME}/.minecraft/versions/*; do
-  if [ "${i}" != "${i%-freebsd}" -o "${i}" == "${HOME}"'/.minecraft/versions/*' ]; then continue; fi
-  OLDIFS=$IFS
-  IFS=/
-  for x in ${i}; do
-    version="${x}"
-  done
-  IFS=${OLDIFS}
-
-  native_path="${versions_base}/${version}-freebsd/"
-  mkdir -p "${native_path}"
-
-  vendor_file="${versions_base}/${version}/${version}"
-  native_file="${native_path}/${version}-freebsd"
-
-  if [ -f "${vendor_file}.jar" -a ! -f "${native_file}.jar" ]; then
-    cp -v "${vendor_file}.jar" "${native_file}.jar"
-  fi
-  if [  -f "${vendor_file}.json" -a ! -f "${native_file}.json" ]; then
-    sed -e '/"id"/s/",/-freebsd",/' -e '/lwjgl/,/extract/s/natives-linux/natives-freebsd/' \
-    < "${vendor_file}.json" > "${native_file}.json"
-  fi
-done
 
-exec JAVA_CMD -Djava.nio.file.spi.DefaultFileSystemProvider=sun.nio.fs.BsdFileSystemProvider \
- -Dos.name=Linux -jar PREFIX/share/minecraft-client/Minecraft.jar
+# Look for launcher_profiles to fix
+if [ -e "${HOME}/.minecraft/launcher_profiles.json" ] ; then
+   rm ${HOME}/.minecraft/launcher_profiles.json.new 2>/dev/null
+
+   # Lets make sure we set the fixed java executable script
+   while IFS='' read -r line
+   do
+     # Skip old javaDir lines
+     echo $line | grep -q '"javaDir": "'
+     if [ $? -eq 0 ] ; then continue ; fi
+
+     # If not a name line, add and continue
+     echo $line | grep -q '"name": "'
+     if [ $? -ne 0 ] ; then 
+       printf "%s\n" "$line" >> ${HOME}/.minecraft/launcher_profiles.json.new
+       continue
+     fi
+
+     # Found a profile entry, lets add the correct runtime
+     printf "%s\n" "$line" >> ${HOME}/.minecraft/launcher_profiles.json.new
+     echo '      "javaDir": "/usr/local/share/minecraft-client/minecraft-runtime",' >> ${HOME}/.minecraft/launcher_profiles.json.new
+     
+   done < ${HOME}/.minecraft/launcher_profiles.json
+
+   # See if we have dangling }
+   tail -1 ${HOME}/.minecraft/launcher_profiles.json.new | grep -q "^}"
+   if [ $? -ne 0 ] ; then
+     printf "}" >> ${HOME}/.minecraft/launcher_profiles.json.new
+   fi
+
+   mv ${HOME}/.minecraft/launcher_profiles.json.new ${HOME}/.minecraft/launcher_profiles.json
+else
+   # No .minecraft dir, lets display the first time notification
+   javac -d /tmp /usr/local/share/minecraft-client/Notifer.java
+   cd /tmp
+   java Notifer
+   rm Notifer*.class
+fi
+
+exec ${JAVA_HOME}/bin/java -Djava.nio.file.spi.DefaultFileSystemProvider=sun.nio.fs.BsdFileSystemProvider \
+ -Dos.name=Linux -jar /usr/local/share/minecraft-client/Minecraft.jar

Added: head/games/minecraft-client/files/minecraft-runtime
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/minecraft-client/files/minecraft-runtime	Fri Jun 20 10:45:11 2014	(r358549)
@@ -0,0 +1,46 @@
+#!/usr/local/bin/bash
+
+LWJGL_JLP_OVRD="/usr/local/lib/lwjgl2.9.1"
+LWJGL_OVRD="/usr/local/share/java/classes/lwjgl/lwjgl.jar"
+LWJGL_UTIL_OVRD="/usr/local/share/java/classes/lwjgl/lwjgl_util.jar"
+
+export JAVA_HOME=/usr/local/openjdk8
+
+build_classpath() {
+    j=0
+    ocp=`echo ${1} | sed 's/:/ /g'`
+    for p in ${ocp}
+    do
+        if [[ $p == *lwjgl-* ]]
+        then
+            ncp[$j]=${LWJGL_OVRD}
+        elif [[ $p == *lwjgl_util* ]]
+        then
+            ncp[$j]=${LWJGL_UTIL_OVRD}
+        else
+            ncp[$j]=${p}
+        fi
+        j=$(( j + 1 ))
+    done
+
+    cp=`echo ${ncp[@]} | sed 's/ /:/g'`
+}
+
+
+i=0
+for var in "${@}"
+do
+    if [[ "$var" == -Djava.library* ]]
+    then
+        args[$i]="-Djava.library.path=${LWJGL_JLP_OVRD}"
+    elif [[ "$var" == *lwjgl_util* ]]
+    then
+        build_classpath "${var}"
+        args[$i]="$cp"
+    else
+        args[$i]=$var
+    fi
+        i=$(( i + 1 ))
+done
+
+${JAVA_HOME}/jre/bin/java ${args[@]}

Modified: head/games/minecraft-client/pkg-plist
==============================================================================
--- head/games/minecraft-client/pkg-plist	Fri Jun 20 10:45:05 2014	(r358548)
+++ head/games/minecraft-client/pkg-plist	Fri Jun 20 10:45:11 2014	(r358549)
@@ -1,4 +1,6 @@
 bin/minecraft-client
 %%DATADIR%%/Minecraft.jar
+%%DATADIR%%/minecraft-runtime
+%%DATADIR%%/Notifer.java
 share/pixmaps/minecraft-client.png
 @dirrm %%DATADIR%%



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406201045.s5KAjCop035927>