Commit a4fe8a2ddd1fd7a8328729b91ebf72ae46b13498

Authored by Mumfrey
1 parent a954e687

LiteLoader 1.6.2_02 - fix for sound issue

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&lt;P, T&gt; @@ -147,5 +147,6 @@ public class PrivateFields&lt;P, T&gt;
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