Merge branch 'master' into master

This commit is contained in:
RockyHawk 2021-08-10 16:48:13 +10:00 committed by GitHub
commit 9857a2d4fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 342 additions and 83 deletions

View File

@ -1,7 +1,7 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="MMOItems-6.5.1"> <library name="MMOItems-6.6.0">
<CLASSES> <CLASSES>
<root url="jar://$PROJECT_DIR$/../../Tools/Build Tools/Jar Libraries/MMOItems-6.5.1.jar!/" /> <root url="jar://$PROJECT_DIR$/../../Tools/Build Tools/Jar Libraries/MMOItems-6.6.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

View File

@ -1,7 +1,7 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="MythicLib-1.0.16"> <library name="MythicLib-1.1.1">
<CLASSES> <CLASSES>
<root url="jar://$PROJECT_DIR$/../../Tools/Build Tools/Jar Libraries/MythicLib-1.0.16.jar!/" /> <root url="jar://$PROJECT_DIR$/../../Tools/Build Tools/Jar Libraries/MythicLib-1.1.1.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

View File

@ -12,12 +12,12 @@
<orderEntry type="library" name="TokenManager-3.2.4" level="project" /> <orderEntry type="library" name="TokenManager-3.2.4" level="project" />
<orderEntry type="library" name="Vault" level="project" /> <orderEntry type="library" name="Vault" level="project" />
<orderEntry type="library" name="VotingPlugin" level="project" /> <orderEntry type="library" name="VotingPlugin" level="project" />
<orderEntry type="library" name="MMOItems-6.5.1" level="project" />
<orderEntry type="library" name="spigot-1.16.4" level="project" /> <orderEntry type="library" name="spigot-1.16.4" level="project" />
<orderEntry type="library" name="spigot-1.13.2" level="project" /> <orderEntry type="library" name="spigot-1.13.2" level="project" />
<orderEntry type="library" name="CustomItemsAPI_PLACEHOLDER" level="project" /> <orderEntry type="library" name="CustomItemsAPI_PLACEHOLDER" level="project" />
<orderEntry type="library" name="ChestSort" level="project" /> <orderEntry type="library" name="ChestSort" level="project" />
<orderEntry type="library" name="MythicLib-1.0.16" level="project" />
<orderEntry type="library" name="PlaceholderAPI-2.10.9" level="project" /> <orderEntry type="library" name="PlaceholderAPI-2.10.9" level="project" />
<orderEntry type="library" name="MMOItems-6.6.0" level="project" />
<orderEntry type="library" name="MythicLib-1.1.1" level="project" />
</component> </component>
</module> </module>

View File

@ -1,6 +1,6 @@
# |------------------------------------------------------------------------ # |------------------------------------------------------------------------
# | CommandPanels Config File # | CommandPanels Config File
# | By RockyHawk v5.1 # | By RockyHawk v5.2
# | https://www.spigotmc.org/resources/command-panels-custom-guis.67788/ # | https://www.spigotmc.org/resources/command-panels-custom-guis.67788/
# | # |
# | auto-update and minor-updates-only is HEAVILY RECOMMENDED # | auto-update and minor-updates-only is HEAVILY RECOMMENDED
@ -60,8 +60,5 @@ purchase:
success: '&aSuccessfully Sold %cp-args%.' success: '&aSuccessfully Sold %cp-args%.'
failure: '&cInsufficient Items!' failure: '&cInsufficient Items!'
xp: xp:
success: '&aSuccessfully Bought For %cp-args% xp level.' success: '&aSuccessfully Bought For %cp-args% Experience.'
failure: '&cInsufficient xp levels!' failure: '&cInsufficient Experience!'
xppoints:
success: '&aSuccessfully Bought For %cp-args% xp points.'
failure: '&cInsufficient xp points!'

View File

@ -1,4 +1,4 @@
version: 3.16.2.5 version: 3.16.3.0
main: me.rockyhawk.commandpanels.CommandPanels main: me.rockyhawk.commandpanels.CommandPanels
name: CommandPanels name: CommandPanels
author: RockyHawk author: RockyHawk
@ -14,6 +14,10 @@ commands:
description: Reloads plugin config. description: Reloads plugin config.
usage: /commandpanelreload usage: /commandpanelreload
aliases: [cpr, cpanelr] aliases: [cpr, cpanelr]
commandpaneldata:
description: Change data values for players
usage: /commandpaneldata
aliases: [cpdata]
commandpaneldebug: commandpaneldebug:
description: Enable and Disable debug mode globally description: Enable and Disable debug mode globally
usage: /commandpaneldebug usage: /commandpaneldebug
@ -67,8 +71,8 @@ permissions:
default: true default: true
commandpanel.update: commandpanel.update:
default: op default: op
commandpanel.editor: commandpanel.data:
default: true default: op
commandpanel.edit: commandpanel.edit:
default: op default: op
commandpanel.list: commandpanel.list:

View File

@ -6,6 +6,9 @@ import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.classresources.ExecuteOpenVoids; import me.rockyhawk.commandpanels.classresources.ExecuteOpenVoids;
import me.rockyhawk.commandpanels.classresources.GetCustomHeads; import me.rockyhawk.commandpanels.classresources.GetCustomHeads;
import me.rockyhawk.commandpanels.classresources.ItemCreation; import me.rockyhawk.commandpanels.classresources.ItemCreation;
import me.rockyhawk.commandpanels.classresources.placeholders.expansion.CpPlaceholderExpansion;
import me.rockyhawk.commandpanels.completetabs.DataTabComplete;
import me.rockyhawk.commandpanels.completetabs.ImportTabComplete;
import me.rockyhawk.commandpanels.ingameeditor.OpenEditorGuis; import me.rockyhawk.commandpanels.ingameeditor.OpenEditorGuis;
import me.rockyhawk.commandpanels.classresources.item_fall.ItemFallManager; import me.rockyhawk.commandpanels.classresources.item_fall.ItemFallManager;
import me.rockyhawk.commandpanels.classresources.placeholders.CreateText; import me.rockyhawk.commandpanels.classresources.placeholders.CreateText;
@ -147,13 +150,20 @@ public class CommandPanels extends JavaPlugin{
new Metrics(this); new Metrics(this);
Objects.requireNonNull(this.getCommand("commandpanel")).setExecutor(new Commandpanel(this)); Objects.requireNonNull(this.getCommand("commandpanel")).setExecutor(new Commandpanel(this));
Objects.requireNonNull(this.getCommand("commandpanel")).setTabCompleter(new CpTabComplete(this)); Objects.requireNonNull(this.getCommand("commandpanel")).setTabCompleter(new CpTabComplete(this));
Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setTabCompleter(new TabCompleteGenerate(this)); Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setTabCompleter(new TabCompleteGenerate(this));
Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setExecutor(new Commandpanelsgenerate(this)); Objects.requireNonNull(this.getCommand("commandpanelgenerate")).setExecutor(new Commandpanelsgenerate(this));
Objects.requireNonNull(this.getCommand("commandpaneldata")).setTabCompleter(new DataTabComplete(this));
Objects.requireNonNull(this.getCommand("commandpaneldata")).setExecutor(new Commandpanelsdata(this));
Objects.requireNonNull(this.getCommand("commandpanelimport")).setExecutor(new CommandPanelImport(this));
Objects.requireNonNull(this.getCommand("commandpanelimport")).setTabCompleter(new ImportTabComplete(this));
Objects.requireNonNull(this.getCommand("commandpanelreload")).setExecutor(new Commandpanelsreload(this)); Objects.requireNonNull(this.getCommand("commandpanelreload")).setExecutor(new Commandpanelsreload(this));
Objects.requireNonNull(this.getCommand("commandpaneldebug")).setExecutor(new Commandpanelsdebug(this)); Objects.requireNonNull(this.getCommand("commandpaneldebug")).setExecutor(new Commandpanelsdebug(this));
Objects.requireNonNull(this.getCommand("commandpanelversion")).setExecutor(new Commandpanelversion(this)); Objects.requireNonNull(this.getCommand("commandpanelversion")).setExecutor(new Commandpanelversion(this));
Objects.requireNonNull(this.getCommand("commandpanellist")).setExecutor(new Commandpanelslist(this)); Objects.requireNonNull(this.getCommand("commandpanellist")).setExecutor(new Commandpanelslist(this));
Objects.requireNonNull(this.getCommand("commandpanelimport")).setExecutor(new CommandPanelImport(this));
this.getServer().getPluginManager().registerEvents(new Utils(this), this); this.getServer().getPluginManager().registerEvents(new Utils(this), this);
this.getServer().getPluginManager().registerEvents(updater, this); this.getServer().getPluginManager().registerEvents(updater, this);
this.getServer().getPluginManager().registerEvents(inventorySaver, this); this.getServer().getPluginManager().registerEvents(inventorySaver, this);
@ -163,6 +173,11 @@ public class CommandPanels extends JavaPlugin{
this.getServer().getPluginManager().registerEvents(new ItemFallManager(this), this); this.getServer().getPluginManager().registerEvents(new ItemFallManager(this), this);
this.getServer().getPluginManager().registerEvents(new OpenOnJoin(this), this); this.getServer().getPluginManager().registerEvents(new OpenOnJoin(this), this);
//load in PlaceholderAPI Expansion
if (this.getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
new CpPlaceholderExpansion(this).register();
}
//load in all built in command tags //load in all built in command tags
commandTags.registerBuiltInTags(); commandTags.registerBuiltInTags();
@ -432,12 +447,12 @@ public class CommandPanels extends JavaPlugin{
if (p.hasPermission("commandpanel.import")) { if (p.hasPermission("commandpanel.import")) {
p.sendMessage(ChatColor.GOLD + "/cpi [file name] [URL] " + ChatColor.WHITE + "Downloads a panel from a raw link online."); p.sendMessage(ChatColor.GOLD + "/cpi [file name] [URL] " + ChatColor.WHITE + "Downloads a panel from a raw link online.");
} }
if (p.hasPermission("commandpanel.edit")) {
p.sendMessage(ChatColor.GOLD + "/cpe [panel] " + ChatColor.WHITE + "Edit a panel with the Panel Editor.");
}
if (p.hasPermission("commandpanel.list")) { if (p.hasPermission("commandpanel.list")) {
p.sendMessage(ChatColor.GOLD + "/cpl " + ChatColor.WHITE + "Lists the currently loaded panels."); p.sendMessage(ChatColor.GOLD + "/cpl " + ChatColor.WHITE + "Lists the currently loaded panels.");
} }
if (p.hasPermission("commandpanel.data")) {
p.sendMessage(ChatColor.GOLD + "/cpdata " + ChatColor.WHITE + "Change panel data for a user.");
}
if (p.hasPermission("commandpanel.debug")) { if (p.hasPermission("commandpanel.debug")) {
p.sendMessage(ChatColor.GOLD + "/cpd " + ChatColor.WHITE + "Enable and Disable debug mode globally."); p.sendMessage(ChatColor.GOLD + "/cpd " + ChatColor.WHITE + "Enable and Disable debug mode globally.");
} }
@ -450,6 +465,9 @@ public class CommandPanels extends JavaPlugin{
if (p.hasPermission("commandpanel.block.list")) { if (p.hasPermission("commandpanel.block.list")) {
p.sendMessage(ChatColor.GOLD + "/cpb list " + ChatColor.WHITE + "List blocks that will open panels."); p.sendMessage(ChatColor.GOLD + "/cpb list " + ChatColor.WHITE + "List blocks that will open panels.");
} }
if (p.hasPermission("commandpanel.edit")) {
p.sendMessage(ChatColor.GOLD + "/cpe [panel] " + ChatColor.WHITE + "Edit a panel with the Panel Editor.");
}
} }
public final Map<String, Color> colourCodes = new HashMap<String, Color>() {{ public final Map<String, Color> colourCodes = new HashMap<String, Color>() {{

View File

@ -43,6 +43,7 @@ public class Utils implements Listener {
if(e.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY){ if(e.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY){
e.setCancelled(true); e.setCancelled(true);
return;
} }
if(e.getSlotType() == InventoryType.SlotType.OUTSIDE){ if(e.getSlotType() == InventoryType.SlotType.OUTSIDE){

View File

@ -4,7 +4,6 @@ import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.classresources.placeholders.PanelPlaceholders; import me.rockyhawk.commandpanels.classresources.placeholders.PanelPlaceholders;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType; import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -3,7 +3,6 @@ package me.rockyhawk.commandpanels.classresources;
import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel; import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent; import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType; import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -14,7 +13,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;
import java.util.List;
import java.util.Objects; import java.util.Objects;
public class ExecuteOpenVoids { public class ExecuteOpenVoids {
@ -25,6 +23,10 @@ public class ExecuteOpenVoids {
//this is the main method to open a panel //this is the main method to open a panel
public void openCommandPanel(CommandSender sender, Player p, Panel panel, PanelPosition position, boolean openForOtherUser){ public void openCommandPanel(CommandSender sender, Player p, Panel panel, PanelPosition position, boolean openForOtherUser){
if(p == null){
sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Player not found."));
return;
}
if(p.isSleeping()){ if(p.isSleeping()){
//avoid plugin glitches when sleeping //avoid plugin glitches when sleeping
return; return;

View File

@ -68,8 +68,9 @@ public class Placeholders {
} }
} }
//this requires the placeholder to already be identified
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private String cpPlaceholders(Panel panel, PanelPosition position, Player p, String identifier){ public String cpPlaceholders(Panel panel, PanelPosition position, Player p, String identifier){
//replace nodes with PlaceHolders //replace nodes with PlaceHolders
switch(identifier){ switch(identifier){

View File

@ -0,0 +1,47 @@
package me.rockyhawk.commandpanels.classresources.placeholders.expansion;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class CpPlaceholderExpansion extends PlaceholderExpansion {
private final CommandPanels plugin;
public CpPlaceholderExpansion(CommandPanels plugin) {
this.plugin = plugin;
}
@Override
public String getAuthor() {
return "RockyHawk";
}
@Override
public String getIdentifier() {
return "commandpanels";
}
@Override
public String getVersion() {
return "1.0.0";
}
@Override
public boolean persist() {
return true; // This is required or else PlaceholderAPI will unregister the Expansion on reload
}
/*
external use only, not to be used for example inside a panel
usage: %commandpanels_<placeholder>%
so for example %cp-data-test% instead you would do %commandpanels_data-test%
*/
@Override
public String onRequest(OfflinePlayer player, @NotNull String identifier) {
return plugin.placeholders.cpPlaceholders(null, PanelPosition.Top, (Player)player, identifier);
}
}

View File

@ -39,7 +39,7 @@ public class Commandpanel implements CommandExecutor {
boolean disableCommand = false; boolean disableCommand = false;
if(panel.getConfig().contains("panelType")) { if(panel.getConfig().contains("panelType")) {
if (panel.getConfig().getStringList("panelType").contains("nocommand")) { if (panel.getConfig().getStringList("panelType").contains("nocommand")) {
//do not allow command with noCommand //do not allow command with noCommand, console is an exception
disableCommand = true; disableCommand = true;
} }
} }
@ -49,9 +49,7 @@ public class Commandpanel implements CommandExecutor {
//do console command command //do console command command
if(args.length == 2){ if(args.length == 2){
if(!args[1].equals("item")){ if(!args[1].equals("item")){
if(!disableCommand) {
plugin.openVoids.openCommandPanel(sender, plugin.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top, true); plugin.openVoids.openCommandPanel(sender, plugin.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top, true);
}
}else{ }else{
sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Usage: /cp <panel> [item] [player]")); sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Usage: /cp <panel> [item] [player]"));
} }

View File

@ -0,0 +1,71 @@
package me.rockyhawk.commandpanels.commands;
import me.rockyhawk.commandpanels.CommandPanels;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
public class Commandpanelsdata implements CommandExecutor {
CommandPanels plugin;
public Commandpanelsdata(CommandPanels pl) { this.plugin = pl; }
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender.hasPermission("commandpanel.data")) {
if(args.length == 2){
//for the clear command
if(args[0].equals("clear")){
plugin.panelData.clearData(plugin.panelData.getOffline(args[1]));
sender.sendMessage(plugin.tex.colour(plugin.tag
+ ChatColor.GREEN + "Cleared all data for "
+ ChatColor.WHITE + args[1]));
return true;
}
}else if (args.length == 3){
//for the remove command
if(args[0].equals("remove")) {
plugin.panelData.delUserData(plugin.panelData.getOffline(args[1]), args[2]);
sender.sendMessage(plugin.tex.colour(plugin.tag
+ ChatColor.GREEN + "Removed "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " from "
+ ChatColor.WHITE + args[1]));
return true;
}else if(args[0].equals("get")){
//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])));
return true;
}
}else if (args.length == 4){
if(args[0].equals("set")){
//for set command
plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2],args[3],true);
sender.sendMessage(plugin.tex.colour(plugin.tag
+ ChatColor.GREEN + "Set "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " to "
+ ChatColor.WHITE + args[3]));
return true;
}else{
//for add command
plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2],args[3],false);
sender.sendMessage(plugin.tex.colour(plugin.tag
+ ChatColor.GREEN + "Set "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " to "
+ ChatColor.WHITE + args[3])
+ ChatColor.GREEN + " if it did not exist already");
return true;
}
}
sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Usage: /cpdata <set:add:get:remove:clear> <player> <data> [value]"));
}else{
sender.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.perms")));
}
return true;
}
}

View File

@ -14,7 +14,6 @@ public class Commandpanelsdebug implements CommandExecutor {
@EventHandler @EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("cpd") || label.equalsIgnoreCase("commandpaneldebug") || label.equalsIgnoreCase("cpaneld")) {
if (sender.hasPermission("commandpanel.debug")) { if (sender.hasPermission("commandpanel.debug")) {
if (args.length == 0) { if (args.length == 0) {
//command /cpd //command /cpd
@ -40,7 +39,4 @@ public class Commandpanelsdebug implements CommandExecutor {
} }
return true; return true;
} }
sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.RED + "Usage: /cpd"));
return true;
}
} }

View File

@ -286,11 +286,20 @@ public class CommandTags {
} }
} }
case "xp-paywall=": { case "xp-paywall=": {
//if player uses xp-paywall= [price] //if player uses xp-paywall= <price> <levels:points>
try { try {
int balance = p.getLevel(); int balance;
if(command.split("\\s")[2].startsWith("level")){
balance = p.getLevel();
}else{
balance = getPlayerExp(p);
}
if (balance >= Integer.parseInt(command.split("\\s")[1])) { if (balance >= Integer.parseInt(command.split("\\s")[1])) {
if(command.split("\\s")[2].startsWith("level")){
p.setLevel(p.getLevel() - Integer.parseInt(command.split("\\s")[1])); p.setLevel(p.getLevel() - Integer.parseInt(command.split("\\s")[1]));
}else{
removePlayerExp(p,Integer.parseInt(command.split("\\s")[1]));
}
//if the message is empty don't send //if the message is empty don't send
plugin.tex.sendString(p,Objects.requireNonNull(plugin.config.getString("purchase.xp.success")).replaceAll("%cp-args%", command.split("\\s")[1])); plugin.tex.sendString(p,Objects.requireNonNull(plugin.config.getString("purchase.xp.success")).replaceAll("%cp-args%", command.split("\\s")[1]));
return PaywallOutput.Passed; return PaywallOutput.Passed;
@ -328,4 +337,58 @@ public class CommandTags {
} }
return PaywallOutput.NotApplicable; return PaywallOutput.NotApplicable;
} }
//Experience math is a bit doggy doo doo so these will help to calculate values
// Calculate total experience up to a level
private int getExpAtLevel(int level){
if(level <= 16){
return (int) (Math.pow(level,2) + 6*level);
} else if(level <= 31){
return (int) (2.5*Math.pow(level,2) - 40.5*level + 360.0);
} else {
return (int) (4.5*Math.pow(level,2) - 162.5*level + 2220.0);
}
}
// Calculate amount of EXP needed to level up
private int getExpToLevelUp(int level){
if(level <= 15){
return 2*level+7;
} else if(level <= 30){
return 5*level-38;
} else {
return 9*level-158;
}
}
// Calculate player's current EXP amount
private int getPlayerExp(Player player){
int exp = 0;
int level = player.getLevel();
// Get the amount of XP in past levels
exp += getExpAtLevel(level);
// Get amount of XP towards next level
exp += Math.round(getExpToLevelUp(level) * player.getExp());
return exp;
}
// Take EXP
private int removePlayerExp(Player player, int exp){
// Get player's current exp
int currentExp = getPlayerExp(player);
// Reset player's current exp to 0
player.setExp(0);
player.setLevel(0);
// Give the player their exp back, with the difference
int newExp = currentExp - exp;
player.giveExp(newExp);
// Return the player's new exp amount
return newExp;
}
} }

View File

@ -2,12 +2,9 @@ package me.rockyhawk.commandpanels.commandtags.tags.other;
import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent; import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import java.util.UUID;
public class DataTags implements Listener { public class DataTags implements Listener {
CommandPanels plugin; CommandPanels plugin;
public DataTags(CommandPanels pl) { public DataTags(CommandPanels pl) {
@ -19,7 +16,7 @@ public class DataTags implements Listener {
if(e.name.equalsIgnoreCase("set-data=")){ if(e.name.equalsIgnoreCase("set-data=")){
e.commandTagUsed(); e.commandTagUsed();
if(e.args.length == 3){ if(e.args.length == 3){
plugin.panelData.setUserData(getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true); plugin.panelData.setUserData(plugin.panelData.getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
return; return;
} }
//this will overwrite data. set-data= [data point] [data value] [optional player] //this will overwrite data. set-data= [data point] [data value] [optional player]
@ -29,7 +26,7 @@ public class DataTags implements Listener {
if(e.name.equalsIgnoreCase("add-data=")){ if(e.name.equalsIgnoreCase("add-data=")){
e.commandTagUsed(); e.commandTagUsed();
if(e.args.length == 3){ if(e.args.length == 3){
plugin.panelData.setUserData(getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false); plugin.panelData.setUserData(plugin.panelData.getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
return; return;
} }
//this will not overwrite existing data. add-data= [data point] [data value] [optional player] //this will not overwrite existing data. add-data= [data point] [data value] [optional player]
@ -39,7 +36,7 @@ public class DataTags implements Listener {
if(e.name.equalsIgnoreCase("math-data=")){ if(e.name.equalsIgnoreCase("math-data=")){
e.commandTagUsed(); e.commandTagUsed();
if(e.args.length == 3){ if(e.args.length == 3){
plugin.panelData.doDataMath(getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1])); plugin.panelData.doDataMath(plugin.panelData.getOffline(e.args[2]),e.args[0],plugin.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
return; return;
} }
//only works if data is number, goes math-data= [data point] [operator:number] [optional player] eg, math-data= -1 OR /3 //only works if data is number, goes math-data= [data point] [operator:number] [optional player] eg, math-data= -1 OR /3
@ -55,17 +52,11 @@ public class DataTags implements Listener {
if(e.name.equalsIgnoreCase("del-data=")){ if(e.name.equalsIgnoreCase("del-data=")){
e.commandTagUsed(); e.commandTagUsed();
if(e.args.length == 3){ if(e.args.length == 3){
plugin.panelData.delUserData(getOffline(e.args[1]),e.args[0]); plugin.panelData.delUserData(plugin.panelData.getOffline(e.args[1]),e.args[0]);
return; return;
} }
//this will remove data. del-data= [data point] [optional player] //this will remove data. del-data= [data point] [optional player]
plugin.panelData.delUserData(e.p.getUniqueId(),e.args[0]); plugin.panelData.delUserData(e.p.getUniqueId(),e.args[0]);
} }
} }
@SuppressWarnings("deprecation")
private UUID getOffline(String playerName){
//making this a separate function as it is long and deprecated
return Bukkit.getOfflinePlayer(playerName).getUniqueId();
}
} }

View File

@ -29,11 +29,10 @@ public class CpTabComplete implements TabCompleter {
if (sender.hasPermission("commandpanel.panel." + panel.getConfig().getString("perm"))) { if (sender.hasPermission("commandpanel.panel." + panel.getConfig().getString("perm"))) {
if(panel.getConfig().contains("panelType")) { if(panel.getConfig().contains("panelType")) {
if (panel.getConfig().getStringList("panelType").contains("nocommand")) { if (panel.getConfig().getStringList("panelType").contains("nocommand")) {
//do not allow command with noCommand //do not allow command with nocommand
continue; continue;
} }
} }
if(plugin.panelPerms.isPanelWorldEnabled(p,panel.getConfig())){ if(plugin.panelPerms.isPanelWorldEnabled(p,panel.getConfig())){
apanels.add(panel.getName()); apanels.add(panel.getName());
} }

View File

@ -0,0 +1,46 @@
package me.rockyhawk.commandpanels.completetabs;
import me.rockyhawk.commandpanels.CommandPanels;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
public class DataTabComplete implements TabCompleter {
CommandPanels plugin;
public DataTabComplete(CommandPanels pl) { this.plugin = pl; }
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender.hasPermission("commandpanel.data")) {
ArrayList<String> output = new ArrayList<>();
if(args.length == 1){
output.add("set");
output.add("add");
output.add("get");
output.add("remove");
output.add("clear");
}else if(args.length == 2){
for (Player p : Bukkit.getOnlinePlayers()) {
if (!p.getName().startsWith(args[1])) {
continue;
}
output.add(p.getName());
}
}else if(args.length == 3){
//the clear function is here as it is the only subcommand with 3 args
try {
return new ArrayList<>(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(args[1])).getKeys(false));
} catch (Exception ex) {
return null;
}
}
return output;
}
return null;
}
}

View File

@ -0,0 +1,29 @@
package me.rockyhawk.commandpanels.completetabs;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import java.util.ArrayList;
import java.util.List;
public class ImportTabComplete implements TabCompleter {
CommandPanels plugin;
public ImportTabComplete(CommandPanels pl) { this.plugin = pl; }
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender.hasPermission("commandpanel.import")) {
ArrayList<String> output = new ArrayList<>();
if(args.length == 1){
for(Panel panel : plugin.panelList){
output.add(panel.getFile().getName());
}
}
return output;
}
return null;
}
}

View File

@ -1,6 +1,7 @@
package me.rockyhawk.commandpanels.datamanager; package me.rockyhawk.commandpanels.datamanager;
import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.CommandPanels;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@ -104,4 +105,10 @@ public class PanelDataLoader {
dataConfig.set("playerData." + playerUUID + "." + dataPoint, output.toPlainString()); 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();
}
} }

View File

@ -1,39 +1,29 @@
package me.rockyhawk.commandpanels.playerinventoryhandler; package me.rockyhawk.commandpanels.playerinventoryhandler;
import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelClosedEvent;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent; import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.PotionMeta;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
public class InventorySaver implements Listener { public class InventorySaver implements Listener {
public YamlConfiguration inventoryConfig;
CommandPanels plugin; CommandPanels plugin;
public InventorySaver(CommandPanels pl) { public InventorySaver(CommandPanels pl) {
this.plugin = pl; this.plugin = pl;
} }
public YamlConfiguration inventoryConfig;
public void saveInventoryFile(){ public void saveInventoryFile(){
try { try {
inventoryConfig.save(plugin.getDataFolder() + File.separator + "inventories.yml"); inventoryConfig.save(plugin.getDataFolder() + File.separator + "inventories.yml");

View File

@ -15,16 +15,16 @@ import java.util.Objects;
import java.util.logging.Level; import java.util.logging.Level;
public class Updater implements Listener { public class Updater implements Listener {
CommandPanels plugin;
public Updater(CommandPanels pl) {
this.plugin = pl;
}
//if this is set to something, it will download that version on restart //if this is set to something, it will download that version on restart
//can be a version number, 'latest' or 'cancel' //can be a version number, 'latest' or 'cancel'
public String downloadVersionManually = null; public String downloadVersionManually = null;
public String catchedLatestVersion = "null"; public String catchedLatestVersion = "null";
CommandPanels plugin;
public Updater(CommandPanels pl) {
this.plugin = pl;
}
//send update message when the player joins the game with the permission //send update message when the player joins the game with the permission
@EventHandler @EventHandler
public void joinGame(PlayerJoinEvent e){ public void joinGame(PlayerJoinEvent e){