2013-03-08 00:25:48 +00:00
/ *
2016-06-23 03:49:47 +00:00
* Minecraft Forge
2018-09-21 09:15:03 +00:00
* Copyright ( c ) 2016 - 2018 .
2016-06-23 03:49:47 +00:00
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2 . 1
* of the License .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2013-03-08 00:25:48 +00:00
* /
2018-03-25 15:59:43 +00:00
package net.minecraftforge.fml ;
2012-07-22 14:26:38 +00:00
2018-04-07 22:15:32 +00:00
import com.google.common.base.Strings ;
2018-10-06 01:42:15 +00:00
import com.google.common.collect.ObjectArrays ;
2018-03-25 15:59:43 +00:00
import cpw.mods.modlauncher.Launcher ;
import org.apache.logging.log4j.Level ;
2018-06-06 15:37:56 +00:00
import org.apache.logging.log4j.core.Filter ;
import org.apache.logging.log4j.core.LoggerContext ;
2018-03-25 15:59:43 +00:00
import org.apache.logging.log4j.core.config.Configurator ;
2018-06-06 15:37:56 +00:00
import org.apache.logging.log4j.core.filter.MarkerFilter ;
2012-07-22 14:26:38 +00:00
2018-04-07 22:15:32 +00:00
import java.io.File ;
import java.lang.reflect.Field ;
2018-10-06 01:42:15 +00:00
import java.util.Objects ;
2018-04-07 22:15:32 +00:00
2018-03-25 15:59:43 +00:00
public class LaunchTesting
2012-07-22 14:26:38 +00:00
{
2018-04-07 15:48:43 +00:00
public static void main ( String . . . args ) throws InterruptedException
2012-07-22 14:26:38 +00:00
{
2018-03-25 15:59:43 +00:00
Configurator . setRootLevel ( Level . DEBUG ) ;
2018-06-06 15:37:56 +00:00
final MarkerFilter classloadingFilter = MarkerFilter . createFilter ( " CLASSLOADING " , Filter . Result . DENY , Filter . Result . NEUTRAL ) ;
final MarkerFilter launchpluginFilter = MarkerFilter . createFilter ( " LAUNCHPLUGIN " , Filter . Result . DENY , Filter . Result . NEUTRAL ) ;
2018-06-11 01:12:46 +00:00
final MarkerFilter axformFilter = MarkerFilter . createFilter ( " AXFORM " , Filter . Result . DENY , Filter . Result . NEUTRAL ) ;
final MarkerFilter eventbusFilter = MarkerFilter . createFilter ( " EVENTBUS " , Filter . Result . DENY , Filter . Result . NEUTRAL ) ;
2018-10-06 01:42:15 +00:00
final MarkerFilter distxformFilter = MarkerFilter . createFilter ( " DISTXFORM " , Filter . Result . DENY , Filter . Result . NEUTRAL ) ;
2018-06-06 15:37:56 +00:00
final LoggerContext logcontext = LoggerContext . getContext ( false ) ;
2018-06-11 01:12:46 +00:00
logcontext . getConfiguration ( ) . addFilter ( classloadingFilter ) ;
2018-06-06 15:37:56 +00:00
logcontext . getConfiguration ( ) . addFilter ( launchpluginFilter ) ;
2018-06-11 01:12:46 +00:00
logcontext . getConfiguration ( ) . addFilter ( axformFilter ) ;
logcontext . getConfiguration ( ) . addFilter ( eventbusFilter ) ;
2018-10-06 01:42:15 +00:00
logcontext . getConfiguration ( ) . addFilter ( distxformFilter ) ;
2018-06-06 15:37:56 +00:00
logcontext . updateLoggers ( ) ;
2018-09-17 00:54:03 +00:00
File invsorter = new File ( " /home/cpw/projects/minecraft/inventorysorter/classes " ) ;
2018-09-10 20:08:35 +00:00
if ( invsorter . exists ( ) ) {
2018-09-17 00:54:03 +00:00
System . setProperty ( " fml.explodedDir " , " /home/cpw/projects/minecraft/inventorysorter/classes " ) ; //TODO: Move this to a example included in our tests, not a random location...
2018-09-10 20:08:35 +00:00
}
String assets = System . getenv ( ) . getOrDefault ( " assetDirectory " , " assets " ) ;
String target = System . getenv ( ) . get ( " target " ) ;
if ( target = = null ) {
throw new IllegalArgumentException ( " Environment variable target must be set. " ) ;
}
2018-10-06 01:42:15 +00:00
if ( Objects . equals ( target , " fmldevclient " ) ) {
hackNatives ( ) ;
Launcher . main ( " --launchTarget " , target ,
" --gameDir " , " . " ,
" --accessToken " , " blah " ,
" --version " , " FMLDev " ,
" --assetIndex " , " 1.13 " ,
" --assetsDir " , assets ,
" --userProperties " , " {} " ) ;
} else if ( Objects . equals ( target , " fmldevserver " ) ) {
String [ ] launchargs = ObjectArrays . concat ( new String [ ] { " --launchTarget " , target ,
" --gameDir " , " . " } , args , String . class ) ;
Launcher . main ( launchargs ) ;
}
2018-04-07 15:48:43 +00:00
Thread . sleep ( 10000 ) ;
2012-07-22 14:26:38 +00:00
}
2018-04-07 22:15:32 +00:00
private static void hackNatives ( )
{
String paths = System . getProperty ( " java.library.path " ) ;
2018-09-11 00:31:51 +00:00
String nativesDir = System . getenv ( ) . get ( " nativesDirectory " ) ;
2018-04-07 22:15:32 +00:00
if ( Strings . isNullOrEmpty ( paths ) )
paths = nativesDir ;
else
paths + = File . pathSeparator + nativesDir ;
System . setProperty ( " java.library.path " , paths ) ;
// hack the classloader now.
try
{
final Field sysPathsField = ClassLoader . class . getDeclaredField ( " sys_paths " ) ;
sysPathsField . setAccessible ( true ) ;
sysPathsField . set ( null , null ) ;
}
catch ( Throwable t ) { }
}
2012-07-22 14:26:38 +00:00
}