More fixes

This commit is contained in:
catfoolyou 2025-02-02 18:56:57 -05:00
parent 353b59f1bc
commit 3c51e176be
13 changed files with 468 additions and 639 deletions

Binary file not shown.

Binary file not shown.

View File

@ -101,7 +101,7 @@ public class Minecraft
/** The game settings that currently hold effect. */ /** The game settings that currently hold effect. */
public GameSettings gameSettings; public GameSettings gameSettings;
public SoundManager sndManager; public SoundManager sndManager = new SoundManager();
/** Mouse helper instance. */ /** Mouse helper instance. */
public MouseHelper mouseHelper; public MouseHelper mouseHelper;
@ -650,48 +650,36 @@ public class Minecraft
* Shuts down the minecraft applet by stopping the resource downloads, and clearing up GL stuff; called when the * Shuts down the minecraft applet by stopping the resource downloads, and clearing up GL stuff; called when the
* application (or web page) is exited. * application (or web page) is exited.
*/ */
public void shutdownMinecraftApplet() public void shutdownMinecraftApplet() {
{ try {
try
{
this.statFileWriter.syncStats();
this.getLogAgent().logInfo("Stopping!");
try System.err.println("Stopping!");
{
this.loadWorld((WorldClient)null); try {
} this.loadWorld((WorldClient) null);
catch (Throwable var7) } catch (Throwable var8) {
{
; ;
} }
try try {
{
GLAllocation.deleteTexturesAndDisplayLists(); GLAllocation.deleteTexturesAndDisplayLists();
} } catch (Throwable var7) {
catch (Throwable var6)
{
; ;
} }
this.sndManager.cleanup(); this.sndManager.closeMinecraft();
} } finally {
finally EaglerAdapter.destroyContext();
{
Display.destroy();
if (!this.hasCrashed) if (!this.hasCrashed) {
{ EaglerAdapter.exit();
System.exit(0);
} }
} }
System.gc(); System.gc();
} }
public void run() public void run() {
{
this.running = true; this.running = true;
this.startGame(); this.startGame();
while (this.running) { while (this.running) {
@ -802,10 +790,10 @@ public class Minecraft
secondTimer = EaglerAdapter.steadyTimeMillis(); secondTimer = EaglerAdapter.steadyTimeMillis();
} }
/*if(isGonnaTakeDatScreenShot) { if(isGonnaTakeDatScreenShot) {
isGonnaTakeDatScreenShot = false; isGonnaTakeDatScreenShot = false;
EaglerAdapter.saveScreenshot(); EaglerAdapter.saveScreenshot();
}*/ }
EaglerAdapter.doJavascriptCoroutines(); EaglerAdapter.doJavascriptCoroutines();
} }

View File

@ -12,8 +12,8 @@ import net.lax1dude.eaglercraft.EaglercraftRandom;
import net.lax1dude.eaglercraft.TextureLocation; import net.lax1dude.eaglercraft.TextureLocation;
import net.lax1dude.eaglercraft.adapter.Tessellator; import net.lax1dude.eaglercraft.adapter.Tessellator;
import net.lax1dude.eaglercraft.EaglerAdapter;
import org.lwjgl.opengl.ARBOcclusionQuery; import org.lwjgl.opengl.ARBOcclusionQuery;
import org.lwjgl.opengl.GL11;
public class RenderGlobal implements IWorldAccess public class RenderGlobal implements IWorldAccess
{ {
@ -175,14 +175,14 @@ public class RenderGlobal implements IWorldAccess
} }
this.starGLCallList = GLAllocation.generateDisplayLists(3); this.starGLCallList = GLAllocation.generateDisplayLists(3);
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
GL11.glNewList(this.starGLCallList, GL11.GL_COMPILE); EaglerAdapter.glNewList(this.starGLCallList, EaglerAdapter.GL_COMPILE);
this.renderStars(); this.renderStars();
GL11.glEndList(); EaglerAdapter.glEndList();
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
Tessellator var4 = Tessellator.instance; Tessellator var4 = Tessellator.instance;
this.glSkyList = this.starGLCallList + 1; this.glSkyList = this.starGLCallList + 1;
GL11.glNewList(this.glSkyList, GL11.GL_COMPILE); EaglerAdapter.glNewList(this.glSkyList, EaglerAdapter.GL_COMPILE);
byte var6 = 64; byte var6 = 64;
int var7 = 256 / var6 + 2; int var7 = 256 / var6 + 2;
float var5 = 16.0F; float var5 = 16.0F;
@ -202,9 +202,9 @@ public class RenderGlobal implements IWorldAccess
} }
} }
GL11.glEndList(); EaglerAdapter.glEndList();
this.glSkyList2 = this.starGLCallList + 2; this.glSkyList2 = this.starGLCallList + 2;
GL11.glNewList(this.glSkyList2, GL11.GL_COMPILE); EaglerAdapter.glNewList(this.glSkyList2, EaglerAdapter.GL_COMPILE);
var5 = -16.0F; var5 = -16.0F;
var4.startDrawingQuads(); var4.startDrawingQuads();
@ -220,7 +220,7 @@ public class RenderGlobal implements IWorldAccess
} }
var4.draw(); var4.draw();
GL11.glEndList(); EaglerAdapter.glEndList();
} }
private void renderStars() private void renderStars()
@ -653,16 +653,16 @@ public class RenderGlobal implements IWorldAccess
var19 = this.sortedWorldRenderers.length; var19 = this.sortedWorldRenderers.length;
} }
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LIGHTING); EaglerAdapter.glDisable(EaglerAdapter.GL_LIGHTING);
GL11.glDisable(GL11.GL_ALPHA_TEST); EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_FOG); EaglerAdapter.glDisable(EaglerAdapter.GL_FOG);
GL11.glColorMask(false, false, false, false); EaglerAdapter.glColorMask(false, false, false, false);
GL11.glDepthMask(false); EaglerAdapter.glDepthMask(false);
this.theWorld.theProfiler.startSection("check"); this.theWorld.theProfiler.startSection("check");
this.checkOcclusionQueryResult(var35, var19); this.checkOcclusionQueryResult(var35, var19);
this.theWorld.theProfiler.endSection(); this.theWorld.theProfiler.endSection();
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
float var36 = 0.0F; float var36 = 0.0F;
float var21 = 0.0F; float var21 = 0.0F;
float var22 = 0.0F; float var22 = 0.0F;
@ -697,7 +697,7 @@ public class RenderGlobal implements IWorldAccess
if (var30 != 0.0F || var31 != 0.0F || var32 != 0.0F) if (var30 != 0.0F || var31 != 0.0F || var32 != 0.0F)
{ {
GL11.glTranslatef(var30, var31, var32); EaglerAdapter.glTranslatef(var30, var31, var32);
var36 += var30; var36 += var30;
var21 += var31; var21 += var31;
var22 += var32; var22 += var32;
@ -714,28 +714,28 @@ public class RenderGlobal implements IWorldAccess
} }
} }
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
if (this.mc.gameSettings.anaglyph) if (this.mc.gameSettings.anaglyph)
{ {
if (EntityRenderer.anaglyphField == 0) if (EntityRenderer.anaglyphField == 0)
{ {
GL11.glColorMask(false, true, true, true); EaglerAdapter.glColorMask(false, true, true, true);
} }
else else
{ {
GL11.glColorMask(true, false, false, true); EaglerAdapter.glColorMask(true, false, false, true);
} }
} }
else else
{ {
GL11.glColorMask(true, true, true, true); EaglerAdapter.glColorMask(true, true, true, true);
} }
GL11.glDepthMask(true); EaglerAdapter.glDepthMask(true);
GL11.glEnable(GL11.GL_TEXTURE_2D); EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_ALPHA_TEST); EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_FOG); EaglerAdapter.glEnable(EaglerAdapter.GL_FOG);
this.theWorld.theProfiler.endStartSection("render"); this.theWorld.theProfiler.endStartSection("render");
var34 += this.renderSortedRenderers(var35, var19, par2, par3); var34 += this.renderSortedRenderers(var35, var19, par2, par3);
} }
@ -897,42 +897,42 @@ public class RenderGlobal implements IWorldAccess
{ {
if (this.mc.theWorld.provider.dimensionId == 1) if (this.mc.theWorld.provider.dimensionId == 1)
{ {
GL11.glDisable(GL11.GL_FOG); EaglerAdapter.glDisable(EaglerAdapter.GL_FOG);
GL11.glDisable(GL11.GL_ALPHA_TEST); EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_BLEND); EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
GL11.glDepthMask(false); EaglerAdapter.glDepthMask(false);
locationEndSkyPng.bindTexture(); locationEndSkyPng.bindTexture();
Tessellator var21 = Tessellator.instance; Tessellator var21 = Tessellator.instance;
for (int var22 = 0; var22 < 6; ++var22) for (int var22 = 0; var22 < 6; ++var22)
{ {
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
if (var22 == 1) if (var22 == 1)
{ {
GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); EaglerAdapter.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
} }
if (var22 == 2) if (var22 == 2)
{ {
GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); EaglerAdapter.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
} }
if (var22 == 3) if (var22 == 3)
{ {
GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); EaglerAdapter.glRotatef(180.0F, 1.0F, 0.0F, 0.0F);
} }
if (var22 == 4) if (var22 == 4)
{ {
GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); EaglerAdapter.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
} }
if (var22 == 5) if (var22 == 5)
{ {
GL11.glRotatef(-90.0F, 0.0F, 0.0F, 1.0F); EaglerAdapter.glRotatef(-90.0F, 0.0F, 0.0F, 1.0F);
} }
var21.startDrawingQuads(); var21.startDrawingQuads();
@ -942,16 +942,16 @@ public class RenderGlobal implements IWorldAccess
var21.addVertexWithUV(100.0D, -100.0D, 100.0D, 16.0D, 16.0D); var21.addVertexWithUV(100.0D, -100.0D, 100.0D, 16.0D, 16.0D);
var21.addVertexWithUV(100.0D, -100.0D, -100.0D, 16.0D, 0.0D); var21.addVertexWithUV(100.0D, -100.0D, -100.0D, 16.0D, 0.0D);
var21.draw(); var21.draw();
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
} }
GL11.glDepthMask(true); EaglerAdapter.glDepthMask(true);
GL11.glEnable(GL11.GL_TEXTURE_2D); EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_ALPHA_TEST); EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
} }
else if (this.mc.theWorld.provider.isSurfaceWorld()) else if (this.mc.theWorld.provider.isSurfaceWorld())
{ {
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
Vec3 var2 = this.theWorld.getSkyColor(this.mc.renderViewEntity, par1); Vec3 var2 = this.theWorld.getSkyColor(this.mc.renderViewEntity, par1);
float var3 = (float)var2.xCoord; float var3 = (float)var2.xCoord;
float var4 = (float)var2.yCoord; float var4 = (float)var2.yCoord;
@ -968,16 +968,16 @@ public class RenderGlobal implements IWorldAccess
var5 = var8; var5 = var8;
} }
GL11.glColor3f(var3, var4, var5); EaglerAdapter.glColor3f(var3, var4, var5);
Tessellator var23 = Tessellator.instance; Tessellator var23 = Tessellator.instance;
GL11.glDepthMask(false); EaglerAdapter.glDepthMask(false);
GL11.glEnable(GL11.GL_FOG); EaglerAdapter.glEnable(EaglerAdapter.GL_FOG);
GL11.glColor3f(var3, var4, var5); EaglerAdapter.glColor3f(var3, var4, var5);
GL11.glCallList(this.glSkyList); EaglerAdapter.glCallList(this.glSkyList);
GL11.glDisable(GL11.GL_FOG); EaglerAdapter.glDisable(EaglerAdapter.GL_FOG);
GL11.glDisable(GL11.GL_ALPHA_TEST); EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_BLEND); EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
float[] var24 = this.theWorld.provider.calcSunriseSunsetColors(this.theWorld.getCelestialAngle(par1), par1); float[] var24 = this.theWorld.provider.calcSunriseSunsetColors(this.theWorld.getCelestialAngle(par1), par1);
float var9; float var9;
@ -987,12 +987,12 @@ public class RenderGlobal implements IWorldAccess
if (var24 != null) if (var24 != null)
{ {
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH); EaglerAdapter.glShadeModel(EaglerAdapter.GL_SMOOTH);
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); EaglerAdapter.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(MathHelper.sin(this.theWorld.getCelestialAngleRadians(par1)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F); EaglerAdapter.glRotatef(MathHelper.sin(this.theWorld.getCelestialAngleRadians(par1)) < 0.0F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); EaglerAdapter.glRotatef(90.0F, 0.0F, 0.0F, 1.0F);
var8 = var24[0]; var8 = var24[0];
var9 = var24[1]; var9 = var24[1];
var10 = var24[2]; var10 = var24[2];
@ -1023,21 +1023,21 @@ public class RenderGlobal implements IWorldAccess
} }
var23.draw(); var23.draw();
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT); EaglerAdapter.glShadeModel(EaglerAdapter.GL_FLAT);
} }
GL11.glEnable(GL11.GL_TEXTURE_2D); EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE);
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
var8 = 1.0F - this.theWorld.getRainStrength(par1); var8 = 1.0F - this.theWorld.getRainStrength(par1);
var9 = 0.0F; var9 = 0.0F;
var10 = 0.0F; var10 = 0.0F;
var11 = 0.0F; var11 = 0.0F;
GL11.glColor4f(1.0F, 1.0F, 1.0F, var8); EaglerAdapter.glColor4f(1.0F, 1.0F, 1.0F, var8);
GL11.glTranslatef(var9, var10, var11); EaglerAdapter.glTranslatef(var9, var10, var11);
GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); EaglerAdapter.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(this.theWorld.getCelestialAngle(par1) * 360.0F, 1.0F, 0.0F, 0.0F); EaglerAdapter.glRotatef(this.theWorld.getCelestialAngle(par1) * 360.0F, 1.0F, 0.0F, 0.0F);
var12 = 30.0F; var12 = 30.0F;
locationSunPng.bindTexture(); locationSunPng.bindTexture();
var23.startDrawingQuads(); var23.startDrawingQuads();
@ -1061,30 +1061,30 @@ public class RenderGlobal implements IWorldAccess
var23.addVertexWithUV((double)var12, -100.0D, (double)(-var12), (double)var16, (double)var17); var23.addVertexWithUV((double)var12, -100.0D, (double)(-var12), (double)var16, (double)var17);
var23.addVertexWithUV((double)(-var12), -100.0D, (double)(-var12), (double)var18, (double)var17); var23.addVertexWithUV((double)(-var12), -100.0D, (double)(-var12), (double)var18, (double)var17);
var23.draw(); var23.draw();
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
float var20 = this.theWorld.getStarBrightness(par1) * var8; float var20 = this.theWorld.getStarBrightness(par1) * var8;
if (var20 > 0.0F) if (var20 > 0.0F)
{ {
GL11.glColor4f(var20, var20, var20, var20); EaglerAdapter.glColor4f(var20, var20, var20, var20);
GL11.glCallList(this.starGLCallList); EaglerAdapter.glCallList(this.starGLCallList);
} }
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); EaglerAdapter.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_BLEND); EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST); EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_FOG); EaglerAdapter.glEnable(EaglerAdapter.GL_FOG);
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glColor3f(0.0F, 0.0F, 0.0F); EaglerAdapter.glColor3f(0.0F, 0.0F, 0.0F);
double var25 = this.mc.thePlayer.getPosition(par1).yCoord - this.theWorld.getHorizon(); double var25 = this.mc.thePlayer.getPosition(par1).yCoord - this.theWorld.getHorizon();
if (var25 < 0.0D) if (var25 < 0.0D)
{ {
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
GL11.glTranslatef(0.0F, 12.0F, 0.0F); EaglerAdapter.glTranslatef(0.0F, 12.0F, 0.0F);
GL11.glCallList(this.glSkyList2); EaglerAdapter.glCallList(this.glSkyList2);
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
var10 = 1.0F; var10 = 1.0F;
var11 = -((float)(var25 + 65.0D)); var11 = -((float)(var25 + 65.0D));
var12 = -var10; var12 = -var10;
@ -1115,19 +1115,19 @@ public class RenderGlobal implements IWorldAccess
if (this.theWorld.provider.isSkyColored()) if (this.theWorld.provider.isSkyColored())
{ {
GL11.glColor3f(var3 * 0.2F + 0.04F, var4 * 0.2F + 0.04F, var5 * 0.6F + 0.1F); EaglerAdapter.glColor3f(var3 * 0.2F + 0.04F, var4 * 0.2F + 0.04F, var5 * 0.6F + 0.1F);
} }
else else
{ {
GL11.glColor3f(var3, var4, var5); EaglerAdapter.glColor3f(var3, var4, var5);
} }
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
GL11.glTranslatef(0.0F, -((float)(var25 - 16.0D)), 0.0F); EaglerAdapter.glTranslatef(0.0F, -((float)(var25 - 16.0D)), 0.0F);
GL11.glCallList(this.glSkyList2); EaglerAdapter.glCallList(this.glSkyList2);
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
GL11.glEnable(GL11.GL_TEXTURE_2D); EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glDepthMask(true); EaglerAdapter.glDepthMask(true);
} }
} }
@ -1141,14 +1141,14 @@ public class RenderGlobal implements IWorldAccess
} }
else else
{ {
GL11.glDisable(GL11.GL_CULL_FACE); EaglerAdapter.glDisable(EaglerAdapter.GL_CULL_FACE);
float var2 = (float)(this.mc.renderViewEntity.lastTickPosY + (this.mc.renderViewEntity.posY - this.mc.renderViewEntity.lastTickPosY) * (double)par1); float var2 = (float)(this.mc.renderViewEntity.lastTickPosY + (this.mc.renderViewEntity.posY - this.mc.renderViewEntity.lastTickPosY) * (double)par1);
byte var3 = 32; byte var3 = 32;
int var4 = 256 / var3; int var4 = 256 / var3;
Tessellator var5 = Tessellator.instance; Tessellator var5 = Tessellator.instance;
locationCloudsPng.bindTexture(); locationCloudsPng.bindTexture();
GL11.glEnable(GL11.GL_BLEND); EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
Vec3 var6 = this.theWorld.getCloudColour(par1); Vec3 var6 = this.theWorld.getCloudColour(par1);
float var7 = (float)var6.xCoord; float var7 = (float)var6.xCoord;
float var8 = (float)var6.yCoord; float var8 = (float)var6.yCoord;
@ -1191,9 +1191,9 @@ public class RenderGlobal implements IWorldAccess
} }
var5.draw(); var5.draw();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); EaglerAdapter.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_BLEND); EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
GL11.glEnable(GL11.GL_CULL_FACE); EaglerAdapter.glEnable(EaglerAdapter.GL_CULL_FACE);
} }
} }
} }
@ -1211,7 +1211,7 @@ public class RenderGlobal implements IWorldAccess
*/ */
public void renderCloudsFancy(float par1) public void renderCloudsFancy(float par1)
{ {
GL11.glDisable(GL11.GL_CULL_FACE); EaglerAdapter.glDisable(EaglerAdapter.GL_CULL_FACE);
float var2 = (float)(this.mc.renderViewEntity.lastTickPosY + (this.mc.renderViewEntity.posY - this.mc.renderViewEntity.lastTickPosY) * (double)par1); float var2 = (float)(this.mc.renderViewEntity.lastTickPosY + (this.mc.renderViewEntity.posY - this.mc.renderViewEntity.lastTickPosY) * (double)par1);
Tessellator var3 = Tessellator.instance; Tessellator var3 = Tessellator.instance;
float var4 = 12.0F; float var4 = 12.0F;
@ -1225,8 +1225,8 @@ public class RenderGlobal implements IWorldAccess
var8 -= (double)(var13 * 2048); var8 -= (double)(var13 * 2048);
var10 -= (double)(var14 * 2048); var10 -= (double)(var14 * 2048);
locationCloudsPng.bindTexture(); locationCloudsPng.bindTexture();
GL11.glEnable(GL11.GL_BLEND); EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
Vec3 var15 = this.theWorld.getCloudColour(par1); Vec3 var15 = this.theWorld.getCloudColour(par1);
float var16 = (float)var15.xCoord; float var16 = (float)var15.xCoord;
float var17 = (float)var15.yCoord; float var17 = (float)var15.yCoord;
@ -1255,28 +1255,28 @@ public class RenderGlobal implements IWorldAccess
byte var24 = 8; byte var24 = 8;
byte var25 = 4; byte var25 = 4;
float var26 = 9.765625E-4F; float var26 = 9.765625E-4F;
GL11.glScalef(var4, 1.0F, var4); EaglerAdapter.glScalef(var4, 1.0F, var4);
for (int var27 = 0; var27 < 2; ++var27) for (int var27 = 0; var27 < 2; ++var27)
{ {
if (var27 == 0) if (var27 == 0)
{ {
GL11.glColorMask(false, false, false, false); EaglerAdapter.glColorMask(false, false, false, false);
} }
else if (this.mc.gameSettings.anaglyph) else if (this.mc.gameSettings.anaglyph)
{ {
if (EntityRenderer.anaglyphField == 0) if (EntityRenderer.anaglyphField == 0)
{ {
GL11.glColorMask(false, true, true, true); EaglerAdapter.glColorMask(false, true, true, true);
} }
else else
{ {
GL11.glColorMask(true, false, false, true); EaglerAdapter.glColorMask(true, false, false, true);
} }
} }
else else
{ {
GL11.glColorMask(true, true, true, true); EaglerAdapter.glColorMask(true, true, true, true);
} }
for (int var28 = -var25 + 1; var28 <= var25; ++var28) for (int var28 = -var25 + 1; var28 <= var25; ++var28)
@ -1371,9 +1371,9 @@ public class RenderGlobal implements IWorldAccess
} }
} }
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); EaglerAdapter.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_BLEND); EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
GL11.glEnable(GL11.GL_CULL_FACE); EaglerAdapter.glEnable(EaglerAdapter.GL_CULL_FACE);
} }
/** /**
@ -1548,14 +1548,14 @@ public class RenderGlobal implements IWorldAccess
if (!this.damagedBlocks.isEmpty()) if (!this.damagedBlocks.isEmpty())
{ {
GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_SRC_COLOR); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_DST_COLOR, EaglerAdapter.GL_SRC_COLOR);
TextureMap.locationBlocksTexture.bindTexture(); TextureMap.locationBlocksTexture.bindTexture();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); EaglerAdapter.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
GL11.glPushMatrix(); EaglerAdapter.glPushMatrix();
GL11.glDisable(GL11.GL_ALPHA_TEST); EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glPolygonOffset(-3.0F, -3.0F); EaglerAdapter.glPolygonOffset(-3.0F, -3.0F);
GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL); EaglerAdapter.glEnable(EaglerAdapter.GL_POLYGON_OFFSET_FILL);
GL11.glEnable(GL11.GL_ALPHA_TEST); EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
par1Tessellator.startDrawingQuads(); par1Tessellator.startDrawingQuads();
par1Tessellator.setTranslation(-var4, -var6, -var8); par1Tessellator.setTranslation(-var4, -var6, -var8);
par1Tessellator.disableColor(); par1Tessellator.disableColor();
@ -1588,12 +1588,12 @@ public class RenderGlobal implements IWorldAccess
par1Tessellator.draw(); par1Tessellator.draw();
par1Tessellator.setTranslation(0.0D, 0.0D, 0.0D); par1Tessellator.setTranslation(0.0D, 0.0D, 0.0D);
GL11.glDisable(GL11.GL_ALPHA_TEST); EaglerAdapter.glDisable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glPolygonOffset(0.0F, 0.0F); EaglerAdapter.glPolygonOffset(0.0F, 0.0F);
GL11.glDisable(GL11.GL_POLYGON_OFFSET_FILL); EaglerAdapter.glDisable(EaglerAdapter.GL_POLYGON_OFFSET_FILL);
GL11.glEnable(GL11.GL_ALPHA_TEST); EaglerAdapter.glEnable(EaglerAdapter.GL_ALPHA_TEST);
GL11.glDepthMask(true); EaglerAdapter.glDepthMask(true);
GL11.glPopMatrix(); EaglerAdapter.glPopMatrix();
} }
} }
@ -1604,12 +1604,12 @@ public class RenderGlobal implements IWorldAccess
{ {
if (par3 == 0 && par2MovingObjectPosition.typeOfHit == EnumMovingObjectType.TILE) if (par3 == 0 && par2MovingObjectPosition.typeOfHit == EnumMovingObjectType.TILE)
{ {
GL11.glEnable(GL11.GL_BLEND); EaglerAdapter.glEnable(EaglerAdapter.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); EaglerAdapter.glBlendFunc(EaglerAdapter.GL_SRC_ALPHA, EaglerAdapter.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(0.0F, 0.0F, 0.0F, 0.4F); EaglerAdapter.glColor4f(0.0F, 0.0F, 0.0F, 0.4F);
GL11.glLineWidth(2.0F); EaglerAdapter.glLineWidth(2.0F);
GL11.glDisable(GL11.GL_TEXTURE_2D); EaglerAdapter.glDisable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glDepthMask(false); EaglerAdapter.glDepthMask(false);
float var5 = 0.002F; float var5 = 0.002F;
int var6 = this.theWorld.getBlockId(par2MovingObjectPosition.blockX, par2MovingObjectPosition.blockY, par2MovingObjectPosition.blockZ); int var6 = this.theWorld.getBlockId(par2MovingObjectPosition.blockX, par2MovingObjectPosition.blockY, par2MovingObjectPosition.blockZ);
@ -1622,9 +1622,9 @@ public class RenderGlobal implements IWorldAccess
this.drawOutlinedBoundingBox(Block.blocksList[var6].getSelectedBoundingBoxFromPool(this.theWorld, par2MovingObjectPosition.blockX, par2MovingObjectPosition.blockY, par2MovingObjectPosition.blockZ).expand((double)var5, (double)var5, (double)var5).getOffsetBoundingBox(-var7, -var9, -var11)); this.drawOutlinedBoundingBox(Block.blocksList[var6].getSelectedBoundingBoxFromPool(this.theWorld, par2MovingObjectPosition.blockX, par2MovingObjectPosition.blockY, par2MovingObjectPosition.blockZ).expand((double)var5, (double)var5, (double)var5).getOffsetBoundingBox(-var7, -var9, -var11));
} }
GL11.glDepthMask(true); EaglerAdapter.glDepthMask(true);
GL11.glEnable(GL11.GL_TEXTURE_2D); EaglerAdapter.glEnable(EaglerAdapter.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_BLEND); EaglerAdapter.glDisable(EaglerAdapter.GL_BLEND);
} }
} }

View File

@ -1,82 +1,64 @@
package net.minecraft.src; package net.minecraft.src;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.lax1dude.eaglercraft.EaglerAdapter; import net.lax1dude.eaglercraft.EaglerAdapter;
import org.apache.commons.io.FileUtils; import net.lax1dude.eaglercraft.EaglercraftRandom;
import paulscode.sound.SoundSystem; import net.minecraft.src.Minecraft;
import paulscode.sound.SoundSystemConfig;
import paulscode.sound.SoundSystemException;
import paulscode.sound.codecs.CodecJOrbis;
import paulscode.sound.codecs.CodecWav;
import paulscode.sound.libraries.LibraryLWJGLOpenAL;
public class SoundManager implements ResourceManagerReloadListener public class SoundManager {
{
private static final String[] field_130084_a = new String[] {"ogg"};
/** A reference to the sound system. */ private static class EntitySoundEvent {
private SoundSystem sndSystem; private Entity e;
private int id;
public EntitySoundEvent(Entity e, int id) {
this.e = e;
this.id = id;
}
}
/** Set to true when the SoundManager has been initialised. */ private static class QueuedSoundEvent {
private boolean loaded; private String sound;
private float x;
private float y;
private float z;
private float volume;
private float pitch;
private int timer;
public QueuedSoundEvent(String sound, float x, float y, float z, float volume, float pitch, int timer) {
this.sound = sound;
this.x = x;
this.y = y;
this.z = z;
this.volume = volume;
this.pitch = pitch;
this.timer = timer;
}
}
/** Sound pool containing sounds. */ private GameSettings options;
private final SoundPool soundPoolSounds; private ArrayList<EntitySoundEvent> soundevents;
private ArrayList<QueuedSoundEvent> queuedsoundevents;
private ArrayList<Integer> activerecords;
private HashMap<String,Integer> sounddefinitions;
private EaglercraftRandom soundrandom;
/** Sound pool containing streaming audio. */ public SoundManager() {
private final SoundPool soundPoolStreaming; this.soundevents = new ArrayList();
this.queuedsoundevents = new ArrayList();
/** Sound pool containing music. */ this.activerecords = new ArrayList();
private final SoundPool soundPoolMusic; this.sounddefinitions = null;
this.soundrandom = new EaglercraftRandom();
}
/** /**
* The last ID used when a sound is played, passed into SoundSystem to give active sounds a unique ID * Used for loading sound settings from GameSettings
*/ */
private int latestSoundID; public void loadSoundSettings(GameSettings par1GameSettings) {
/** A reference to the game settings. */
private GameSettings options;
private final File fileAssets;
/** Identifiers of all currently playing sounds. Type: HashSet<String> */
private final Set playingSounds = new HashSet();
private final List field_92072_h = new ArrayList();
/** RNG. */
private Random rand = new Random();
private int ticksBeforeMusic;
private HashMap<String,Integer> sounddefinitions;
public SoundManager(ResourceManager par1ResourceManager, GameSettings par2GameSettings, File par3File)
{
this.ticksBeforeMusic = this.rand.nextInt(12000);
this.options = par2GameSettings;
this.fileAssets = par3File;
this.soundPoolSounds = new SoundPool(par1ResourceManager, "sound", true);
this.soundPoolStreaming = new SoundPool(par1ResourceManager, "records", false);
this.soundPoolMusic = new SoundPool(par1ResourceManager, "music", true);
this.sounddefinitions = null;
try
{
SoundSystemConfig.addLibrary(LibraryLWJGLOpenAL.class);
SoundSystemConfig.setCodec("ogg", CodecJOrbis.class);
SoundSystemConfig.setCodec("wav", CodecWav.class);
}
catch (SoundSystemException var5)
{
var5.printStackTrace();
System.err.println("error linking with the LibraryJavaSound plug-in");
}
this.loadSounds();
}
public void loadSoundSettings(GameSettings par1GameSettings){
this.options = par1GameSettings; this.options = par1GameSettings;
EaglerAdapter.setMusicVolume(options.musicVolume); EaglerAdapter.setMusicVolume(options.musicVolume);
EaglerAdapter.setMasterVolume(options.soundVolume); EaglerAdapter.setMasterVolume(options.soundVolume);
@ -102,90 +84,10 @@ public class SoundManager implements ResourceManagerReloadListener
} }
} }
public void onResourceManagerReload(ResourceManager par1ResourceManager)
{
this.stopAllSounds();
this.cleanup();
this.tryToSetLibraryAndCodecs();
}
private void loadSounds()
{
if (this.fileAssets.isDirectory())
{
Collection var1 = FileUtils.listFiles(this.fileAssets, field_130084_a, true);
Iterator var2 = var1.iterator();
while (var2.hasNext())
{
File var3 = (File)var2.next();
this.loadSoundFile(var3);
}
}
}
private void loadSoundFile(File par1File)
{
String var2 = this.fileAssets.toURI().relativize(par1File.toURI()).getPath();
int var3 = var2.indexOf("/");
if (var3 != -1)
{
String var4 = var2.substring(0, var3);
var2 = var2.substring(var3 + 1);
if ("sound".equalsIgnoreCase(var4))
{
this.addSound(var2);
}
else if ("records".equalsIgnoreCase(var4))
{
this.addStreaming(var2);
}
else if ("music".equalsIgnoreCase(var4))
{
this.addMusic(var2);
}
}
}
/**
* Tries to add the paulscode library and the relevant codecs. If it fails, the volumes (sound and music) will be
* set to zero in the options file.
*/
private synchronized void tryToSetLibraryAndCodecs()
{
if (!this.loaded)
{
float var1 = this.options.soundVolume;
float var2 = this.options.musicVolume;
this.options.soundVolume = 0.0F;
this.options.musicVolume = 0.0F;
this.options.saveOptions();
try
{
(new Thread(new SoundManagerINNER1(this))).start();
this.options.soundVolume = var1;
this.options.musicVolume = var2;
}
catch (RuntimeException var4)
{
var4.printStackTrace();
System.err.println("error starting SoundSystem turning off sounds & music");
this.options.soundVolume = 0.0F;
this.options.musicVolume = 0.0F;
}
this.options.saveOptions();
}
}
/** /**
* Called when one of the sound level options has changed. * Called when one of the sound level options has changed.
*/ */
public void onSoundOptionsChanged() // FIX THIS (maybe) public void onSoundOptionsChanged() {
{
EaglerAdapter.setMusicVolume(options.musicVolume); EaglerAdapter.setMusicVolume(options.musicVolume);
if(options.musicVolume > 0.0f) { if(options.musicVolume > 0.0f) {
EaglerAdapter.fireTitleMusicEvent(titleMusic != -1, options.musicVolume); EaglerAdapter.fireTitleMusicEvent(titleMusic != -1, options.musicVolume);
@ -194,294 +96,254 @@ public class SoundManager implements ResourceManagerReloadListener
} }
/** /**
* Cleans up the Sound System * Called when Minecraft is closing down.
*/ */
public void cleanup() public void closeMinecraft() {
{
if (this.loaded)
{
this.sndSystem.cleanup();
this.loaded = false;
}
}
/**
* Adds a sounds with the name from the file. Args: name, file
*/
public void addSound(String par1Str)
{
this.soundPoolSounds.addSound(par1Str);
}
/**
* Adds an audio file to the streaming SoundPool.
*/
public void addStreaming(String par1Str)
{
this.soundPoolStreaming.addSound(par1Str);
}
/**
* Adds an audio file to the music SoundPool.
*/
public void addMusic(String par1Str)
{
this.soundPoolMusic.addSound(par1Str);
} }
/** /**
* If its time to play new music it starts it up. * If its time to play new music it starts it up.
*/ */
public void playRandomMusicIfReady() public void playRandomMusicIfReady() {
{
if (this.loaded && this.options.musicVolume != 0.0F)
{
if (!this.sndSystem.playing("BgMusic") && !this.sndSystem.playing("streaming"))
{
if (this.ticksBeforeMusic > 0)
{
--this.ticksBeforeMusic;
}
else
{
SoundPoolEntry var1 = this.soundPoolMusic.getRandomSound();
if (var1 != null)
{
this.ticksBeforeMusic = this.rand.nextInt(12000) + 12000;
this.sndSystem.backgroundMusic("BgMusic", var1.getSoundUrl(), var1.getSoundName(), false);
this.sndSystem.setVolume("BgMusic", this.options.musicVolume);
this.sndSystem.play("BgMusic");
}
}
}
}
} }
/** /**
* Sets the listener of sounds * Sets the listener of sounds
*/ */
public void setListener(EntityLivingBase par1EntityLivingBase, float par2) public void setListener(EntityLiving par1EntityLiving, float par2) {
{ if(par1EntityLiving == null) {
if (this.loaded && this.options.soundVolume != 0.0F && par1EntityLivingBase != null) EaglerAdapter.setListenerPos(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f);
{ }else {
float var3 = par1EntityLivingBase.prevRotationPitch + (par1EntityLivingBase.rotationPitch - par1EntityLivingBase.prevRotationPitch) * par2; double x = par1EntityLiving.prevPosX + (par1EntityLiving.posX - par1EntityLiving.prevPosX) * par2;
float var4 = par1EntityLivingBase.prevRotationYaw + (par1EntityLivingBase.rotationYaw - par1EntityLivingBase.prevRotationYaw) * par2; double y = par1EntityLiving.prevPosY + (par1EntityLiving.posY - par1EntityLiving.prevPosY) * par2;
double var5 = par1EntityLivingBase.prevPosX + (par1EntityLivingBase.posX - par1EntityLivingBase.prevPosX) * (double)par2; double z = par1EntityLiving.prevPosZ + (par1EntityLiving.posZ - par1EntityLiving.prevPosZ) * par2;
double var7 = par1EntityLivingBase.prevPosY + (par1EntityLivingBase.posY - par1EntityLivingBase.prevPosY) * (double)par2; double pitch = par1EntityLiving.prevRotationPitch + (par1EntityLiving.rotationPitch - par1EntityLiving.prevRotationPitch) * par2;
double var9 = par1EntityLivingBase.prevPosZ + (par1EntityLivingBase.posZ - par1EntityLivingBase.prevPosZ) * (double)par2; double yaw = par1EntityLiving.prevRotationYaw + (par1EntityLiving.rotationYaw - par1EntityLiving.prevRotationYaw) * par2;
float var11 = MathHelper.cos(-var4 * 0.017453292F - (float)Math.PI);
float var12 = MathHelper.sin(-var4 * 0.017453292F - (float)Math.PI); try {
float var13 = -var12; EaglerAdapter.setListenerPos((float)x, (float)y, (float)z, (float)par1EntityLiving.motionX, (float)par1EntityLiving.motionY, (float)par1EntityLiving.motionZ, (float)pitch, (float)yaw);
float var14 = -MathHelper.sin(-var3 * 0.017453292F - (float)Math.PI); }catch(Throwable t) {
float var15 = -var11; System.err.println("AudioListener f***ed up again");
float var16 = 0.0F; }
float var17 = 1.0F; }
float var18 = 0.0F; }
this.sndSystem.setListenerPosition((float)var5, (float)var7, (float)var9);
this.sndSystem.setListenerOrientation(var13, var14, var15, var16, var17, var18); public void setListener(EntityClientPlayerMP par1EntityLiving, float par2) {
if(par1EntityLiving == null) {
EaglerAdapter.setListenerPos(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f);
}else {
double x = par1EntityLiving.prevPosX + (par1EntityLiving.posX - par1EntityLiving.prevPosX) * par2;
double y = par1EntityLiving.prevPosY + (par1EntityLiving.posY - par1EntityLiving.prevPosY) * par2;
double z = par1EntityLiving.prevPosZ + (par1EntityLiving.posZ - par1EntityLiving.prevPosZ) * par2;
double pitch = par1EntityLiving.prevRotationPitch + (par1EntityLiving.rotationPitch - par1EntityLiving.prevRotationPitch) * par2;
double yaw = par1EntityLiving.prevRotationYaw + (par1EntityLiving.rotationYaw - par1EntityLiving.prevRotationYaw) * par2;
try {
EaglerAdapter.setListenerPos((float)x, (float)y, (float)z, (float)par1EntityLiving.motionX, (float)par1EntityLiving.motionY, (float)par1EntityLiving.motionZ, (float)pitch, (float)yaw);
}catch(Throwable t) {
System.err.println("AudioListener f***ed up again");
}
} }
} }
/** /**
* Stops all currently playing sounds * Stops all currently playing sounds
*/ */
public void stopAllSounds() public void stopAllSounds() {
{ for(EntitySoundEvent e : soundevents) {
if (this.loaded) EaglerAdapter.endSound(e.id);
{
Iterator var1 = this.playingSounds.iterator();
while (var1.hasNext())
{
String var2 = (String)var1.next();
this.sndSystem.stop(var2);
} }
for(Integer i : activerecords) {
this.playingSounds.clear(); EaglerAdapter.endSound(i.intValue());
} }
} }
public void playStreaming(String par1Str, float par2, float par3, float par4) public void playStreaming(String par1Str, float par2, float par3, float par4) {
{ playStreaming(par1Str, par2, par3, par4, false);
if (this.loaded && (this.options.soundVolume != 0.0F || par1Str == null))
{
String var5 = "streaming";
if (this.sndSystem.playing(var5))
{
this.sndSystem.stop(var5);
} }
if (par1Str != null) public void playStreaming(String par1Str, float par2, float par3, float par4, boolean music) {
{ for (Integer record : activerecords) {
SoundPoolEntry var6 = this.soundPoolStreaming.getRandomSoundFromSoundPool(par1Str); EaglerAdapter.endSound(record.intValue());
if (var6 != null)
{
if (this.sndSystem.playing("BgMusic"))
{
this.sndSystem.stop("BgMusic");
}
this.sndSystem.newStreamingSource(true, var5, var6.getSoundUrl(), var6.getSoundName(), false, par2, par3, par4, 2, 64.0F);
this.sndSystem.setVolume(var5, 0.5F * this.options.soundVolume);
this.sndSystem.play(var5);
} }
activerecords.clear();
if (par1Str != null) {
String path = "/records/" + par1Str.replace('.', '/') + ".mp3";
int snd = EaglerAdapter.beginPlayback(path, par2, par3, par4, 1.0F, 1.0F, music);
if (snd != -1) {
activerecords.add(Integer.valueOf(snd));
} else {
System.err.println("unregistered record: "+par1Str);
} }
} }
} }
/** /**
* Updates the sound associated with the entity with that entity's position and velocity. Args: the entity * Updates the sound associated with the entity with that entity's position and
* velocity. Args: the entity
*/ */
public void updateSoundLocation(Entity par1Entity) public void updateSoundLocation(Entity par1Entity) {
{ for(EntitySoundEvent e : soundevents) {
this.updateSoundLocation(par1Entity, par1Entity); if(e.e.equals(par1Entity)) {
} EaglerAdapter.moveSound(e.id, (float)par1Entity.posX, (float)par1Entity.posY, (float)par1Entity.posZ, (float)par1Entity.motionX, (float)par1Entity.motionY, (float)par1Entity.motionZ);
/**
* Updates the sound associated with soundEntity with the position and velocity of trackEntity. Args: soundEntity,
* trackEntity
*/
public void updateSoundLocation(Entity par1Entity, Entity par2Entity)
{
String var3 = "entity_" + par1Entity.entityId;
if (this.playingSounds.contains(var3))
{
if (this.sndSystem.playing(var3))
{
this.sndSystem.setPosition(var3, (float)par2Entity.posX, (float)par2Entity.posY, (float)par2Entity.posZ);
this.sndSystem.setVelocity(var3, (float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
}
else
{
this.playingSounds.remove(var3);
} }
} }
} }
/** /**
* Returns true if a sound is currently associated with the given entity, or false otherwise. * Updates the sound associated with soundEntity with the position and velocity
* of trackEntity. Args: soundEntity, trackEntity
*/ */
public boolean isEntitySoundPlaying(Entity par1Entity) public void updateSoundLocation(Entity par1Entity, Entity par2Entity) {
{ for(EntitySoundEvent e : soundevents) {
if (par1Entity != null && this.loaded) if(e.e.equals(par1Entity)) {
{ EaglerAdapter.moveSound(e.id, (float)par2Entity.posX, (float)par2Entity.posY, (float)par2Entity.posZ, (float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
String var2 = "entity_" + par1Entity.entityId; }
return this.sndSystem.playing(var2); }
}
/**
* Returns true if a sound is currently associated with the given entity, or
* false otherwise.
*/
public boolean isEntitySoundPlaying(Entity par1Entity) {
for(EntitySoundEvent e : soundevents) {
if(e.e.equals(par1Entity)) {
return true;
}
} }
else
{
return false; return false;
} }
}
/** /**
* Stops playing the sound associated with the given entity * Stops playing the sound associated with the given entity
*/ */
public void stopEntitySound(Entity par1Entity) public void stopEntitySound(Entity par1Entity) {
{ for(EntitySoundEvent e : soundevents) {
if (par1Entity != null && this.loaded) if(e.e.equals(par1Entity)) {
{ EaglerAdapter.endSound(e.id);
String var2 = "entity_" + par1Entity.entityId;
if (this.playingSounds.contains(var2))
{
if (this.sndSystem.playing(var2))
{
this.sndSystem.stop(var2);
}
this.playingSounds.remove(var2);
} }
} }
} }
/** /**
* Sets the volume of the sound associated with the given entity, if one is playing. The volume is scaled by the * Sets the volume of the sound associated with the given entity, if one is
* global sound volume. Args: the entity, the volume (from 0 to 1) * playing. The volume is scaled by the global sound volume. Args: the entity,
* the volume (from 0 to 1)
*/ */
public void setEntitySoundVolume(Entity par1Entity, float par2) public void setEntitySoundVolume(Entity par1Entity, float par2) {
{ for(EntitySoundEvent e : soundevents) {
if (par1Entity != null && this.loaded && this.options.soundVolume != 0.0F) if(e.e.equals(par1Entity)) {
{ EaglerAdapter.setVolume(e.id, par2);
String var3 = "entity_" + par1Entity.entityId;
if (this.sndSystem.playing(var3))
{
this.sndSystem.setVolume(var3, par2 * this.options.soundVolume);
} }
} }
} }
/** /**
* Sets the pitch of the sound associated with the given entity, if one is playing. Args: the entity, the pitch * Sets the pitch of the sound associated with the given entity, if one is
* playing. Args: the entity, the pitch
*/ */
public void setEntitySoundPitch(Entity par1Entity, float par2) public void setEntitySoundPitch(Entity par1Entity, float par2) {
{ for(EntitySoundEvent e : soundevents) {
if (par1Entity != null && this.loaded && this.options.soundVolume != 0.0F) if(e.e.equals(par1Entity)) {
{ EaglerAdapter.setPitch(e.id, par2);
String var3 = "entity_" + par1Entity.entityId; }
}
}
if (this.sndSystem.playing(var3)) private static final Map<String, String> remapAdl;
{
this.sndSystem.setPitch(var3, par2); static {
} remapAdl = new HashMap();
} remapAdl.put("ambient.cave.cave", "!adl.b");
remapAdl.put("damage.hit", "!random.classic_hurt");
remapAdl.put("damage.hurtflesh", "!random.classic_hurt");
remapAdl.put("mob.zombie.hurt", "adl.yee");
remapAdl.put("mob.zombie.say", "adl.yee");
remapAdl.put("mob.zombiepig.zpig", "!adl.eee");
remapAdl.put("mob.zombiepig.zpigangry", "adl.eee");
remapAdl.put("mob.blaze.breathe", "adl.yee");
remapAdl.put("mob.endermen.scream", "adl.yee");
remapAdl.put("mob.endermen.stare", "!adl.l");
remapAdl.put("mob.pig.say", "!adl.eee");
remapAdl.put("mob.pig.death", "adl.eee");
remapAdl.put("mob.silverfish.say", "!adl.eee");
remapAdl.put("mob.ghast.scream", "!adl.yee");
remapAdl.put("mob.slime.big", "!adl.eee");
remapAdl.put("mob.slime.small", "!adl.eee");
remapAdl.put("mob.slime.attack", "!adl.eee");
remapAdl.put("mob.spider.say", "adl.eee");
remapAdl.put("mob.villager.default", "!adl.a");
remapAdl.put("mob.villager.defaulthurt", "!adl.a");
} }
/** /**
* If a sound is already playing from the given entity, update the position and velocity of that sound to match the * If a sound is already playing from the given entity, update the position and
* entity. Otherwise, start playing a sound from that entity. Setting the last flag to true will prevent other * velocity of that sound to match the entity. Otherwise, start playing a sound
* sounds from overriding this one. Args: The sound name, the entity, the volume, the pitch, priority * from that entity. Setting the last flag to true will prevent other sounds
* from overriding this one. Args: The sound name, the entity, the volume, the
* pitch, priority
*/ */
public void playEntitySound(String par1Str, Entity par2Entity, float par3, float par4, boolean par5) public void playEntitySound(String par1Str, Entity par2Entity, float par3, float par4, boolean par5) {
{ for(EntitySoundEvent e : soundevents) {
if (this.loaded && (this.options.soundVolume != 0.0F || par1Str == null) && par2Entity != null) if(e.e.equals(par2Entity)) {
{ EaglerAdapter.moveSound(e.id, (float)par2Entity.posX, (float)par2Entity.posY, (float)par2Entity.posZ, (float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
String var6 = "entity_" + par2Entity.entityId; return;
if (this.playingSounds.contains(var6))
{
this.updateSoundLocation(par2Entity);
}
else
{
if (this.sndSystem.playing(var6))
{
this.sndSystem.stop(var6);
}
if (par1Str != null)
{
SoundPoolEntry var7 = this.soundPoolSounds.getRandomSoundFromSoundPool(par1Str);
if (var7 != null && par3 > 0.0F)
{
float var8 = 16.0F;
if (par3 > 1.0F)
{
var8 *= par3;
}
this.sndSystem.newSource(par5, var6, var7.getSoundUrl(), var7.getSoundName(), false, (float)par2Entity.posX, (float)par2Entity.posY, (float)par2Entity.posZ, 2, var8);
this.sndSystem.setLooping(var6, true);
this.sndSystem.setPitch(var6, par4);
if (par3 > 1.0F)
{
par3 = 1.0F;
}
this.sndSystem.setVolume(var6, par3 * this.options.soundVolume);
this.sndSystem.setVelocity(var6, (float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
this.sndSystem.play(var6);
this.playingSounds.add(var6);
} }
} }
if(this.options.soundVolume > 0.0F && par3 > 0.0F) {
Minecraft mc = Minecraft.getMinecraft();
if(mc.gameSettings.adderall || mc.entityRenderer.asdfghjkl) {
if(mc.entityRenderer.startup > 300) {
String rp = remapAdl.get(par1Str);
if(rp != null) {
if(rp.startsWith("!")) {
par1Str = rp.substring(1);
}else {
int i = 4 - (mc.entityRenderer.startup - 300) / 200;
if(i < 0) i = 0;
if(soundrandom.nextInt(2 + i) == 0) {
par1Str = rp;
}
}
}
}
}
Integer ct = this.sounddefinitions.get(par1Str);
if(ct != null) {
int c = ct.intValue();
String path;
if(c <= 1) {
path = "/sounds/"+par1Str.replace('.', '/')+".mp3";
}else {
int r = soundrandom.nextInt(c) + 1;
path = "/sounds/"+par1Str.replace('.', '/')+r+".mp3";
}
int id = 0;
float i = Minecraft.getMinecraft().entityRenderer.startup / 800.0f;
if(i > 1.0f) i = 1.0f;
i = i * i;
float v = i > 0.0f ? 1.0f + (soundrandom.nextFloat() - 0.5f) * i * 0.6f : 1.0f;
float p = i > 0.0f ? 1.0f + (soundrandom.nextFloat() - 0.2f) * i * 1.3f : 1.0f;
soundevents.add(new EntitySoundEvent(par2Entity, id = EaglerAdapter.beginPlayback(path, 0f, 0f, 0f, par3 * v * 0.8f, par4 * p)));
EaglerAdapter.moveSound(id, (float)par2Entity.posX + (i > 0.0f ? (soundrandom.nextFloat() - 0.5f) * i * 4.0f : 0.0f),
(float)par2Entity.posY + (i > 0.0f ? (soundrandom.nextFloat() - 0.5f) * i * 4.0f : 0.0f),
(float)par2Entity.posZ + (i > 0.0f ? (soundrandom.nextFloat() - 0.5f) * i * 4.0f : 0.0f),
(float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
if(i > 0.3f) {
while(soundrandom.nextFloat() * i > 0.3f) {
soundevents.add(new EntitySoundEvent(par2Entity, id = EaglerAdapter.beginPlayback(path, 0f, 0f, 0f, par3 * v *
(soundrandom.nextFloat() * 0.4f + 0.8f), par4 * p * (pow2(soundrandom.nextFloat()) * 1.5f + 0.3f))));
EaglerAdapter.moveSound(id, (float)par2Entity.posX + (soundrandom.nextFloat() - 0.5f) * i * 2.0f,
(float)par2Entity.posY + (soundrandom.nextFloat() - 0.5f) * i * 2.0f,
(float)par2Entity.posZ + (soundrandom.nextFloat() - 0.5f) * i * 2.0f,
(float)par2Entity.motionX, (float)par2Entity.motionY, (float)par2Entity.motionZ);
}
}
}else {
System.err.println("unregistered sound effect: "+par1Str);
} }
} }
} }
@ -489,62 +351,81 @@ public class SoundManager implements ResourceManagerReloadListener
/** /**
* Plays a sound. Args: soundName, x, y, z, volume, pitch * Plays a sound. Args: soundName, x, y, z, volume, pitch
*/ */
public void playSound(String par1Str, float par2, float par3, float par4, float par5, float par6) public void playSound(String par1Str, float par2, float par3, float par4, float par5, float par6) {
{ if(this.options.soundVolume > 0.0F && par5 > 0.0F) {
if (this.loaded && this.options.soundVolume != 0.0F) Minecraft mc = Minecraft.getMinecraft();
{ if(mc.gameSettings.adderall || mc.entityRenderer.asdfghjkl) {
SoundPoolEntry var7 = this.soundPoolSounds.getRandomSoundFromSoundPool(par1Str); if(mc.entityRenderer.startup > 300) {
String rp = remapAdl.get(par1Str);
if (var7 != null && par5 > 0.0F) if(rp != null) {
{ if(rp.startsWith("!")) {
this.latestSoundID = (this.latestSoundID + 1) % 256; par1Str = rp.substring(1);
String var8 = "sound_" + this.latestSoundID; }else {
float var9 = 16.0F; int i = 4 - (mc.entityRenderer.startup - 300) / 200;
if(i < 0) i = 0;
if (par5 > 1.0F) if(soundrandom.nextInt(2 + i) == 0) {
{ par1Str = rp;
var9 *= par5;
}
this.sndSystem.newSource(par5 > 1.0F, var8, var7.getSoundUrl(), var7.getSoundName(), false, par2, par3, par4, 2, var9);
if (par5 > 1.0F)
{
par5 = 1.0F;
}
this.sndSystem.setPitch(var8, par6);
this.sndSystem.setVolume(var8, par5 * this.options.soundVolume);
this.sndSystem.play(var8);
} }
} }
} }
}
}
Integer ct = this.sounddefinitions.get(par1Str);
if(ct != null) {
int c = ct.intValue();
String path;
if(c <= 1) {
path = "/sounds/"+par1Str.replace('.', '/')+".mp3";
}else {
int r = soundrandom.nextInt(c) + 1;
path = "/sounds/"+par1Str.replace('.', '/')+r+".mp3";
}
float i = mc.entityRenderer.startup / 800.0f;
if(i > 1.0f) i = 1.0f;
i = i * i;
float v = i > 0.0f ? 1.0f + (soundrandom.nextFloat() - 0.5f) * i * 0.6f : 1.0f;
float p = i > 0.0f ? 1.0f + (soundrandom.nextFloat() - 0.2f) * i * 1.3f : 1.0f;
if(i > 0.3f) {
par2 += (soundrandom.nextFloat() - 0.5f) * i * 3.0f;
par3 += (soundrandom.nextFloat() - 0.5f) * i * 3.0f;
par4 += (soundrandom.nextFloat() - 0.5f) * i * 3.0f;
while(soundrandom.nextFloat() * i > 0.3f) {
EaglerAdapter.beginPlayback(path, par2 + (soundrandom.nextFloat() - 0.5f) * i * 3.0f, par3 + (soundrandom.nextFloat() - 0.5f) * i * 3.0f,
par4 + (soundrandom.nextFloat() - 0.5f) * i * 3.0f, par5 * v * (soundrandom.nextFloat() * 0.4f + 0.8f),
par6 * p * (pow2(soundrandom.nextFloat()) * 1.5f + 0.3f));
}
}
EaglerAdapter.beginPlayback(path, par2, par3, par4, par5 * v, par6 * p);
}else {
System.err.println("unregistered sound effect: "+par1Str);
}
}
}
private static float pow2(float f) {
return f * f;
}
/** /**
* Plays a sound effect with the volume and pitch of the parameters passed. The sound isn't affected by position of * Plays a sound effect with the volume and pitch of the parameters passed. The
* the player (full volume and center balanced) * sound isn't affected by position of the player (full volume and center
* balanced)
*/ */
public void playSoundFX(String par1Str, float par2, float par3) public void playSoundFX(String par1Str, float par2, float par3) {
{ if(this.options.soundVolume > 0.0F && par2 > 0.0F) {
if (this.loaded && this.options.soundVolume != 0.0F) Integer ct = this.sounddefinitions.get(par1Str);
{ if(ct != null) {
SoundPoolEntry var4 = this.soundPoolSounds.getRandomSoundFromSoundPool(par1Str); int c = ct.intValue();
String path;
if (var4 != null && par2 > 0.0F) if(c <= 1) {
{ path = "/sounds/"+par1Str.replace('.', '/')+".mp3";
this.latestSoundID = (this.latestSoundID + 1) % 256; }else {
String var5 = "sound_" + this.latestSoundID; int r = soundrandom.nextInt(c) + 1;
this.sndSystem.newSource(false, var5, var4.getSoundUrl(), var4.getSoundName(), false, 0.0F, 0.0F, 0.0F, 0, 0.0F); path = "/sounds/"+par1Str.replace('.', '/')+r+".mp3";
if (par2 > 1.0F)
{
par2 = 1.0F;
} }
EaglerAdapter.beginPlaybackStatic(path, par2, par3);
par2 *= 0.25F; }else {
this.sndSystem.setPitch(var5, par3); System.err.println("unregistered sound effect: "+par1Str);
this.sndSystem.setVolume(var5, par2 * this.options.soundVolume);
this.sndSystem.play(var5);
} }
} }
} }
@ -552,64 +433,42 @@ public class SoundManager implements ResourceManagerReloadListener
/** /**
* Pauses all currently playing sounds * Pauses all currently playing sounds
*/ */
public void pauseAllSounds() public void pauseAllSounds() {
{
Iterator var1 = this.playingSounds.iterator();
while (var1.hasNext())
{
String var2 = (String)var1.next();
this.sndSystem.pause(var2);
}
} }
/** /**
* Resumes playing all currently playing sounds (after pauseAllSounds) * Resumes playing all currently playing sounds (after pauseAllSounds)
*/ */
public void resumeAllSounds() public void resumeAllSounds() {
{
Iterator var1 = this.playingSounds.iterator();
while (var1.hasNext())
{
String var2 = (String)var1.next();
this.sndSystem.play(var2);
}
} }
public void func_92071_g() private int resetTimer = 0;
{
if (!this.field_92072_h.isEmpty())
{
Iterator var1 = this.field_92072_h.iterator();
while (var1.hasNext()) public void func_92071_g() {
{ ++resetTimer;
ScheduledSound var2 = (ScheduledSound)var1.next(); if(resetTimer % 20 == 0) {
--var2.field_92064_g; ArrayList<EntitySoundEvent> e = this.soundevents;
this.soundevents = new ArrayList();
if (var2.field_92064_g <= 0) for(EntitySoundEvent e2 : e) {
{ if(EaglerAdapter.isPlaying(e2.id)) {
this.playSound(var2.field_92069_a, var2.field_92067_b, var2.field_92068_c, var2.field_92065_d, var2.field_92066_e, var2.field_92063_f); soundevents.add(e2);
var1.remove();
} }
} }
} }
Iterator<QueuedSoundEvent> itr = queuedsoundevents.iterator();
while(itr.hasNext()) {
QueuedSoundEvent e = itr.next();
if(--e.timer <= 0) {
playSound(e.sound, e.x, e.y, e.z, e.volume, e.pitch);
itr.remove();
}
}
} }
public void func_92070_a(String par1Str, float par2, float par3, float par4, float par5, float par6, int par7) public void func_92070_a(String par1Str, float par2, float par3, float par4, float par5, float par6, int par7) {
{ queuedsoundevents.add(new QueuedSoundEvent(par1Str, par2, par3, par4, par5, par6, par7));
this.field_92072_h.add(new ScheduledSound(par1Str, par2, par3, par4, par5, par6, par7));
}
static SoundSystem func_130080_a(SoundManager par0SoundManager, SoundSystem par1SoundSystem)
{
return par0SoundManager.sndSystem = par1SoundSystem;
}
static boolean func_130082_a(SoundManager par0SoundManager, boolean par1)
{
return par0SoundManager.loaded = par1;
} }
private int titleMusic = -1; private int titleMusic = -1;
@ -630,4 +489,5 @@ public class SoundManager implements ResourceManagerReloadListener
} }
titleMusic = -1; titleMusic = -1;
} }
} }

View File

@ -1,19 +0,0 @@
package net.minecraft.src;
import paulscode.sound.SoundSystem;
class SoundManagerINNER1 implements Runnable
{
final SoundManager theSoundManager;
SoundManagerINNER1(SoundManager par1SoundManager)
{
this.theSoundManager = par1SoundManager;
}
public void run()
{
SoundManager.func_130080_a(this.theSoundManager, new SoundSystem());
SoundManager.func_130082_a(this.theSoundManager, true);
}
}