Cleanup and refactoring
This commit is contained in:
parent
0ea9738867
commit
c059880ece
@ -7,10 +7,10 @@ import eu.mhsl.craftattack.spawn.appliances.event.command.EventCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.event.command.EventEndSessionCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.event.command.EventOpenSessionCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.event.command.MoveEventVillagerCommand;
|
||||
import eu.mhsl.craftattack.spawn.util.DisplayVillager;
|
||||
import eu.mhsl.craftattack.spawn.util.PluginMessage;
|
||||
import eu.mhsl.craftattack.spawn.util.commonListeners.DismissInventoryOpenFromHolder;
|
||||
import eu.mhsl.craftattack.spawn.util.commonListeners.PlayerInteractAtEntityEventListener;
|
||||
import eu.mhsl.craftattack.spawn.util.entity.DisplayVillager;
|
||||
import eu.mhsl.craftattack.spawn.util.server.PluginMessage;
|
||||
import eu.mhsl.craftattack.spawn.util.listener.DismissInventoryOpenFromHolder;
|
||||
import eu.mhsl.craftattack.spawn.util.listener.PlayerInteractAtEntityEventListener;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -1,10 +1,7 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.playerlimit;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.Main;
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.playerlimit.command.SetPlayerLimitCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.playerlimit.listener.PlayerJoinLimiterListener;
|
||||
import eu.mhsl.craftattack.spawn.config.Configuration;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.Listener;
|
||||
@ -34,7 +31,7 @@ public class PlayerLimit extends Appliance {
|
||||
@Override
|
||||
protected @NotNull List<Listener> eventHandlers() {
|
||||
return List.of(
|
||||
new PlayerJoinLimiterListener()
|
||||
new PlayerLimiterListener()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,24 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.playerlimit;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
|
||||
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
|
||||
public class PlayerLimiterListener extends ApplianceListener<PlayerLimit> {
|
||||
@EventHandler
|
||||
public void onLogin(AsyncPlayerPreLoginEvent playerPreLoginEvent) {
|
||||
playerPreLoginEvent.kickMessage(
|
||||
new DisconnectInfo(
|
||||
"Hohe Serverauslastung",
|
||||
"Der Server ist momentan an seiner Kapazitätsgrenze angelangt!",
|
||||
"Bitte versuche es zu einem späteren Zeitpunkt erneut.",
|
||||
playerPreLoginEvent.getUniqueId()
|
||||
).getComponent()
|
||||
);
|
||||
|
||||
if(Bukkit.getOnlinePlayers().size() >= getAppliance().getLimit())
|
||||
playerPreLoginEvent.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_FULL);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.playerlimit.command;
|
||||
package eu.mhsl.craftattack.spawn.appliances.playerlimit;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.playerlimit.PlayerLimit;
|
@ -1,18 +0,0 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.playerlimit.listener;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
|
||||
import eu.mhsl.craftattack.spawn.appliances.playerlimit.PlayerLimit;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
|
||||
public class PlayerJoinLimiterListener extends ApplianceListener<PlayerLimit> {
|
||||
@EventHandler
|
||||
public void onLogin(PlayerLoginEvent playerPreLoginEvent) {
|
||||
playerPreLoginEvent.kickMessage(Component.text("Der Server ist derzeit voll! Versuche es bitte später erneut.", NamedTextColor.RED));
|
||||
if(Bukkit.getOnlinePlayers().size() >= getAppliance().getLimit()) playerPreLoginEvent.setResult(PlayerLoginEvent.Result.KICK_FULL);
|
||||
}
|
||||
}
|
@ -7,9 +7,9 @@ import eu.mhsl.craftattack.spawn.appliances.projectStart.command.ProjectStartCom
|
||||
import eu.mhsl.craftattack.spawn.appliances.projectStart.command.ProjectStartResetCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.projectStart.listener.PlayerInvincibleListener;
|
||||
import eu.mhsl.craftattack.spawn.config.Configuration;
|
||||
import eu.mhsl.craftattack.spawn.util.BlockCycle;
|
||||
import eu.mhsl.craftattack.spawn.util.ComponentUtil;
|
||||
import eu.mhsl.craftattack.spawn.util.Countdown;
|
||||
import eu.mhsl.craftattack.spawn.util.world.BlockCycle;
|
||||
import eu.mhsl.craftattack.spawn.util.text.ComponentUtil;
|
||||
import eu.mhsl.craftattack.spawn.util.text.Countdown;
|
||||
import eu.mhsl.craftattack.spawn.util.IteratorUtil;
|
||||
import net.kyori.adventure.sound.Sound;
|
||||
import net.kyori.adventure.text.Component;
|
||||
|
@ -3,7 +3,6 @@ package eu.mhsl.craftattack.spawn.appliances.report;
|
||||
import com.google.gson.Gson;
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.report.command.ReportCommand;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import net.kyori.adventure.text.event.HoverEvent;
|
||||
@ -75,7 +74,7 @@ public class Report extends Appliance {
|
||||
this.printResultMessage(issuer, httpResponse);
|
||||
} catch (IOException | InterruptedException e) {
|
||||
issuer.sendMessage(
|
||||
Component.text("Internal server error: " + e.getMessage()).color(NamedTextColor.RED)
|
||||
Component.text("Internal server description: " + e.getMessage()).color(NamedTextColor.RED)
|
||||
);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.report.command;
|
||||
package eu.mhsl.craftattack.spawn.appliances.report;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.report.Report;
|
@ -4,7 +4,8 @@ import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.restart.command.CancelRestartCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.restart.command.ScheduleRestartCommand;
|
||||
import eu.mhsl.craftattack.spawn.util.Countdown;
|
||||
import eu.mhsl.craftattack.spawn.util.text.Countdown;
|
||||
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||
import eu.mhsl.craftattack.spawn.util.IteratorUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
@ -49,16 +50,13 @@ public class Restart extends Appliance {
|
||||
}
|
||||
|
||||
private void onDone() {
|
||||
IteratorUtil.onlinePlayers(player -> {
|
||||
player.kick(
|
||||
Component.text()
|
||||
.appendNewline().appendNewline()
|
||||
.append(Component.text("Serverneustart", NamedTextColor.DARK_RED)).appendNewline().appendNewline()
|
||||
.append(Component.text("Wir sind gleich wieder online!", NamedTextColor.GOLD)).appendNewline()
|
||||
.append(Component.text("Verbinde Dich dann erneut.", NamedTextColor.GRAY)).appendNewline()
|
||||
.build()
|
||||
);
|
||||
});
|
||||
IteratorUtil.onlinePlayers(
|
||||
player -> new DisconnectInfo(
|
||||
"Serverneustart",
|
||||
"Wir sind gleich wieder online!",
|
||||
"Verbinde Dich dann erneut.",
|
||||
player.getUniqueId()
|
||||
).applyKick(player));
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
|
||||
|
@ -3,8 +3,9 @@ package eu.mhsl.craftattack.spawn.appliances.tablist;
|
||||
import eu.mhsl.craftattack.spawn.Main;
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliances.report.Report;
|
||||
import eu.mhsl.craftattack.spawn.util.ComponentUtil;
|
||||
import eu.mhsl.craftattack.spawn.util.RainbowComponent;
|
||||
import eu.mhsl.craftattack.spawn.util.text.ComponentUtil;
|
||||
import eu.mhsl.craftattack.spawn.util.IteratorUtil;
|
||||
import eu.mhsl.craftattack.spawn.util.text.RainbowComponent;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.util.Ticks;
|
||||
@ -18,13 +19,16 @@ import java.util.List;
|
||||
|
||||
public class Tablist extends Appliance {
|
||||
private final int refreshRate = Ticks.TICKS_PER_SECOND * 3;
|
||||
|
||||
private final RainbowComponent serverName = new RainbowComponent(" CraftAttack 6 ", 7, 3);
|
||||
private final Component hostName = Component.text("mhsl.eu").color(NamedTextColor.GOLD);
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
Runnable updateAll = () -> Bukkit.getOnlinePlayers().forEach(this::update);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(Main.instance(), updateAll, refreshRate, refreshRate);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(
|
||||
Main.instance(),
|
||||
() -> IteratorUtil.onlinePlayers(this::update),
|
||||
refreshRate,
|
||||
refreshRate
|
||||
);
|
||||
}
|
||||
|
||||
public void update(Player player) {
|
||||
@ -32,23 +36,17 @@ public class Tablist extends Appliance {
|
||||
updateFooter(player);
|
||||
}
|
||||
|
||||
public void updateHeader(Player player) {
|
||||
private void updateHeader(Player player) {
|
||||
player.sendPlayerListHeader(
|
||||
Component.newline()
|
||||
.append(serverName.getRainbowState())
|
||||
.appendNewline()
|
||||
.append(hostName)
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(ComponentUtil.getFormattedMSPT())
|
||||
.appendNewline()
|
||||
.appendNewline()
|
||||
.append(ComponentUtil.getFormattedPing(player))
|
||||
.appendNewline()
|
||||
.append(serverName.getRainbowState()).appendNewline()
|
||||
.append(Component.text("mhsl.eu", NamedTextColor.GOLD)).appendNewline().appendNewline()
|
||||
.append(ComponentUtil.getFormattedMSPT()).appendNewline().appendNewline()
|
||||
.append(ComponentUtil.getFormattedPing(player)).appendNewline()
|
||||
);
|
||||
}
|
||||
|
||||
public void updateFooter(Player player) {
|
||||
private void updateFooter(Player player) {
|
||||
player.sendPlayerListFooter(Report.helpText());
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,16 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.titleClear;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TitleClear extends Appliance {
|
||||
public void clearTitle(Player player) {
|
||||
player.clearTitle();
|
||||
}
|
||||
@Override
|
||||
protected @NotNull List<Listener> eventHandlers() {
|
||||
return List.of(
|
||||
|
@ -7,6 +7,6 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||
public class TitleClearListener extends ApplianceListener<TitleClear> {
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
event.getPlayer().resetTitle();
|
||||
getAppliance().clearTitle(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
@ -1,18 +0,0 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.whitelist;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class LoginException extends Exception {
|
||||
public String title;
|
||||
public String error;
|
||||
public UUID user;
|
||||
public String solution;
|
||||
|
||||
public LoginException(String title, String error, UUID user, String solution) {
|
||||
super(error);
|
||||
this.title = title;
|
||||
this.error = error;
|
||||
this.user = user;
|
||||
this.solution = solution;
|
||||
}
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.whitelist;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
|
||||
@ -11,16 +10,10 @@ public class PlayerJoinListener extends ApplianceListener<Whitelist> {
|
||||
public void preLoginEvent(AsyncPlayerPreLoginEvent preLoginEvent) {
|
||||
try {
|
||||
getAppliance().login(preLoginEvent);
|
||||
} catch (LoginException e) {
|
||||
} catch (DisconnectInfo.Throwable e) {
|
||||
preLoginEvent.disallow(
|
||||
AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST,
|
||||
Component.text()
|
||||
.appendNewline().appendNewline()
|
||||
.append(Component.text(e.title, NamedTextColor.DARK_RED)).appendNewline()
|
||||
.append(Component.text(e.error, NamedTextColor.RED)).appendNewline().appendNewline()
|
||||
.append(Component.text(e.solution, NamedTextColor.GRAY)).appendNewline().appendNewline()
|
||||
.append(Component.text(e.user.toString(), NamedTextColor.DARK_GRAY)).appendNewline()
|
||||
.build()
|
||||
e.getDisconnectScreen().getComponent()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package eu.mhsl.craftattack.spawn.appliances.whitelist;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||
import org.apache.http.client.utils.URIBuilder;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
@ -26,31 +27,31 @@ public class Whitelist extends Appliance {
|
||||
super("whitelist");
|
||||
}
|
||||
|
||||
public void login(AsyncPlayerPreLoginEvent login) throws LoginException {
|
||||
public void login(AsyncPlayerPreLoginEvent login) throws DisconnectInfo.Throwable {
|
||||
try {
|
||||
UserData data = this.fetchUserData(login.getUniqueId());
|
||||
|
||||
if(!data.username.equalsIgnoreCase(login.getName()))
|
||||
throw new LoginException(
|
||||
throw new DisconnectInfo.Throwable(
|
||||
"Nutzername geändert",
|
||||
String.format("Der Name '%s' stimmt nicht mit '%s' überein.", data.username, login.getName()),
|
||||
login.getUniqueId(),
|
||||
"Bitte kontaktiere einen Admin, um Deine Anmeldedaten zu aktualisieren!"
|
||||
"Bitte kontaktiere einen Admin, um Deine Anmeldedaten zu aktualisieren!",
|
||||
login.getUniqueId()
|
||||
);
|
||||
|
||||
} catch (LoginException e) {
|
||||
} catch (DisconnectInfo.Throwable e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
throw new LoginException(
|
||||
throw new DisconnectInfo.Throwable(
|
||||
"Interner Serverfehler",
|
||||
"Deine Zugangsdaten konnten nicht abgerufen werden.",
|
||||
login.getUniqueId(),
|
||||
"Versuche es später erneut oder kontaktiere einen Admin!"
|
||||
"Versuche es später erneut oder kontaktiere einen Admin!",
|
||||
login.getUniqueId()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private UserData fetchUserData(UUID uuid) throws LoginException {
|
||||
private UserData fetchUserData(UUID uuid) throws DisconnectInfo.Throwable {
|
||||
URIBuilder uriBuilder = new URIBuilder(apiEndpoint);
|
||||
uriBuilder.addParameter("uuid", uuid.toString());
|
||||
|
||||
@ -65,11 +66,11 @@ public class Whitelist extends Appliance {
|
||||
HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||
|
||||
if(httpResponse.statusCode() == 400)
|
||||
throw new LoginException(
|
||||
throw new DisconnectInfo.Throwable(
|
||||
"Nicht angemeldet",
|
||||
"Du bist derzeit nicht als Teilnehmer des CraftAttack-Projektes registriert!",
|
||||
uuid,
|
||||
"Melde Dich bei einem Admin für eine nachträgliche Anmeldung."
|
||||
"Melde Dich bei einem Admin für eine nachträgliche Anmeldung.",
|
||||
uuid
|
||||
);
|
||||
|
||||
return new Gson().fromJson(httpResponse.body(), UserData.class);
|
||||
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.appliances.worldmuseum.command;
|
||||
package eu.mhsl.craftattack.spawn.appliances.worldmuseum;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.worldmuseum.WorldMuseum;
|
@ -2,11 +2,10 @@ package eu.mhsl.craftattack.spawn.appliances.worldmuseum;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||
import eu.mhsl.craftattack.spawn.appliances.worldmuseum.command.MoveWorldMuseumVillagerCommand;
|
||||
import eu.mhsl.craftattack.spawn.util.DisplayVillager;
|
||||
import eu.mhsl.craftattack.spawn.util.PluginMessage;
|
||||
import eu.mhsl.craftattack.spawn.util.commonListeners.DismissInventoryOpenFromHolder;
|
||||
import eu.mhsl.craftattack.spawn.util.commonListeners.PlayerInteractAtEntityEventListener;
|
||||
import eu.mhsl.craftattack.spawn.util.entity.DisplayVillager;
|
||||
import eu.mhsl.craftattack.spawn.util.server.PluginMessage;
|
||||
import eu.mhsl.craftattack.spawn.util.listener.DismissInventoryOpenFromHolder;
|
||||
import eu.mhsl.craftattack.spawn.util.listener.PlayerInteractAtEntityEventListener;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.entity;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.config.ConfigUtil;
|
||||
import eu.mhsl.craftattack.spawn.config.Configuration;
|
||||
import eu.mhsl.craftattack.spawn.util.world.ChunkUtils;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.EntityType;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util.commonListeners;
|
||||
package eu.mhsl.craftattack.spawn.util.listener;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.event.EventHandler;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util.commonListeners;
|
||||
package eu.mhsl.craftattack.spawn.util.listener;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.server;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.server;
|
||||
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
@ -1,5 +1,6 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.text;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.util.NumberUtil;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
|
||||
import java.awt.*;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.text;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.text;
|
||||
|
||||
import eu.mhsl.craftattack.spawn.Main;
|
||||
import net.kyori.adventure.text.Component;
|
@ -0,0 +1,41 @@
|
||||
package eu.mhsl.craftattack.spawn.util.text;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public record DisconnectInfo(String error, String description, String help, UUID user) {
|
||||
public void applyKick(Player player) {
|
||||
player.kick(this.getComponent());
|
||||
}
|
||||
public Component getComponent() {
|
||||
return Component.text()
|
||||
.appendNewline().appendNewline()
|
||||
.append(Component.text(this.error, NamedTextColor.DARK_RED)).appendNewline()
|
||||
.append(Component.text(this.description, NamedTextColor.RED)).appendNewline().appendNewline()
|
||||
.append(Component.text(this.help, NamedTextColor.GRAY)).appendNewline().appendNewline()
|
||||
.append(Component.text(this.user.toString(), NamedTextColor.DARK_GRAY)).appendNewline()
|
||||
.build();
|
||||
}
|
||||
|
||||
public static class Throwable extends Exception {
|
||||
public String error;
|
||||
public String description;
|
||||
public String help;
|
||||
public UUID user;
|
||||
|
||||
public Throwable(String error, String description, String help, UUID user) {
|
||||
super(description);
|
||||
this.error = error;
|
||||
this.description = description;
|
||||
this.help = help;
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public DisconnectInfo getDisconnectScreen() {
|
||||
return new DisconnectInfo(this.error, this.description, this.help, this.user);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.text;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.world;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package eu.mhsl.craftattack.spawn.util;
|
||||
package eu.mhsl.craftattack.spawn.util.world;
|
||||
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Location;
|
Loading…
x
Reference in New Issue
Block a user