Commit a4fe8a2ddd1fd7a8328729b91ebf72ae46b13498
1 parent
a954e687
LiteLoader 1.6.2_02 - fix for sound issue
Showing
4 changed files
with
159 additions
and
12 deletions
java/com/mumfrey/liteloader/core/LiteLoader.java
@@ -294,6 +294,12 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -294,6 +294,12 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
294 | */ | 294 | */ |
295 | private static PermissionsManagerClient permissionsManager = PermissionsManagerClient.getInstance(); | 295 | private static PermissionsManagerClient permissionsManager = PermissionsManagerClient.getInstance(); |
296 | 296 | ||
297 | + private boolean pendingResourceReload; | ||
298 | + | ||
299 | + private boolean inhibitSoundManagerReload = true; | ||
300 | + | ||
301 | + private SoundManagerReloadInhibitor soundManagerReloadInhibitor; | ||
302 | + | ||
297 | public static final void init(File gameDirectory, File assetsDirectory, String profile, List<String> modNameFilter) | 303 | public static final void init(File gameDirectory, File assetsDirectory, String profile, List<String> modNameFilter) |
298 | { | 304 | { |
299 | if (instance == null) | 305 | if (instance == null) |
@@ -419,7 +425,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -419,7 +425,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
419 | return this.modsFolder; | 425 | return this.modsFolder; |
420 | } | 426 | } |
421 | 427 | ||
422 | - return new File(this.configBaseFolder, String.format("config.%s", version.getLoaderVersion())); | 428 | + return new File(this.configBaseFolder, String.format("config.%s", version.getMinecraftVersion())); |
423 | } | 429 | } |
424 | 430 | ||
425 | /** | 431 | /** |
@@ -433,7 +439,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -433,7 +439,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
433 | // Set up loader, initialises any reflection methods needed | 439 | // Set up loader, initialises any reflection methods needed |
434 | if (this.prepareLoader()) | 440 | if (this.prepareLoader()) |
435 | { | 441 | { |
436 | - logger.info(String.format("LiteLoader %s starting up...", VERSION)); | 442 | + logger.info(String.format("LiteLoader %s starting up...", VERSION.getLoaderVersion())); |
437 | 443 | ||
438 | // Print the branding version if any was provided | 444 | // Print the branding version if any was provided |
439 | if (this.branding != null) | 445 | if (this.branding != null) |
@@ -495,6 +501,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -495,6 +501,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
495 | this.paginateControls = this.localProperties.getProperty("controls.pages", "true").equalsIgnoreCase("true"); | 501 | this.paginateControls = this.localProperties.getProperty("controls.pages", "true").equalsIgnoreCase("true"); |
496 | this.localProperties.setProperty("controls.pages", String.valueOf(this.paginateControls)); | 502 | this.localProperties.setProperty("controls.pages", String.valueOf(this.paginateControls)); |
497 | 503 | ||
504 | + this.inhibitSoundManagerReload = this.localProperties.getProperty("soundManagerFix", "true").equalsIgnoreCase("true"); | ||
505 | + this.localProperties.setProperty("soundManagerFix", String.valueOf(this.inhibitSoundManagerReload)); | ||
506 | + | ||
498 | this.branding = this.internalProperties.getProperty("brand", null); | 507 | this.branding = this.internalProperties.getProperty("brand", null); |
499 | if (this.branding != null && this.branding.length() < 1) | 508 | if (this.branding != null && this.branding.length() < 1) |
500 | this.branding = null; | 509 | this.branding = null; |
@@ -616,6 +625,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -616,6 +625,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
616 | { | 625 | { |
617 | if (!this.registeredResourcePacks.containsKey(resourcePack.func_130077_b())) // TODO adamsrc -> getName() | 626 | if (!this.registeredResourcePacks.containsKey(resourcePack.func_130077_b())) // TODO adamsrc -> getName() |
618 | { | 627 | { |
628 | + this.pendingResourceReload = true; | ||
629 | + | ||
619 | List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft); | 630 | List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft); |
620 | if (!defaultResourcePacks.contains(resourcePack)) | 631 | if (!defaultResourcePacks.contains(resourcePack)) |
621 | { | 632 | { |
@@ -636,6 +647,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -636,6 +647,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
636 | { | 647 | { |
637 | if (this.registeredResourcePacks.containsValue(resourcePack)) | 648 | if (this.registeredResourcePacks.containsValue(resourcePack)) |
638 | { | 649 | { |
650 | + this.pendingResourceReload = true; | ||
651 | + | ||
639 | List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft); | 652 | List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft); |
640 | this.registeredResourcePacks.remove(resourcePack.func_130077_b()); // TODO adamsrc -> getName() | 653 | this.registeredResourcePacks.remove(resourcePack.func_130077_b()); // TODO adamsrc -> getName() |
641 | defaultResourcePacks.remove(resourcePack); | 654 | defaultResourcePacks.remove(resourcePack); |
@@ -1178,7 +1191,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1178,7 +1191,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1178 | 1191 | ||
1179 | logger.info("Discovered " + this.modsToLoad.size() + " total mod(s)"); | 1192 | logger.info("Discovered " + this.modsToLoad.size() + " total mod(s)"); |
1180 | 1193 | ||
1181 | - boolean addedResources = false; | 1194 | + this.pendingResourceReload = false; |
1195 | + this.soundManagerReloadInhibitor = new SoundManagerReloadInhibitor((SimpleReloadableResourceManager)minecraft.getResourceManager(), minecraft.sndManager); | ||
1196 | + if (this.inhibitSoundManagerReload) this.soundManagerReloadInhibitor.inhibit(); | ||
1182 | 1197 | ||
1183 | for (Class<? extends LiteMod> mod : this.modsToLoad.values()) | 1198 | for (Class<? extends LiteMod> mod : this.modsToLoad.values()) |
1184 | { | 1199 | { |
@@ -1198,7 +1213,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1198,7 +1213,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1198 | if (modFile != null && modFile.registerAsResourcePack(newMod.getName())) | 1213 | if (modFile != null && modFile.registerAsResourcePack(newMod.getName())) |
1199 | { | 1214 | { |
1200 | logger.info("Adding " + modFile.getAbsolutePath() + " to resources list"); | 1215 | logger.info("Adding " + modFile.getAbsolutePath() + " to resources list"); |
1201 | - addedResources = true; | ||
1202 | } | 1216 | } |
1203 | } | 1217 | } |
1204 | else | 1218 | else |
@@ -1212,11 +1226,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1212,11 +1226,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1212 | th.printStackTrace(); | 1226 | th.printStackTrace(); |
1213 | } | 1227 | } |
1214 | } | 1228 | } |
1215 | - | ||
1216 | - if (addedResources) | ||
1217 | - { | ||
1218 | - this.minecraft.func_110436_a(); // TODO adamsrc -> refreshResourcePacks | ||
1219 | - } | ||
1220 | } | 1229 | } |
1221 | 1230 | ||
1222 | /** | 1231 | /** |
@@ -1264,7 +1273,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1264,7 +1273,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1264 | if (LiteLoader.VERSION.getLoaderRevision() > lastModVersion.getLoaderRevision()) | 1273 | if (LiteLoader.VERSION.getLoaderRevision() > lastModVersion.getLoaderRevision()) |
1265 | { | 1274 | { |
1266 | logger.info("Performing config upgrade for mod " + modName + ". Upgrading " + lastModVersion + " to " + LiteLoader.VERSION + "..."); | 1275 | logger.info("Performing config upgrade for mod " + modName + ". Upgrading " + lastModVersion + " to " + LiteLoader.VERSION + "..."); |
1267 | - mod.upgradeSettings(LiteLoader.getVersion(), this.versionConfigFolder, this.inflectVersionedConfigPath(lastModVersion)); | 1276 | + mod.upgradeSettings(VERSION.getMinecraftVersion(), this.versionConfigFolder, this.inflectVersionedConfigPath(lastModVersion)); |
1268 | 1277 | ||
1269 | this.storeLastKnownModRevision(modKey); | 1278 | this.storeLastKnownModRevision(modKey); |
1270 | logger.info("Config upgrade succeeded for mod " + modName); | 1279 | logger.info("Config upgrade succeeded for mod " + modName); |
@@ -1724,6 +1733,12 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1724,6 +1733,12 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1724 | */ | 1733 | */ |
1725 | public void onInit() | 1734 | public void onInit() |
1726 | { | 1735 | { |
1736 | + if (this.pendingResourceReload) | ||
1737 | + { | ||
1738 | + this.pendingResourceReload = false; | ||
1739 | + this.minecraft.func_110436_a(); // TODO adamsrc -> refreshResourcePacks | ||
1740 | + } | ||
1741 | + | ||
1727 | if (!this.lateInitDone) | 1742 | if (!this.lateInitDone) |
1728 | { | 1743 | { |
1729 | this.lateInitDone = true; | 1744 | this.lateInitDone = true; |
@@ -1741,6 +1756,11 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | @@ -1741,6 +1756,11 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage | ||
1741 | } | 1756 | } |
1742 | } | 1757 | } |
1743 | } | 1758 | } |
1759 | + | ||
1760 | + if (this.soundManagerReloadInhibitor != null && this.soundManagerReloadInhibitor.isInhibited()) | ||
1761 | + { | ||
1762 | + this.soundManagerReloadInhibitor.unInhibit(true); | ||
1763 | + } | ||
1744 | } | 1764 | } |
1745 | 1765 | ||
1746 | /** | 1766 | /** |
java/com/mumfrey/liteloader/core/LiteLoaderVersion.java
@@ -7,7 +7,7 @@ import java.util.Set; | @@ -7,7 +7,7 @@ import java.util.Set; | ||
7 | * LiteLoader version table | 7 | * LiteLoader version table |
8 | * | 8 | * |
9 | * @author Adam Mummery-Smith | 9 | * @author Adam Mummery-Smith |
10 | - * @version 1.6.2_01 | 10 | + * @version 1.6.2_02 |
11 | */ | 11 | */ |
12 | public enum LiteLoaderVersion | 12 | public enum LiteLoaderVersion |
13 | { | 13 | { |
@@ -16,7 +16,7 @@ public enum LiteLoaderVersion | @@ -16,7 +16,7 @@ public enum LiteLoaderVersion | ||
16 | MC_1_5_2_R2(10, "1.5.2", "1.5.2", "1.5.2"), | 16 | MC_1_5_2_R2(10, "1.5.2", "1.5.2", "1.5.2"), |
17 | MC_1_6_1_R0(11, "1.6.1", "1.6.1", "1.6.1", "1.6.r1"), | 17 | MC_1_6_1_R0(11, "1.6.1", "1.6.1", "1.6.1", "1.6.r1"), |
18 | MC_1_6_2_R0(12, "1.6.2", "1.6.2", "1.6.2", "1.6.r2"), | 18 | MC_1_6_2_R0(12, "1.6.2", "1.6.2", "1.6.2", "1.6.r2"), |
19 | - MC_1_6_2_R1(13, "1.6.2", "1.6.2", "1.6.2", "1.6.r2"); | 19 | + MC_1_6_2_R1(13, "1.6.2", "1.6.2_02", "1.6.2", "1.6.r2"); |
20 | 20 | ||
21 | private int revision; | 21 | private int revision; |
22 | 22 |
java/com/mumfrey/liteloader/core/SoundManagerReloadInhibitor.java
0 โ 100644
1 | +package com.mumfrey.liteloader.core; | ||
2 | + | ||
3 | +import java.util.List; | ||
4 | + | ||
5 | +import com.mumfrey.liteloader.util.PrivateFields; | ||
6 | + | ||
7 | +import net.minecraft.src.ResourceManagerReloadListener; | ||
8 | +import net.minecraft.src.SimpleReloadableResourceManager; | ||
9 | +import net.minecraft.src.SoundManager; | ||
10 | + | ||
11 | +/** | ||
12 | + * Manager object which handles inhibiting the sound manager's reload notification at startup | ||
13 | + * | ||
14 | + * @author Adam Mummery-Smith | ||
15 | + */ | ||
16 | +public class SoundManagerReloadInhibitor | ||
17 | +{ | ||
18 | + /** | ||
19 | + * Resource Manager | ||
20 | + */ | ||
21 | + private SimpleReloadableResourceManager resourceManager; | ||
22 | + | ||
23 | + /** | ||
24 | + * Sound manager | ||
25 | + */ | ||
26 | + private SoundManager soundManager; | ||
27 | + | ||
28 | + /** | ||
29 | + * True if inhibition is currently active | ||
30 | + */ | ||
31 | + private boolean inhibited; | ||
32 | + | ||
33 | + /** | ||
34 | + * So that we can re-insert the sound manager at the same index, we store the index we remove it from | ||
35 | + */ | ||
36 | + private int storedIndex; | ||
37 | + | ||
38 | + public SoundManagerReloadInhibitor(SimpleReloadableResourceManager resourceManager, SoundManager soundManager) | ||
39 | + { | ||
40 | + this.resourceManager = resourceManager; | ||
41 | + this.soundManager = soundManager; | ||
42 | + } | ||
43 | + | ||
44 | + /** | ||
45 | + * Inhibit the sound manager reload notification | ||
46 | + * | ||
47 | + * @return true if inhibit was applied | ||
48 | + */ | ||
49 | + public boolean inhibit() | ||
50 | + { | ||
51 | + try | ||
52 | + { | ||
53 | + if (!this.inhibited) | ||
54 | + { | ||
55 | + List<ResourceManagerReloadListener> reloadListeners = PrivateFields.reloadListeners.get(this.resourceManager); | ||
56 | + if (reloadListeners != null) | ||
57 | + { | ||
58 | + this.storedIndex = reloadListeners.indexOf(this.soundManager); | ||
59 | + if (this.storedIndex > -1) | ||
60 | + { | ||
61 | + LiteLoader.getLogger().info("Inhibiting sound manager reload"); | ||
62 | + reloadListeners.remove(this.soundManager); | ||
63 | + this.inhibited = true; | ||
64 | + return true; | ||
65 | + } | ||
66 | + } | ||
67 | + } | ||
68 | + } | ||
69 | + catch (Exception ex) | ||
70 | + { | ||
71 | + LiteLoader.getLogger().warning("Error inhibiting sound manager reload"); | ||
72 | + } | ||
73 | + | ||
74 | + return false; | ||
75 | + } | ||
76 | + | ||
77 | + /** | ||
78 | + * Remove the sound manager reload inhibit | ||
79 | + * | ||
80 | + * @param reload True to reload the sound manager now | ||
81 | + * @return true if the sound manager was successfully restored | ||
82 | + */ | ||
83 | + public boolean unInhibit(boolean reload) | ||
84 | + { | ||
85 | + try | ||
86 | + { | ||
87 | + if (this.inhibited) | ||
88 | + { | ||
89 | + List<ResourceManagerReloadListener> reloadListeners = PrivateFields.reloadListeners.get(this.resourceManager); | ||
90 | + if (reloadListeners != null) | ||
91 | + { | ||
92 | + if (this.storedIndex > -1) | ||
93 | + { | ||
94 | + reloadListeners.add(this.storedIndex, this.soundManager); | ||
95 | + } | ||
96 | + else | ||
97 | + { | ||
98 | + reloadListeners.add(this.soundManager); | ||
99 | + } | ||
100 | + | ||
101 | + LiteLoader.getLogger().info("Sound manager reload inhibit removed"); | ||
102 | + | ||
103 | + if (reload) | ||
104 | + { | ||
105 | + LiteLoader.getLogger().info("Reloading sound manager"); | ||
106 | + this.soundManager.onReload(this.resourceManager); | ||
107 | + } | ||
108 | + | ||
109 | + this.inhibited = false; | ||
110 | + return true; | ||
111 | + } | ||
112 | + } | ||
113 | + } | ||
114 | + catch (Exception ex) | ||
115 | + { | ||
116 | + LiteLoader.getLogger().warning("Error removing sound manager reload inhibit"); | ||
117 | + } | ||
118 | + | ||
119 | + return false; | ||
120 | + } | ||
121 | + | ||
122 | + public boolean isInhibited() | ||
123 | + { | ||
124 | + return this.inhibited; | ||
125 | + } | ||
126 | +} |
java/com/mumfrey/liteloader/util/PrivateFields.java
@@ -147,5 +147,6 @@ public class PrivateFields<P, T> | @@ -147,5 +147,6 @@ public class PrivateFields<P, T> | ||
147 | public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, "entityRenderMap", "q", "field_78729_o"); // RenderManager/entityRenderMap | 147 | public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, "entityRenderMap", "q", "field_78729_o"); // RenderManager/entityRenderMap |
148 | public static final PrivateFields<GuiControls, GuiScreen> guiControlsParentScreen = new PrivateFields<GuiControls, GuiScreen> (GuiControls.class, "parentScreen", "b", "field_73909_b"); // GuiControls/parentScreen | 148 | public static final PrivateFields<GuiControls, GuiScreen> guiControlsParentScreen = new PrivateFields<GuiControls, GuiScreen> (GuiControls.class, "parentScreen", "b", "field_73909_b"); // GuiControls/parentScreen |
149 | public static final PrivateFields<PlayerUsageSnooper, IPlayerUsage> playerStatsCollector = new PrivateFields<PlayerUsageSnooper, IPlayerUsage>(PlayerUsageSnooper.class, "playerStatsCollector", "d", "field_76478_d"); // PlayerUsageSnooper/playerStatsCollector | 149 | public static final PrivateFields<PlayerUsageSnooper, IPlayerUsage> playerStatsCollector = new PrivateFields<PlayerUsageSnooper, IPlayerUsage>(PlayerUsageSnooper.class, "playerStatsCollector", "d", "field_76478_d"); // PlayerUsageSnooper/playerStatsCollector |
150 | + public static final PrivateFields<SimpleReloadableResourceManager, List<ResourceManagerReloadListener>> reloadListeners = new PrivateFields<SimpleReloadableResourceManager, List<ResourceManagerReloadListener>>(SimpleReloadableResourceManager.class, "field_110546_b", "c", "field_110546_b"); // SimpleReloadableResourceManager/field_110546_b | ||
150 | } | 151 | } |
151 | 152 |