mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2024-09-30 07:50:47 +00:00
Include all mods within a resource mount
This is the behaviour on 1.14 already, so it makes sense to backport to 1.12. Any mod may now insert files into assets/computercraft/lua/rom, and they'll be automatically added to the default ROM mount. This allows other mods to easily register new programs or autorun files. See #242
This commit is contained in:
parent
93310850d2
commit
5eeb320b60
@ -72,9 +72,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.DimensionManager;
|
import net.minecraftforge.common.DimensionManager;
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.*;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import net.minecraftforge.fml.common.SidedProxy;
|
|
||||||
import net.minecraftforge.fml.common.event.*;
|
import net.minecraftforge.fml.common.event.*;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
@ -83,9 +81,7 @@ import java.io.*;
|
|||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
@ -394,6 +390,27 @@ public class ComputerCraft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void loadFromFile( List<IMount> mounts, File file, String path, boolean allowMissing )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if( file.isFile() )
|
||||||
|
{
|
||||||
|
mounts.add( new JarMount( file, path ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File subResource = new File( file, path );
|
||||||
|
if( subResource.exists() ) mounts.add( new FileMount( subResource, 0 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch( IOException | RuntimeException e )
|
||||||
|
{
|
||||||
|
if( allowMissing && e instanceof FileNotFoundException ) return;
|
||||||
|
ComputerCraft.log.error( "Could not load mount '" + path + " 'from '" + file.getName() + "'", e );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static IMount createResourceMount( Class<?> modClass, String domain, String subPath )
|
public static IMount createResourceMount( Class<?> modClass, String domain, String subPath )
|
||||||
{
|
{
|
||||||
@ -413,18 +430,26 @@ public class ComputerCraft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mount from mod jar
|
// Mount from mod jars, preferring the specified one.
|
||||||
File modJar = getContainingJar( modClass );
|
File modJar = getContainingJar( modClass );
|
||||||
|
Set<File> otherMods = new HashSet<>();
|
||||||
|
for( ModContainer container : Loader.instance().getActiveModList() )
|
||||||
|
{
|
||||||
|
File modFile = container.getSource();
|
||||||
|
if( modFile != null && !modFile.equals( modJar ) && modFile.exists() )
|
||||||
|
{
|
||||||
|
otherMods.add( container.getSource() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( File file : otherMods )
|
||||||
|
{
|
||||||
|
loadFromFile( mounts, file, subPath, true );
|
||||||
|
}
|
||||||
|
|
||||||
if( modJar != null )
|
if( modJar != null )
|
||||||
{
|
{
|
||||||
try
|
loadFromFile( mounts, modJar, subPath, false );
|
||||||
{
|
|
||||||
mounts.add( new JarMount( modJar, subPath ) );
|
|
||||||
}
|
|
||||||
catch( IOException | RuntimeException e )
|
|
||||||
{
|
|
||||||
ComputerCraft.log.error( "Could not load mount from mod jar", e );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mount from resource packs
|
// Mount from resource packs
|
||||||
@ -433,29 +458,9 @@ public class ComputerCraft
|
|||||||
{
|
{
|
||||||
String[] resourcePacks = resourcePackDir.list();
|
String[] resourcePacks = resourcePackDir.list();
|
||||||
for( String resourcePackName : resourcePacks )
|
for( String resourcePackName : resourcePacks )
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
File resourcePack = new File( resourcePackDir, resourcePackName );
|
File resourcePack = new File( resourcePackDir, resourcePackName );
|
||||||
if( !resourcePack.isDirectory() )
|
loadFromFile( mounts, resourcePack, subPath, true );
|
||||||
{
|
|
||||||
// Mount a resource pack from a jar
|
|
||||||
mounts.add( new JarMount( resourcePack, subPath ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Mount a resource pack from a folder
|
|
||||||
File subResource = new File( resourcePack, subPath );
|
|
||||||
if( subResource.exists() ) mounts.add( new FileMount( subResource, 0 ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch( FileNotFoundException ignored )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
catch( IOException | RuntimeException e )
|
|
||||||
{
|
|
||||||
ComputerCraft.log.error( "Could not load resource pack '" + resourcePackName + "'", e );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user