The RuntimeCore API provides a simple and open-source way to interact with Spigot (Minecraft) server software without being constrained by the GPL license. This software uses BSD 3 license, which grants us developers much more freedom in development and business.
Support: Java 8 and above
Server Version: Spigot\Paper 1.8.8 and above
License: BSD 3-Clause "New" or "Revised" License
@SpigotVersion(fromVersion = "1.8.8", toVersion = "1.20.5")
public final class RuntimeHeal extends ReflectPlugin {
@Override
public void onEnable() { // Plugin startup logic
RuntimeEventListener healEventListener = new HealRequest();
super.getRuntimeEvents().add(healEventListener);
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}
public class AsyncPlayerChatEvent extends ReflectWrappedEvent {
public AsyncPlayerChatEvent() {
super("org.bukkit.event.player.AsyncPlayerChatEvent");
}
public String getMessage(Object eventObj) {
return (String) super.eventGetter("getMessage", eventObj);
}
public void setCancelled(Object eventObj, boolean cancel) {
eventSetter("setCancelled", eventObj, cancel);
}
public void setMessage(Object eventObj, String message) {
eventSetter("setMessage", eventObj, message);
}
public RuntimePlayer getPlayer(Object eventObj) {
return new ReflectPlayer(super.eventGetter("getPlayer", eventObj));
}
}
public final class HealRequest extends ReflectEventListener<AsyncPlayerChatEvent> {
public HealRequest() {
super(new AsyncPlayerChatEvent());
}
@Override
public void onEvent(Object o) {
AsyncPlayerChatEvent event = super.getRuntimeWrappedEvent();
String message = event.getMessage(o).toLowerCase();
if (!(message.contains("heal me") || message.contains("heal"))) {
return;
}
RuntimePlayer runtimePlayer = event.getPlayer(o);
runtimePlayer.sendMessage("You have been healed :)");
runtimePlayer.setHealth(runtimePlayer.getMaxHealth());
}
}
<dependencies>
<dependency>
<groupId>top.cmarco</groupId>
<artifactId>RuntimeCore</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>