bravoserver / bravo

UNMAINTAINED: Reverse-engineered Minecraft stuff. Worked with 1.4.x protocol
http://bravoserver.org/
Other
206 stars 45 forks source link

Fix for furnace process timer drift #335

Closed mcsakoff closed 12 years ago

mcsakoff commented 13 years ago

As discussed on #bravo channel we shall protect the furnace process timer from drifting. I have tested couple of implementations and this one works and looks better than others.

Varriount commented 12 years ago

Erm, won't time.sleep() block the entire reactor? Unless you have the furnace running in a seperate thread (which is almost pointless with loopingcall) or a process (Which should only be used for cpu intensive stuff), you might want to find another way.

mcsakoff commented 12 years ago

Are you talking about the test case? The point of the test is to block the application for really long time. ;)

MostAwesomeDude commented 12 years ago

I can't believe I'm merging this request. time.sleep() in tests is crazy. The furnace implementation still doesn't actually address the fundamental issue of counting time in seconds instead of ticks. .withCount()'s an improvement, but I'm still not totally sold on it. Worse, there's no documentation as to how the actual implementation works.

The beds and doors are poorly commented and have pretty bad mistakes. Although those mistakes were fixed in subsequent commits, it'd be nice if commits were rebased and cleaned so that I don't have to read through three commits to see that a bug in commit #1 is fixed in commit #3.

The type-based dispatch and non-polymorphic tile handling still sucks. I understand that furnaces are a special case, but not that special.