Comments (5)
I want it to be designed like so...
Plugin
- Base class for all plugins, all plugins must extend this class. will give access to the world, plugin manager, game service, and player as protected fields and will also have common methods to make development easier (like an inline schedule method for tasks, actions, etc). will also contain an abstract method describing what the plugin does
PluginEnvironment
- An annotation with a single argument of a class extending PluginContext
PluginEnvironmentException
- An exception detailing a Plugin with an invalid environment
PluginExecutionException
- An exception detailing a Plugin that throws an exception during execution
PluginPipeline
- A pipeline dedicated to a certain PluginContext, contains all of the Plugin's in the order they were added
PluginManager
- Maintains a map of PluginContext's to PluginPipeline's
from luna.
Changing PluginEnvironment from annotation to an external file that allows for more data, and PluginEnvironmentException to PluginRegisterationException
from luna.
Trying to remove the need for the annotation and external file would be a good move -- it's overly complex for 'drag-and-drop' like features (and a tad confusing for inexperienced users)
Rather than annotating to a specific 'event' or 'context' I would let event listeners/events in general be extended.
Plugins can then be organized into a multimap/pipeline like structure, going down the pipeline until the chain is broken (click door, door opens in one plugin, door also completes part of a quest in another plugin [tutorial island?], break chain)
from luna.
I like that idea much better actually, of just having multiple "base listeners" that can be extended
from luna.
Fixed in most recent commit
from luna.
Related Issues (20)
- Dropping two items of the same type does not work HOT 1
- Make MobList#retrieve use Optional#ofNullable & update documentation HOT 5
- Minor mistake in startFishing.kts HOT 1
- Feature request: Skill requirements for equipment HOT 1
- GroundItem expire times are in ticks not in minutes HOT 3
- Cannot use DefinitionRepository outside of package HOT 1
- Unnecessary calls being made to remote maven repositories (gradle)
- Inconsistency in ChunkPosition x and y documentation
- Remove RegionPosition HOT 4
- Consolidate logging settings into a single package
- Move plugins.api into separate module HOT 3
- Remove io.luna.util.LazyVal HOT 2
- Remove io.luna.util.RangeIterator & io.luna.util.LazyVal HOT 1
- Upgrade to Gradle 6.3+ HOT 3
- Option to set the amount of Bcrypt password encryption rounds in luna.toml
- Fetch world map tiles and object data
- [Feature] Automatically check pull-requests for code style consistency
- Resolve unchecked type casting in Chunk and ChunkRepository
- Provide useful information to console whenever a client disconnects abruptly
- Make RDBMS-based persistence easier to set up HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from luna.