One big thing I don't like about this is Asteria's plugins.
Code:
implements PluginListener<ObjectFirstClickPlugin>
Plugins need to be able to be loaded on runtime. When you have generic interfaces you run into one of Java's biggest issues. Type errasures.
Because of this you're not allowed to listen on many events from the same class.
E.g To do this in Asteria you would have to use 2 classes. If I wanted to listen to 1 more event than that would be 3 classes.
Code:
public class CrystalChestPlugin extends PluginContext {
@Override
protected boolean firstClickObject(Player player, ObjectClickEvent event) {
if (event.getObject().getId() != 2191) {
return false;
}
// logic
return true;
}
@Override
protected boolean itemOnObject(Player player, ItemOnObjectEvent event) {
if (event.getUsed().getId() != 989 && event.getObject().getId() != 2191) {
return false;
}
// logic
return true;
}
}