diff --git a/client/net/minecraft/src/BaseMod.java b/client/net/minecraft/src/BaseMod.java index 550b26bb08..827c850049 100644 --- a/client/net/minecraft/src/BaseMod.java +++ b/client/net/minecraft/src/BaseMod.java @@ -46,7 +46,7 @@ public abstract class BaseMod implements cpw.mods.fml.common.modloader.BaseMod // World and render ticks if (tickEnd && ( tick==TickType.RENDER || tick==TickType.GAME ) && hasWorld) { return onTickInGame((Float) data[0], mc); - } else if (((tickEnd && tick==TickType.WORLDGUI) || (tickEnd && tick==TickType.GUI))) { + } else if (tickEnd && (tick==TickType.WORLDGUI || tick==TickType.GUI) && data[1]!=null) { return onTickInGUI((Float) data[0], mc, (GuiScreen)data[1]); } return true; diff --git a/common/cpw/mods/fml/common/modloader/BaseModTicker.java b/common/cpw/mods/fml/common/modloader/BaseModTicker.java index 94c6ea9a88..5e96272f30 100644 --- a/common/cpw/mods/fml/common/modloader/BaseModTicker.java +++ b/common/cpw/mods/fml/common/modloader/BaseModTicker.java @@ -57,24 +57,31 @@ public class BaseModTicker implements ITickHandler private void tickBaseMod(EnumSet types, boolean end, Object... tickData) { - if (FMLCommonHandler.instance().getSide().isServer() || ticks.contains(TickType.RENDER)) + if (FMLCommonHandler.instance().getSide().isClient() && ( ticks.contains(TickType.GAME) || ticks.contains(TickType.WORLDGUI))) { - sendTick(types, end, tickData); - } - else - { - if (end && ticks.contains(TickType.GAME) && (types.contains(TickType.GAME) || types.contains(TickType.WORLDLOAD))) + EnumSet cTypes=EnumSet.copyOf(types); + if (end && ( types.contains(TickType.GAME) || types.contains(TickType.WORLDLOAD) || types.contains(TickType.WORLDGUI))) { clockTickTrigger = true; + cTypes.remove(TickType.GAME); + cTypes.remove(TickType.WORLDLOAD); + cTypes.remove(TickType.WORLDGUI); } if (end && clockTickTrigger && types.contains(TickType.RENDER)) { clockTickTrigger = false; - sendTick(EnumSet.of(TickType.GAME),end,tickData); + cTypes.remove(TickType.RENDER); + if (ticks.contains(TickType.GAME)) cTypes.add(TickType.GAME); + if (ticks.contains(TickType.WORLDGUI)) cTypes.add(TickType.WORLDGUI); } + + sendTick(cTypes, end, tickData); + } + else + { + sendTick(types, end, tickData); } - } private void sendTick(EnumSet types, boolean end, Object... tickData) diff --git a/common/cpw/mods/fml/common/modloader/ModLoaderHelper.java b/common/cpw/mods/fml/common/modloader/ModLoaderHelper.java index 9b913d84e6..295b0bbd55 100644 --- a/common/cpw/mods/fml/common/modloader/ModLoaderHelper.java +++ b/common/cpw/mods/fml/common/modloader/ModLoaderHelper.java @@ -53,7 +53,7 @@ public class ModLoaderHelper ModLoaderModContainer mlmc = findOrBuildModContainer(mod); EnumSet ticks = mlmc.getTickHandler().ticks(); // If we're enabled and we don't want clock ticks we get render ticks - if (enable && !useClock && FMLCommonHandler.instance().getSide().isClient()) { + if (enable && !useClock) { ticks.add(TickType.GUI); } else { ticks.remove(TickType.GUI);