Refactor to make use of the new user bean.
This commit is contained in:
@@ -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) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user