Fix dependency checking: you can depend on specific versions of FML
This commit is contained in:
parent
75c0e65092
commit
67b9fbe363
|
@ -239,7 +239,7 @@ public class FMLCommonHandler
|
|||
{
|
||||
Builder brd = ImmutableList.<String>builder();
|
||||
brd.add(Loader.instance().getMCVersionString());
|
||||
brd.add(Loader.instance().getFMLVersionString());
|
||||
brd.add("FML v"+Loader.instance().getFMLVersionString());
|
||||
String forgeBranding = (String) callForgeMethod("getBrandingVersion");
|
||||
if (!Strings.isNullOrEmpty(forgeBranding))
|
||||
{
|
||||
|
|
|
@ -218,7 +218,7 @@ public class Loader
|
|||
}
|
||||
if (!versionMissingMods.isEmpty())
|
||||
{
|
||||
FMLLog.severe("The mod %s (%s) requires mod versions %s to be available", mod.getModId(), mod.getName(), missingMods);
|
||||
FMLLog.severe("The mod %s (%s) requires mod versions %s to be available", mod.getModId(), mod.getName(), versionMissingMods);
|
||||
throw new MissingModsException(versionMissingMods);
|
||||
}
|
||||
}
|
||||
|
@ -545,7 +545,7 @@ public class Loader
|
|||
*/
|
||||
public String getFMLVersionString()
|
||||
{
|
||||
return String.format("FML v%s.%s.%s.%s", major, minor, rev, build);
|
||||
return String.format("%s.%s.%s.%s", major, minor, rev, build);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -37,8 +37,6 @@ public class ModSorter
|
|||
private ModContainer before = new DummyModContainer();
|
||||
private ModContainer after = new DummyModContainer();
|
||||
|
||||
private List<ModContainer> immutableMods;
|
||||
|
||||
public ModSorter(List<ModContainer> modList, Map<String, ModContainer> nameLookup)
|
||||
{
|
||||
buildGraph(modList, nameLookup);
|
||||
|
@ -47,7 +45,6 @@ public class ModSorter
|
|||
private void buildGraph(List<ModContainer> modList, Map<String, ModContainer> nameLookup)
|
||||
{
|
||||
modGraph = new DirectedGraph<ModContainer>();
|
||||
immutableMods = Lists.newArrayList();
|
||||
modGraph.addNode(beforeAll);
|
||||
modGraph.addNode(before);
|
||||
modGraph.addNode(afterAll);
|
||||
|
@ -58,20 +55,18 @@ public class ModSorter
|
|||
|
||||
for (ModContainer mod : modList)
|
||||
{
|
||||
if (!mod.isImmutable())
|
||||
{
|
||||
modGraph.addNode(mod);
|
||||
}
|
||||
else
|
||||
{
|
||||
immutableMods.add(mod);
|
||||
}
|
||||
modGraph.addNode(mod);
|
||||
}
|
||||
|
||||
for (ModContainer mod : modList)
|
||||
{
|
||||
if (mod.isImmutable())
|
||||
{
|
||||
// Immutable mods are always before everything
|
||||
modGraph.addEdge(beforeAll, mod);
|
||||
modGraph.addEdge(mod, before);
|
||||
continue;
|
||||
}
|
||||
boolean preDepAdded = false;
|
||||
boolean postDepAdded = false;
|
||||
|
||||
|
@ -133,7 +128,6 @@ public class ModSorter
|
|||
{
|
||||
List<ModContainer> sortedList = TopologicalSort.topologicalSort(modGraph);
|
||||
sortedList.removeAll(Arrays.asList(new ModContainer[] {beforeAll, before, after, afterAll}));
|
||||
immutableMods.addAll(sortedList);
|
||||
return immutableMods;
|
||||
return sortedList;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package cpw.mods.mockmod;
|
||||
|
||||
import net.minecraft.src.ItemBlock;
|
||||
import net.minecraft.src.NetHandler;
|
||||
import net.minecraft.src.NetworkManager;
|
||||
import net.minecraft.src.Packet131MapData;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.Mod.Block;
|
||||
|
@ -14,22 +16,29 @@ import cpw.mods.fml.common.asm.SideOnly;
|
|||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.network.IPacketHandler;
|
||||
import cpw.mods.fml.common.network.ITinyPacketHandler;
|
||||
import cpw.mods.fml.common.network.NetworkMod;
|
||||
import cpw.mods.fml.common.network.NetworkMod.SidedPacketHandler;
|
||||
import cpw.mods.fml.common.network.Player;
|
||||
import cpw.mods.fml.common.ModMetadata;
|
||||
|
||||
@Mod(modid="MockMod", name="Mock Mod",version="1.2.3", dependencies="after:mod_testMod", useMetadata=true)
|
||||
@Mod(modid="MockMod", name="Mock Mod",version="1.2.3", dependencies="after:FML@(3.0.184.0,3.0.184.1]", useMetadata=true)
|
||||
@NetworkMod(channels={"MockMod"},clientSideRequired=true,packetHandler=MockMod.PacketHandler.class,clientPacketHandlerSpec=
|
||||
@SidedPacketHandler(packetHandler=TestClass.class,channels={"Fish"}))
|
||||
@SidedPacketHandler(packetHandler=TestClass.class,channels={"Fish"}),tinyPacketHandler=MockMod.PacketHandler.class)
|
||||
public class MockMod
|
||||
{
|
||||
public static class PacketHandler implements IPacketHandler
|
||||
public static class PacketHandler implements IPacketHandler, ITinyPacketHandler
|
||||
{
|
||||
@Override
|
||||
public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(NetHandler handler, Packet131MapData mapData)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
public class TestItem extends ItemBlock
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue