55 */
66package comcrafthd ;
77
8+ import comcrafthd .client .ChunkRendererThread ;
89import comcrafthd .client .ComcraftPrefs ;
9- import comcrafthd .client .ComcraftRenderer ;
1010import java .util .Enumeration ;
1111import java .util .Hashtable ;
1212
@@ -28,7 +28,7 @@ private int getInitialSize() {
2828 return (int ) (ComcraftPrefs .instance .chunkRenderDistance * ComcraftPrefs .instance .chunkRenderDistance * 3.2f ) + 1 ;
2929 }
3030
31- public void triggerRenderClosestChunk ( final ComcraftRenderer renderer , int blockX , int blockZ ) {
31+ public Chunk getClosestNotRenderedChunk ( int blockX , int blockZ ) {
3232 final short originChunkX = (short ) (blockX >> Chunk .BLOCK_TO_CHUNK_SHIFT );
3333 final short originChunkZ = (short ) (blockZ >> Chunk .BLOCK_TO_CHUNK_SHIFT );
3434
@@ -38,14 +38,12 @@ public void triggerRenderClosestChunk(final ComcraftRenderer renderer, int block
3838 for (final Enumeration e = chunks .elements (); e .hasMoreElements ();) {
3939 final Chunk chunk = (Chunk ) e .nextElement ();
4040
41- if (! areNeighboursLoaded ( chunk .chunkX , chunk . chunkZ ) ) {
41+ if (chunk .renderCache . done ) {
4242 continue ;
4343 }
4444
45- synchronized (chunk .renderCache ) {
46- if (chunk .renderCache .done || chunk .renderCache .isCacheBeingGenerated ) {
47- continue ;
48- }
45+ if (!areNeighboursLoaded (chunk .chunkX , chunk .chunkZ )) {
46+ continue ;
4947 }
5048
5149 final int x = chunk .chunkX - originChunkX ;
@@ -59,9 +57,7 @@ public void triggerRenderClosestChunk(final ComcraftRenderer renderer, int block
5957 }
6058 }
6159
62- if (closest != null ) {
63- renderer .renderChunkListCallback (closest );
64- }
60+ return closest ;
6561 }
6662
6763 public void loadAround (int blockX , int blockZ , int chunkRadius ) {
@@ -81,7 +77,7 @@ public void loadAround(int blockX, int blockZ, int chunkRadius) {
8177 }
8278 }
8379
84- public void dropAround (int blockX , int blockZ , int chunkRadius ) {
80+ public void dropAround (int blockX , int blockZ , int chunkRadius , final ChunkRendererThread listener ) {
8581 final short originChunkX = (short ) (blockX >> Chunk .BLOCK_TO_CHUNK_SHIFT );
8682 final short originChunkZ = (short ) (blockZ >> Chunk .BLOCK_TO_CHUNK_SHIFT );
8783
@@ -94,21 +90,11 @@ public void dropAround(int blockX, int blockZ, int chunkRadius) {
9490 final int z = chunk .chunkZ - originChunkZ ;
9591
9692 if (x * x + z * z > chunkRadiusSqr ) {
97- dropChunk (chunk );
98- }
99- }
100- }
93+ chunks .remove (getChunkKey (chunk .chunkX , chunk .chunkZ ));
10194
102- public void dropChunk (final Chunk chunk ) {
103- synchronized (chunk .renderCache ) {
104- if (chunk .renderCache .isCacheBeingGenerated ) {
105- return ;
95+ listener .dropChunkCallback (chunk );
10696 }
10797 }
108-
109- chunks .remove (getChunkKey (chunk .chunkX , chunk .chunkZ ));
110-
111- ComcraftGame .instance .renderer .dropChunkListCallback (chunk );
11298 }
11399
114100 public void loadChunk (int chunkX , int chunkZ ) {
@@ -138,7 +124,7 @@ public Chunk getChunk(int chunkX, int chunkZ) {
138124 private void addChunk (int chunkX , int chunkZ , Chunk chunk ) {
139125 chunks .put (getChunkKey (chunkX , chunkZ ), chunk );
140126 }
141-
127+
142128 public boolean areNeighboursLoaded (int chunkX , int chunkZ ) {
143129 if (!chunkExists (chunkX - 1 , chunkZ )) {
144130 return false ;
0 commit comments