commit 1e1298c647ef642eb8b68b21ab76f6a3ddca4c14 Author: len <40720638+destro174@users.noreply.github.com> Date: Sun Apr 4 17:48:59 2021 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..258d112 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Plugin +.idea +run + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# IntelliJ +*.iml +*.ipr +*.iws +.idea/ +out/ + +# Maven +target/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bd38114 --- /dev/null +++ b/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + groupId + LiteFlags + 0.5 + + + 11 + 11 + + + ${project.artifactId} + clean package install + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 11 + 11 + + + + + + src/main/resources + + + + + + + papermc + https://papermc.io/repo/repository/maven-public/ + + + + + com.destroystokyo.paper + paper-api + 1.16.5-R0.1-SNAPSHOT + provided + + + + \ No newline at end of file diff --git a/src/main/java/com/liteflags/LiteFlags.java b/src/main/java/com/liteflags/LiteFlags.java new file mode 100644 index 0000000..4bb6fd5 --- /dev/null +++ b/src/main/java/com/liteflags/LiteFlags.java @@ -0,0 +1,50 @@ +package com.liteflags; + +import com.liteflags.auth.AuthTimer; +import com.liteflags.commands.FlagCMD; +import com.liteflags.data.database.DatabaseConnection; +import com.liteflags.events.ChatEvent; +import com.liteflags.events.LoginEvent; +import com.liteflags.events.LogoutEvent; +import com.liteflags.events.MoveEvent; +import java.sql.SQLException; +import org.bukkit.plugin.java.JavaPlugin; + +public class LiteFlags extends JavaPlugin { + private static LiteFlags instance; + public DatabaseConnection database; + public AuthTimer timer; + + public void onEnable() { + instance = this; + this.saveDefaultConfig(); + this.getCommand("flag").setExecutor(new FlagCMD(this)); + this.getCommand("flaglist").setExecutor(new FlagCMD(this)); + this.getServer().getPluginManager().registerEvents(new LoginEvent(this), this); + this.getServer().getPluginManager().registerEvents(new LogoutEvent(this), this); + this.getServer().getPluginManager().registerEvents(new ChatEvent(this), this); + this.getServer().getPluginManager().registerEvents(new MoveEvent(this), this); + + try { + DatabaseConnection var10000 = this.database; + DatabaseConnection.initialize(); + } catch (SQLException var2) { + this.getLogger().severe("*** Could not connect to the database. ***"); + this.getLogger().severe("*** This plugin will be disabled. ***"); + this.setEnabled(false); + var2.printStackTrace(); + } + + } + + public void onDisable() { + } + + public static LiteFlags getInstance() { + return instance; + } + + public AuthTimer authTimer() { + return this.timer; + } +} diff --git a/src/main/java/com/liteflags/auth/AuthTimer.java b/src/main/java/com/liteflags/auth/AuthTimer.java new file mode 100644 index 0000000..38d4dd9 --- /dev/null +++ b/src/main/java/com/liteflags/auth/AuthTimer.java @@ -0,0 +1,53 @@ +package com.liteflags.auth; + +import com.liteflags.LiteFlags; +import com.liteflags.data.maps.MapCache; +import com.liteflags.util.Utilities; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class AuthTimer { + public LiteFlags flags; + public static Map taskID = new HashMap(); + + public AuthTimer(LiteFlags flags) { + this.flags = flags; + } + + public static void startTimer(final Player player) { + int tid = LiteFlags.getInstance().getServer().getScheduler().scheduleSyncRepeatingTask(LiteFlags.getInstance(), new Runnable() { + int timeRemaining = LiteFlags.getInstance().getConfig().getInt("Authenticate_Timer"); + + public void run() { + if (this.timeRemaining <= 0) { + if (player.hasPermission("liteflags.authentication.success")) { + AuthTimer.endTask(player); + } else { + player.sendMessage(Utilities.format(LiteFlags.getInstance().getConfig().getString("Messages.Authenticate").replace("%code%", (CharSequence)MapCache.reauthedPlayers.get(player.getUniqueId().toString())))); + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), LiteFlags.getInstance().getConfig().getString("Authenticate_Timer_Command").replace("%player%", player.getName()).replace("%code%", (CharSequence)MapCache.reauthedPlayers.get(player.getUniqueId().toString()))); + this.timeRemaining = LiteFlags.getInstance().getConfig().getInt("Authenticate_Timer"); + } + } else if (player.hasPermission("liteflags.authentication.success")) { + AuthTimer.endTask(player); + } else { + --this.timeRemaining; + } + + } + }, 0L, 20L); + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), LiteFlags.getInstance().getConfig().getString("Authenticate_Timer_Command").replace("%player%", player.getName()).replace("%code%", (CharSequence)MapCache.reauthedPlayers.get(player.getUniqueId().toString()))); + taskID.put(player.getUniqueId(), tid); + } + + public static void endTask(Player player) { + if (taskID.containsKey(player.getUniqueId())) { + int tid = (Integer)taskID.get(player.getUniqueId()); + LiteFlags.getInstance().getServer().getScheduler().cancelTask(tid); + taskID.remove(player.getUniqueId()); + } + + } +} diff --git a/src/main/java/com/liteflags/auth/Authentication.java b/src/main/java/com/liteflags/auth/Authentication.java new file mode 100644 index 0000000..a8f1ef1 --- /dev/null +++ b/src/main/java/com/liteflags/auth/Authentication.java @@ -0,0 +1,34 @@ +package com.liteflags.auth; + +import com.liteflags.LiteFlags; +import com.liteflags.data.maps.MapCache; +import com.liteflags.util.Utilities; +import java.util.Random; +import java.util.UUID; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class Authentication { + public static String getAuthKey() { + String randChars = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwsyz"; + StringBuilder salt = new StringBuilder(); + Random rnd = new Random(); + + while(salt.length() < 6) { + int index = (int)(rnd.nextFloat() * (float)randChars.length()); + salt.append(randChars.charAt(index)); + } + + return "." + salt.toString(); + } + + public static void checkAuthStatus(UUID uuid) { + Player player = Bukkit.getPlayer(uuid); + if (!player.hasPermission("liteflags.authentication.success")) { + MapCache.reauthedPlayers.put(player.getUniqueId().toString(), getAuthKey()); + AuthTimer.startTimer(player); + player.sendMessage(Utilities.format(LiteFlags.getInstance().getConfig().getString("Messages.Authenticate").replace("%code%", (CharSequence)MapCache.reauthedPlayers.get(player.getUniqueId().toString())))); + } + + } +} diff --git a/src/main/java/com/liteflags/commands/AuthCMD.java b/src/main/java/com/liteflags/commands/AuthCMD.java new file mode 100644 index 0000000..1fa92f9 --- /dev/null +++ b/src/main/java/com/liteflags/commands/AuthCMD.java @@ -0,0 +1,4 @@ +package com.liteflags.commands; + +public class AuthCMD { +} diff --git a/src/main/java/com/liteflags/commands/FlagCMD.java b/src/main/java/com/liteflags/commands/FlagCMD.java new file mode 100644 index 0000000..f70133b --- /dev/null +++ b/src/main/java/com/liteflags/commands/FlagCMD.java @@ -0,0 +1,283 @@ +package com.liteflags.commands; + +import com.liteflags.LiteFlags; +import com.liteflags.data.database.Database; +import com.liteflags.data.database.Methods; +import com.liteflags.data.maps.MapCache; +import com.liteflags.util.Utilities; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.TimeUnit; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.HoverEvent.Action; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class FlagCMD implements CommandExecutor { + private LiteFlags flags; + + public FlagCMD(LiteFlags flags) { + this.flags = flags; + } + + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + OfflinePlayer target; + String removeTimeLetter; + if (cmd.getName().equalsIgnoreCase("flag") && sender instanceof Player) { + if (sender.hasPermission("liteflags.staff")) { + if (args.length == 0) { + sender.sendMessage(ChatColor.RED + "Invalid command. /flag help"); + } + + if (args.length == 1 && args[0].equalsIgnoreCase("help")) { + sender.sendMessage(ChatColor.YELLOW + "/flaglist | /fl " + ChatColor.GRAY + "- Shows all the players with active flags"); + sender.sendMessage(ChatColor.YELLOW + "/flaglist | /fl " + ChatColor.GRAY + "- Shows all flags a player has"); + sender.sendMessage(ChatColor.YELLOW + "/flag