Jump to content

Question about server ticks and threads


jabelar

Recommended Posts

I have a structure generator that is invoked when a tile entity reaches a certain state. This structure generator simply reads a text file and places blocks accordingly. But as mentioned in another thread on the topic, I'm generating this very high up (in the clouds) and it turns out that the lighting updated during the setBlock make a high structure much slower to generate than a lower structure. Anyway, the point is that it takes about 20 seconds to generate the structure.

 

The thing that puzzles me though is that it doesn't create any lag in the actual game. The structure takes 20 seconds to appear, but there is no lag (other gameplay is smooth) while it is generating. But this seems odd because I'm doing the structure generation from the update method of a tile entity, and the structure gen is just a big nested loop, so I would think that whatever thread called the tile entity update method would get held up until it completed the generation.

 

So I'm wondering whether the server is actually hung up during the generation and the client is continuing to make the game play seem to work, or is the server sufficiently threaded that the call to the tile entity is isolated from the other code the server is executing?

 

Basically it just seems odd to me that putting code that takes 20 seconds to loop through isn't causing the server to have trouble doing the rest of what it needs to do.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

You said it reads a text file to place the blocks, maybe the way you read the file is slower thus causing it to take longer to generate?

I am not a cat. I know my profile picture is sexy and amazing beyond anything you could imagine but my cat like features only persist in my fierce eyes. I might be a cat.

Link to comment
Share on other sites

I don't know, but one way to find out would be to print to your logger during the world tick event - you will see how many server vs. client ticks appear while generating your structure, and then you will know if the client is continuing along on its dandy way whilst the server is entangled in your structure gen's for loops.

Link to comment
Share on other sites

I don't know, but one way to find out would be to print to your logger during the world tick event - you will see how many server vs. client ticks appear while generating your structure, and then you will know if the client is continuing along on its dandy way whilst the server is entangled in your structure gen's for loops.

 

Okay, yeah I did that and it definitely seems that the server is held up while the client is continuing. Here's the log starting a few ticks before the generation starts:

 

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:261]: Starting to generate with sparse array

[21:34:40] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:270]: Starting to generate basic blocks

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:40] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:41] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:42] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:43] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:44] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:45] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:46] [Client thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:155]: Client tick

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:288]: Starting to generate meta blocks

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:59]: Customizing tile entity

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:64]: Populating dispenser

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:69]: Found tile entity

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:72]: With inventory size = 9

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 1

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 2

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 3

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 4

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 5

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 6

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 7

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 8

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:59]: Customizing tile entity

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:64]: Populating dispenser

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:69]: Found tile entity

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:72]: With inventory size = 9

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 1

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 2

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 3

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 4

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 5

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 6

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 7

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:76]: Setting contents for slot = 8

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:79]: The slot contents are 5xitem.arrow@0

[21:34:59] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:customizeTileEntity:59]: Customizing tile entity

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:304]: Starting to generate special blocks

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:319]: Time to loop 11k blocks = 20410 milliseconds

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:322]: Populating items

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:populateItems:51]: Finished populating items in structure.

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:326]: Populating Entities

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:populateEntities:135]: Populating golden goose at 150.0, 140.0, 268.0

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:populateEntities:155]: Populating giant at 150.0, 139.0, 278.0

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleJaden:populateEntities:164]: Finished populating entities in structure.

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.structures.Structure:generateSparse:330]: Structure setting MagicBeansWorldData hasCastleBeenSpawned to true

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.ModWorldData:setHasCastleSpawned:54]: World Data setHasCastleSpawned = true

[21:35:00] [server thread/INFO]: MistMaestro lost connection: TextComponent{text='Disconnected', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}

[21:35:00] [server thread/INFO]: MistMaestro the Wise left the game

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:135]: Player logged out

[21:35:00] [server thread/INFO]: Stopping singleplayer server as player logged out

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.FMLEventHandler:onEvent:188]: Server tick

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.MagicBeans:fmlLifeCycle:227]: Server stopping

[21:35:00] [server thread/INFO]: Stopping server

[21:35:00] [server thread/INFO]: Saving players

[21:35:00] [server thread/INFO]: Saving worlds

[21:35:00] [server thread/INFO]: Saving chunks for level 'Copy of MagicBeans 1.8'/Overworld

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.ModWorldData:writeToNBT:40]: MagicBeansWorldData writeToNBT

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.entities.EntityGoldenGoose:writeEntityToNBT:338]: EntityGoldenGoose writeEntityToNBT

[21:35:00] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.entities.EntityGiant:writeEntityToNBT:659]: EntityGiant writeEntityToNBT

[21:35:00] [server thread/INFO]: Saving chunks for level 'Copy of MagicBeans 1.8'/Nether

[21:35:00] [server thread/INFO]: Saving chunks for level 'Copy of MagicBeans 1.8'/The End

[21:35:01] [server thread/INFO] [FML]: Unloading dimension 0

[21:35:01] [server thread/INFO] [FML]: Unloading dimension -1

[21:35:01] [server thread/INFO] [FML]: Unloading dimension 1

[21:35:01] [server thread/INFO] [FML]: Applying holder lookups

[21:35:01] [server thread/INFO] [FML]: Holder lookups applied

[21:35:01] [server thread/INFO] [sTDOUT]: [com.blogspot.jabelarminecraft.magicbeans.MagicBeans:fmlLifeCycle:236]: Server stopped

 

 

 

You can see that at the beginning on average it is doing same number client and server ticks. Then you can see the generation starts and then there are only client ticks. I then stopped the game and then a whole bunch of server messages came through.

 

So yep, just like I thought, I'm hanging the server.

 

I had previously broken up the structure to just do a few blocks per tick, so I'll try to go back to that.

 

Ultimately, I've really got to figure out a way to create an alternative setBlock() that doesn't regenerate lighting after every placement. I almost got it working by trying to edit the chunk storage directly and it was literally 100 times faster...

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

You said it reads a text file to place the blocks, maybe the way you read the file is slower thus causing it to take longer to generate?

 

Thanks for the suggestion. I actually read the file into an array in advance during the mod loading, so I'm not reading from the file during the generation.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Okay -- I created my own version of set block that doesn't do the lighting updates. Basically just copied the World#setBlock() code along with the Chunk function it calls and commented out the things that recalculated lighting.

 

The time to generate went down from 22 seconds to 74 milliseconds!!! Pretty much instantaneous.

 

If you're interested, here is the code (1.7.10 version) as I currently have it. I renamed a few parameters to make it more readable, and will probably go through and rename some more, but it seems to work and you can see what I commented out:

 

 

    /**

    * Sets the block ID and metadata at a given location. Args: X, Y, Z, new block ID, new metadata, flags. Flag 1 will

    * cause a block update. Flag 2 will send the change to clients (you almost always want parChunk). Flag 4 prevents the

    * block from being re-rendered, if parChunk is a client world. Flags can be added together.

    */

    public static boolean setBlockFast(World parWorld, int parX, int parY, int parZ, Block parBlock, int parMetaData, int parFlag)

    {

        // Make sure position is within valid range

        if (parX >= -30000000 && parZ >= -30000000 && parX < 30000000 && parZ < 30000000)

        {

            if (parY < 0)

            {

                return false;

            }

            else if (parY >= 256)

            {

                return false;

            }

            else

            {

                Chunk chunk = parWorld.getChunkFromChunkCoords(parX >> 4, parZ >> 4);

                Block existingBlock = null;

                BlockSnapshot blockSnapshot = null;

 

                if ((parFlag & 1) != 0)

                {

                    existingBlock = chunk.getBlock(parX & 15, parY, parZ & 15);

                }

 

                if (parWorld.captureBlockSnapshots && !parWorld.isRemote)

                {

                    blockSnapshot = BlockSnapshot.getBlockSnapshot(parWorld, parX, parY, parZ, parFlag);

                    parWorld.capturedBlockSnapshots.add(blockSnapshot);

                }

 

                boolean setBlockSuceeded = setBlockInChunkFast(chunk, parX & 15, parY, parZ & 15, parBlock, parMetaData);

 

                if (!setBlockSuceeded && blockSnapshot != null)

                {

                    parWorld.capturedBlockSnapshots.remove(blockSnapshot);

                    blockSnapshot = null;

                }

 

//                parWorld.theProfiler.startSection("checkLight");

//                parWorld.func_147451_t(parX, parY, parZ);

//                parWorld.theProfiler.endSection();

 

                if (setBlockSuceeded && blockSnapshot == null) // Don't notify clients or update physics while capturing blockstates

                {

                    // Modularize client and physic updates

                    parWorld.markAndNotifyBlock(parX, parY, parZ, chunk, existingBlock, parBlock, parFlag);

                }

 

                return setBlockSuceeded;

            }

        }

        else

        {

            return false;

        }

    }

 

    public static boolean setBlockInChunkFast(Chunk parChunk, int parX, int parY, int parZ, Block parBlock, int parMetaData)

    {

        int mapKey = parZ << 4 | parX;

 

        if (parY >= parChunk.precipitationHeightMap[mapKey] - 1)

        {

            parChunk.precipitationHeightMap[mapKey] = -999;

        }

 

        int currentHeight = parChunk.heightMap[mapKey];

        Block existingBlock = parChunk.getBlock(parX, parY, parZ);

        int existingMetaData = parChunk.getBlockMetadata(parX, parY, parZ);

 

        if (existingBlock == parBlock && existingMetaData == parMetaData)

        {

            return false;

        }

        else

        {

            ExtendedBlockStorage extendedblockstorage = parChunk.getBlockStorageArray()[parY >> 4];

            boolean flag = false;

 

            if (extendedblockstorage == null)

            {

                if (parBlock == Blocks.air)

                {

                    return false;

                }

 

                extendedblockstorage = parChunk.getBlockStorageArray()[parY >> 4] = new ExtendedBlockStorage(parY >> 4 << 4, !parChunk.worldObj.provider.hasNoSky);

                flag = parY >= currentHeight;

            }

 

            int worldPosX = parChunk.xPosition * 16 + parX;

            int worldPosZ = parChunk.zPosition * 16 + parZ;

 

//            int existingLightOpacity = existingBlock.getLightOpacity(parChunk.worldObj, worldPosX, parY, worldPosZ);

 

            if (!parChunk.worldObj.isRemote)

            {

                existingBlock.onBlockPreDestroy(parChunk.worldObj, worldPosX, parY, worldPosZ, existingMetaData);

            }

 

            extendedblockstorage.func_150818_a(parX, parY & 15, parZ, parBlock);

            extendedblockstorage.setExtBlockMetadata(parX, parY & 15, parZ, parMetaData); // This line duplicates the one below, so breakBlock fires with valid worldstate

 

            if (!parChunk.worldObj.isRemote)

            {

                existingBlock.breakBlock(parChunk.worldObj, worldPosX, parY, worldPosZ, existingBlock, existingMetaData);

                // After breakBlock a phantom TE might have been created with incorrect meta. This attempts to kill that phantom TE so the normal one can be create properly later

                TileEntity te = parChunk.getTileEntityUnsafe(parX & 0x0F, parY, parZ & 0x0F);

                if (te != null && te.shouldRefresh(existingBlock, parChunk.getBlock(parX & 0x0F, parY, parZ & 0x0F), existingMetaData, parChunk.getBlockMetadata(parX & 0x0F, parY, parZ & 0x0F), parChunk.worldObj, worldPosX, parY, worldPosZ))

                {

                    parChunk.removeTileEntity(parX & 0x0F, parY, parZ & 0x0F);

                }

            }

            else if (existingBlock.hasTileEntity(existingMetaData))

            {

                TileEntity te = parChunk.getTileEntityUnsafe(parX & 0x0F, parY, parZ & 0x0F);

                if (te != null && te.shouldRefresh(existingBlock, parBlock, existingMetaData, parMetaData, parChunk.worldObj, worldPosX, parY, worldPosZ))

                {

                    parChunk.worldObj.removeTileEntity(worldPosX, parY, worldPosZ);

                }

            }

 

            if (extendedblockstorage.getBlockByExtId(parX, parY & 15, parZ) != parBlock)

            {

                return false;

            }

            else

            {

                extendedblockstorage.setExtBlockMetadata(parX, parY & 15, parZ, parMetaData);

 

//                if (flag)

//                {

//                    parChunk.generateSkylightMap();

//                }

//                else

//                {

//                    int newLightOpacity = parBlock.getLightOpacity(parChunk.worldObj, worldPosX, parY, worldPosZ);

//

//                    if (newLightOpacity > 0)

//                    {

//                        if (parY >= currentHeight)

//                        {

//                            parChunk.relightBlock(parX, parY + 1, parZ);

//                        }

//                    }

//                    else if (parY == currentHeight - 1)

//                    {

//                        parChunk.relightBlock(parX, parY, parZ);

//                    }

//

//                    if (newLightOpacity != existingLightOpacity && (newLightOpacity < existingLightOpacity || parChunk.getSavedLightValue(EnumSkyBlock.Sky, parX, parY, parZ) > 0 || parChunk.getSavedLightValue(EnumSkyBlock.Block, parX, parY, parZ) > 0))

//                    {

//                        parChunk.propagateSkylightOcclusion(parX, parZ);

//                    }

//                }

 

                TileEntity tileentity;

 

                if (!parChunk.worldObj.isRemote)

                {

                    parBlock.onBlockAdded(parChunk.worldObj, worldPosX, parY, worldPosZ);

                }

 

                if (parBlock.hasTileEntity(parMetaData))

                {

                    tileentity = parChunk.func_150806_e(parX, parY, parZ);

 

                    if (tileentity != null)

                    {

                        tileentity.updateContainingBlockInfo();

                        tileentity.blockMetadata = parMetaData;

                    }

                }

 

                parChunk.isModified = true;

                return true;

            }

        }

    }

 

 

 

Note it does have some lighting artifacts -- some areas are darker than they should be, but they fill in over time or as you move around, and it doesn't look that bad and frankly Minecraft has a lot of such visual/loading artifacts. I will still look at how i can get the lighting update after the blocks are placed...

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

and here is 1.8 version of the code for those who might want to use it:

 

 

    /**

    * Sets the block state at a given location. Flag 1 will cause a block update. Flag 2 will send the change to

    * clients (you almost always want parWorld). Flag 4 prevents the block from being re-rendered, if parWorld is a client

    * world. Flags can be added together.

    * 

    * @param parFlags Flag 1 will cause a block update. Flag 2 will send the change to clients (you almost always want

    * parWorld). Flag 4 prevents the block from being re-rendered, if parWorld is a client world. Flags can be added together.

    */

    public static boolean setBlockStateFast(World parWorld, BlockPos parBlockPos, IBlockState parIBlockState, int parFlags)

    {

        if (!(parBlockPos.getX() >= -30000000 && parBlockPos.getZ() >= -30000000 && parBlockPos.getX() < 30000000 && parBlockPos.getZ() < 30000000 && parBlockPos.getY() >= 0 && parBlockPos.getY() < 256))

        {

            return false;

        }

        else if (!parWorld.isRemote && parWorld.getWorldInfo().getTerrainType() == WorldType.DEBUG_WORLD)

        {

            return false;

        }

        else

        {

            Chunk theChunk = parWorld.getChunkFromBlockCoords(parBlockPos);

//            Block newBlock = parIBlockState.getBlock();

 

            BlockSnapshot blockSnapshot = null;

            if (parWorld.captureBlockSnapshots && !parWorld.isRemote)

            {

                blockSnapshot = BlockSnapshot.getBlockSnapshot(parWorld, parBlockPos, parFlags);

                parWorld.capturedBlockSnapshots.add(blockSnapshot);

            }

 

            IBlockState theIBlockState = setBlockStateInChunkFast(theChunk, parBlockPos, parIBlockState);

 

            if (theIBlockState == null)

            {

                if (blockSnapshot != null) parWorld.capturedBlockSnapshots.remove(blockSnapshot);

                return false;

            }

            else

            {

//                Block block1 = theIBlockState.getBlock();

//

//                if (newBlock.getLightOpacity() != block1.getLightOpacity() || newBlock.getLightValue() != block1.getLightValue())

//                {

//                    parWorld.theProfiler.startSection("checkLight");

//                    parWorld.checkLight(parBlockPos);

//                    parWorld.theProfiler.endSection();

//                }

 

                if (blockSnapshot == null) // Don't notify clients or update physics while capturing blockstates

                {

                    parWorld.markAndNotifyBlock(parBlockPos, theChunk, theIBlockState, parIBlockState, parFlags); // Modularize client and physic updates

                }

 

                return true;

            }

        }

    }

   

    public static IBlockState setBlockStateInChunkFast(Chunk parChunk, BlockPos parBlockPos, IBlockState parIBlockState)

    {

        int chunkX = parBlockPos.getX() & 15;

        int chunkY = parBlockPos.getY();

        int chunkZ = parBlockPos.getZ() & 15;

//        int mapKey = chunkZ << 4 | chunkX;

 

        if (chunkY >= parChunk.getPrecipitationHeight(parBlockPos).getY())

        {

//            // There is no setter for precipitationHeightMap so will need to use reflection

//            parChunk.precipitationHeightMap[mapKey] = -999;

        }

 

//        int currentHeight = parChunk.getHeightMap()[mapKey];

        IBlockState existingIBlockState = parChunk.getBlockState(parBlockPos);

 

        if (existingIBlockState == parIBlockState)

        {

            return null;

        }

        else

        {

            Block newBlock = parIBlockState.getBlock();

            Block existingBlock = existingIBlockState.getBlock();

            ExtendedBlockStorage extendedblockstorage = parChunk.getBlockStorageArray()[chunkY >> 4];

//            boolean isHigherThanCurrentHeight = false;

 

            if (extendedblockstorage == null)

            {

                if (newBlock == Blocks.air)

                {

                    return null;

                }

 

                extendedblockstorage = parChunk.getBlockStorageArray()[chunkY >> 4] = new ExtendedBlockStorage(chunkY >> 4 << 4, !parChunk.getWorld().provider.getHasNoSky());

//                isHigherThanCurrentHeight = chunkY >= currentHeight;

            }

 

//            int newLightOpacity = newBlock.getLightOpacity(parChunk.getWorld(), parBlockPos);

 

            extendedblockstorage.set(chunkX, chunkY & 15, chunkZ, parIBlockState);

 

            if (!parChunk.getWorld().isRemote)

            {

                if (existingIBlockState.getBlock() != parIBlockState.getBlock()) //Only fire block breaks when the block changes.

                existingBlock.breakBlock(parChunk.getWorld(), parBlockPos, existingIBlockState);

                TileEntity te = parChunk.getTileEntity(parBlockPos, Chunk.EnumCreateEntityType.CHECK);

                if (te != null && te.shouldRefresh(parChunk.getWorld(), parBlockPos, existingIBlockState, parIBlockState)) parChunk.getWorld().removeTileEntity(parBlockPos);

            }

            else if (existingBlock.hasTileEntity(existingIBlockState))

            {

                TileEntity te = parChunk.getTileEntity(parBlockPos, Chunk.EnumCreateEntityType.CHECK);

                if (te != null && te.shouldRefresh(parChunk.getWorld(), parBlockPos, existingIBlockState, parIBlockState))

                parChunk.getWorld().removeTileEntity(parBlockPos);

            } 

 

            if (extendedblockstorage.getBlockByExtId(chunkX, chunkY & 15, chunkZ) != newBlock)

            {

                return null;

            }

            else

            {

//                if (isHigherThanCurrentHeight)

//                {

//                    parChunk.generateSkylightMap();

//                }

//                else

//                {

//                    int existingLightOpacity = newBlock.getLightOpacity(parChunk.getWorld(), parBlockPos);

//

//                    if (newLightOpacity > 0)

//                    {

//                        if (chunkY >= currentHeight)

//                        {

//                            parChunk.relightBlock(chunkX, chunkY + 1, chunkZ);

//                        }

//                    }

//                    else if (chunkY == currentHeight - 1)

//                    {

//                        parChunk.relightBlock(chunkX, chunkY, chunkZ);

//                    }

//

//                    if (newLightOpacity != existingLightOpacity && (newLightOpacity < existingLightOpacity || parChunk.getLightFor(EnumSkyBlock.SKY, parBlockPos) > 0 || parChunk.getLightFor(EnumSkyBlock.BLOCK, parBlockPos) > 0))

//                    {

//                        parChunk.propagateSkylightOcclusion(chunkX, chunkZ);

//                    }

//                }

 

                TileEntity tileentity;

 

                if (!parChunk.getWorld().isRemote && existingBlock != newBlock)

                {

                    newBlock.onBlockAdded(parChunk.getWorld(), parBlockPos, parIBlockState);

                }

 

                if (newBlock.hasTileEntity(parIBlockState))

                {

                    tileentity = parChunk.getTileEntity(parBlockPos, Chunk.EnumCreateEntityType.CHECK);

 

                    if (tileentity == null)

                    {

                        tileentity = newBlock.createTileEntity(parChunk.getWorld(), parIBlockState);

                        parChunk.getWorld().setTileEntity(parBlockPos, tileentity);

                    }

 

                    if (tileentity != null)

                    {

                        tileentity.updateContainingBlockInfo();

                    }

                }

 

                parChunk.setModified(true);

                return existingIBlockState;

            }

        }

    }

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.