1 Commits

Author SHA1 Message Date
5107ec0796 Added new Option for blacklist and added API version to plugin.yml 2022-02-20 22:09:34 +01:00
4 changed files with 291 additions and 226 deletions

110
pom.xml
View File

@@ -1,56 +1,56 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.web.basman93</groupId> <groupId>de.web.basman93</groupId>
<artifactId>KickPlayerOnJoin</artifactId> <artifactId>KickPlayerOnJoin</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.0.3</version> <version>1.0.4</version>
<name>KickPlayerOnJoin</name> <name>KickPlayerOnJoin</name>
<url></url> <url></url>
<build> <build>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory> <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<resources> <resources>
<resource> <resource>
<targetPath>.</targetPath> <targetPath>.</targetPath>
<filtering>true</filtering> <filtering>true</filtering>
<directory>${basedir}/src/main/resources/</directory> <directory>${basedir}/src/main/resources/</directory>
<includes> <includes>
<include>plugin.yml</include> <include>plugin.yml</include>
</includes> </includes>
</resource> </resource>
<resource> <resource>
<targetPath>.</targetPath> <targetPath>.</targetPath>
<filtering>false</filtering> <filtering>false</filtering>
<directory>${basedir}/src/main/resources/</directory> <directory>${basedir}/src/main/resources/</directory>
<excludes> <excludes>
<exclude>plugin.yml</exclude> <exclude>plugin.yml</exclude>
</excludes> </excludes>
</resource> </resource>
</resources> </resources>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version> <version>2.3.2</version>
<configuration> <configuration>
<source>1.8</source> <source>1.8</source>
<target>1.8</target> <target>1.8</target>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<repositories> <repositories>
<repository> <repository>
<id>spigot-repo</id> <id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository> </repository>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.16.4-R0.1-SNAPSHOT</version><!--change this value depending on the version or use LATEST--> <version>1.18.1-R0.1-SNAPSHOT</version><!--change this value depending on the version or use LATEST-->
<type>jar</type> <type>jar</type>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -1,125 +1,181 @@
package de.web.basman93; package de.web.basman93;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.Command;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler; import org.bukkit.entity.Player;
import org.bukkit.event.Listener; import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent.Result; import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.event.player.PlayerLoginEvent.Result;
import org.bukkit.plugin.java.JavaPlugin;
public class KickPlayerOnJoin extends JavaPlugin implements Listener {
public class KickPlayerOnJoin extends JavaPlugin implements Listener {
private boolean active = true;
private FileConfiguration config = getConfig(); private boolean active = true;
private List<String> playerlist = new ArrayList<String>(); private boolean blacklist = false;
private final String prefix = ChatColor.GRAY + "[K" + ChatColor.DARK_GRAY + "P" + ChatColor.GRAY + "OJ] "; private int config_version = 0;
private FileConfiguration config = getConfig();
@Override private List<String> playerlist = new ArrayList<String>();
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { private final String prefix = ChatColor.GRAY + "[K" + ChatColor.DARK_GRAY + "P" + ChatColor.GRAY + "OJ] ";
if(command.getName().equalsIgnoreCase("kickplayeronjoin")) {
@Override
if(args.length > 0 && args[0].equalsIgnoreCase("on") && cop(sender, "kpoj.mode")) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
sender.sendMessage(prefix + "activated"); if(command.getName().equalsIgnoreCase("kickplayeronjoin")) {
active = true;
save(); if(args.length > 0 && args[0].equalsIgnoreCase("on") && cop(sender, "kpoj.mode")) {
sender.sendMessage(prefix + "activated");
} else if(args.length > 0 && args[0].equalsIgnoreCase("off") && cop(sender, "kpoj.mode")) { active = true;
sender.sendMessage(prefix + "deactivated"); save();
active = false;
save(); } else if(args.length > 0 && args[0].equalsIgnoreCase("off") && cop(sender, "kpoj.mode")) {
sender.sendMessage(prefix + "deactivated");
} else if(args.length > 0 && args[0].equalsIgnoreCase("help") && cop(sender, "kpoj.help")) { active = false;
sender.sendMessage(prefix + "---------------------- HELP ----------------------"); save();
sender.sendMessage(prefix + "/kpoj - shows version & status");
sender.sendMessage(prefix + "/kpoj version - shows version"); } else if(args.length > 0 && args[0].equalsIgnoreCase("help") && cop(sender, "kpoj.help")) {
sender.sendMessage(prefix + "/kpoj help - shows this help info"); sender.sendMessage(prefix + "---------------------- HELP ----------------------");
sender.sendMessage(prefix + "/kpoj off - deactivate this plugin"); sender.sendMessage(prefix + "/kpoj - shows version & status");
sender.sendMessage(prefix + "/kpoj on - activate this plugin"); sender.sendMessage(prefix + "/kpoj version - shows version");
sender.sendMessage(prefix + "/kpoj add <player> - add player to whitelist"); sender.sendMessage(prefix + "/kpoj help - shows this help info");
sender.sendMessage(prefix + "/kpoj del <player> - removes player from whitelist"); sender.sendMessage(prefix + "/kpoj off - deactivate this plugin");
sender.sendMessage(prefix + "/kpoj reload - reload plugin"); sender.sendMessage(prefix + "/kpoj on - activate this plugin");
sender.sendMessage(prefix + "/kpoj list - list players on whitelist"); sender.sendMessage(prefix + "/kpoj add <player> - add player to whitelist");
sender.sendMessage(prefix + "--------------------------------------------------"); sender.sendMessage(prefix + "/kpoj del <player> - removes player from whitelist");
sender.sendMessage(prefix + "/kpoj reload - reload plugin");
} else if(args.length > 0 && args[0].equalsIgnoreCase("version")) { sender.sendMessage(prefix + "/kpoj list - list players on whitelist");
sender.sendMessage(prefix + "Version: " + getDescription().getVersion()); sender.sendMessage(prefix + "/kpoj mode <mode> - Change the mode of the plugin (whitelist|blacklist)");
sender.sendMessage(prefix + "--------------------------------------------------");
} else if(args.length > 1 && args[0].equalsIgnoreCase("add") && cop(sender, "kpoj.add")) {
for(int i = 1; i < args.length; i++) { } else if(args.length > 0 && args[0].equalsIgnoreCase("version")) {
if(playerlist.contains(args[i])) { sender.sendMessage(prefix + "Version: " + getDescription().getVersion());
sender.sendMessage(prefix + args[i] + " is already in the whitelist!");
} else { } else if(args.length > 1 && args[0].equalsIgnoreCase("add") && cop(sender, "kpoj.add")) {
playerlist.add(args[i]); for(int i = 1; i < args.length; i++) {
sender.sendMessage(prefix + args[i] + " add to whitelist!"); if(playerlist.contains(args[i])) {
} sender.sendMessage(prefix + args[i] + " is already in the " + (blacklist ? "blacklist" : "whitelist") + "!");
} } else {
save(); playerlist.add(args[i]);
sender.sendMessage(prefix + args[i] + " add to " + (blacklist ? "blacklist" : "whitelist") + "!");
} else if(args.length > 1 && args[0].equalsIgnoreCase("del") && cop(sender, "kpoj.del")) { save();
for(int i = 1; i < args.length; i++) { }
if(playerlist.contains(args[i])) { }
playerlist.remove(args[i]);
sender.sendMessage(prefix + args[i] + " removed from the whitelist!"); } else if(args.length > 1 && args[0].equalsIgnoreCase("del") && cop(sender, "kpoj.del")) {
} else { for(int i = 1; i < args.length; i++) {
sender.sendMessage(prefix + args[i] + " is not in the whitelist!"); if(playerlist.contains(args[i])) {
} playerlist.remove(args[i]);
} sender.sendMessage(prefix + args[i] + " removed from the " + (blacklist ? "blacklist" : "whitelist") + "!");
save(); save();
} else {
} else if(args.length > 0 && args[0].equalsIgnoreCase("reload") && cop(sender, "kpoj.reload")) { sender.sendMessage(prefix + args[i] + " is not in the " + (blacklist ? "blacklist" : "whitelist") + "!");
reloadConfig(); }
config = getConfig(); }
playerlist = config.getStringList("Player");
active = config.getBoolean("Check"); } else if(args.length > 0 && args[0].equalsIgnoreCase("reload") && cop(sender, "kpoj.reload")) {
sender.sendMessage(prefix + "Config reloaded!"); reloadConfig();
config = getConfig();
} else if(args.length > 0 && args[0].equalsIgnoreCase("list") && cop(sender, "kpoj.list")) { playerlist = config.getStringList("Player");
sender.sendMessage(prefix + "Players: " + String.join(", ", playerlist)); active = config.getBoolean("Check");
blacklist = config.getBoolean("Blacklist");
} else { config_version = config.getInt("Version");
sender.sendMessage(prefix + "Version: " + getDescription().getVersion()); sender.sendMessage(prefix + "Config reloaded!");
if(cop(sender, "kpoj.info"))
sender.sendMessage(prefix + "Active: " + (active ? ChatColor.GREEN + "yes" : ChatColor.RED + "no")); } else if(args.length > 0 && args[0].equalsIgnoreCase("list") && cop(sender, "kpoj.list")) {
if(sender.hasPermission("kpoj.info") && sender instanceof Player) sender.sendMessage(prefix + "Players: " + String.join(", ", playerlist));
sender.sendMessage(prefix + "Status: " + (playerlist.contains(sender.getName()) ? ChatColor.GREEN + "Allowed" : ChatColor.RED + "Disallowed"));
} } else if(args.length > 1 && args[0].equalsIgnoreCase("mode") && cop(sender, "kpoj.listmode")) {
return true; if(args[1].matches("w|white|whitelist")) {
} if(blacklist) {
return false; blacklist = false;
} sender.sendMessage(prefix + "Changed to mode: whitelist");
save();
@Override }
public void onEnable() { else
saveDefaultConfig(); sender.sendMessage(prefix + "Mode already whitelist");
playerlist = config.getStringList("Player"); } else if(args[1].matches("b|black|blacklist")) {
active = config.getBoolean("Check"); if(!blacklist) {
blacklist = true;
getServer().getPluginManager().registerEvents(this, this); sender.sendMessage(prefix + "Changed to mode: blacklist");
} save();
}
@EventHandler else
public void onPlayerLogin(PlayerLoginEvent event) { sender.sendMessage(prefix + "Mode already blacklist");
if(!playerlist.contains(event.getPlayer().getName()) && active) {
event.disallow(Result.KICK_WHITELIST, "You are not white-listed on this server!"); }
getServer().broadcastMessage(event.getPlayer().getName() + " tried to join.");
} } else {
} sender.sendMessage(prefix + "Version: " + getDescription().getVersion());
if(cop(sender, "kpoj.info")) {
private boolean cop(CommandSender sender, String perm) { sender.sendMessage(prefix + "Active: " + (active ? ChatColor.GREEN + "yes" : ChatColor.RED + "no"));
return sender.hasPermission(perm) || !(sender instanceof Player); sender.sendMessage(prefix + "Mode: " + (blacklist ? ChatColor.GRAY + "blacklist" : ChatColor.WHITE + "whitelist"));
} }
private void save() { if(sender.hasPermission("kpoj.info") && sender instanceof Player) {
config.set("Check", active); if(blacklist)
config.set("Player", playerlist); sender.sendMessage(prefix + "Status: " + (playerlist.contains(sender.getName()) ? ChatColor.RED + "Disallowed" : ChatColor.GREEN + "Allowed"));
saveConfig(); else
} sender.sendMessage(prefix + "Status: " + (playerlist.contains(sender.getName()) ? ChatColor.GREEN + "Allowed" : ChatColor.RED + "Disallowed"));
} }
}
return true;
}
return false;
}
@Override
public void onEnable() {
saveDefaultConfig();
playerlist = config.getStringList("Player");
active = config.getBoolean("Check");
blacklist = config.getBoolean("Blacklist", false);
config_version = config.getInt("Version", 1);
if(config_version == 1) {
getLogger().log(Level.INFO, "Update config from version " + config_version + " to version 2");
config_version = 2;
save();
}
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event) {
if(active && !event.getPlayer().isOp()) {
if(blacklist && playerlist.contains(event.getPlayer().getName())) {
event.disallow(Result.KICK_WHITELIST, "You are black-listed on this server!");
getServer().broadcastMessage(event.getPlayer().getName() + " tried to join.");
getLogger().log(Level.INFO, event.getPlayer().getName() + " tried to join but is on the blacklist");
getLogger().log(Level.INFO, "Stopped player " + event.getPlayer().getName() + " from joining");
} else if(!blacklist && !playerlist.contains(event.getPlayer().getName())) {
event.disallow(Result.KICK_WHITELIST, "You are not white-listed on this server!");
getServer().broadcastMessage(event.getPlayer().getName() + " tried to join.");
getLogger().log(Level.INFO, event.getPlayer().getName() + " tried to join but is not on the whitelist");
getLogger().log(Level.INFO, "Stopped player " + event.getPlayer().getName() + " from joining");
}
}
}
private boolean cop(CommandSender sender, String perm) {
return sender.hasPermission(perm) || !(sender instanceof Player);
}
private void save() {
config.set("Check", active);
config.set("Player", playerlist);
config.set("Blacklist", blacklist);
config.set("Version", config_version);
saveConfig();
}
}

View File

@@ -1,2 +1,4 @@
Check: true Version: 2
Check: true
Blacklist: false
Player: [] Player: []

View File

@@ -1,45 +1,52 @@
name: KickPlayerOnJoin name: KickPlayerOnJoin
main: de.web.basman93.KickPlayerOnJoin main: de.web.basman93.KickPlayerOnJoin
version: "${project.version}" version: "${project.version}"
description: A plugin to kick not whitelisted player description: A plugin to kick not whitelisted player
author: basman93 author: basman93
api-version: 1.18
commands: website: https://gitlab.com/basman93/KickPlayerOnJoin
kickplayeronjoin: prefix: KPOJ
description: Main Command
usage: /<command> <args> commands:
aliases: [kpoj] kickplayeronjoin:
description: Main Command
permissions: usage: /<command> <args>
kpoj.*: aliases: [kpoj]
default: false
description: Gives access to all KickPlayerOnJoin commands permissions:
children: kpoj.*:
kpoj.mode: true default: op
kpoj.help: true description: Gives access to all KickPlayerOnJoin commands
kpoj.info: true children:
kpoj.add: true kpoj.mode: true
kpoj.del: true kpoj.help: true
kpoj.reload: true kpoj.info: true
kpoj.list: true kpoj.add: true
kpoj.mode: kpoj.del: true
default: false kpoj.reload: true
description: Allows to activate or deactivate this plugin kpoj.list: true
kpoj.help: kpoj.listmode: true
default: false kpoj.mode:
description: Shows help information default: false
kpoj.info: description: Allows to activate or deactivate this plugin
default: false kpoj.help:
description: Shows extra information default: false
kpoj.add: description: Shows help information
default: false kpoj.info:
description: Adds player to the whitelist default: false
kpoj.del: description: Shows extra information
default: false kpoj.add:
description: Remove player from the whitelist default: false
kpoj.reload: description: Adds player to the whitelist
default: false kpoj.del:
description: reload the config file default: false
kpoj.list: description: Remove player from the whitelist
default: false kpoj.reload:
description: list all added player default: false
description: reload the config file
kpoj.list:
default: false
description: list all added player
kpoj.listmode:
default: false
description: Change mode of the plugin (blacklist/whitelist)