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 294 */
295 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 303 public static final void init(File gameDirectory, File assetsDirectory, String profile, List<String> modNameFilter)
298 304 {
299 305 if (instance == null)
... ... @@ -419,7 +425,7 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
419 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 439 // Set up loader, initialises any reflection methods needed
434 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 444 // Print the branding version if any was provided
439 445 if (this.branding != null)
... ... @@ -495,6 +501,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
495 501 this.paginateControls = this.localProperties.getProperty("controls.pages", "true").equalsIgnoreCase("true");
496 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 507 this.branding = this.internalProperties.getProperty("brand", null);
499 508 if (this.branding != null && this.branding.length() < 1)
500 509 this.branding = null;
... ... @@ -616,6 +625,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
616 625 {
617 626 if (!this.registeredResourcePacks.containsKey(resourcePack.func_130077_b())) // TODO adamsrc -> getName()
618 627 {
  628 + this.pendingResourceReload = true;
  629 +
619 630 List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft);
620 631 if (!defaultResourcePacks.contains(resourcePack))
621 632 {
... ... @@ -636,6 +647,8 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
636 647 {
637 648 if (this.registeredResourcePacks.containsValue(resourcePack))
638 649 {
  650 + this.pendingResourceReload = true;
  651 +
639 652 List<ResourcePack> defaultResourcePacks = PrivateFields.defaultResourcePacks.get(this.minecraft);
640 653 this.registeredResourcePacks.remove(resourcePack.func_130077_b()); // TODO adamsrc -> getName()
641 654 defaultResourcePacks.remove(resourcePack);
... ... @@ -1178,7 +1191,9 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
1178 1191  
1179 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 1198 for (Class<? extends LiteMod> mod : this.modsToLoad.values())
1184 1199 {
... ... @@ -1198,7 +1213,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
1198 1213 if (modFile != null && modFile.registerAsResourcePack(newMod.getName()))
1199 1214 {
1200 1215 logger.info("Adding " + modFile.getAbsolutePath() + " to resources list");
1201   - addedResources = true;
1202 1216 }
1203 1217 }
1204 1218 else
... ... @@ -1212,11 +1226,6 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
1212 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 1273 if (LiteLoader.VERSION.getLoaderRevision() > lastModVersion.getLoaderRevision())
1265 1274 {
1266 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 1278 this.storeLastKnownModRevision(modKey);
1270 1279 logger.info("Config upgrade succeeded for mod " + modName);
... ... @@ -1724,6 +1733,12 @@ public final class LiteLoader implements FilenameFilter, IPlayerUsage
1724 1733 */
1725 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 1742 if (!this.lateInitDone)
1728 1743 {
1729 1744 this.lateInitDone = true;
... ... @@ -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 * LiteLoader version table
8 8 *
9 9 * @author Adam Mummery-Smith
10   - * @version 1.6.2_01
  10 + * @version 1.6.2_02
11 11 */
12 12 public enum LiteLoaderVersion
13 13 {
... ... @@ -16,7 +16,7 @@ public enum LiteLoaderVersion
16 16 MC_1_5_2_R2(10, "1.5.2", "1.5.2", "1.5.2"),
17 17 MC_1_6_1_R0(11, "1.6.1", "1.6.1", "1.6.1", "1.6.r1"),
18 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 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 147 public static final PrivateFields<RenderManager, Map> entityRenderMap = new PrivateFields<RenderManager, Map> (RenderManager.class, "entityRenderMap", "q", "field_78729_o"); // RenderManager/entityRenderMap
148 148 public static final PrivateFields<GuiControls, GuiScreen> guiControlsParentScreen = new PrivateFields<GuiControls, GuiScreen> (GuiControls.class, "parentScreen", "b", "field_73909_b"); // GuiControls/parentScreen
149 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  
... ...