feather-rs / feather

A Minecraft server implementation in Rust
Apache License 2.0
2.65k stars 145 forks source link

Plugin API Roadmap (Quill) #344

Open caelunshun opened 3 years ago

caelunshun commented 3 years ago

307 introduces a preliminary draft of Feather's plugin API, quill. This is tracking issue for features needed in the plugin API to achieve the goals laid out in our mid-term roadmap.

Foundational features:

Features needed for a hub plugin implemented with Quill:

Features needed for minigames implemented with Quill:

Miscallaneous:

oxkitsune commented 3 years ago

@caelunshun I'd like to tackle the particle system if that's possible :)

caelunshun commented 3 years ago

I'd like to tackle the particle system if that's possible :)

Sure thing, thanks!

We'll probably want a Particle type in libcraft that defines all possible particles, plus their associated metadata.

The steps for implementing this are:

Let me know if you have any questions, either here or on Discord.

oxkitsune commented 3 years ago

@caelunshun I have a question on the design. Are you planning on making it possible to spawn generic ecs-entities into the ecs system directly through quill.

Or is it going to stay like the way it's done for the minecraft-entity builder is, where we just pass a struct containing all the required data back from the client (the plugin/quill) to the host (feather) and create the ecs-entity there.

caelunshun commented 3 years ago

Are you planning on making it possible to spawn generic ecs-entities into the ecs system directly through quill.

Or is it going to stay like the way it's done for the minecraft-entity builder is, where we just pass a struct containing all the required data back from the client (the plugin/quill) to the host (feather) and create the ecs-entity there.

Spawning raw entities without any default components is probably necessary, yes. The simplest way to do this would be to add a new entity_builder_new_empty function in quill-sys that creates an empty EntityBuilder. (The current entity_builder_new function adds default components to the builder for vanilla entities).

caelunshun commented 3 years ago

Quick summary of recent progress:

Next up: