24 Commits

Author SHA1 Message Date
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
b118b73c80 Track opacity-based height maps in WorldLighter 2015-07-01 10:53:46 -06:00
Drew DeVault
2d84695157 Add ChunkLoaded event to world 2015-07-01 10:37:14 -06:00
Drew DeVault
b2ae41b87c Initial implementation of lighting 2015-06-26 16:27:13 -06:00
Drew DeVault
bd132b0d6f Fix client bugs preventing use on vanilla servers 2015-05-17 16:18:09 -06:00
Drew DeVault
805320ce8f Implement caves
This:

- Implements caves with 3D noise
- Moves periodic chunk updates to the thread pool
- Fixes a handful of small bugs
2015-05-03 19:49:43 -06:00
Drew DeVault
e5207c6dec Add support for signs 2015-05-03 16:02:47 -06:00
Drew DeVault
6517738949 Improve terrain generation
- Enforced coding style
- Improved perlin constants
- Improved biome constants
- Spawn plants before trees so plants may grow underneath
- Fixed areas that were not deterministic
2015-04-26 18:08:56 -06:00
Drew DeVault
65deecd131 Add world manifests
These include the spawn point, seed, and terrain generator so that you
can load saved worlds with all the right details.
2015-04-13 17:41:57 -06:00
Daniel Vidmar
2100e8c4ab Terrain Decorations & some fixes
- Decorations are terrain features such as trees & dungeons
- cleaned up the code for chunk decorators, and tree & dungeon
generation
- monster spawner blocks now have no drop
- when a block is set to air its metadata value is now reset to 0x0
2015-03-01 00:24:29 -05:00
Daniel Vidmar
30392fae69 Final terrain generation PR fixes 2015-02-24 20:30:28 -05:00
Daniel Vidmar
9fa3286ea0 Terrain Generation 2015-02-21 02:42:03 -05:00
Daniel Vidmar
b83ee8383d New terrain generator 2015-02-21 02:37:13 -05:00
Drew DeVault
a64c943997 Implement wheat farming
This includes farmland behavior as well as the growth of wheat crops
2015-02-08 17:21:35 -07:00
Drew DeVault
cd20b987d4 Partially implement world persistence
This does not account for entities or tile entities, and the seed is not
saved because there is no level.

TODO: Save levels
2015-02-02 15:52:25 -07:00
Drew DeVault
eda5dd2f82 Implement bed placement and supported blocks 2015-02-01 18:53:10 -07:00
Drew DeVault
c0585fc714 Implement mining via block providers 2015-01-26 17:05:26 -07:00
Drew DeVault
c037aef597 Implement world time updates 2015-01-26 07:45:10 -07:00
Drew DeVault
8d3b084d8d Add Craft.Net standard generator 2015-01-01 19:21:46 -07:00
Drew DeVault
99775ef54e Implement block placement properly 2014-12-28 20:13:23 -07:00
Drew DeVault
fac5d28935 Implement simple server-side digging logic 2014-12-28 11:17:14 -07:00
Drew DeVault
4d3d5ee8e0 Send initial slew of chunks to connected clients 2014-12-27 18:19:42 -07:00
Drew DeVault
09163f36ee Update (un-update?) world implementation to b1.7.3 2014-12-27 12:51:45 -07:00
Drew DeVault
96ecbc708c Adapt Craft.Net.Anvil for world support 2014-12-27 12:34:55 -07:00