Make sound work

This commit is contained in:
eymendemez 2025-05-31 09:48:04 +03:00
parent 8df6b5d7b9
commit a70b210871
9 changed files with 29879 additions and 10417 deletions

14
.idea/workspace.xml generated
View File

@ -6,9 +6,13 @@
<component name="ChangeListManager">
<list default="true" id="6bf56493-3337-4b11-98fb-a5d499cdbe34" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GameSettings.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GameSettings.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GuiIngame.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GuiIngame.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GuiOptions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/minecraft/src/GuiOptions.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/javascript/EaglercraftX_1.8_Offline_International.html" beforeDir="false" afterPath="$PROJECT_DIR$/javascript/EaglercraftX_1.8_Offline_International.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/javascript/EaglercraftX_1.8_Offline_en_US.html" beforeDir="false" afterPath="$PROJECT_DIR$/javascript/EaglercraftX_1.8_Offline_en_US.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/javascript/assets.epk" beforeDir="false" afterPath="$PROJECT_DIR$/javascript/assets.epk" afterDir="false" />
<change beforePath="$PROJECT_DIR$/javascript/classes.js" beforeDir="false" afterPath="$PROJECT_DIR$/javascript/classes.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/javascript/classes.js.map" beforeDir="false" afterPath="$PROJECT_DIR$/javascript/classes.js.map" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/minecraft/client/Minecraft.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/minecraft/client/Minecraft.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/net/minecraft/src/SoundManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/net/minecraft/src/SoundManager.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -91,7 +95,7 @@
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Application.LWJGLEntryPoint.executor": "Run",
"Application.MainClass.executor": "Debug",
"Application.MainClass.executor": "Run",
"Application.Unnamed.executor": "Run",
"Gradle.Alpha-1.1.2_01 [generateJavaScript].executor": "Run",
"Gradle.Alpha-1.1.2_01 [jar].executor": "Run",
@ -123,7 +127,7 @@
<recent name="net.lax1dude.eaglercraft" />
</key>
</component>
<component name="RunManager" selected="Gradle.Alpha-1.1.2_01 [generateJavaScript]">
<component name="RunManager" selected="Application.MainClass">
<configuration name="MainClass" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="net.lax1dude.eaglercraft.internal.MainClass" />
<module name="lwjgl" />

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -105,7 +105,7 @@ public class Minecraft implements Runnable {
GL11.glMatrixMode(GL11.GL_MODELVIEW);
this.checkGLError("Startup");
// this.glCapabilities = new OpenGlCapsChecker();
this.sndManager.loadSoundSettings(this.options);
this.sndManager.loadSoundSettings();
this.renderEngine.registerTextureFX(this.textureLavaFX);
this.renderEngine.registerTextureFX(this.textureWaterFX);
this.renderEngine.registerTextureFX(new TextureWaterFlowFX());

View File

@ -14,7 +14,9 @@ import net.lax1dude.eaglercraft.internal.PlatformAudio;
import net.peyton.eagler.minecraft.AudioUtils;
public class SoundManager {
private GameSettings options;
private static final float DEFAULT_MUSIC_VOLUME = 0.7F;
private static final float DEFAULT_SOUND_VOLUME = 0.8F;
private Random rand = new Random();
private int ticksBeforeMusic = this.rand.nextInt(12000);
@ -25,33 +27,145 @@ public class SoundManager {
private String[] newMusic = new String[]{"hal1.ogg", "hal2.ogg", "hal3.ogg", "hal4.ogg", "nuance1.ogg", "nuance2.ogg", "piano1.ogg", "piano2.ogg", "piano3.ogg"};
public void loadSoundSettings(GameSettings var1) {
this.options = var1;
public void loadSoundSettings() {
}
public void onSoundOptionsChanged() {
if(DEFAULT_MUSIC_VOLUME == 0.0F) {
if(this.musicHandle != null && !this.musicHandle.shouldFree()) {
musicHandle.end();
}
} else {
if(this.musicHandle != null && !this.musicHandle.shouldFree()) {
musicHandle.gain(DEFAULT_MUSIC_VOLUME);
}
}
}
public void closeMinecraft() {
}
public void playRandomMusicIfReady() {
if(DEFAULT_MUSIC_VOLUME != 0.0F) {
if(this.musicHandle == null || this.musicHandle.shouldFree()) {
if(this.ticksBeforeMusic > 0) {
--this.ticksBeforeMusic;
return;
}
int var1 = rand.nextInt(newMusic.length);
this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000;
String name = "/music/" + newMusic[var1];
IAudioResource trk;
if (!music.containsKey(name)) {
if (EagRuntime.getPlatformType() != EnumPlatformType.DESKTOP) {
trk = PlatformAudio.loadAudioDataNew(name, false, browserResourceLoader);
} else {
trk = PlatformAudio.loadAudioData(name, false);
}
if (trk != null) {
music.put(name, trk);
}
} else {
trk = music.get(name);
}
musicHandle = PlatformAudio.beginPlaybackStatic(trk, DEFAULT_MUSIC_VOLUME, 1.0f, false);
}
}
}
public void setListener(EntityLiving var1, float var2) {
if (var1 != null && DEFAULT_SOUND_VOLUME != 0.0F) {
try {
float var9 = var1.prevRotationPitch + (var1.rotationPitch - var1.prevRotationPitch) * var2;
float var3 = var1.prevRotationYaw + (var1.rotationYaw - var1.prevRotationYaw) * var2;
double var4 = var1.prevPosX + (var1.posX - var1.prevPosX) * (double) var2;
double var6 = var1.prevPosY + (var1.posY - var1.prevPosY) * (double) var2;
double var8 = var1.prevPosZ + (var1.posZ - var1.prevPosZ) * (double) var2;
PlatformAudio.setListener((float) var4, (float) var6, (float) var8, (float) var9, (float) var3);
} catch (Exception e) {
}
}
}
public void playSound(String var1, float var2, float var3, float var4, float var5, float var6) {
if(DEFAULT_SOUND_VOLUME != 0.0F) {
if(var5 > 0.0F) {
IAudioResource trk;
if(var1 == null) return;
var1 = var1.replace(".", "/");
int randNum = AudioUtils.getRandomSound(var1);
if(randNum == 0) {
return;
}
String soundName = "/sound/" + var1 + (randNum != -1 ? randNum : "") + ".ogg";
if (!sounds.containsKey(soundName)) {
if (EagRuntime.getPlatformType() != EnumPlatformType.DESKTOP) {
trk = PlatformAudio.loadAudioDataNew(soundName, true, browserResourceLoader);
} else {
trk = PlatformAudio.loadAudioData(soundName, true);
}
if (trk != null) {
sounds.put(soundName, trk);
}
} else {
trk = sounds.get(soundName);
}
if(trk != null) {
PlatformAudio.beginPlayback(trk, var2, var3, var4, var5 * DEFAULT_SOUND_VOLUME, var6, false);
}
}
}
}
public void playSoundFX(String var1, float var2, float var3) {
if(DEFAULT_SOUND_VOLUME != 0.0F) {
if(var2 > 1.0F) {
var2 = 1.0F;
}
var2 *= 0.25F;
IAudioResource trk;
if(var1 == null) return;
var1 = var1.replace(".", "/");
int randNum = AudioUtils.getRandomSound(var1 + ".ogg");
if(randNum == 0) {
return;
}
String soundName = "/sound/" + var1 + (randNum != -1 ? randNum : "") + ".ogg";
if (!sounds.containsKey(soundName)) {
if (EagRuntime.getPlatformType() != EnumPlatformType.DESKTOP) {
trk = PlatformAudio.loadAudioDataNew(soundName, true, browserResourceLoader);
} else {
trk = PlatformAudio.loadAudioData(soundName, true);
}
if (trk != null) {
sounds.put(soundName, trk);
}
} else {
trk = sounds.get(soundName);
}
if(trk != null) {
PlatformAudio.beginPlaybackStatic(trk, var2 * DEFAULT_SOUND_VOLUME, var3, false);
}
}
}
public void playButtonClick() {
playSoundFX("random.click", 1.0f, 1.0f);
}
}
private final IAudioCacheLoader browserResourceLoader = filename -> {
try {
return EaglerInputStream.inputStreamToBytesQuiet(EagRuntime.getRequiredResourceStream(filename));
} catch (Throwable t) {
return null;
}
};
}