forked from Upstream/CommandPanels
3.21.3.1
This commit is contained in:
parent
9aa6a64f1e
commit
6c390a98f2
4
pom.xml
4
pom.xml
@ -126,7 +126,7 @@
|
||||
<dependency>
|
||||
<groupId>de.tr7zw</groupId>
|
||||
<artifactId>item-nbt-api</artifactId>
|
||||
<version>2.13.0</version>
|
||||
<version>2.13.1-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@ -138,7 +138,7 @@
|
||||
<dependency>
|
||||
<groupId>net.kyori</groupId>
|
||||
<artifactId>adventure-text-minimessage</artifactId>
|
||||
<version>4.13.0</version>
|
||||
<version>4.17.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -16,7 +16,6 @@ config:
|
||||
stop-sound: true
|
||||
disabled-world-message: true
|
||||
panel-snooper: false
|
||||
allow-unsafe-mini-message: false
|
||||
enable-import-command: false
|
||||
format:
|
||||
tag: '&6[&bCommandPanels&6] '
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: 3.21.3.0
|
||||
version: 3.21.3.1
|
||||
main: me.rockyhawk.commandpanels.CommandPanels
|
||||
name: CommandPanels
|
||||
author: RockyHawk
|
||||
|
@ -22,6 +22,7 @@ import me.rockyhawk.commandpanels.completetabs.UpdateTabComplete;
|
||||
import me.rockyhawk.commandpanels.customcommands.Commandpanelcustom;
|
||||
import me.rockyhawk.commandpanels.datamanager.DebugManager;
|
||||
import me.rockyhawk.commandpanels.datamanager.PanelDataLoader;
|
||||
import me.rockyhawk.commandpanels.datamanager.PanelDataPlayerManager;
|
||||
import me.rockyhawk.commandpanels.editor.*;
|
||||
import me.rockyhawk.commandpanels.floodgatecp.OpenFloodgateGUI;
|
||||
import me.rockyhawk.commandpanels.generatepanels.Commandpanelsgenerate;
|
||||
@ -90,6 +91,8 @@ public class CommandPanels extends JavaPlugin{
|
||||
|
||||
public CommandRunner commandRunner = new CommandRunner(this);
|
||||
public PanelDataLoader panelData = new PanelDataLoader(this);
|
||||
public PanelDataPlayerManager panelDataPlayers = new PanelDataPlayerManager(this);
|
||||
|
||||
public Placeholders placeholders = new Placeholders(this);
|
||||
public DebugManager debug = new DebugManager(this);
|
||||
public CreateText tex = new CreateText(this);
|
||||
@ -190,6 +193,7 @@ public class CommandPanels extends JavaPlugin{
|
||||
}
|
||||
|
||||
this.getServer().getPluginManager().registerEvents(inputUtils, this);
|
||||
this.getServer().getPluginManager().registerEvents(panelDataPlayers, this);
|
||||
this.getServer().getPluginManager().registerEvents(new UtilsPanelsLoader(this), this);
|
||||
this.getServer().getPluginManager().registerEvents(new GenUtils(this), this);
|
||||
this.getServer().getPluginManager().registerEvents(new ItemFallManager(this), this);
|
||||
@ -281,6 +285,9 @@ public class CommandPanels extends JavaPlugin{
|
||||
//do hotbar items
|
||||
hotbar.reloadHotbarSlots();
|
||||
|
||||
//load all known players for data
|
||||
panelDataPlayers.reloadAllPlayers();
|
||||
|
||||
//add custom charts bStats
|
||||
Metrics metrics = new Metrics(this, 5097);
|
||||
metrics.addCustomChart(new SingleLineChart("panels_amount", () -> {
|
||||
|
@ -74,7 +74,9 @@ public class CreateText {
|
||||
//change colour
|
||||
for(String temp : setpapi){
|
||||
try {
|
||||
setpapi.set(tempInt, plugin.hex.translateHexColorCodes(ChatColor.translateAlternateColorCodes('&', temp)));
|
||||
setpapi.set(tempInt,
|
||||
plugin.hex.translateHexColorCodes(
|
||||
ChatColor.translateAlternateColorCodes('&', temp)));
|
||||
}catch(NullPointerException ignore){}
|
||||
tempInt += 1;
|
||||
}
|
||||
@ -84,7 +86,8 @@ public class CreateText {
|
||||
//regular string papi, but only colours so Player doesn't need to be there
|
||||
public String colour(String setpapi) {
|
||||
try {
|
||||
setpapi = plugin.hex.translateHexColorCodes(ChatColor.translateAlternateColorCodes('&', setpapi));
|
||||
setpapi = ChatColor.translateAlternateColorCodes('&', setpapi);
|
||||
setpapi = plugin.hex.translateHexColorCodes(setpapi);
|
||||
return setpapi;
|
||||
}catch(NullPointerException e){
|
||||
return setpapi;
|
||||
|
@ -329,7 +329,7 @@ public class Placeholders {
|
||||
if(dataPoint.contains(",")){
|
||||
String dataName = dataPoint.split(",")[0];
|
||||
String playerName = dataPoint.split(",")[1];
|
||||
return plugin.panelData.getUserData(Bukkit.getOfflinePlayer(playerName).getUniqueId(),dataName);
|
||||
return plugin.panelData.getUserData(plugin.panelDataPlayers.getOffline(playerName),dataName);
|
||||
}else{
|
||||
return plugin.panelData.getUserData(p.getUniqueId(),dataPoint);
|
||||
}
|
||||
@ -338,10 +338,24 @@ public class Placeholders {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
//returns if a player is found
|
||||
if(identifier.startsWith("uuid-")) {
|
||||
try {
|
||||
String dataPoint = identifier.replace("uuid-", "");
|
||||
//get data from other user
|
||||
if(plugin.panelDataPlayers.getOffline(dataPoint) == null){
|
||||
return "unknown";
|
||||
}
|
||||
return plugin.panelDataPlayers.getOffline(dataPoint).toString();
|
||||
}catch (Exception ex){
|
||||
plugin.debug(ex,p);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
//edits data via placeholder execution (will return empty output)
|
||||
if(identifier.startsWith("setdata-")) {
|
||||
try {
|
||||
String point_value = identifier.replace("cp-setdata-", "");
|
||||
String point_value = identifier.replace("setdata-", "");
|
||||
String command = "set-data= " + point_value.split(",")[0] + " " + point_value.split(",")[1];
|
||||
plugin.commandRunner.runCommand(panel,position,p, command);
|
||||
return "";
|
||||
|
@ -36,11 +36,11 @@ public class Commandpanelsdata implements CommandExecutor {
|
||||
if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) {
|
||||
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
|
||||
if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue;
|
||||
plugin.panelData.clearData(plugin.panelData.getOffline(player.getName()));
|
||||
plugin.panelData.clearData(plugin.panelDataPlayers.getOffline(player.getName()));
|
||||
count++;
|
||||
}
|
||||
} else
|
||||
plugin.panelData.clearData(plugin.panelData.getOffline(args[1]));
|
||||
plugin.panelData.clearData(plugin.panelDataPlayers.getOffline(args[1]));
|
||||
if (sendPlayerMessage) {
|
||||
sender.sendMessage(plugin.tex.colour(plugin.tag
|
||||
+ ChatColor.GREEN + "Cleared all data for "
|
||||
@ -54,11 +54,11 @@ public class Commandpanelsdata implements CommandExecutor {
|
||||
if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) {
|
||||
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
|
||||
if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue;
|
||||
plugin.panelData.delUserData(plugin.panelData.getOffline(player.getName()), args[2]);
|
||||
plugin.panelData.delUserData(plugin.panelDataPlayers.getOffline(player.getName()), args[2]);
|
||||
count++;
|
||||
}
|
||||
} else
|
||||
plugin.panelData.delUserData(plugin.panelData.getOffline(args[1]), args[2]);
|
||||
plugin.panelData.delUserData(plugin.panelDataPlayers.getOffline(args[1]), args[2]);
|
||||
if (sendPlayerMessage) {
|
||||
sender.sendMessage(plugin.tex.colour(plugin.tag
|
||||
+ ChatColor.GREEN + "Removed "
|
||||
@ -71,7 +71,7 @@ public class Commandpanelsdata implements CommandExecutor {
|
||||
//for the get command
|
||||
sender.sendMessage(plugin.tex.colour(plugin.tag
|
||||
+ ChatColor.GREEN + "Value of data is "
|
||||
+ ChatColor.WHITE + plugin.panelData.getUserData(plugin.panelData.getOffline(args[1]), args[2])));
|
||||
+ ChatColor.WHITE + plugin.panelData.getUserData(plugin.panelDataPlayers.getOffline(args[1]), args[2])));
|
||||
return true;
|
||||
}
|
||||
} else if (args.length == 4) {
|
||||
@ -80,11 +80,11 @@ public class Commandpanelsdata implements CommandExecutor {
|
||||
if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) {
|
||||
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
|
||||
if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue;
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(player.getName()), args[2], args[3], true);
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(player.getName()), args[2], args[3], true);
|
||||
count++;
|
||||
}
|
||||
} else {
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2], args[3], true);
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(args[1]), args[2], args[3], true);
|
||||
}
|
||||
if (sendPlayerMessage) {
|
||||
sender.sendMessage(plugin.tex.colour(plugin.tag
|
||||
@ -101,11 +101,11 @@ public class Commandpanelsdata implements CommandExecutor {
|
||||
|
||||
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
|
||||
if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue;
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(player.getName()), args[2], args[3], false);
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(player.getName()), args[2], args[3], false);
|
||||
count++;
|
||||
}
|
||||
} else
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2], args[3], false);
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(args[1]), args[2], args[3], false);
|
||||
if (sendPlayerMessage) {
|
||||
sender.sendMessage(plugin.tex.colour(plugin.tag
|
||||
+ ChatColor.GREEN + "Set "
|
||||
|
@ -8,11 +8,8 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -40,6 +37,9 @@ public class Commandpanelsreload implements CommandExecutor {
|
||||
plugin.config = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "config.yml"));
|
||||
plugin.blockConfig = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder() + File.separator + "blocks.yml"));
|
||||
|
||||
//load all known player UUIDs for data
|
||||
plugin.panelDataPlayers.reloadAllPlayers();
|
||||
|
||||
//check for duplicates
|
||||
plugin.checkDuplicatePanel(sender);
|
||||
|
||||
|
@ -16,7 +16,7 @@ public class DataTags implements Listener {
|
||||
if(e.name.equalsIgnoreCase("set-data=")){
|
||||
e.commandTagUsed();
|
||||
if(e.args.length == 3){
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
|
||||
return;
|
||||
@ -30,7 +30,7 @@ public class DataTags implements Listener {
|
||||
if(e.name.equalsIgnoreCase("add-data=")){
|
||||
e.commandTagUsed();
|
||||
if(e.args.length == 3){
|
||||
plugin.panelData.setUserData(plugin.panelData.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.panelData.setUserData(plugin.panelDataPlayers.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
|
||||
return;
|
||||
@ -44,7 +44,7 @@ public class DataTags implements Listener {
|
||||
if(e.name.equalsIgnoreCase("math-data=")){
|
||||
e.commandTagUsed();
|
||||
if(e.args.length == 3){
|
||||
plugin.panelData.doDataMath(plugin.panelData.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.panelData.doDataMath(plugin.panelDataPlayers.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
|
||||
return;
|
||||
@ -58,13 +58,13 @@ public class DataTags implements Listener {
|
||||
if(e.name.equalsIgnoreCase("clear-data=")){
|
||||
e.commandTagUsed();
|
||||
//will clear all data for player clear-data= [playerName]
|
||||
plugin.panelData.clearData(plugin.panelData.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0])));
|
||||
plugin.panelData.clearData(plugin.panelDataPlayers.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0])));
|
||||
return;
|
||||
}
|
||||
if(e.name.equalsIgnoreCase("del-data=")){
|
||||
e.commandTagUsed();
|
||||
if(e.args.length == 2){
|
||||
plugin.panelData.delUserData(plugin.panelData.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1])),
|
||||
plugin.panelData.delUserData(plugin.panelDataPlayers.getOffline(plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1])),
|
||||
plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]));
|
||||
return;
|
||||
}
|
||||
|
@ -137,12 +137,8 @@ public class BasicTags implements Listener {
|
||||
}
|
||||
if(e.name.equalsIgnoreCase("minimessage=")){
|
||||
e.commandTagUsed();
|
||||
//get checks
|
||||
boolean isVersionCompatible = plugin.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18);
|
||||
boolean isPaper = Bukkit.getServer().getVersion().contains("Paper");
|
||||
boolean allowUnsafeMiniMessage = plugin.config.getBoolean("config.allow-unsafe-mini-message");
|
||||
//do mini message if conditions are met
|
||||
if (isVersionCompatible && (isPaper || allowUnsafeMiniMessage)) {
|
||||
if (plugin.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18)) {
|
||||
Audience player = (Audience) e.p; // Needed because the basic Player from the Event can't send Paper's Components
|
||||
Component parsedText = SerializerUtils.serializeText(String.join(" ", e.args));
|
||||
player.sendMessage(parsedText);
|
||||
|
@ -6,7 +6,6 @@ import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@ -47,13 +46,13 @@ public class DataTabComplete implements TabCompleter {
|
||||
try {
|
||||
|
||||
if (!args[1].equalsIgnoreCase("all") && !args[1].equalsIgnoreCase("online"))
|
||||
return new ArrayList<>(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(args[1])).getKeys(false));
|
||||
return new ArrayList<>(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelDataPlayers.getOffline(args[1])).getKeys(false));
|
||||
|
||||
else {
|
||||
Set<String> set = new HashSet<>();
|
||||
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
|
||||
if (!player.isOnline()&&args[1].equalsIgnoreCase("online")) continue;
|
||||
set.addAll(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(player.getName())).getKeys(false));
|
||||
set.addAll(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelDataPlayers.getOffline(player.getName())).getKeys(false));
|
||||
|
||||
}
|
||||
String[] finalArgs = args;
|
||||
|
@ -1,7 +1,6 @@
|
||||
package me.rockyhawk.commandpanels.datamanager;
|
||||
|
||||
import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
@ -96,10 +95,4 @@ public class PanelDataLoader {
|
||||
|
||||
dataConfig.set("playerData." + playerUUID + "." + dataPoint, output.toPlainString());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public UUID getOffline(String playerName){
|
||||
//making this a separate function as it is long and deprecated
|
||||
return Bukkit.getOfflinePlayer(playerName).getUniqueId();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
package me.rockyhawk.commandpanels.datamanager;
|
||||
|
||||
import me.rockyhawk.commandpanels.CommandPanels;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PanelDataPlayerManager implements Listener {
|
||||
private CommandPanels plugin;
|
||||
|
||||
public PanelDataPlayerManager(CommandPanels pl) {
|
||||
this.plugin = pl;
|
||||
}
|
||||
|
||||
//will return UUID if found or null
|
||||
public UUID getOffline(String playerName){
|
||||
return knownPlayers.getOrDefault(playerName, null);
|
||||
}
|
||||
|
||||
//Bukkit.getOfflinePlayer uses MojangAPI and can be very slow if a player has never joined the server before
|
||||
//Will get all players who have ever joined the server before and use them
|
||||
private HashMap<String, UUID> knownPlayers = new HashMap<>();
|
||||
public void reloadAllPlayers(){
|
||||
knownPlayers.clear();
|
||||
for(OfflinePlayer p : Bukkit.getOfflinePlayers()){
|
||||
knownPlayers.put(p.getName(), p.getUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
//Add players who have joined the server to known players
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
knownPlayers.put(e.getPlayer().getName(), e.getPlayer().getUniqueId());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user