2013-03-07 19:25:48 -05:00
/*
2016-06-22 23:49:47 -04:00
* Minecraft Forge
2018-03-25 11:59:43 -04:00
* Copyright (c) 2018.
2016-06-22 23:49:47 -04: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-07 19:25:48 -05:00
*/
2018-03-25 11:59:43 -04:00
package net.minecraftforge.fml ;
2012-07-22 11:56:38 -02:30
2018-04-07 18:15:32 -04:00
import com.google.common.base.Strings ;
2018-03-25 11:59:43 -04:00
import cpw.mods.modlauncher.Launcher ;
import org.apache.logging.log4j.Level ;
2018-06-06 11:37:56 -04:00
import org.apache.logging.log4j.core.Filter ;
import org.apache.logging.log4j.core.LoggerContext ;
2018-03-25 11:59:43 -04:00
import org.apache.logging.log4j.core.config.Configurator ;
2018-06-06 11:37:56 -04:00
import org.apache.logging.log4j.core.filter.MarkerFilter ;
2012-07-22 11:56:38 -02:30
2018-04-07 18:15:32 -04:00
import java.io.File ;
import java.lang.reflect.Field ;
2018-03-25 11:59:43 -04:00
public class LaunchTesting
2012-07-22 11:56:38 -02:30
{
2018-04-07 11:48:43 -04:00
public static void main ( String ... args ) throws InterruptedException
2012-07-22 11:56:38 -02:30
{
2018-03-25 11:59:43 -04:00
Configurator . setRootLevel ( Level . DEBUG );
2018-06-06 11:37:56 -04: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-10 21:12:46 -04: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-06-06 11:37:56 -04:00
final LoggerContext logcontext = LoggerContext . getContext ( false );
2018-06-10 21:12:46 -04:00
logcontext . getConfiguration (). addFilter ( classloadingFilter );
2018-06-06 11:37:56 -04:00
logcontext . getConfiguration (). addFilter ( launchpluginFilter );
2018-06-10 21:12:46 -04:00
logcontext . getConfiguration (). addFilter ( axformFilter );
logcontext . getConfiguration (). addFilter ( eventbusFilter );
2018-06-06 11:37:56 -04:00
logcontext . updateLoggers ();
2018-09-10 13:08:35 -07:00
File invsorter = new File ( "/home/cpw/projects/mods/inventorysorter/classes" );
if ( invsorter . exists ()) {
System . setProperty ( "fml.explodedDir" , "/home/cpw/projects/mods/inventorysorter/classes" ); //TODO: Move this to a example included in our tests, not a random location...
}
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-04-07 18:15:32 -04:00
hackNatives ();
2018-09-10 13:08:35 -07:00
Launcher . main ( "--launchTarget" , target ,
"--gameDir" , "." ,
"--accessToken" , "blah" ,
"--version" , "FMLDev" ,
"--assetIndex" , "1.13" ,
"--assetsDir" , assets ,
2018-06-06 11:37:56 -04:00
"--userProperties" , "{}" );
2018-04-07 11:48:43 -04:00
Thread . sleep ( 10000 );
2012-07-22 11:56:38 -02:30
}
2018-04-07 18:15:32 -04:00
private static void hackNatives ()
{
String paths = System . getProperty ( "java.library.path" );
2018-09-10 13:08:35 -07:00
String nativesDir = "/home/cpw/.gradle/caches/minecraft/net/minecraft/natives/1.12.2" ; //TODO Not hardcode this, FG setups us a natives folder. And sets it in the eclipse run configs.
2018-04-07 18:15:32 -04: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 11:56:38 -02:30
}