Add in optifine visibility for the mod list. Will search for an "optifine_mod.info" file on the

class path if sp614x wants to add one to optifine.
This commit is contained in:
Christian Weeks committed 2012-06-01 14:55:49 -04:00
1 parent 26cf077cfa
commit 18a35c1ab7
3 files changed
+329 -1

No files matched your search

@@ -77,6 +77,7 @@ import net.minecraft.src.WorldType;
import argo.jdom.JdomParser;
import argo.jdom.JsonNode;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.FMLModLoaderContainer;
import cpw.mods.fml.common.IFMLSidedHandler;
import cpw.mods.fml.common.IKeyHandler;
import cpw.mods.fml.common.Loader;
@@ -149,6 +150,9 @@ public class FMLClientHandler implements IFMLSidedHandler
*
* @param minecraftServer
*/
private OptifineModContainer optifineContainer;
public void onPreLoad(Minecraft minecraft)
{
/* try
@@ -184,6 +188,17 @@ public class FMLClientHandler implements IFMLSidedHandler
FMLCommonHandler.instance().registerSidedDelegate(this);
FMLRegistry.registerRegistry(new ClientRegistry());
Loader.instance().loadMods();
try
{
Class<?> optifineConfig = Class.forName("Config", false, Loader.instance().getModClassLoader());
optifineContainer = new OptifineModContainer(optifineConfig);
ModMetadata optifineMetadata = readMetadataFrom(Loader.instance().getModClassLoader().getResourceAsStream("optifinemod.info"), optifineContainer);
optifineContainer.setMetadata(optifineMetadata);
}
catch (Exception e)
{
// OPTIFINE not found
}
}
/**
@@ -1072,4 +1087,15 @@ public class FMLClientHandler implements IFMLSidedHandler
}
return null;
}
/**
* @param mods
*/
public void addSpecialModEntries(ArrayList<ModContainer> mods)
{
mods.add(new FMLModLoaderContainer());
if (optifineContainer!=null) {
mods.add(optifineContainer);
}
}
}
+1 -1
View File
@@ -52,7 +52,7 @@ public class GuiModList extends GuiScreen
{
this.mainMenu=mainMenu;
this.mods=new ArrayList<ModContainer>();
mods.add(new FMLModLoaderContainer());
FMLClientHandler.instance().addSpecialModEntries(mods);
for (ModContainer mod : Loader.getModList()) {
if (mod.getMetadata()!=null && mod.getMetadata().parentMod != null) {
continue;
@@ -0,0 +1,302 @@
/*
* The FML Forge Mod Loader suite.
* Copyright (C) 2012 cpw
*
* 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; either version 2.1 of the License, or any later version.
*
* 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
*/
package cpw.mods.fml.client;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import cpw.mods.fml.common.IConsoleHandler;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.IDispenseHandler;
import cpw.mods.fml.common.IKeyHandler;
import cpw.mods.fml.common.INetworkHandler;
import cpw.mods.fml.common.IPickupNotifier;
import cpw.mods.fml.common.IPlayerTracker;
import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.ModMetadata;
/**
* @author cpw
*
*/
public class OptifineModContainer implements ModContainer
{
private String optifineVersion;
private ModMetadata metadata;
/**
* @param optifineConfig
*/
public OptifineModContainer(Class<?> optifineConfig)
{
try
{
optifineVersion = (String) optifineConfig.getField("VERSION").get(null);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
@Override
public boolean wantsPreInit()
{
return false;
}
@Override
public boolean wantsPostInit()
{
return false;
}
@Override
public void preInit()
{
}
@Override
public void init()
{
}
@Override
public void postInit()
{
}
@Override
public String getName()
{
return "Optifine";
}
@Override
public ModState getModState()
{
return ModState.AVAILABLE;
}
@Override
public void nextState()
{
}
@Override
public void tickStart(TickType tick, Object... data)
{
}
@Override
public void tickEnd(TickType tick, Object... data)
{
}
@Override
public boolean matches(Object mod)
{
return false;
}
@Override
public File getSource()
{
return new File(".");
}
@Override
public String getSortingRules()
{
return "";
}
@Override
public Object getMod()
{
return null;
}
@Override
public boolean generatesWorld()
{
return false;
}
@Override
public IWorldGenerator getWorldGenerator()
{
return null;
}
@Override
public int lookupFuelValue(int itemId, int itemDamage)
{
return 0;
}
@Override
public boolean wantsPickupNotification()
{
return false;
}
@Override
public IPickupNotifier getPickupNotifier()
{
return null;
}
@Override
public boolean wantsToDispense()
{
return false;
}
@Override
public IDispenseHandler getDispenseHandler()
{
return null;
}
@Override
public boolean wantsCraftingNotification()
{
return false;
}
@Override
public ICraftingHandler getCraftingHandler()
{
return null;
}
@Override
public List<String> getDependencies()
{
return Collections.emptyList();
}
@Override
public List<String> getPreDepends()
{
return Collections.emptyList();
}
@Override
public List<String> getPostDepends()
{
return Collections.emptyList();
}
@Override
public boolean wantsNetworkPackets()
{
return false;
}
@Override
public INetworkHandler getNetworkHandler()
{
return null;
}
@Override
public boolean ownsNetworkChannel(String channel)
{
return false;
}
@Override
public boolean wantsConsoleCommands()
{
return false;
}
@Override
public IConsoleHandler getConsoleHandler()
{
return null;
}
@Override
public boolean wantsPlayerTracking()
{
return false;
}
@Override
public IPlayerTracker getPlayerTracker()
{
return null;
}
@Override
public List<IKeyHandler> getKeys()
{
return null;
}
@Override
public SourceType getSourceType()
{
return SourceType.CLASSPATH;
}
@Override
public void setSourceType(SourceType type)
{
}
@Override
public ModMetadata getMetadata()
{
return metadata;
}
@Override
public void setMetadata(ModMetadata meta)
{
this.metadata=meta;
}
@Override
public void gatherRenderers(Map renderers)
{
}
@Override
public void requestAnimations()
{
}
@Override
public String getVersion()
{
return optifineVersion;
}
}