Skip to content

Commit e1dac11

Browse files
committed
more
1 parent 0793f68 commit e1dac11

37 files changed

+369
-312
lines changed

src/game/java/net/minecraft/client/Minecraft.java

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.lax1dude.eaglercraft.internal.PlatformOpenGL;
55
import net.lax1dude.eaglercraft.internal.PlatformRuntime;
66
import net.lax1dude.eaglercraft.internal.vfs2.VFile2;
7+
import net.lax1dude.eaglercraft.opengl.EaglercraftGPU;
78
import net.lax1dude.eaglercraft.opengl.GlStateManager;
89
import net.lax1dude.eaglercraft.profile.GuiScreenEditProfile;
910
import net.minecraft.src.AchievementList;
@@ -106,7 +107,6 @@ public class Minecraft implements Runnable {
106107
public static byte[] field_28006_b = new byte[10485760];
107108
private static Minecraft theMinecraft;
108109
public PlayerController playerController;
109-
private boolean fullscreen = false;
110110
private boolean hasCrashed = false;
111111
public int displayWidth;
112112
public int displayHeight;
@@ -152,7 +152,7 @@ public class Minecraft implements Runnable {
152152
long prevFrameTime = -1L;
153153
public boolean inGameHasFocus = false;
154154
public boolean isRaining = false;
155-
long systemTime = System.currentTimeMillis();
155+
long systemTime = EagRuntime.steadyTimeMillis();
156156
private int joinPlayerCounter = 0;
157157

158158
private String serverIP;
@@ -162,7 +162,6 @@ public Minecraft() {
162162
StatList.func_27360_a();
163163
this.displayWidth = Display.getWidth();
164164
this.displayHeight = Display.getHeight();
165-
this.fullscreen = false;
166165

167166
this.session = new Session("Player", "");
168167
theMinecraft = this;
@@ -277,7 +276,8 @@ private void loadScreen() throws LWJGLException {
277276
GL11.glDisable(GL11.GL_FOG);
278277
GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.renderEngine.getTexture("/title/mojang.png"));
279278
var2.startDrawingQuads();
280-
var2.setColorOpaque_I(16777215);
279+
// var2.setColorOpaque_I(16777215);
280+
var2.setColorRGBA(255, 255, 255, 255);
281281
var2.addVertexWithUV(0.0D, (double) this.displayHeight, 0.0D, 0.0D, 0.0D);
282282
var2.addVertexWithUV((double) this.displayWidth, (double) this.displayHeight, 0.0D, 0.0D, 0.0D);
283283
var2.addVertexWithUV((double) this.displayWidth, 0.0D, 0.0D, 0.0D, 0.0D);
@@ -290,8 +290,9 @@ private void loadScreen() throws LWJGLException {
290290
this.scaledTessellator((var1.getScaledWidth() - var3) / 2, (var1.getScaledHeight() - var4) / 2, 0, 0, var3, var4);
291291
GL11.glDisable(GL11.GL_LIGHTING);
292292
GL11.glDisable(GL11.GL_FOG);
293-
GL11.glEnable(GL11.GL_ALPHA_TEST);
293+
GL11.glEnable(GL11.GL_ALPHA);
294294
GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
295+
Display.update();
295296
}
296297

297298
public void scaledTessellator(int var1, int var2, int var3, int var4, int var5, int var6) {
@@ -423,16 +424,15 @@ public void run() {
423424
}
424425

425426
try {
426-
long var1 = System.currentTimeMillis();
427+
long var1 = EagRuntime.steadyTimeMillis();
427428
int var3 = 0;
428429

429430
while (this.running) {
430431
try {
431432
AxisAlignedBB.clearBoundingBoxPool();
432433
Vec3D.initialize();
433-
if (Display.isCloseRequested()) {
434-
this.shutdown();
435-
}
434+
435+
Display.checkContextLost();
436436

437437
if (this.isGamePaused && this.theWorld != null) {
438438
float var4 = this.timer.renderPartialTicks;
@@ -442,7 +442,7 @@ public void run() {
442442
this.timer.updateTimer();
443443
}
444444

445-
long var23 = System.nanoTime();
445+
long var23 = EagRuntime.nanoTime();
446446

447447
for (int var6 = 0; var6 < this.timer.elapsedTicks; ++var6) {
448448
++this.ticksRan;
@@ -456,10 +456,15 @@ public void run() {
456456
}
457457
}
458458

459-
long var24 = System.nanoTime() - var23;
459+
long var24 = EagRuntime.nanoTime() - var23;
460460
this.checkGLError("Pre render");
461461
RenderBlocks.fancyGrass = this.gameSettings.fancyGrass;
462462
this.sndManager.func_338_a(this.thePlayer, this.timer.renderPartialTicks);
463+
EaglercraftGPU.optimize();
464+
PlatformOpenGL._wglBindFramebuffer(0x8D40, null);
465+
GL11.glViewport(0, 0, this.displayWidth, this.displayHeight);
466+
GL11.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
467+
GL11.glPushMatrix();
463468
GL11.glEnable(GL11.GL_TEXTURE_2D);
464469
if (this.theWorld != null) {
465470
this.theWorld.updatingLighting();
@@ -477,14 +482,12 @@ public void run() {
477482
this.entityRenderer.updateCameraAndRender(this.timer.renderPartialTicks);
478483
}
479484

480-
if (!Display.isActive() && this.fullscreen) {
481-
this.toggleFullscreen();
482-
}
485+
GL11.glPopMatrix();
483486

484487
if (this.gameSettings.showDebugInfo) {
485488
this.displayDebugInfo(var24);
486489
} else {
487-
this.prevFrameTime = System.nanoTime();
490+
this.prevFrameTime = EagRuntime.nanoTime();
488491
}
489492

490493
this.guiAchievement.updateAchievementWindow();
@@ -496,7 +499,7 @@ public void run() {
496499
++var3;
497500

498501
for (this.isGamePaused = !this.isMultiplayerWorld() && this.currentScreen != null
499-
&& this.currentScreen.doesGuiPauseGame(); System.currentTimeMillis() >= var1 + 1000L; var3 = 0) {
502+
&& this.currentScreen.doesGuiPauseGame(); EagRuntime.steadyTimeMillis() >= var1 + 1000L; var3 = 0) {
500503
this.debug = var3 + " fps, " + WorldRenderer.chunksUpdated + " chunk updates";
501504
this.fps = var3;
502505
WorldRenderer.chunksUpdated = 0;
@@ -562,10 +565,10 @@ private void screenshotListener() {
562565
private void displayDebugInfo(long var1) {
563566
long var3 = 16666666L;
564567
if (this.prevFrameTime == -1L) {
565-
this.prevFrameTime = System.nanoTime();
568+
this.prevFrameTime = EagRuntime.nanoTime();
566569
}
567570

568-
long var5 = System.nanoTime();
571+
long var5 = EagRuntime.nanoTime();
569572
tickTimes[numRecordedFrameTimes & frameTimes.length - 1] = var1;
570573
frameTimes[numRecordedFrameTimes++ & frameTimes.length - 1] = var5 - this.prevFrameTime;
571574
this.prevFrameTime = var5;
@@ -853,7 +856,7 @@ public void runTick() {
853856
KeyBinding.func_35960_a(Mouse.getEventButton() - 100);
854857
}
855858

856-
long var5 = System.currentTimeMillis() - this.systemTime;
859+
long var5 = EagRuntime.steadyTimeMillis() - this.systemTime;
857860
if (var5 <= 200L) {
858861
var3 = Mouse.getEventDWheel();
859862
if (var3 != 0) {
@@ -1028,7 +1031,7 @@ public void runTick() {
10281031
}
10291032
}
10301033

1031-
this.systemTime = System.currentTimeMillis();
1034+
this.systemTime = EagRuntime.steadyTimeMillis();
10321035
}
10331036

10341037
private void forceReload() {

src/game/java/net/minecraft/src/BlockFire.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package net.minecraft.src;
22

3+
import it.unimi.dsi.fastutil.objects.Object2IntMap;
4+
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
35
import net.lax1dude.eaglercraft.Random;
46

57
public class BlockFire extends Block {
6-
private int[] chanceToEncourageFire = new int[256];
7-
private int[] abilityToCatchFire = new int[256];
8+
private Object2IntMap<Integer> chanceToEncourageFire = new Object2IntOpenHashMap<>(256);
9+
private Object2IntMap<Integer> abilityToCatchFire = new Object2IntOpenHashMap<>(256);
810

911
protected BlockFire(int var1, int var2) {
1012
super(var1, var2, Material.fire);
@@ -25,8 +27,8 @@ public void initializeBlock() {
2527
}
2628

2729
private void setBurnRate(int var1, int var2, int var3) {
28-
this.chanceToEncourageFire[var1] = var2;
29-
this.abilityToCatchFire[var1] = var3;
30+
this.chanceToEncourageFire.put(Integer.valueOf(var1), var2);
31+
this.abilityToCatchFire.put(Integer.valueOf(var1), var3);
3032
}
3133

3234
public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) {
@@ -114,7 +116,7 @@ public void updateTick(World var1, int var2, int var3, int var4, Random var5) {
114116
}
115117

116118
private void tryToCatchBlockOnFire(World var1, int var2, int var3, int var4, int var5, Random var6, int var7) {
117-
int var8 = this.abilityToCatchFire[var1.getBlockId(var2, var3, var4)];
119+
int var8 = this.abilityToCatchFire.get(var1.getBlockId(var2, var3, var4));
118120
if(var6.nextInt(var5) < var8) {
119121
boolean var9 = var1.getBlockId(var2, var3, var4) == Block.tnt.blockID;
120122
if(var6.nextInt(var7 + 10) < 5 && !var1.canLightningStrikeAt(var2, var3, var4)) {
@@ -159,11 +161,11 @@ public boolean isCollidable() {
159161
}
160162

161163
public boolean canBlockCatchFire(IBlockAccess var1, int var2, int var3, int var4) {
162-
return this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)] > 0;
164+
return this.chanceToEncourageFire.get(var1.getBlockId(var2, var3, var4)) > 0;
163165
}
164166

165167
public int getChanceToEncourageFire(World var1, int var2, int var3, int var4, int var5) {
166-
int var6 = this.chanceToEncourageFire[var1.getBlockId(var2, var3, var4)];
168+
int var6 = this.chanceToEncourageFire.get(var1.getBlockId(var2, var3, var4));
167169
return var6 > var5 ? var6 : var5;
168170
}
169171

src/game/java/net/minecraft/src/BlockStairs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void getCollidingBoundingBoxes(World var1, int var2, int var3, int var4,
6767
}
6868

6969
public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) {
70-
this.modelBlock.randomDisplayTick(var1, var2, var3, var4, var5);
70+
if (this.modelBlock != null) this.modelBlock.randomDisplayTick(var1, var2, var3, var4, var5);
7171
}
7272

7373
public void onBlockClicked(World var1, int var2, int var3, int var4, EntityPlayer var5) {

src/game/java/net/minecraft/src/Chunk.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ public void addEntity(Entity var1) {
520520
int var2 = MathHelper.floor_double(var1.posX / 16.0D);
521521
int var3 = MathHelper.floor_double(var1.posZ / 16.0D);
522522
if(var2 != this.xPosition || var3 != this.zPosition) {
523-
System.out.println("Wrong location! " + var1);
523+
System.out.println("Wrong location! " + var1 + ":" + var1.getClass().getSimpleName());
524524
EagRuntime.dumpStack();
525525
}
526526

src/game/java/net/minecraft/src/ChunkCache.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ public int func_35454_a(EnumSkyBlock var1, int var2, int var3, int var4) {
180180
}
181181

182182
if(var3 >= 0) {
183-
this.worldObj.getClass();
184183
if(var3 < 128 && var2 >= -30000000 && var4 >= -30000000 && var2 < 30000000 && var4 <= 30000000) {
185184
int var5 = this.getBlockId(var2, var3, var4);
186185
int var6;

src/game/java/net/minecraft/src/ChunkProviderLoadOrGenerate.java

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import java.io.IOException;
44

5+
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
6+
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
7+
58
public class ChunkProviderLoadOrGenerate implements IChunkProvider {
69
private Chunk blankChunk;
710
private IChunkProvider chunkProvider;
811
private IChunkLoader chunkLoader;
9-
private Chunk[] chunks;
12+
private Long2ObjectMap<Chunk> chunks = new Long2ObjectOpenHashMap<>(1024);
1013
private World worldObj;
1114
int lastQueriedChunkXPos;
1215
int lastQueriedChunkZPos;
@@ -30,10 +33,8 @@ public boolean chunkExists(int var1, int var2) {
3033
} else if(var1 == this.lastQueriedChunkXPos && var2 == this.lastQueriedChunkZPos && this.lastQueriedChunk != null) {
3134
return true;
3235
} else {
33-
int var3 = var1 & 31;
34-
int var4 = var2 & 31;
35-
int var5 = var3 + var4 * 32;
36-
return this.chunks[var5] != null && (this.chunks[var5] == this.blankChunk || this.chunks[var5].isAtLocation(var1, var2));
36+
Chunk var3 = this.chunks.get(ChunkCoordIntPair.chunkXZ2Int(var1, var2));
37+
return var3 != null && (var3 == this.blankChunk || var3.isAtLocation(var1, var2));
3738
}
3839
}
3940

@@ -47,14 +48,13 @@ public Chunk provideChunk(int var1, int var2) {
4748
} else if(!this.worldObj.findingSpawnPoint && !this.canChunkExist(var1, var2)) {
4849
return this.blankChunk;
4950
} else {
50-
int var3 = var1 & 31;
51-
int var4 = var2 & 31;
52-
int var5 = var3 + var4 * 32;
51+
long var3 = ChunkCoordIntPair.chunkXZ2Int(var1, var2);
52+
Chunk var5 = this.chunks.get(var3);
5353
if(!this.chunkExists(var1, var2)) {
54-
if(this.chunks[var5] != null) {
55-
this.chunks[var5].onChunkUnload();
56-
this.saveChunk(this.chunks[var5]);
57-
this.saveExtraChunkData(this.chunks[var5]);
54+
if(var5 != null) {
55+
var5.onChunkUnload();
56+
this.saveChunk(var5);
57+
this.saveExtraChunkData(var5);
5858
}
5959

6060
Chunk var6 = this.func_542_c(var1, var2);
@@ -67,19 +67,20 @@ public Chunk provideChunk(int var1, int var2) {
6767
}
6868
}
6969

70-
this.chunks[var5] = var6;
70+
this.chunks.put(var3, var6);
7171
var6.func_4143_d();
72-
if(this.chunks[var5] != null) {
73-
this.chunks[var5].onChunkLoad();
72+
if(var6 != null) {
73+
var6.onChunkLoad();
7474
}
7575

76-
this.chunks[var5].func_35843_a(this, this, var1, var2);
76+
var6.func_35843_a(this, this, var1, var2);
77+
var5 = var6;
7778
}
7879

7980
this.lastQueriedChunkXPos = var1;
8081
this.lastQueriedChunkZPos = var2;
81-
this.lastQueriedChunk = this.chunks[var5];
82-
return this.chunks[var5];
82+
this.lastQueriedChunk = var5;
83+
return var5;
8384
}
8485
}
8586

@@ -141,24 +142,24 @@ public boolean saveChunks(boolean var1, IProgressUpdate var2) {
141142
int var4 = 0;
142143
int var5;
143144
if(var2 != null) {
144-
for(var5 = 0; var5 < this.chunks.length; ++var5) {
145-
if(this.chunks[var5] != null && this.chunks[var5].needsSaving(var1)) {
145+
for(Chunk var6 : this.chunks.values()) {
146+
if(var6 != null && var6.needsSaving(var1)) {
146147
++var4;
147148
}
148149
}
149150
}
150151

151152
var5 = 0;
152153

153-
for(int var6 = 0; var6 < this.chunks.length; ++var6) {
154-
if(this.chunks[var6] != null) {
155-
if(var1 && !this.chunks[var6].neverSave) {
156-
this.saveExtraChunkData(this.chunks[var6]);
154+
for(Chunk var6 : this.chunks.values()) {
155+
if(var6 != null) {
156+
if(var1 && !var6.neverSave) {
157+
this.saveExtraChunkData(var6);
157158
}
158159

159-
if(this.chunks[var6].needsSaving(var1)) {
160-
this.saveChunk(this.chunks[var6]);
161-
this.chunks[var6].isModified = false;
160+
if(var6.needsSaving(var1)) {
161+
this.saveChunk(var6);
162+
var6.isModified = false;
162163
++var3;
163164
if(var3 == 2 && !var1) {
164165
return false;
@@ -198,6 +199,6 @@ public boolean canSave() {
198199
}
199200

200201
public String makeString() {
201-
return "ChunkCache: " + this.chunks.length;
202+
return "ChunkCache: " + this.chunks.size();
202203
}
203204
}

src/game/java/net/minecraft/src/ClippingHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
public class ClippingHelper {
44
public float[][] frustum = new float[16][16];
5-
public float[] projectionMatrix = new float[16];
6-
public float[] modelviewMatrix = new float[16];
5+
public static float[] projectionMatrix = new float[16];
6+
public static float[] modelviewMatrix = new float[16];
77
public float[] clippingMatrix = new float[16];
88

99
public boolean isBoxInFrustum(double var1, double var3, double var5, double var7, double var9, double var11) {

src/game/java/net/minecraft/src/ClippingHelperImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,4 @@ private void init() {
8080
this.frustum[5][3] = this.clippingMatrix[15] + this.clippingMatrix[14];
8181
this.normalize(this.frustum, 5);
8282
}
83-
}
83+
}

0 commit comments

Comments
 (0)