231 Commits

Author SHA1 Message Date
Drew DeVault
0b9a3c34d1 Change gravity for a few entities to 1.98 m/s^2 2015-09-21 08:38:29 -04:00
Drew DeVault
6956500ef1 Fix oversight on x/z collisions 2015-09-20 17:57:07 -04:00
Drew DeVault
b635feb30b Fix issues with client jumping 2015-09-20 17:55:57 -04:00
Drew DeVault
8819ccf27e Fix issues with client physics, implement jumping
Still a bit janky with jumping.

Fixes #146
2015-09-20 17:45:27 -04:00
Stian Furu Øverbye
dbfd70ba55 Oops! 2015-09-08 14:59:43 +02:00
Drew DeVault
6969964b18 Implement FIRE 2015-09-07 19:14:12 -04:00
Stian Furu Øverbye
f349487ee4 Added cactus growth 2015-09-07 23:42:13 +02:00
Drew DeVault
79e95e2083 Improve performance, fix grass issue 2015-09-07 17:25:14 -04:00
Drew DeVault
988d2077a2 Refine profiler, improve fluid performance
The fluid improvements reduce the number of scheduled updates queued
during terrain generation (they are not really very necessary).
2015-09-07 16:22:20 -04:00
Drew DeVault
08c313a651 Add names to events for profiling puproses 2015-09-07 16:13:18 -04:00
Drew DeVault
14661c7110 Add profiler, improve event scheduler performance 2015-09-07 16:07:39 -04:00
Drew DeVault
1429fce68d Add Wolf entity 2015-09-07 14:34:16 -04:00
Drew DeVault
483cc7b763 Finish grass growth implementation 2015-07-16 05:54:35 -06:00
Drew DeVault
f927f86d43 Raise PathComplete event from IMobEntity
...when the current path is completed
2015-07-15 20:25:01 -06:00
Drew DeVault
19e52bda45 Implement flint & steel behavior
Ref #12
2015-07-14 15:38:06 -06:00
Drew DeVault
1f0c1a6481 Fix error with chunk height map updates
Ref #185
2015-07-07 14:54:08 -06:00
Drew DeVault
f7bd7a109d Optimize event scheduling when loading chunks 2015-07-07 00:49:54 -06:00
Drew DeVault
d27882cdec Add grass growth 2015-07-06 21:07:40 -06:00
Drew DeVault
940b2217c1 Add mechanism for scheduling updates on chunk load 2015-07-06 20:41:25 -06:00
Drew DeVault
312c2edf3d Merge pull request #184 from Dizigma/master
Stopped players from placing blocks on their heads
2015-07-06 20:18:15 -06:00
Dizigma
6a8cd691a6 Increased range for entities to solve this, instead of checking the client bounding box 2015-07-06 19:57:08 -06:00
Drew DeVault
ec079f4dfa Fix some issues with physics simulation 2015-07-06 19:47:29 -06:00
Drew DeVault
75f8f8fc32 Make World.FindBlockPosition thread safe 2015-07-06 19:47:20 -06:00
Drew DeVault
ed7a14b871 Rewrite physics engine
This time it sucks slightly less
2015-07-06 19:30:51 -06:00
Dizigma
5c1512d527 Stopped players from placing blocks on their heads 2015-07-06 18:31:13 -06:00
Drew DeVault
18eb5e34d5 Fix build error 2015-07-04 17:28:17 -06:00
Drew DeVault
e127cadbd9 Do not consider signs above self as obstructions
...to chests
2015-07-04 16:37:29 -06:00
Drew DeVault
afb15bf218 Allow chest blocks to open into signs 2015-07-04 15:52:08 -06:00
Drew DeVault
87b621e166 Finish lighting optimizations (for now)
We can now consistently light a chunk with sub-10ms lighting steps.
2015-07-04 15:00:54 -06:00
Drew DeVault
d00c4ad9f5 Cache chunks during lighting operations 2015-07-04 11:30:43 -06:00
Drew DeVault
03517f97d1 Minor optimization to lighting's world interface 2015-07-04 09:11:06 -06:00
Drew DeVault
f7ffe718a7 Initial pass on lighting optimizations 2015-07-04 08:41:27 -06:00
Drew DeVault
8966367ebf Lay foundation for natural mob spawning 2015-07-03 11:26:41 -06:00
Drew DeVault
44e01d0fe7 Disable lighting by default via config.yaml 2015-07-03 10:54:55 -06:00
Drew DeVault
ff0ee58b37 Refactor A* implementation leading up to JPS 2015-07-03 10:54:55 -06:00
Drew DeVault
7578d5980a Add mob wandering AI 2015-07-02 22:46:20 -06:00
Drew DeVault
a236da0076 Remove debug code for mobs 2015-07-02 22:12:21 -06:00
Drew DeVault
e00cc2fe60 Add initial support for mobs 2015-07-02 22:08:41 -06:00
Drew DeVault
b7ba71e095 Add more complex pathfinding unit tests 2015-07-02 18:04:15 -06:00
Drew DeVault
2edd199fca Enable diagonal paths in A* implementation
The way this works is like so, where 'o' is the voxel we're trying to
leave, '_' is a possible exit, 'x' is an obstacle, and * is the exit.

    __*
    _o_
    ___

    xx*
    _o_
    ___

    xxx
    _o*
    ___

    xx_
    _ox
    __*

Basically, if both the north and east paths are available, AND the
northeast path is available, we use the northeast path.
2015-07-02 17:52:55 -06:00
Drew DeVault
b56a53dc81 Further refinements to A* 2015-07-02 17:22:57 -06:00
Drew DeVault
f2ab1c0598 Implement A* pathfinding and relevant tests 2015-07-02 17:05:44 -06:00
Drew DeVault
8b1930eeac Switch to DateTime.UtcNow for everything 2015-07-02 12:14:55 -06:00
Drew DeVault
bda2e11885 Prevent players from spawning underground
Fixes #76
2015-07-01 16:12:59 -06:00
Drew DeVault
bbc405f902 Prevent blocks from being placed inside entities
Fixes #78
2015-07-01 15:59:23 -06:00
Drew DeVault
59740846b7 Add bounding box for torches (null) 2015-07-01 15:53:14 -06:00
Drew DeVault
ed32e479d7 Implement remaining orientable blocks 2015-07-01 15:36:52 -06:00
Drew DeVault
fa8c4a6877 Enforce digging time and damage items when used
Closes #11

Partially addresses #12
2015-07-01 15:22:27 -06:00
Drew DeVault
7da2ca5a27 Track the subject of each scheduled event
This allows us to cancel events when the subject is no longer around.
For example, if a chunk is unloaded due to inactivity, the events within
it are cancelled (growth of wheat, propegation of fluids, etc). When a
client disconnects, events associated with it are cancelled.

To use this for your own scheduled events, pick a subject. If your
subject does not implement IEventSubject, implement it. Then, you can
pass the subject into ScheduleEvent and that's it. When the subject
dies, your events will die with it. So long as the subject remains
alive, your events still fire.

`null` is a valid subject for events that should happen regardless of
any subject expiring.

Closes #1
2015-07-01 14:02:41 -06:00
Drew DeVault
63d1e8411f Fix merging and enumerable issues 2015-07-01 11:45:29 -06:00