Refactor to make use of the new user bean.

This commit is contained in:
Len
2024-06-16 21:30:07 +02:00
parent 41c5725ea8
commit 767d248ac8
25 changed files with 98 additions and 277 deletions
@@ -0,0 +1,71 @@
package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
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 EssentiaRequest implements Request {
private final EssentiaPlugin plugin;
@Getter private final Player requester;
@Getter private final Player target;
private final RequestTimeout timeoutTask;
TagResolver placeholders;
public EssentiaRequest(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();
plugin.userManager().getUser(target).request(null);
} catch (IllegalStateException ignore) {
}
}
}