Essentia plugin

Basic plugin with some essential utilities and commands.
This commit is contained in:
Len
2024-02-03 21:58:02 +01:00
commit 1669a114bc
44 changed files with 2359 additions and 0 deletions
@@ -0,0 +1,72 @@
package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.configuration.PlayerConfig;
import com.alttd.essentia.tasks.RequestTimeout;
import com.alttd.essentia.tasks.TeleportSounds;
import lombok.Getter;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.entity.Player;
public abstract class Request {
private final EssentiaPlugin plugin;
@Getter private final Player requester;
@Getter private final Player target;
private final RequestTimeout timeoutTask;
TagResolver placeholders;
public Request(EssentiaPlugin plugin, Player requester, Player target) {
this.plugin = plugin;
this.requester = requester;
this.target = target;
this.timeoutTask = new RequestTimeout(this);
if (Config.TELEPORT_REQUEST_TIMEOUT > 0) {
this.timeoutTask.runTaskLater(plugin,
Config.TELEPORT_REQUEST_TIMEOUT * 20L);
}
placeholders = TagResolver.resolver(
Placeholder.component("requester", requester().displayName()),
Placeholder.component("target", target().displayName())
);
}
public void accept() {
teleport();
target.sendRichMessage(Config.TELEPORT_ACCEPT_TARGET, placeholders);
requester.sendRichMessage(Config.TELEPORT_ACCEPT_REQUESTER, placeholders);
cancel();
}
public void deny() {
target.sendRichMessage(Config.TELEPORT_DENIED_TARGET, placeholders);
requester.sendRichMessage(Config.TELEPORT_DENIED_REQUESTER, placeholders);
cancel();
}
protected abstract void teleport();
void playTeleportSounds() {
if (Config.TELEPORT_SOUNDS) {
new TeleportSounds(target.getLocation(), requester.getLocation())
.runTaskLater(plugin, 1);
}
}
public void cancel() {
try {
timeoutTask.cancel();
PlayerConfig.getConfig(target).request(null);
} catch (IllegalStateException ignore) {
}
}
}
@@ -0,0 +1,25 @@
package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import org.bukkit.entity.Player;
public class TeleportHereRequest extends Request {
public TeleportHereRequest(EssentiaPlugin plugin, Player requester, Player target) {
super(plugin, requester, target);
target.sendRichMessage(Config.TELEPORT_REQUEST_TARGET, placeholders);
requester.sendRichMessage(Config.TELEPORT_REQUESTHERE_REQUESTER, placeholders);
}
@Override
protected void teleport() {
if (!target().isOnline() || !requester().isOnline()) {
cancel();
return;
}
target().teleportAsync(requester().getLocation()).thenAccept(result -> playTeleportSounds());
}
}
@@ -0,0 +1,25 @@
package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import org.bukkit.entity.Player;
public class TeleportRequest extends Request {
public TeleportRequest(EssentiaPlugin plugin, Player requester, Player target) {
super(plugin, requester, target);
target.sendRichMessage(Config.TELEPORT_REQUESTHERE_TARGET, placeholders);
requester.sendRichMessage(Config.TELEPORT_REQUEST_REQUESTER, placeholders);
}
@Override
protected void teleport() {
if (!target().isOnline() || !requester().isOnline()) {
cancel();
return;
}
target().teleportAsync(requester().getLocation()).thenAccept(result -> playTeleportSounds());
}
}