From 4f70d23d0ef618c07698af8b78a7843a2bc4e47d Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 7 Sep 2012 19:08:28 -0400 Subject: [PATCH] Fix dependency checking: you can depend on specific versions of FML --- .../cpw/mods/fml/common/FMLCommonHandler.java | 2 +- common/cpw/mods/fml/common/Loader.java | 4 ++-- .../mods/fml/common/toposort/ModSorter.java | 20 +++++++------------ .../src/cpw/mods/mockmod/MockMod.java | 15 +++++++++++--- 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/common/cpw/mods/fml/common/FMLCommonHandler.java b/common/cpw/mods/fml/common/FMLCommonHandler.java index 0908ead7c3..47a0d97eb7 100644 --- a/common/cpw/mods/fml/common/FMLCommonHandler.java +++ b/common/cpw/mods/fml/common/FMLCommonHandler.java @@ -239,7 +239,7 @@ public class FMLCommonHandler { Builder brd = ImmutableList.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)) { diff --git a/common/cpw/mods/fml/common/Loader.java b/common/cpw/mods/fml/common/Loader.java index ffe4994aa6..ab1eb35f08 100644 --- a/common/cpw/mods/fml/common/Loader.java +++ b/common/cpw/mods/fml/common/Loader.java @@ -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); } /** diff --git a/common/cpw/mods/fml/common/toposort/ModSorter.java b/common/cpw/mods/fml/common/toposort/ModSorter.java index a865aacfdb..2d2f270bbf 100644 --- a/common/cpw/mods/fml/common/toposort/ModSorter.java +++ b/common/cpw/mods/fml/common/toposort/ModSorter.java @@ -37,8 +37,6 @@ public class ModSorter private ModContainer before = new DummyModContainer(); private ModContainer after = new DummyModContainer(); - private List immutableMods; - public ModSorter(List modList, Map nameLookup) { buildGraph(modList, nameLookup); @@ -47,7 +45,6 @@ public class ModSorter private void buildGraph(List modList, Map nameLookup) { modGraph = new DirectedGraph(); - 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 sortedList = TopologicalSort.topologicalSort(modGraph); sortedList.removeAll(Arrays.asList(new ModContainer[] {beforeAll, before, after, afterAll})); - immutableMods.addAll(sortedList); - return immutableMods; + return sortedList; } } diff --git a/eclipse/FML-MockMod/src/cpw/mods/mockmod/MockMod.java b/eclipse/FML-MockMod/src/cpw/mods/mockmod/MockMod.java index 00ac913141..9cb6ba778e 100644 --- a/eclipse/FML-MockMod/src/cpw/mods/mockmod/MockMod.java +++ b/eclipse/FML-MockMod/src/cpw/mods/mockmod/MockMod.java @@ -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 {