LiteLoaderCoreProviderClient.java
3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
* This file is part of LiteLoader.
* Copyright (C) 2012-16 Adam Mummery-Smith
* All Rights Reserved.
*/
package com.mumfrey.liteloader.client;
import com.mumfrey.liteloader.api.CoreProvider;
import com.mumfrey.liteloader.common.GameEngine;
import com.mumfrey.liteloader.common.Resources;
import com.mumfrey.liteloader.core.LiteLoader;
import com.mumfrey.liteloader.core.LiteLoaderMods;
import com.mumfrey.liteloader.launch.LoaderProperties;
import com.mumfrey.liteloader.resources.InternalResourcePack;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.client.resources.IResourceManager;
import net.minecraft.client.resources.IResourcePack;
import net.minecraft.client.resources.SimpleReloadableResourceManager;
import net.minecraft.network.INetHandler;
import net.minecraft.network.play.server.SPacketJoinGame;
import net.minecraft.world.World;
/**
* CoreProvider which fixes SoundManager derping up at startup
*
* @author Adam Mummery-Smith
*/
public class LiteLoaderCoreProviderClient implements CoreProvider
{
/**
* Loader Properties adapter
*/
private final LoaderProperties properties;
/**
* Read from the properties file, if true we will inhibit the sound manager
* reload during startup to avoid getting in trouble with OpenAL.
*/
private boolean inhibitSoundManagerReload = true;
/**
* If inhibit is enabled, this object is used to reflectively inhibit the
* sound manager's reload process during startup by removing it from the
* reloadables list.
*/
private SoundHandlerReloadInhibitor soundHandlerReloadInhibitor;
public LiteLoaderCoreProviderClient(LoaderProperties properties)
{
this.properties = properties;
}
@Override
public void onInit()
{
this.inhibitSoundManagerReload = this.properties.getAndStoreBooleanProperty(LoaderProperties.OPTION_SOUND_MANAGER_FIX, true);
}
@SuppressWarnings("unchecked")
@Override
public void onPostInit(GameEngine<?, ?> engine)
{
SimpleReloadableResourceManager resourceManager = (SimpleReloadableResourceManager)engine.getResources().getResourceManager();
SoundHandler soundHandler = ((GameEngineClient)engine).getSoundHandler();
this.soundHandlerReloadInhibitor = new SoundHandlerReloadInhibitor(resourceManager, soundHandler);
if (this.inhibitSoundManagerReload)
{
this.soundHandlerReloadInhibitor.inhibit();
}
// Add self as a resource pack for texture/lang resources
Resources<IResourceManager, IResourcePack> resources = (Resources<IResourceManager, IResourcePack>)LiteLoader.getGameEngine().getResources();
resources.registerResourcePack(new InternalResourcePack("LiteLoader", LiteLoader.class, "liteloader"));
}
@Override
public void onPostInitComplete(LiteLoaderMods mods)
{
}
@Override
public void onStartupComplete()
{
if (this.soundHandlerReloadInhibitor != null && this.soundHandlerReloadInhibitor.isInhibited())
{
this.soundHandlerReloadInhibitor.unInhibit(true);
}
}
@Override
public void onJoinGame(INetHandler netHandler, SPacketJoinGame loginPacket)
{
}
@Override
public void onPostRender(int mouseX, int mouseY, float partialTicks)
{
}
@Override
public void onTick(boolean clock, float partialTicks, boolean inGame)
{
}
@Override
public void onWorldChanged(World world)
{
}
@Override
public void onShutDown()
{
}
}