Added Kick and PanicBan
This commit is contained in:
parent
c059880ece
commit
933ea496c8
@ -2,7 +2,9 @@ package eu.mhsl.craftattack.spawn;
|
|||||||
|
|
||||||
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.adminMarker.AdminMarker;
|
import eu.mhsl.craftattack.spawn.appliances.adminMarker.AdminMarker;
|
||||||
|
import eu.mhsl.craftattack.spawn.appliances.kick.Kick;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.chatMessages.ChatMessages;
|
import eu.mhsl.craftattack.spawn.appliances.chatMessages.ChatMessages;
|
||||||
|
import eu.mhsl.craftattack.spawn.appliances.panicBan.PanicBan;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.projectStart.ProjectStart;
|
import eu.mhsl.craftattack.spawn.appliances.projectStart.ProjectStart;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.debug.Debug;
|
import eu.mhsl.craftattack.spawn.appliances.debug.Debug;
|
||||||
import eu.mhsl.craftattack.spawn.appliances.event.Event;
|
import eu.mhsl.craftattack.spawn.appliances.event.Event;
|
||||||
@ -45,6 +47,8 @@ public final class Main extends JavaPlugin {
|
|||||||
new PlayerLimit(),
|
new PlayerLimit(),
|
||||||
new Whitelist(),
|
new Whitelist(),
|
||||||
new Restart(),
|
new Restart(),
|
||||||
|
new Kick(),
|
||||||
|
new PanicBan(),
|
||||||
new Debug()
|
new Debug()
|
||||||
);
|
);
|
||||||
Bukkit.getLogger().info("Loading appliances...");
|
Bukkit.getLogger().info("Loading appliances...");
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.kick;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Kick extends Appliance {
|
||||||
|
public void kick(@NotNull String playerName, @Nullable String message) {
|
||||||
|
Player player = Bukkit.getPlayer(playerName);
|
||||||
|
|
||||||
|
if(player == null)
|
||||||
|
throw new ApplianceCommand.Error("Player not found");
|
||||||
|
|
||||||
|
new DisconnectInfo(
|
||||||
|
"Administrator Eingriff",
|
||||||
|
"Du wurdest von einem Admin vom Server geworfen.",
|
||||||
|
message,
|
||||||
|
player.getUniqueId()
|
||||||
|
).applyKick(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull List<ApplianceCommand<?>> commands() {
|
||||||
|
return List.of(new KickCommand());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.kick;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class KickCommand extends ApplianceCommand<Kick> {
|
||||||
|
public KickCommand() {
|
||||||
|
super("kick");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception {
|
||||||
|
getAppliance().kick(
|
||||||
|
args[0],
|
||||||
|
Arrays.stream(args).skip(1).collect(Collectors.joining(" "))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
return super.tabCompleteReducer(
|
||||||
|
Bukkit.getOnlinePlayers().stream().map(Player::getName).toList(),
|
||||||
|
args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.panicBan;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import eu.mhsl.craftattack.spawn.util.text.DisconnectInfo;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class PanicBan extends Appliance {
|
||||||
|
private final Map<UUID, Long> panicBans = new HashMap<>();
|
||||||
|
|
||||||
|
public void panicBan(@NotNull String playerName) {
|
||||||
|
Player player = Bukkit.getPlayer(playerName);
|
||||||
|
|
||||||
|
if(player == null)
|
||||||
|
throw new ApplianceCommand.Error("Player not found");
|
||||||
|
|
||||||
|
panicBans.put(player.getUniqueId(), System.currentTimeMillis());
|
||||||
|
this.getDisconnectInfo(player.getUniqueId()).applyKick(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBanned(UUID player) {
|
||||||
|
if(panicBans.containsKey(player) && panicBans.get(player) < System.currentTimeMillis() - 15 * 60 * 1000)
|
||||||
|
panicBans.remove(player);
|
||||||
|
|
||||||
|
return panicBans.containsKey(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DisconnectInfo getDisconnectInfo(UUID playerUuid) {
|
||||||
|
return new DisconnectInfo(
|
||||||
|
"Temporäre Sperre",
|
||||||
|
"Du wurdest von einen Admin vom Server geworfen!",
|
||||||
|
"Du bist bis zur endgültigen Klärung gesperrt.",
|
||||||
|
playerUuid
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull List<ApplianceCommand<?>> commands() {
|
||||||
|
return List.of(new PanicBanCommand());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected @NotNull List<Listener> eventHandlers() {
|
||||||
|
return List.of(new PanicBanJoinListener());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.panicBan;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public class PanicBanCommand extends ApplianceCommand<PanicBan> {
|
||||||
|
public PanicBanCommand() {
|
||||||
|
super("panicBan");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception {
|
||||||
|
getAppliance().panicBan(args[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
return super.tabCompleteReducer(
|
||||||
|
Stream.concat(
|
||||||
|
Bukkit.getOnlinePlayers().stream().map(Player::getName),
|
||||||
|
Arrays.stream(Bukkit.getOfflinePlayers()).map(OfflinePlayer::getName)
|
||||||
|
).toList(),
|
||||||
|
args
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.panicBan;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||||
|
|
||||||
|
public class PanicBanJoinListener extends ApplianceListener<PanicBan> {
|
||||||
|
@EventHandler
|
||||||
|
public void onLogin(AsyncPlayerPreLoginEvent event) {
|
||||||
|
if(getAppliance().isBanned(event.getUniqueId())) {
|
||||||
|
event.kickMessage(getAppliance().getDisconnectInfo(event.getUniqueId()).getComponent());
|
||||||
|
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -32,3 +32,5 @@ commands:
|
|||||||
setPlayerLimit:
|
setPlayerLimit:
|
||||||
scheduleRestart:
|
scheduleRestart:
|
||||||
cancelRestart:
|
cancelRestart:
|
||||||
|
kick:
|
||||||
|
panicBan:
|
Loading…
x
Reference in New Issue
Block a user