From 9205b4d267b525bd5d59e994b1b0ceede00b6906 Mon Sep 17 00:00:00 2001 From: PeytonPlayz595 <106421860+PeytonPlayz595@users.noreply.github.com> Date: Sun, 9 Jun 2024 14:23:19 -0400 Subject: [PATCH] Add sound/music, performance fixes --- .../opengl/EaglerAdapterGL30.java | 60 +++- .../lax1dude/eaglercraft/BufferedImage.java | 88 +++-- .../adapter/teavm/IndexedDBFilesystem.java | 2 +- src/net/minecraft/src/GuiIngameMenu.java | 1 + src/net/minecraft/src/RenderGlobal.java | 9 + src/net/minecraft/src/SoundManager.java | 337 +++++++++--------- src/net/minecraft/src/SoundPool.java | 51 --- src/net/minecraft/src/SoundPoolEntry.java | 13 - src/net/minecraft/src/Vec3D.java | 6 +- 9 files changed, 266 insertions(+), 301 deletions(-) delete mode 100644 src/net/minecraft/src/SoundPool.java delete mode 100644 src/net/minecraft/src/SoundPoolEntry.java diff --git a/src/net/PeytonPlayz585/opengl/EaglerAdapterGL30.java b/src/net/PeytonPlayz585/opengl/EaglerAdapterGL30.java index 7669d00..4b0ac40 100644 --- a/src/net/PeytonPlayz585/opengl/EaglerAdapterGL30.java +++ b/src/net/PeytonPlayz585/opengl/EaglerAdapterGL30.java @@ -145,7 +145,7 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { private static float fogColorA = 1.0f; private static int fogMode = 1; private static boolean fogEnabled = false; - private static boolean fogPremultiply = false; + //private static boolean fogPremultiply = false; private static float fogStart = 1.0f; private static float fogEnd = 1.0f; private static float fogDensity = 1.0f; @@ -288,8 +288,12 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { alphaThresh = p2; } + private static int stateCullFace = -1; public static final void glCullFace(int p1) { - _wglCullFace(p1); + if(p1 != stateCullFace) { + stateCullFace = p1; + _wglCullFace(p1); + } } public static final void glMatrixMode(int p1) { @@ -428,7 +432,7 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { } public static final void glLineWidth(float p1) { - + webgl.lineWidth(p1); } public static final void glTexImage2D(int p1, int p2, int p3, int p4, int p5, int p6, int p7, int p8, @@ -568,12 +572,25 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { } } + static int stateBlendSRC = -1; + static int stateBlendDST = -1; public static final void glBlendFunc(int p1, int p2) { - fogPremultiply = (p1 == GL_ONE && p2 == GL_ONE_MINUS_SRC_ALPHA); +// fogPremultiply = (p1 == GL_ONE && p2 == GL_ONE_MINUS_SRC_ALPHA); +// if(overlayFBOBlending) { +// _wglBlendFuncSeparate(p1, p2, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); +// }else { +// _wglBlendFunc(p1, p2); +// } if(overlayFBOBlending) { - _wglBlendFuncSeparate(p1, p2, GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - }else { + glBlendFuncSeparate(p1, p2, 0, 1); + return; + } + int srcBits = (p1 | (p1 << 16)); + int dstBits = (p2 | (p2 << 16)); + if(srcBits != stateBlendSRC || dstBits != stateBlendDST) { _wglBlendFunc(p1, p2); + stateBlendSRC = srcBits; + stateBlendDST = dstBits; } } @@ -584,12 +601,27 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { } public static final void glBlendFuncSeparate(int p1, int p2, int p3, int p4) { - fogPremultiply = (p3 == GL_ONE && p4 == GL_ONE_MINUS_SRC_ALPHA); - _wglBlendFuncSeparate(p1, p2, p3, p4); +// fogPremultiply = (p3 == GL_ONE && p4 == GL_ONE_MINUS_SRC_ALPHA); +// _wglBlendFuncSeparate(p1, p2, p3, p4); + if(overlayFBOBlending) { // game overlay framebuffer in EntityRenderer.java + p3 = GL_ONE; + p4 = GL_ONE_MINUS_SRC_ALPHA; + } + int srcBits = (p1 | (p3 << 16)); + int dstBits = (p2 | (p4 << 16)); + if(srcBits != stateBlendSRC || dstBits != stateBlendDST) { + _wglBlendFuncSeparate(p1, p2, p3, p4); + stateBlendSRC = srcBits; + stateBlendDST = dstBits; + } } + private static boolean stateDepthMask = true; public static final void glDepthMask(boolean p1) { - _wglDepthMask(p1); + if(p1 != stateDepthMask) { + stateDepthMask = p1; + _wglDepthMask(p1); + } } public static final void glColorMask(boolean p1, boolean p2, boolean p3, boolean p4) { @@ -645,10 +677,10 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { } public static final void glNormal3f(float p1, float p2, float p3) { - float len = (float) Math.sqrt(p1 * p1 + p2 * p2 + p3 * p3); - normalX = p1 / len; - normalY = p2 / len; - normalZ = p3 / len; + //float len = (float) Math.sqrt(p1 * p1 + p2 * p2 + p3 * p3); + normalX = p1 /*/ len*/; + normalY = p2 /*/ len*/; + normalZ = p3 /*/ len*/; } public static final int glGenLists(int p1) { @@ -857,7 +889,7 @@ public class EaglerAdapterGL30 extends EaglerAdapterImpl2 { } s.setColor(colorR, colorG, colorB, colorA); if (fogEnabled) { - s.setFogMode((fogPremultiply ? 2 : 0) + fogMode); + s.setFogMode(fogMode); s.setFogColor(fogColorR, fogColorG, fogColorB, fogColorA); s.setFogDensity(fogDensity); s.setFogStartEnd(fogStart, fogEnd); diff --git a/src/net/lax1dude/eaglercraft/BufferedImage.java b/src/net/lax1dude/eaglercraft/BufferedImage.java index 0bf9815..115c7c5 100644 --- a/src/net/lax1dude/eaglercraft/BufferedImage.java +++ b/src/net/lax1dude/eaglercraft/BufferedImage.java @@ -2,10 +2,10 @@ package net.lax1dude.eaglercraft; public class BufferedImage { - public final int[] data; + private final int[] data; public final int w; public final int h; - public final boolean alpha; + private final boolean alpha; public BufferedImage(int width, int height, int[] pixels, boolean alpha) { this.w = width; @@ -36,55 +36,51 @@ public class BufferedImage { return new BufferedImage(pw, ph, img, alpha); } - public int[] data() { - return this.data; - } - - public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) { - if (startX < 0 || startY < 0 || w <= 0 || h <= 0 || - startX + w > this.w || startY + h > this.h || - rgbArray.length < offset + w * h) { - throw new IllegalArgumentException("Suck my dick nigga"); - } + public int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) { + if (startX < 0 || startY < 0 || w <= 0 || h <= 0 || + startX + w > this.w || startY + h > this.h || + rgbArray.length < offset + w * h) { + throw new IllegalArgumentException("Invalid input parameters"); + } - for (int y = startY; y < startY + h; y++) { - for (int x = startX; x < startX + w; x++) { - int imageDataIndex = y * this.w + x; - int argb = data[imageDataIndex]; - int alpha = (argb >> 24) & 0xff; - int red = (argb >> 16) & 0xff; - int green = (argb >> 8) & 0xff; - int blue = argb & 0xff; - int rgb = (alpha << 24) | (red << 16) | (green << 8) | blue; - - rgbArray[offset + (y - startY) * scansize + (x - startX)] = rgb; - } - } + for (int y = startY; y < startY + h; y++) { + for (int x = startX; x < startX + w; x++) { + int imageDataIndex = y * this.w + x; + int argb = data[imageDataIndex]; + int alpha = (argb >> 24) & 0xff; + int red = (argb >> 16) & 0xff; + int green = (argb >> 8) & 0xff; + int blue = argb & 0xff; + int rgb = (alpha << 24) | (red << 16) | (green << 8) | blue; - return rgbArray; + rgbArray[offset + (y - startY) * scansize + (x - startX)] = rgb; + } + } + + return rgbArray; } - + public void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) { - if (startX < 0 || startY < 0 || w <= 0 || h <= 0 || - startX + w > this.w || startY + h > this.h || - rgbArray.length < offset + w * h) { - throw new IllegalArgumentException("Big black oily men"); - } + if (startX < 0 || startY < 0 || w <= 0 || h <= 0 || + startX + w > this.w || startY + h > this.h || + rgbArray.length < offset + w * h) { + throw new IllegalArgumentException("Invalid input parameters"); + } - for (int y = startY; y < startY + h; y++) { - for (int x = startX; x < startX + w; x++) { - int imageDataIndex = y * this.w + x; - int rgb = rgbArray[offset + (y - startY) * scansize + (x - startX)]; - int alpha = (rgb >> 24) & 0xff; - int red = (rgb >> 16) & 0xff; - int green = (rgb >> 8) & 0xff; - int blue = rgb & 0xff; - int argb = (alpha << 24) | (red << 16) | (green << 8) | blue; - - data[imageDataIndex] = argb; - } - } - } + for (int y = startY; y < startY + h; y++) { + for (int x = startX; x < startX + w; x++) { + int imageDataIndex = y * this.w + x; + int rgb = rgbArray[offset + (y - startY) * scansize + (x - startX)]; + int alpha = (rgb >> 24) & 0xff; + int red = (rgb >> 16) & 0xff; + int green = (rgb >> 8) & 0xff; + int blue = rgb & 0xff; + int argb = (alpha << 24) | (red << 16) | (green << 8) | blue; + + data[imageDataIndex] = argb; + } + } + } public int getWidth() { return w; diff --git a/src/net/lax1dude/eaglercraft/adapter/teavm/IndexedDBFilesystem.java b/src/net/lax1dude/eaglercraft/adapter/teavm/IndexedDBFilesystem.java index 7a72269..928273d 100644 --- a/src/net/lax1dude/eaglercraft/adapter/teavm/IndexedDBFilesystem.java +++ b/src/net/lax1dude/eaglercraft/adapter/teavm/IndexedDBFilesystem.java @@ -42,7 +42,7 @@ public class IndexedDBFilesystem { System.out.println("Setting custom database name to " + GL11.dataBaseName); dbo = AsyncHandlers.openDB(GL11.dataBaseName); } else { - dbo = AsyncHandlers.openDB("_net_lax1dude_eaglercraft_beta_IndexedDBFilesystem_1_3"); + dbo = AsyncHandlers.openDB("_net_PeytonPlayz585_eaglercraft_beta_IndexedDBFilesystem_1_7_3"); } if(dbo == null) { err = "Unknown Error"; diff --git a/src/net/minecraft/src/GuiIngameMenu.java b/src/net/minecraft/src/GuiIngameMenu.java index 17eee06..5df678a 100644 --- a/src/net/minecraft/src/GuiIngameMenu.java +++ b/src/net/minecraft/src/GuiIngameMenu.java @@ -57,6 +57,7 @@ public class GuiIngameMenu extends GuiScreen { public void drawScreen(int var1, int var2, float var3) { this.drawDefaultBackground(); boolean var4 = !this.mc.theWorld.func_650_a(this.updateCounter2++); + this.mc.setIngameNotInFocus(); if(var4 || this.updateCounter < 20) { float var5 = ((float)(this.updateCounter % 10) + var3) / 10.0F; var5 = MathHelper.sin(var5 * (float)Math.PI * 2.0F) * 0.2F + 0.8F; diff --git a/src/net/minecraft/src/RenderGlobal.java b/src/net/minecraft/src/RenderGlobal.java index 33a7744..aa4c20a 100644 --- a/src/net/minecraft/src/RenderGlobal.java +++ b/src/net/minecraft/src/RenderGlobal.java @@ -1148,6 +1148,9 @@ public class RenderGlobal implements IWorldAccess { public void spawnParticle(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { if(this.mc != null && this.mc.renderViewEntity != null && this.mc.effectRenderer != null) { + if(isBehindPlayer(var2, var4, var6)) { + return; + } double var14 = this.mc.renderViewEntity.posX - var2; double var16 = this.mc.renderViewEntity.posY - var4; double var18 = this.mc.renderViewEntity.posZ - var6; @@ -1188,6 +1191,12 @@ public class RenderGlobal implements IWorldAccess { } } } + + private boolean isBehindPlayer(double x, double y, double z) { + final Vec3D playerToBlock = new Vec3D(x - this.mc.thePlayer.posX, y - this.mc.thePlayer.posY, z - this.mc.thePlayer.posZ).normalize(); + final Vec3D direction = (this.mc.thePlayer.getLookVec()).normalize(); + return playerToBlock.dotProduct(direction) > 0.5; + } public void obtainEntitySkin(Entity var1) { var1.updateCloak(); diff --git a/src/net/minecraft/src/SoundManager.java b/src/net/minecraft/src/SoundManager.java index 828de1d..31bbfca 100644 --- a/src/net/minecraft/src/SoundManager.java +++ b/src/net/minecraft/src/SoundManager.java @@ -1,196 +1,183 @@ package net.minecraft.src; -import java.io.File; -//import java.util.Random; -//import paulscode.sound.SoundSystem; -//import paulscode.sound.SoundSystemConfig; -//import paulscode.sound.codecs.CodecJOrbis; -//import paulscode.sound.codecs.CodecWav; -//import paulscode.sound.libraries.LibraryLWJGLOpenAL; +import java.util.ArrayList; +import java.util.List; + +import net.PeytonPlayz585.opengl.GL11; public class SoundManager { -// private static SoundSystem sndSystem; -// private SoundPool soundPoolSounds = new SoundPool(); -// private SoundPool soundPoolStreaming = new SoundPool(); -// private SoundPool soundPoolMusic = new SoundPool(); -// private int field_587_e = 0; -// private GameSettings options; -// private static boolean loaded = false; -// private Random rand = new Random(); -// private int ticksBeforeMusic = this.rand.nextInt(12000); - + + private GameSettings options; + private static boolean loaded = false; + private Random rand = new Random(); + private int ticksBeforeMusic = this.rand.nextInt(12000); + + private static List sounds = new ArrayList(); + private static int BgMusic = -1; + + static String[] music = new String[] {"music.calm1_ogg", "music.calm2_ogg", "music.calm3_ogg", "newMusic.hal1_ogg", "newMusic.hal2_ogg", "newMusic.hal3_ogg", "newMusic.hal4_ogg", "newMusic.nuance1_ogg", "newMusic.nuance2_ogg", "newMusic.piano1_ogg", "newMusic.piano2_ogg", "newMusic.piano3_ogg"}; + public void loadSoundSettings(GameSettings var1) { -// this.soundPoolStreaming.field_1657_b = false; -// this.options = var1; -// if(!loaded && (var1 == null || var1.soundVolume != 0.0F || var1.musicVolume != 0.0F)) { -// this.tryToSetLibraryAndCodecs(); -// } - + this.options = var1; + loaded = true; } - - private void tryToSetLibraryAndCodecs() { -// try { -// float var1 = this.options.soundVolume; -// float var2 = this.options.musicVolume; -// this.options.soundVolume = 0.0F; -// this.options.musicVolume = 0.0F; -// this.options.saveOptions(); -// SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class); -// SoundSystemConfig.setCodec("ogg", CodecJOrbis.class); -// SoundSystemConfig.setCodec("mus", CodecMus.class); -// SoundSystemConfig.setCodec("wav", CodecWav.class); -// sndSystem = new SoundSystem(); -// this.options.soundVolume = var1; -// this.options.musicVolume = var2; -// this.options.saveOptions(); -// } catch (Throwable var3) { -// var3.printStackTrace(); -// System.err.println("error linking with the LibraryJavaSound plug-in"); -// } -// -// loaded = true; - } - + public void onSoundOptionsChanged() { -// if(!loaded && (this.options.soundVolume != 0.0F || this.options.musicVolume != 0.0F)) { -// this.tryToSetLibraryAndCodecs(); -// } -// -// if(loaded) { -// if(this.options.musicVolume == 0.0F) { -// sndSystem.stop("BgMusic"); -// } else { -// sndSystem.setVolume("BgMusic", this.options.musicVolume); -// } -// } - + for(int i = 0; i < sounds.size(); i++) { + if(!GL11.isPlaying(sounds.get(i))) { + sounds.remove(i); + } + } + + if(loaded) { + if(this.options.musicVolume == 0.0F) { + if(BgMusic != -1) { + GL11.endSound(BgMusic); + } + } else { + if(BgMusic != -1) { + GL11.setVolume(BgMusic, this.options.musicVolume); + } + } + + if(this.options.soundVolume == 0.0F) { + for(Integer i : sounds) { + if(i != -1) { + GL11.endSound(i); + } + } + } else { + for(Integer i : sounds) { + if(i != -1) { + GL11.setVolume(i, this.options.soundVolume); + } + } + } + } } - + public void closeMinecraft() { - //if(loaded) { - //sndSystem.cleanup(); - //} - + // Do nothing + } + + public void addSound(String var1) { + // Do nothing } - public void addSound(String var1, File var2) { - //this.soundPoolSounds.addSound(var1, var2); + public void addMusic(String var1) { + // Do nothing } - - public void addStreaming(String var1, File var2) { - //this.soundPoolStreaming.addSound(var1, var2); - } - - public void addMusic(String var1, File var2) { - //this.soundPoolMusic.addSound(var1, var2); - } - + public void playRandomMusicIfReady() { -// if(loaded && this.options.musicVolume != 0.0F) { -// if(!sndSystem.playing("BgMusic") && !sndSystem.playing("streaming")) { -// if(this.ticksBeforeMusic > 0) { -// --this.ticksBeforeMusic; -// return; -// } -// -// SoundPoolEntry var1 = this.soundPoolMusic.getRandomSound(); -// if(var1 != null) { -// this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000; -// sndSystem.backgroundMusic("BgMusic", var1.soundUrl, var1.soundName, false); -// sndSystem.setVolume("BgMusic", this.options.musicVolume); -// sndSystem.play("BgMusic"); -// } -// } -// -// } + for(int i = 0; i < sounds.size(); i++) { + if(!GL11.isPlaying(sounds.get(i))) { + sounds.remove(i); + } + } + + if(loaded && this.options.musicVolume != 0.0F) { + if(!GL11.isPlaying(BgMusic)) { + if(this.ticksBeforeMusic > 0) { + --this.ticksBeforeMusic; + return; + } + + int var1 = rand.nextInt((music.length - 1) + 1) + 1; + this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000; + BgMusic = GL11.beginPlaybackStatic(music[var1].replace(".", "/").replace("_", "."), this.options.musicVolume, 1.0F); + } + } } - + public void func_338_a(EntityLiving var1, float var2) { -// if(loaded && this.options.soundVolume != 0.0F) { -// if(var1 != null) { -// 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; -// float var10 = MathHelper.cos(-var3 * ((float)Math.PI / 180.0F) - (float)Math.PI); -// float var11 = MathHelper.sin(-var3 * ((float)Math.PI / 180.0F) - (float)Math.PI); -// float var12 = -var11; -// float var13 = 0.0F; -// float var14 = -var10; -// float var15 = 0.0F; -// float var16 = 1.0F; -// float var17 = 0.0F; -// sndSystem.setListenerPosition((float)var4, (float)var6, (float)var8); -// sndSystem.setListenerOrientation(var12, var13, var14, var15, var16, var17); -// } -// } + for(int i = 0; i < sounds.size(); i++) { + if(!GL11.isPlaying(sounds.get(i))) { + sounds.remove(i); + } + } + + if(loaded && this.options.soundVolume != 0.0F) { + if(var1 != null) { + 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; + GL11.setListenerPos((float)var4, (float)var6, (float)var8, (float)var1.motionX, (float)var1.motionY, (float)var1.motionZ, (float)var9, (float)var3); + } + } } - - public void playStreaming(String var1, float var2, float var3, float var4, float var5, float var6) { -// if(loaded && this.options.soundVolume != 0.0F) { -// String var7 = "streaming"; -// if(sndSystem.playing("streaming")) { -// sndSystem.stop("streaming"); -// } -// -// if(var1 != null) { -// SoundPoolEntry var8 = this.soundPoolStreaming.getRandomSoundFromSoundPool(var1); -// if(var8 != null && var5 > 0.0F) { -// if(sndSystem.playing("BgMusic")) { -// sndSystem.stop("BgMusic"); -// } -// -// float var9 = 16.0F; -// sndSystem.newStreamingSource(true, var7, var8.soundUrl, var8.soundName, false, var2, var3, var4, 2, var9 * 4.0F); -// sndSystem.setVolume(var7, 0.5F * this.options.soundVolume); -// sndSystem.play(var7); -// } -// -// } -// } - } - + public void playSound(String var1, float var2, float var3, float var4, float var5, float var6) { -// if(loaded && this.options.soundVolume != 0.0F) { -// SoundPoolEntry var7 = this.soundPoolSounds.getRandomSoundFromSoundPool(var1); -// if(var7 != null && var5 > 0.0F) { -// this.field_587_e = (this.field_587_e + 1) % 256; -// String var8 = "sound_" + this.field_587_e; -// float var9 = 16.0F; -// if(var5 > 1.0F) { -// var9 *= var5; -// } -// -// sndSystem.newSource(var5 > 1.0F, var8, var7.soundUrl, var7.soundName, false, var2, var3, var4, 2, var9); -// sndSystem.setPitch(var8, var6); -// if(var5 > 1.0F) { -// var5 = 1.0F; -// } -// -// sndSystem.setVolume(var8, var5 * this.options.soundVolume); -// sndSystem.play(var8); -// } -// -// } + playSound(var1, var2, var3, var4, var5, var6, rand.nextInt((4 - 1) + 1) + 1); } + + public void playSound(String var1, float var2, float var3, float var4, float var5, float var6, int number) { + for(int i = 0; i < sounds.size(); i++) { + if(!GL11.isPlaying(sounds.get(i))) { + sounds.remove(i); + } + } + + if(loaded && this.options.soundVolume != 0.0F) { + String var7 = "sounds/" + var1.replace(".", "/") + number + ".ogg"; + if(var7 != null && var5 > 0.0F) { + if(var5 > 1.0F) { + var5 = 1.0F; + } - public void playSoundFX(String var1, float var2, float var3) { -// if(loaded && this.options.soundVolume != 0.0F) { -// SoundPoolEntry var4 = this.soundPoolSounds.getRandomSoundFromSoundPool(var1); -// if(var4 != null) { -// this.field_587_e = (this.field_587_e + 1) % 256; -// String var5 = "sound_" + this.field_587_e; -// sndSystem.newSource(false, var5, var4.soundUrl, var4.soundName, false, 0.0F, 0.0F, 0.0F, 0, 0.0F); -// if(var2 > 1.0F) { -// var2 = 1.0F; -// } -// -// var2 *= 0.25F; -// sndSystem.setPitch(var5, var3); -// sndSystem.setVolume(var5, var2 * this.options.soundVolume); -// sndSystem.play(var5); -// } -// -// } + int i = GL11.beginPlayback(var7.replace("0", ""), var2, var3, var4, var5 * this.options.soundVolume, var6); + if(i != -1) { + sounds.add(i); + } else { + if(number != 0) { + playSound(var1, var2, var3, var4, var5, var6, number - 1); + } else { + System.err.println("Unknown sound: " + var7.replace("0", "")); + } + } + } + } } + + public void playSoundFX(String var1, float var2, float var3) { + playSoundFX(var1, var2, var3, rand.nextInt((4 - 1) + 1) + 1); + } + + public void playSoundFX(String var1, float var2, float var3, int number) { + for(int i = 0; i < sounds.size(); i++) { + if(!GL11.isPlaying(sounds.get(i))) { + sounds.remove(i); + } + } + + if(loaded && this.options.soundVolume != 0.0F) { + String var4 = "sounds/" + var1.replace(".", "/") + number + ".ogg"; + if(var4 != null) { + if(var2 > 1.0F) { + var2 = 1.0F; + } + + int i = GL11.beginPlaybackStatic(var4.replace("0", ""), var2 * this.options.soundVolume, var3); + if(i != -1) { + sounds.add(i); + } else { + if(number != 0) { + playSoundFX(var1, var2, var3, number - 1); + } else { + System.err.println("Unknown sound: " + var4.replace("0", "")); + } + } + } + + } + } + + + //Uhm... + public void playStreaming(String string, float f, float g, float h, float i, float j) { + // TODO Auto-generated method stub + + } + } diff --git a/src/net/minecraft/src/SoundPool.java b/src/net/minecraft/src/SoundPool.java deleted file mode 100644 index 94d08d5..0000000 --- a/src/net/minecraft/src/SoundPool.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.minecraft.src; - -import java.io.File; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class SoundPool { - private Random rand = new Random(); - private Map nameToSoundPoolEntriesMapping = new HashMap(); - private List allSoundPoolEntries = new ArrayList(); - public int numberOfSoundPoolEntries = 0; - public boolean field_1657_b = true; - - public SoundPoolEntry addSound(String var1, File var2) { - try { - String var3 = var1; - var1 = var1.substring(0, var1.indexOf(".")); - if(this.field_1657_b) { - while(Character.isDigit(var1.charAt(var1.length() - 1))) { - var1 = var1.substring(0, var1.length() - 1); - } - } - - var1 = var1.replaceAll("/", "."); - if(!this.nameToSoundPoolEntriesMapping.containsKey(var1)) { - this.nameToSoundPoolEntriesMapping.put(var1, new ArrayList()); - } - - SoundPoolEntry var4 = new SoundPoolEntry(var3, var2.toURI().toURL()); - ((List)this.nameToSoundPoolEntriesMapping.get(var1)).add(var4); - this.allSoundPoolEntries.add(var4); - ++this.numberOfSoundPoolEntries; - return var4; - } catch (MalformedURLException var5) { - var5.printStackTrace(); - throw new RuntimeException(var5); - } - } - - public SoundPoolEntry getRandomSoundFromSoundPool(String var1) { - List var2 = (List)this.nameToSoundPoolEntriesMapping.get(var1); - return var2 == null ? null : (SoundPoolEntry)var2.get(this.rand.nextInt(var2.size())); - } - - public SoundPoolEntry getRandomSound() { - return this.allSoundPoolEntries.size() == 0 ? null : (SoundPoolEntry)this.allSoundPoolEntries.get(this.rand.nextInt(this.allSoundPoolEntries.size())); - } -} diff --git a/src/net/minecraft/src/SoundPoolEntry.java b/src/net/minecraft/src/SoundPoolEntry.java deleted file mode 100644 index 5ef583c..0000000 --- a/src/net/minecraft/src/SoundPoolEntry.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.minecraft.src; - -import java.net.URL; - -public class SoundPoolEntry { - public String soundName; - public URL soundUrl; - - public SoundPoolEntry(String var1, URL var2) { - this.soundName = var1; - this.soundUrl = var2; - } -} diff --git a/src/net/minecraft/src/Vec3D.java b/src/net/minecraft/src/Vec3D.java index 4bec6f8..7485480 100644 --- a/src/net/minecraft/src/Vec3D.java +++ b/src/net/minecraft/src/Vec3D.java @@ -31,7 +31,7 @@ public class Vec3D { return ((Vec3D)vectorList.get(nextVector++)).setComponents(var0, var2, var4); } - private Vec3D(double var1, double var3, double var5) { + public Vec3D(double var1, double var3, double var5) { if(var1 == -0D) { var1 = 0.0D; } @@ -64,6 +64,10 @@ public class Vec3D { double var1 = (double)MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); return var1 < 1.0E-4D ? createVector(0.0D, 0.0D, 0.0D) : createVector(this.xCoord / var1, this.yCoord / var1, this.zCoord / var1); } + + public double dotProduct(Vec3D vec) { + return this.xCoord * vec.xCoord + this.yCoord * vec.yCoord + this.zCoord * vec.zCoord; + } public Vec3D crossProduct(Vec3D var1) { return createVector(this.yCoord * var1.zCoord - this.zCoord * var1.yCoord, this.zCoord * var1.xCoord - this.xCoord * var1.zCoord, this.xCoord * var1.yCoord - this.yCoord * var1.xCoord);