Begin cleanup and class organisation

This commit is contained in:
rockyhawk64 2025-04-24 22:49:21 +10:00
parent 82ebef2c46
commit 6c79f205a5
114 changed files with 1166 additions and 1153 deletions

View File

@ -2,7 +2,7 @@ package me.rockyhawk.commandpanels;
import me.rockyhawk.commandpanels.api.CommandPanelsAPI;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.*;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bstats.bukkit.Metrics;
import org.bstats.charts.SingleLineChart;
import org.bukkit.Bukkit;

View File

@ -1,59 +1,57 @@
package me.rockyhawk.commandpanels;
import me.rockyhawk.commandpanels.classresources.ExecuteOpenVoids;
import me.rockyhawk.commandpanels.classresources.HasSections;
import me.rockyhawk.commandpanels.classresources.ItemCreation;
import me.rockyhawk.commandpanels.classresources.MiniMessageUtils;
import me.rockyhawk.commandpanels.classresources.customheads.GetCustomHeads;
import me.rockyhawk.commandpanels.classresources.item_fall.ItemFallManager;
import me.rockyhawk.commandpanels.classresources.placeholders.CreateText;
import me.rockyhawk.commandpanels.classresources.placeholders.HexColours;
import me.rockyhawk.commandpanels.classresources.placeholders.Placeholders;
import me.rockyhawk.commandpanels.classresources.placeholders.expansion.PlaceholderAPI;
import me.rockyhawk.commandpanels.interaction.click.InteractionHandler;
import me.rockyhawk.commandpanels.manager.open.OpenPanel;
import me.rockyhawk.commandpanels.items.HasSections;
import me.rockyhawk.commandpanels.items.ItemCreation;
import me.rockyhawk.commandpanels.formatter.MiniMessage;
import me.rockyhawk.commandpanels.items.customheads.GetCustomHeads;
import me.rockyhawk.commandpanels.items.dropitem.DroppedItemHandler;
import me.rockyhawk.commandpanels.formatter.CreateText;
import me.rockyhawk.commandpanels.formatter.HexColours;
import me.rockyhawk.commandpanels.formatter.placeholders.Placeholders;
import me.rockyhawk.commandpanels.formatter.placeholders.PlaceholderAPI;
import me.rockyhawk.commandpanels.commands.*;
import me.rockyhawk.commandpanels.commandtags.CommandRunner;
import me.rockyhawk.commandpanels.completetabs.PanelTabComplete;
import me.rockyhawk.commandpanels.completetabs.DataTabComplete;
import me.rockyhawk.commandpanels.completetabs.ImportTabComplete;
import me.rockyhawk.commandpanels.completetabs.UpdateTabComplete;
import me.rockyhawk.commandpanels.interaction.commands.CommandRunner;
import me.rockyhawk.commandpanels.commands.tabcomplete.PanelTabComplete;
import me.rockyhawk.commandpanels.commands.tabcomplete.DataTabComplete;
import me.rockyhawk.commandpanels.commands.tabcomplete.ImportTabComplete;
import me.rockyhawk.commandpanels.commands.tabcomplete.UpdateTabComplete;
import me.rockyhawk.commandpanels.configuration.ConfigHandler;
import me.rockyhawk.commandpanels.customcommands.PanelCommands;
import me.rockyhawk.commandpanels.datamanager.DebugManager;
import me.rockyhawk.commandpanels.datamanager.PanelDataLoader;
import me.rockyhawk.commandpanels.datamanager.PanelDataPlayerManager;
import me.rockyhawk.commandpanels.commands.opencommands.OpenCommands;
import me.rockyhawk.commandpanels.configuration.DebugManager;
import me.rockyhawk.commandpanels.formatter.data.DataLoader;
import me.rockyhawk.commandpanels.formatter.data.DataManager;
import me.rockyhawk.commandpanels.deluxecompatibility.CompatibilityConverter;
import me.rockyhawk.commandpanels.editor.CommandPanelsEditor;
import me.rockyhawk.commandpanels.editor.EditorTabComplete;
import me.rockyhawk.commandpanels.editor.PanelDownloader;
import me.rockyhawk.commandpanels.floodgate.OpenFloodgateGUI;
import me.rockyhawk.commandpanels.generatepanels.GenerateCommand;
import me.rockyhawk.commandpanels.generatepanels.GenUtils;
import me.rockyhawk.commandpanels.generatepanels.TabCompleteGenerate;
import me.rockyhawk.commandpanels.interactives.PanelRefresher;
import me.rockyhawk.commandpanels.interactives.OpenOnJoin;
import me.rockyhawk.commandpanels.interactives.OutsideClickEvent;
import me.rockyhawk.commandpanels.interactives.input.PlayerInputUtils;
import me.rockyhawk.commandpanels.ioclasses.legacy.LegacyVersion;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.ioclasses.legacy.PlayerHeads;
import me.rockyhawk.commandpanels.ioclasses.nbt.NBTManager;
import me.rockyhawk.commandpanels.ioclasses.potions.ClassicPotionData;
import me.rockyhawk.commandpanels.ioclasses.potions.LegacyPotionData;
import me.rockyhawk.commandpanels.openpanelsmanager.OpenGUI;
import me.rockyhawk.commandpanels.openpanelsmanager.OpenPanelsLoader;
import me.rockyhawk.commandpanels.openpanelsmanager.WorldPermissions;
import me.rockyhawk.commandpanels.openpanelsmanager.UtilsPanelsLoader;
import me.rockyhawk.commandpanels.commands.editor.CommandPanelsEditor;
import me.rockyhawk.commandpanels.commands.editor.EditorTabComplete;
import me.rockyhawk.commandpanels.commands.editor.PanelDownloader;
import me.rockyhawk.commandpanels.builder.floodgate.OpenFloodgateGUI;
import me.rockyhawk.commandpanels.generate.GenerateCommand;
import me.rockyhawk.commandpanels.generate.GenUtils;
import me.rockyhawk.commandpanels.generate.GenTabComplete;
import me.rockyhawk.commandpanels.manager.refresh.PanelRefresher;
import me.rockyhawk.commandpanels.manager.OpenEvent;
import me.rockyhawk.commandpanels.interaction.click.OutsideHandler;
import me.rockyhawk.commandpanels.interaction.input.PlayerInputUtils;
import me.rockyhawk.commandpanels.versions.VersionManager;
import me.rockyhawk.commandpanels.nbt.NBTManager;
import me.rockyhawk.commandpanels.items.potions.ClassicPotionData;
import me.rockyhawk.commandpanels.items.potions.LegacyPotionData;
import me.rockyhawk.commandpanels.builder.OpenGUI;
import me.rockyhawk.commandpanels.manager.session.SessionHandler;
import me.rockyhawk.commandpanels.manager.session.SessionUtils;
import me.rockyhawk.commandpanels.openwithitem.HotbarItemLoader;
import me.rockyhawk.commandpanels.openwithitem.SwapItemEvent;
import me.rockyhawk.commandpanels.openwithitem.UtilsChestSortEvent;
import me.rockyhawk.commandpanels.openwithitem.UtilsOpenWithItem;
import me.rockyhawk.commandpanels.panelblocks.BlocksTabComplete;
import me.rockyhawk.commandpanels.panelblocks.BlocksCommand;
import me.rockyhawk.commandpanels.panelblocks.PanelBlockOnClick;
import me.rockyhawk.commandpanels.playerinventoryhandler.InventorySaver;
import me.rockyhawk.commandpanels.playerinventoryhandler.ItemStackSerializer;
import me.rockyhawk.commandpanels.playerinventoryhandler.pickupevent.EntityPickupEvent;
import me.rockyhawk.commandpanels.playerinventoryhandler.pickupevent.LegacyPlayerEvent;
import me.rockyhawk.commandpanels.openwithitem.events.SwapItemEvent;
import me.rockyhawk.commandpanels.openwithitem.events.UtilsChestSortEvent;
import me.rockyhawk.commandpanels.openwithitem.events.HotbarEvents;
import me.rockyhawk.commandpanels.interaction.blocks.BlockTabComplete;
import me.rockyhawk.commandpanels.interaction.blocks.BlockCommand;
import me.rockyhawk.commandpanels.interaction.blocks.BlockEvents;
import me.rockyhawk.commandpanels.inventory.InventorySaver;
import me.rockyhawk.commandpanels.inventory.ItemStackSerializer;
import me.rockyhawk.commandpanels.inventory.pickupevent.EntityPickupEvent;
import me.rockyhawk.commandpanels.inventory.pickupevent.LegacyPlayerEvent;
import me.rockyhawk.commandpanels.updater.Updater;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
@ -69,32 +67,31 @@ public class Context {
public PanelDownloader downloader;
public ConfigHandler configHandler;
public Economy econ;
public LoadReloadCommand reloader;
public ReloadCommand reloader;
public CommandRunner commandRunner;
public PanelDataLoader panelData;
public PanelDataPlayerManager panelDataPlayers;
public DataLoader panelData;
public DataManager panelDataPlayers;
public OpenCommands openCommands;
public Placeholders placeholders;
public DebugManager debug;
public CreateText tex;
public CreateText text;
public HexColours hex;
public MiniMessageUtils miniMessage;
public MiniMessage miniMessage;
public ExecuteOpenVoids openVoids;
public OpenPanel openPanel;
public ItemCreation itemCreate;
public HasSections has;
public GetCustomHeads customHeads;
public Updater updater;
public PlayerHeads getHeads;
public ClassicPotionData classicPotion;
public LegacyPotionData legacyPotion;
public LegacyVersion legacy;
public VersionManager version;
public OpenPanelsLoader openPanels;
public SessionHandler openPanels;
public OpenGUI createGUI;
public WorldPermissions worldPerms;
public HotbarItemLoader hotbar;
public NBTManager nbt;
@ -113,37 +110,36 @@ public class Context {
private void init(){
//get plugin classes
downloader = new PanelDownloader(this);
panelData = new PanelDataLoader(this);
panelData = new DataLoader(this);
inventorySaver = new InventorySaver(this);
configHandler = new ConfigHandler(this);
version = new VersionManager();
econ = null;
deluxeConverter = new CompatibilityConverter(this);
reloader = new LoadReloadCommand(this);
reloader = new ReloadCommand(this);
commandRunner = new CommandRunner(this);
panelDataPlayers = new PanelDataPlayerManager();
panelDataPlayers = new DataManager();
placeholders = new Placeholders(this);
debug = new DebugManager();
tex = new CreateText(this);
text = new CreateText(this);
hex = new HexColours(this);
miniMessage = null;
openVoids = new ExecuteOpenVoids(this);
openPanel = new OpenPanel(this);
itemCreate = new ItemCreation(this);
has = new HasSections(this);
customHeads = new GetCustomHeads(this);
updater = new Updater(this);
getHeads = new PlayerHeads(this);
classicPotion = new ClassicPotionData();
legacyPotion = new LegacyPotionData();
legacy = new LegacyVersion(this);
openPanels = new OpenPanelsLoader(this);
openCommands = new OpenCommands(this);
openPanels = new SessionHandler(this);
createGUI = new OpenGUI(this);
worldPerms = new WorldPermissions();
hotbar = new HotbarItemLoader(this);
nbt = new NBTManager(this);
@ -151,7 +147,7 @@ public class Context {
itemSerializer = new ItemStackSerializer(this);
inputUtils = new PlayerInputUtils(this);
tag = tex.colour(configHandler.config.getString("config.format.tag"));
tag = text.colour(configHandler.config.getString("config.format.tag"));
//setup class files
setupEconomy();
@ -159,7 +155,7 @@ public class Context {
plugin.getCommand("commandpanel").setExecutor(new PanelCommand(this));
plugin.getCommand("commandpanel").setTabCompleter(new PanelTabComplete(this));
plugin.getCommand("commandpanelgenerate").setTabCompleter(new TabCompleteGenerate());
plugin.getCommand("commandpanelgenerate").setTabCompleter(new GenTabComplete());
plugin.getCommand("commandpanelgenerate").setExecutor(new GenerateCommand(this));
plugin.getCommand("commandpaneldata").setTabCompleter(new DataTabComplete(this));
@ -179,7 +175,7 @@ public class Context {
plugin.getCommand("commandpanelversion").setExecutor(new VersionCommand(this));
plugin.getCommand("commandpanellist").setExecutor(new ListCommand(this));
if(this.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_12)){
if(this.version.isAtLeast("1.12")){
Bukkit.getServer().getPluginManager().registerEvents(new EntityPickupEvent(this), plugin);
}else{
Bukkit.getServer().getPluginManager().registerEvents(new LegacyPlayerEvent(this), plugin);
@ -191,20 +187,20 @@ public class Context {
Class.forName("net.kyori.adventure.text.format.TextDecoration");
Class.forName("net.kyori.adventure.text.minimessage.MiniMessage");
Class.forName("net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer");
miniMessage = new MiniMessageUtils(this);
miniMessage = new MiniMessage(this);
} catch (ClassNotFoundException ignore) {
//do not initialise miniMessage
}
Bukkit.getServer().getPluginManager().registerEvents(new Utils(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new InteractionHandler(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(inventorySaver, plugin);
Bukkit.getServer().getPluginManager().registerEvents(inputUtils, plugin);
Bukkit.getServer().getPluginManager().registerEvents(panelDataPlayers, plugin);
Bukkit.getServer().getPluginManager().registerEvents(new UtilsPanelsLoader(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new SessionUtils(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(generator, plugin);
Bukkit.getServer().getPluginManager().registerEvents(new ItemFallManager(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new OpenOnJoin(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new OutsideClickEvent(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new DroppedItemHandler(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new OpenEvent(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new OutsideHandler(this), plugin);
if (Bukkit.getServer().getPluginManager().isPluginEnabled("floodgate")) {
Bukkit.getServer().getPluginManager().registerEvents(new OpenFloodgateGUI(this), plugin);
}
@ -218,15 +214,15 @@ public class Context {
Bukkit.getServer().getPluginManager().registerEvents(new PanelRefresher(this), plugin);
}
if(configHandler.isTrue("config.custom-commands")){
Bukkit.getServer().getPluginManager().registerEvents(new PanelCommands(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(openCommands, plugin);
}
if(configHandler.isTrue("config.hotbar-items")){
Bukkit.getServer().getPluginManager().registerEvents(new UtilsOpenWithItem(this), plugin);
Bukkit.getServer().getPluginManager().registerEvents(new HotbarEvents(this), plugin);
}
if(configHandler.isTrue("config.panel-blocks")){
Objects.requireNonNull(plugin.getCommand("commandpanelblock")).setExecutor(new BlocksCommand(this));
Objects.requireNonNull(plugin.getCommand("commandpanelblock")).setTabCompleter(new BlocksTabComplete(this));
Bukkit.getServer().getPluginManager().registerEvents(new PanelBlockOnClick(this), plugin);
Objects.requireNonNull(plugin.getCommand("commandpanelblock")).setExecutor(new BlockCommand(this));
Objects.requireNonNull(plugin.getCommand("commandpanelblock")).setTabCompleter(new BlockTabComplete(this));
Bukkit.getServer().getPluginManager().registerEvents(new BlockEvents(this), plugin);
}
if (!Bukkit.getVersion().contains("1.8")) {
Bukkit.getServer().getPluginManager().registerEvents(new SwapItemEvent(this), plugin);

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.api;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.api;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.classresources.placeholders.PanelPlaceholders;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.formatter.placeholders.PanelPlaceholders;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@ -122,7 +122,7 @@ public class Panel{
//open the panel for the player
public void open(Player p, PanelPosition position){
isOpen = true;
plugin.ctx.openVoids.openCommandPanel(p, p, this, position, false);
plugin.ctx.openPanel.open(p, p, this, position);
}
//create blank clone

View File

@ -1,6 +1,6 @@
package me.rockyhawk.commandpanels.api;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
public class PanelsInterface {

View File

@ -1,8 +1,11 @@
package me.rockyhawk.commandpanels.openpanelsmanager;
package me.rockyhawk.commandpanels.builder;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.builder.storagecontents.GetStorageContents;
import me.rockyhawk.commandpanels.builder.storagecontents.GetStorageContentsLegacy;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
@ -70,8 +73,8 @@ public class OpenGUI {
//this is for contents in the itemType section
if (pconfig.getStringList("item." + item + section + ".itemType").contains("placeable") && openType == PanelOpenType.Refresh) {
//keep item the same, openType == 0 meaning panel is refreshing
setItem(p.getOpenInventory().getItem(Integer.parseInt(ctx.tex.placeholdersNoColour(panel,position,p,item))), item, i, p, position);
takenSlots.add(Integer.parseInt(ctx.tex.placeholdersNoColour(panel,position,p,item)));
setItem(p.getOpenInventory().getItem(Integer.parseInt(ctx.text.placeholdersNoColour(panel,position,p,item))), item, i, p, position);
takenSlots.add(Integer.parseInt(ctx.text.placeholdersNoColour(panel,position,p,item)));
continue;
}
}
@ -79,7 +82,7 @@ public class OpenGUI {
try {
//place item into the GUI
setItem(s,item,i,p,position);
takenSlots.add(Integer.parseInt(ctx.tex.placeholdersNoColour(panel,position,p,item)));
takenSlots.add(Integer.parseInt(ctx.text.placeholdersNoColour(panel,position,p,item)));
//only place duplicate items in without the editor mode. These are merely visual and will not carry over commands
if(pconfig.contains("item." + item + section + ".duplicate")) {
try {
@ -120,14 +123,14 @@ public class OpenGUI {
}
} catch (ArrayIndexOutOfBoundsException ignore) {}
}
if (pconfig.contains("empty") && !ctx.tex.placeholdersNoColour(panel,position,p,pconfig.getString("empty")).equals("AIR")) {
String emptyValue = ctx.tex.placeholdersNoColour(panel,position,p,pconfig.getString("empty"));
if (pconfig.contains("empty") && !ctx.text.placeholdersNoColour(panel,position,p,pconfig.getString("empty")).equals("AIR")) {
String emptyValue = ctx.text.placeholdersNoColour(panel,position,p,pconfig.getString("empty"));
ItemStack empty;
try {
//emptyID for older versions of minecraft (might be deprecated later on)
short id = 0;
if(pconfig.contains("emptyID")){
id = Short.parseShort(ctx.tex.placeholdersNoColour(panel,position,p,pconfig.getString("emptyID")));
id = Short.parseShort(ctx.text.placeholdersNoColour(panel,position,p,pconfig.getString("emptyID")));
}
//either use custom item or just material type
if(pconfig.contains("custom-item." + emptyValue)){
@ -138,8 +141,7 @@ public class OpenGUI {
assert renamedMeta != null;
renamedMeta.setDisplayName(" ");
//If 1.21.4+ then hide box on hover of empty slot
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_22) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) && ctx.legacy.MINOR_VERSION >= 4)){
if(ctx.version.isAtLeast("1.21.4")){
try {
// Check if the setHideTooltip method exists
Method setHideTooltipMethod = ItemMeta.class.getMethod("setHideTooltip", boolean.class);
@ -182,15 +184,14 @@ public class OpenGUI {
ctx.openPanels.skipPanelClose.remove(p.getName());
} else if (openType == PanelOpenType.Refresh) {
//openType Refresh will just refresh the panel
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20) && ctx.legacy.MINOR_VERSION >= 5)){
if(ctx.version.isAtLeast("1.21.5")){
//Title refresh ability added in 1.20.5 api
if(position == PanelPosition.Top) {
p.getOpenInventory().setTitle(getTitle(p, pconfig, panel, position, animateValue));
}
}
if(position == PanelPosition.Top) {
ctx.legacy.setStorageContents(p, ctx.legacy.getStorageContents(i));
setStorageContents(p, getStorageContents(i));
}
} else if (openType == PanelOpenType.Return) {
//will return the inventory, not opening it at all
@ -211,7 +212,7 @@ public class OpenGUI {
//allows for a string to be used instead of integer, for placeholders
private void setItem(ItemStack item, String slotName, Inventory inv, Player p, PanelPosition position) throws ArrayIndexOutOfBoundsException{
int slot = Integer.parseInt(ctx.tex.placeholdersNoColour(null, position, p, slotName));
int slot = Integer.parseInt(ctx.text.placeholdersNoColour(null, position, p, slotName));
setItem(item, slot, inv, p, position);
}
private void setItem(ItemStack item, int slot, Inventory inv, Player p, PanelPosition position) throws ArrayIndexOutOfBoundsException{
@ -251,11 +252,27 @@ public class OpenGUI {
section = section + ".animate" + animateValue;
}
title = ctx.tex.placeholders(panel, position, p, pconfig.getString("custom-title" + section + ".title"));
title = ctx.text.placeholders(panel, position, p, pconfig.getString("custom-title" + section + ".title"));
}else {
//regular inventory title
title = ctx.tex.placeholders(panel, position, p, pconfig.getString("title"));
title = ctx.text.placeholders(panel, position, p, pconfig.getString("title"));
}
return title;
}
private ItemStack[] getStorageContents(Inventory inventory) {
if (ctx.version.isBelow("1.13")) {
return new GetStorageContentsLegacy().getStorageContents(inventory);
} else {
return new GetStorageContents().getStorageContents(inventory);
}
}
private void setStorageContents(Player player, ItemStack[] items) {
if (ctx.version.isBelow("1.16")) {
new GetStorageContentsLegacy().setStorageContents(player, items);
} else {
new GetStorageContents().setStorageContents(player, items);
}
}
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.floodgate;
package me.rockyhawk.commandpanels.builder.floodgate;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.events.PanelOpenedEvent;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
@ -49,8 +49,8 @@ public class OpenFloodgateGUI implements Listener {
private void createAndSendSimpleForm(PanelOpenedEvent e, FloodgatePlayer fgPlayer, ConfigurationSection fgPanel) {
//replace for multi-line support in simpleform content title
SimpleForm.Builder form = SimpleForm.builder()
.title(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), e.getPanel().getConfig().getString("title"))))
.content(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fgPanel.getString("simple")).replaceAll("\\\\n", "\n")));
.title(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), e.getPanel().getConfig().getString("title"))))
.content(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fgPanel.getString("simple")).replaceAll("\\\\n", "\n")));
List<String> buttonCommands;
try {
@ -91,12 +91,12 @@ public class OpenFloodgateGUI implements Listener {
String section = ctx.has.hasSection(panel, PanelPosition.Top, fgPanel.getConfigurationSection(key), p);
ConfigurationSection buttonConfig = fgPanel.getConfigurationSection(key + section);
String buttonContent = ctx.tex.placeholders(panel, null, p, buttonConfig.getString("text").replaceAll("\\\\n", "\n"));
String buttonContent = ctx.text.placeholders(panel, null, p, buttonConfig.getString("text").replaceAll("\\\\n", "\n"));
if (!buttonConfig.contains("icon")) {
form.button(buttonContent);
} else {
FormImage.Type type = FormImage.Type.valueOf(ctx.tex.placeholders(panel, null, p, buttonConfig.getString("icon.type")).toUpperCase());
String texture = ctx.tex.placeholders(panel, null, p, buttonConfig.getString("icon.texture"));
FormImage.Type type = FormImage.Type.valueOf(ctx.text.placeholders(panel, null, p, buttonConfig.getString("icon.type")).toUpperCase());
String texture = ctx.text.placeholders(panel, null, p, buttonConfig.getString("icon.texture"));
form.button(buttonContent, type, texture);
}
@ -107,7 +107,7 @@ public class OpenFloodgateGUI implements Listener {
private void createAndSendCustomForm(PanelOpenedEvent e, FloodgatePlayer fgPlayer, ConfigurationSection fgPanel) {
CustomForm.Builder form = CustomForm.builder()
.title(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), e.getPanel().getConfig().getString("title")));
.title(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), e.getPanel().getConfig().getString("title")));
List<String> commandsOrder = new ArrayList<>();
fgPanel.getKeys(false).forEach(key -> {
@ -126,27 +126,27 @@ public class OpenFloodgateGUI implements Listener {
}
switch (type) {
case "toggle":
form.toggle(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
Boolean.parseBoolean(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default"))));
form.toggle(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
Boolean.parseBoolean(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default"))));
commandsOrder.add(key);
break;
case "slider":
form.slider(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
Long.parseLong(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("min"))),
Long.parseLong(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("max"))),
Long.parseLong(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("step"))),
Long.parseLong(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default"))));
form.slider(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
Long.parseLong(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("min"))),
Long.parseLong(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("max"))),
Long.parseLong(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("step"))),
Long.parseLong(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default"))));
commandsOrder.add(key);
break;
case "input":
form.input(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("placeholder")),
ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default")));
form.input(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("placeholder")),
ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("default")));
commandsOrder.add(key);
break;
case "dropdown":
form.dropdown(ctx.tex.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
ctx.tex.placeholdersList(e.getPanel(), null, e.getPlayer(), fieldConfig.getStringList("options"), true));
form.dropdown(ctx.text.placeholders(e.getPanel(), null, e.getPlayer(), fieldConfig.getString("text").replaceAll("\\\\n", "\n")),
ctx.text.placeholdersList(e.getPanel(), null, e.getPlayer(), fieldConfig.getStringList("options"), true));
commandsOrder.add(key);
break;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.ioclasses.storagecontents;
package me.rockyhawk.commandpanels.builder.storagecontents;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.ioclasses.storagecontents;
package me.rockyhawk.commandpanels.builder.storagecontents;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

View File

@ -1,170 +0,0 @@
package me.rockyhawk.commandpanels.classresources;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import java.util.Objects;
public class ExecuteOpenVoids {
Context ctx;
public ExecuteOpenVoids(Context pl) {
this.ctx = pl;
}
//this is the main method to open a panel
public void openCommandPanel(CommandSender sender, Player p, Panel panel, PanelPosition position, boolean openForOtherUser){
if(p == null){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Player not found."));
return;
}
if(p.isSleeping()){
//avoid plugin glitches when sleeping
return;
}
if((ctx.debug.isEnabled(sender) || ctx.configHandler.isTrue("config.auto-update-panels")) && panel.getFile() != null){
//reload the panel if debug is enabled
panel.setConfig(YamlConfiguration.loadConfiguration(panel.getFile()));
}
if (!sender.hasPermission("commandpanel.panel." + panel.getConfig().getString("perm"))) {
if(panel.getConfig().getString("custom-messages.perms") != null) {
sender.sendMessage(ctx.tex.colour(ctx.tag + panel.getConfig().getString("custom-messages.perms")));
}else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return;
}
//if the sender has OTHER perms, or if sendOpenedMessage is false, implying it is not for another person
if(sender.hasPermission("commandpanel.other") || !openForOtherUser) {
//check for disabled worlds
if(!ctx.worldPerms.isPanelWorldEnabled(p,panel.getConfig())){
if(panel.getConfig().getString("custom-messages.perms") != null) {
sender.sendMessage(ctx.tex.colour(ctx.tag + panel.getConfig().getString("custom-messages.perms")));
}else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return;
}
if(position != PanelPosition.Top && !ctx.openPanels.hasPanelOpen(p.getName(),PanelPosition.Top)){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Cannot open a panel without a panel at the top already."));
return;
}
//close any foreign GUIs for CommandPanels
if(!ctx.openPanels.hasPanelOpen(p.getName(),PanelPosition.Top) && p.getOpenInventory().getType() != InventoryType.CRAFTING){
p.closeInventory();
}
//fire PanelOpenedEvent
PanelOpenedEvent openedEvent = new PanelOpenedEvent(p,panel,position);
Bukkit.getPluginManager().callEvent(openedEvent);
if(openedEvent.isCancelled()){
return;
}
//do these commands before the panel loads
beforeLoadCommands(panel,position,p);
try {
//create and open the GUI
ctx.createGUI.openGui(panel, p, position,PanelOpenType.Normal,0);
//execute commands once the panel opens
if (panel.getConfig().contains("commands-on-open")) {
try {
ctx.commandRunner.runCommands(panel,position,p, panel.getConfig().getStringList("commands-on-open"), null);
}catch(Exception s){
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands-on-open: " + panel.getConfig().getString("commands-on-open")));
}
}
if (panel.getConfig().contains("sound-on-open")) {
//play sound when panel is opened
if(!Objects.requireNonNull(panel.getConfig().getString("sound-on-open")).equalsIgnoreCase("off")) {
try {
String[] args = Objects.requireNonNull(panel.getConfig().getString("sound-on-open")).split(" ");
if(args.length >= 3){
//sound on open volume and pitch: sound-on-open: minecraft:villager 1.0 0.5
p.playSound(p.getLocation(), Sound.valueOf(args[0].toUpperCase()), Float.parseFloat(args[1]), Float.parseFloat(args[2]));
} else {
p.playSound(p.getLocation(), Sound.valueOf(Objects.requireNonNull(panel.getConfig().getString("sound-on-open")).toUpperCase()), 1F, 1F);
}
} catch (Exception s) {
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "sound-on-open: " + panel.getConfig().getString("sound-on-open")));
}
}
}
if(openForOtherUser) {
sender.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Panel Opened for " + p.getDisplayName()));
}
} catch (Exception r) {
ctx.debug.send(r,null, ctx);
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error")));
ctx.openPanels.closePanelForLoader(p.getName(),position);
p.closeInventory();
}
}else{
if(panel.getConfig().getString("custom-messages.perms") != null) {
sender.sendMessage(ctx.tex.colour(ctx.tag + panel.getConfig().getString("custom-messages.perms")));
}else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
}
}
//this will give a hotbar item to a player
public void giveHotbarItem(CommandSender sender, Player p, Panel panel, boolean sendGiveMessage){
if (sender.hasPermission("commandpanel.item." + panel.getConfig().getString("perm")) && panel.getConfig().contains("open-with-item")) {
//check for disabled worlds
if(!ctx.worldPerms.isPanelWorldEnabled(p,panel.getConfig())){
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
return;
}
//if the sender has OTHER perms, or if sendGiveMessage is false, implying it is not for another person
if(sender.hasPermission("commandpanel.other") || !sendGiveMessage) {
try {
if(panel.getConfig().contains("open-with-item.stationary")) {
p.getInventory().setItem(Integer.parseInt(Objects.requireNonNull(panel.getConfig().getString("open-with-item.stationary"))), panel.getHotbarItem(p));
}else{
p.getInventory().addItem(panel.getHotbarItem(p));
}
if(sendGiveMessage) {
sender.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Item Given to " + p.getDisplayName()));
}
} catch (Exception r) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.notitem")));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return;
}
if (!panel.getConfig().contains("open-with-item")) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.noitem")));
return;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
public void beforeLoadCommands(Panel panel,PanelPosition pos, Player p){
if (panel.getConfig().contains("pre-load-commands")) {
try {
ctx.commandRunner.runCommands(panel,pos,p, panel.getConfig().getStringList("pre-load-commands"), null);
}catch(Exception s){
ctx.debug.send(s,p, ctx);
}
}
}
}

View File

@ -1,34 +0,0 @@
package me.rockyhawk.commandpanels.classresources.customheads;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.classresources.customheads.methods.CustomHeadGameProfile;
import me.rockyhawk.commandpanels.classresources.customheads.methods.CustomHeadPlayerProfile;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import org.bukkit.inventory.ItemStack;
public class GetCustomHeads {
CustomHeadGameProfile gameProfileHeadClass;
CustomHeadPlayerProfile playerProfileHeadClass;
Context ctx;
public GetCustomHeads(Context pl) {
this.ctx = pl;
gameProfileHeadClass = new CustomHeadGameProfile(pl);
playerProfileHeadClass = new CustomHeadPlayerProfile();
}
public ItemStack getCustomHead(String base64){
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18)){
return playerProfileHeadClass.getCustomHead(base64);
}else{
return gameProfileHeadClass.getCustomHead(base64);
}
}
public ItemStack getPlayerHead(String playerName){
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21)){
return playerProfileHeadClass.getPlayerHead(playerName);
}else{
return gameProfileHeadClass.getPlayerHead(playerName);
}
}
}

View File

@ -42,7 +42,7 @@ public class DataCommand implements CommandExecutor {
} else
ctx.panelData.clearData(ctx.panelDataPlayers.getOffline(args[1]));
if (sendPlayerMessage) {
sender.sendMessage(ctx.tex.colour(ctx.tag
sender.sendMessage(ctx.text.colour(ctx.tag
+ ChatColor.GREEN + "Cleared all data for "
+ ChatColor.WHITE + (count == 0 ? args[1] : count + "" + ChatColor.GREEN + " players")));
}
@ -60,7 +60,7 @@ public class DataCommand implements CommandExecutor {
} else
ctx.panelData.delUserData(ctx.panelDataPlayers.getOffline(args[1]), args[2]);
if (sendPlayerMessage) {
sender.sendMessage(ctx.tex.colour(ctx.tag
sender.sendMessage(ctx.text.colour(ctx.tag
+ ChatColor.GREEN + "Removed "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " from "
@ -69,7 +69,7 @@ public class DataCommand implements CommandExecutor {
return true;
} else if (args[0].equals("get")) {
//for the get command
sender.sendMessage(ctx.tex.colour(ctx.tag
sender.sendMessage(ctx.text.colour(ctx.tag
+ ChatColor.GREEN + "Value of data is "
+ ChatColor.WHITE + ctx.panelData.getUserData(ctx.panelDataPlayers.getOffline(args[1]), args[2])));
return true;
@ -87,7 +87,7 @@ public class DataCommand implements CommandExecutor {
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(args[1]), args[2], args[3], true);
}
if (sendPlayerMessage) {
sender.sendMessage(ctx.tex.colour(ctx.tag
sender.sendMessage(ctx.text.colour(ctx.tag
+ ChatColor.GREEN + "Set "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " to "
@ -107,7 +107,7 @@ public class DataCommand implements CommandExecutor {
} else
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(args[1]), args[2], args[3], false);
if (sendPlayerMessage) {
sender.sendMessage(ctx.tex.colour(ctx.tag
sender.sendMessage(ctx.text.colour(ctx.tag
+ ChatColor.GREEN + "Set "
+ ChatColor.WHITE + args[2]
+ ChatColor.GREEN + " to "
@ -119,9 +119,9 @@ public class DataCommand implements CommandExecutor {
}
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpdata <set:add:get:remove:clear> <player|all|online> <data> [value]"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpdata <set:add:get:remove:clear> <player|all|online> <data> [value]"));
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}

View File

@ -18,23 +18,23 @@ public class DebugCommand implements CommandExecutor {
//command /cpd
if(!(sender instanceof Player)) {
ctx.debug.consoleDebug = !ctx.debug.consoleDebug;
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Global Debug Mode: " + ctx.debug.consoleDebug));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Global Debug Mode: " + ctx.debug.consoleDebug));
return true;
}
Player p = (Player)sender;
if(ctx.debug.isEnabled(p)){
ctx.debug.debugSet.remove(p);
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Personal Debug Mode Disabled!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Personal Debug Mode Disabled!"));
}else{
ctx.debug.debugSet.add(p);
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Personal Debug Mode Enabled!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Personal Debug Mode Enabled!"));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpd"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpd"));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}

View File

@ -18,7 +18,7 @@ public class ImportCommand implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender.hasPermission("commandpanel.import")) {
if(!ctx.configHandler.isTrue("config.enable-import-command")){
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.disabled")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.disabled")));
return true;
}
if (args.length == 2) {
@ -34,10 +34,10 @@ public class ImportCommand implements CommandExecutor {
return true;
}
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpi <file name> <url>"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpi <file name> <url>"));
return true;
}
}

View File

@ -23,11 +23,11 @@ public class ListCommand implements CommandExecutor {
//check to make sure the panels isn't empty
try {
if (ctx.plugin.panelList == null) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "No panels found!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "No panels found!"));
return true;
}
}catch(Exception b){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "No panels found!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "No panels found!"));
return true;
}
@ -39,10 +39,10 @@ public class ListCommand implements CommandExecutor {
page = Integer.parseInt(args[0]);
skip = page*8-8;
}catch (Exception e){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Inaccessible Page"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Inaccessible Page"));
}
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.DARK_AQUA + "Panels: (Page " + page + ")"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.DARK_AQUA + "Panels: (Page " + page + ")"));
for (int f = skip; panels.size() > f && skip+8 > f; f++) {
if(panels.get(f).getFile() == null){ continue; }
@ -53,11 +53,11 @@ public class ListCommand implements CommandExecutor {
}
sender.sendMessage(ChatColor.AQUA + "Type /cpl " + (page+1) + " to read next page");
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpl"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpl"));
return true;
}
}

View File

@ -2,7 +2,7 @@ package me.rockyhawk.commandpanels.commands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -33,7 +33,7 @@ public class PanelCommand implements CommandExecutor {
return true;
}
if (panel == null) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
return true;
}
boolean disableCommand = false;
@ -50,11 +50,11 @@ public class PanelCommand implements CommandExecutor {
if (!args[1].equals("item")) {
if (args[1].equalsIgnoreCase("all")) {
for (Player player : Bukkit.getOnlinePlayers())
ctx.openVoids.openCommandPanel(sender, player, panel.copy(), PanelPosition.Top, true);
ctx.openPanel.open(sender, player, panel.copy(), PanelPosition.Top);
} else
ctx.openVoids.openCommandPanel(sender, Bukkit.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top, true);
ctx.openPanel.open(sender, Bukkit.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top);
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> [item] [player|all]"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> [item] [player|all]"));
}
return true;
} else if (args.length == 3) {
@ -62,15 +62,15 @@ public class PanelCommand implements CommandExecutor {
if (args[2].equalsIgnoreCase("all")) {
// if the argument is all open the panel for all of the players
for (Player player : Bukkit.getOnlinePlayers())
ctx.openVoids.openCommandPanel(sender, player, panel.copy(), PanelPosition.Top, true);
ctx.openPanel.open(sender, player, panel.copy(), PanelPosition.Top);
} else
ctx.openVoids.giveHotbarItem(sender, Bukkit.getServer().getPlayer(args[2]), panel.copy(), true);
ctx.hotbar.give.giveHotbarItem(sender, Bukkit.getServer().getPlayer(args[2]), panel.copy());
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> item [player|all]"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> item [player|all]"));
}
return true;
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Please execute command directed to a Player!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Please execute command directed to a Player!"));
return true;
}
} else {
@ -79,21 +79,21 @@ public class PanelCommand implements CommandExecutor {
//do player command
if (args.length == 1) {
if (!disableCommand) {
ctx.openVoids.openCommandPanel(sender, p, panel.copy(), PanelPosition.Top, false);
ctx.openPanel.open(sender, p, panel.copy(), PanelPosition.Top);
}
return true;
} else if (args.length == 2) {
if (args[1].equals("item")) {
ctx.openVoids.giveHotbarItem(sender, p, panel.copy(), false);
ctx.hotbar.give.giveHotbarItem(sender, p, panel.copy());
} else {
if (!disableCommand) {
if (args[1].equalsIgnoreCase("all")) {
// if the argument is all open the panel for all of the players
for (Player player : Bukkit.getOnlinePlayers())
ctx.openVoids.openCommandPanel(sender, player, panel.copy(), PanelPosition.Top, true);
ctx.openPanel.open(sender, player, panel.copy(), PanelPosition.Top);
} else
ctx.openVoids.openCommandPanel(sender, Bukkit.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top, true);
ctx.openPanel.open(sender, Bukkit.getServer().getPlayer(args[1]), panel.copy(), PanelPosition.Top);
}
}
return true;
@ -101,18 +101,18 @@ public class PanelCommand implements CommandExecutor {
if (args[2].equalsIgnoreCase("all")) {
// if the argument is all open the panel for all of the players
for (Player player : Bukkit.getOnlinePlayers())
ctx.openVoids.giveHotbarItem(sender, player, panel.copy(), true);
ctx.hotbar.give.giveHotbarItem(sender, player, panel.copy());
} else
ctx.openVoids.giveHotbarItem(sender, Bukkit.getServer().getPlayer(args[2]), panel.copy(), true);
ctx.hotbar.give.giveHotbarItem(sender, Bukkit.getServer().getPlayer(args[2]), panel.copy());
return true;
}
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> [player|all:item] [player|all]"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cp <panel> [player|all:item] [player|all]"));
return true;
}
private void helpMessage(CommandSender p) {
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Commands:"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.GREEN + "Commands:"));
p.sendMessage(ChatColor.GOLD + "/cp <panel> [player:item] [player] " + ChatColor.WHITE + "Open a command panel.");
if (p.hasPermission("commandpanel.reload")) {
p.sendMessage(ChatColor.GOLD + "/cpr " + ChatColor.WHITE + "Reloads plugin config.");

View File

@ -2,7 +2,7 @@ package me.rockyhawk.commandpanels.commands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -12,12 +12,11 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.EventHandler;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class LoadReloadCommand implements CommandExecutor {
public class ReloadCommand implements CommandExecutor {
Context ctx;
public LoadReloadCommand(Context pl) {
public ReloadCommand(Context pl) {
this.ctx = pl;
reloadPanelFiles();
}
@ -47,20 +46,20 @@ public class LoadReloadCommand implements CommandExecutor {
ctx.hotbar.reloadHotbarSlots();
//reload tag
ctx.tag = ctx.tex.colour(ctx.configHandler.config.getString("config.format.tag"));
ctx.tag = ctx.text.colour(ctx.configHandler.config.getString("config.format.tag"));
//add custom commands to commands.yml
if(ctx.configHandler.isTrue("config.auto-register-commands")) {
registerCommands();
ctx.openCommands.registerCommands();
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.reload")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.reload")));
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpr"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpr"));
return true;
}
@ -138,7 +137,7 @@ public class LoadReloadCommand implements CommandExecutor {
ArrayList<String> opanelsTemp = new ArrayList<>();
for(String tempName : apanels){
if(opanelsTemp.contains(tempName)){
sender.sendMessage(ctx.tex.colour(ctx.tag) + ChatColor.RED + "Error duplicate panel name: " + tempName);
sender.sendMessage(ctx.text.colour(ctx.tag) + ChatColor.RED + "Error duplicate panel name: " + tempName);
return false;
}
opanelsTemp.add(tempName);
@ -147,52 +146,4 @@ public class LoadReloadCommand implements CommandExecutor {
}
return true;
}
//this will require a server restart for new commands
public void registerCommands(){
File commandsLoc = new File("commands.yml");
YamlConfiguration cmdCF;
try {
cmdCF = YamlConfiguration.loadConfiguration(commandsLoc);
}catch(Exception e){
//could not access the commands.yml file
ctx.debug.send(e,null, ctx);
return;
}
//remove old commandpanels commands
for(String existingCommands : cmdCF.getConfigurationSection("aliases").getKeys(false)){
try {
if (cmdCF.getStringList("aliases." + existingCommands).get(0).equals("commandpanel")) {
cmdCF.set("aliases." + existingCommands, null);
}
}catch(Exception ignore){}
}
//make the command 'commandpanels' to identify it
ArrayList<String> temp = new ArrayList<>();
temp.add("commandpanel");
for (Panel panel : ctx.plugin.panelList) {
if(panel.getConfig().contains("panelType")){
if(panel.getConfig().getStringList("panelType").contains("nocommandregister")){
continue;
}
}
if(panel.getConfig().contains("commands")){
List<String> panelCommands = panel.getConfig().getStringList("commands");
for(String command : panelCommands){
cmdCF.set("aliases." + command.split("\\s")[0],temp);
}
}
}
try {
cmdCF.save(commandsLoc);
} catch (IOException var10) {
Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!");
}
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.commands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -29,7 +29,7 @@ public class UpdateCommand implements CommandExecutor {
name = args[0];
targetPlayer = Bukkit.getPlayer(name);
}catch (Exception e){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Player was not found."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Player was not found."));
return true;
}
assert targetPlayer != null;
@ -45,7 +45,7 @@ public class UpdateCommand implements CommandExecutor {
try {
pp = PanelPosition.valueOf(args[1]);
}catch (Exception e){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Panel position not found."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Panel position not found."));
return true;
}
@ -60,13 +60,13 @@ public class UpdateCommand implements CommandExecutor {
}
//Successfully refreshed panel for targetPlayer.getName()
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Successfully refreshed panel for " + targetPlayer.getName() + "."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Successfully refreshed panel for " + targetPlayer.getName() + "."));
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpu <Playername> <Position/ALL>"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpu <Playername> <Position/ALL>"));
return true;
}
}

View File

@ -17,30 +17,30 @@ public class VersionCommand implements CommandExecutor {
if(args.length == 0) {
if (sender.hasPermission("commandpanel.version")) {
//version command
String latestVersion = ctx.updater.getLatestVersion(false);
sender.sendMessage(ctx.tex.colour(ctx.tag));
String latestVersion = ctx.updater.versionChecker.getLatestVersion(false);
sender.sendMessage(ctx.text.colour(ctx.tag));
sender.sendMessage(ChatColor.GREEN + "This Version " + ChatColor.GRAY + ctx.plugin.getDescription().getVersion());
sender.sendMessage(ChatColor.GREEN + "Latest Version " + ChatColor.GRAY + latestVersion);
sender.sendMessage(ChatColor.GRAY + "-------------------");
sender.sendMessage(ChatColor.GREEN + "Developer " + ChatColor.GRAY + "RockyHawk");
sender.sendMessage(ChatColor.GREEN + "Command " + ChatColor.GRAY + "/cp");
} else {
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
}else if(args.length == 1){
if (sender.hasPermission("commandpanel.update")) {
if (args[0].equals("cancel")) {
ctx.updater.downloadVersionManually = null;
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Will not download a new version on restart."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Will not download a new version on restart."));
} else {
ctx.updater.downloadVersionManually = args[0];
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Downloading version " + ChatColor.GRAY + args[0] + ChatColor.GREEN + " upon server restart."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Downloading version " + ChatColor.GRAY + args[0] + ChatColor.GREEN + " upon server restart."));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpv [update:latest:cancel]"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpv [update:latest:cancel]"));
}
return true;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.editor;
package me.rockyhawk.commandpanels.commands.editor;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
@ -9,7 +9,6 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@ -29,13 +28,13 @@ public class CommandPanelsEditor implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender.hasPermission("commandpanel.edit")) {
if (!(sender instanceof Player)) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Cannot execute command in Console!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Cannot execute command in Console!"));
return true;
}
//editor website link
if (args.length == 0) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Access the web editor at the link below"));
sender.sendMessage(ctx.tex.colour(ChatColor.YELLOW + "https://CommandPanels.net/editor"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Access the web editor at the link below"));
sender.sendMessage(ctx.text.colour(ChatColor.YELLOW + "https://CommandPanels.net/editor"));
return true;
}
//export the requested panel
@ -72,7 +71,7 @@ public class CommandPanelsEditor implements CommandExecutor {
}
}
// Pass the panel name to the YamlFileHandler
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Could not find panel!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Could not find panel!"));
return true;
}
//download the requested panel using an import
@ -85,10 +84,10 @@ public class CommandPanelsEditor implements CommandExecutor {
return true;
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Usage: /cpe <parameters>"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Usage: /cpe <parameters>"));
return true;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.editor;
package me.rockyhawk.commandpanels.commands.editor;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.editor;
package me.rockyhawk.commandpanels.commands.editor;
import me.rockyhawk.commandpanels.Context;
import net.md_5.bungee.api.chat.BaseComponent;

View File

@ -1,20 +1,27 @@
package me.rockyhawk.commandpanels.customcommands;
package me.rockyhawk.commandpanels.commands.opencommands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PanelCommands implements Listener {
public class OpenCommands implements Listener {
Context ctx;
public PanelCommands(Context pl) {
public OpenCommands(Context pl) {
this.ctx = pl;
}
// For custom commands that are used to open panels
@EventHandler
public void PlayerCommand(PlayerCommandPreprocessEvent e) {
try {
@ -63,4 +70,51 @@ public class PanelCommands implements Listener {
ctx.debug.send(exc,e.getPlayer(), ctx);
}
}
//this will require a server restart for new commands
public void registerCommands(){
File commandsLoc = new File("commands.yml");
YamlConfiguration cmdCF;
try {
cmdCF = YamlConfiguration.loadConfiguration(commandsLoc);
}catch(Exception e){
//could not access the commands.yml file
ctx.debug.send(e,null, ctx);
return;
}
//remove old commandpanels commands
for(String existingCommands : cmdCF.getConfigurationSection("aliases").getKeys(false)){
try {
if (cmdCF.getStringList("aliases." + existingCommands).get(0).equals("commandpanel")) {
cmdCF.set("aliases." + existingCommands, null);
}
}catch(Exception ignore){}
}
//make the command 'commandpanels' to identify it
ArrayList<String> temp = new ArrayList<>();
temp.add("commandpanel");
for (Panel panel : ctx.plugin.panelList) {
if(panel.getConfig().contains("panelType")){
if(panel.getConfig().getStringList("panelType").contains("nocommandregister")){
continue;
}
}
if(panel.getConfig().contains("commands")){
List<String> panelCommands = panel.getConfig().getStringList("commands");
for(String command : panelCommands){
cmdCF.set("aliases." + command.split("\\s")[0],temp);
}
}
}
try {
cmdCF.save(commandsLoc);
} catch (IOException var10) {
Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!");
}
}
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.completetabs;
package me.rockyhawk.commandpanels.commands.tabcomplete;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.Bukkit;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.completetabs;
package me.rockyhawk.commandpanels.commands.tabcomplete;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.completetabs;
package me.rockyhawk.commandpanels.commands.tabcomplete;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
@ -39,7 +39,7 @@ public class PanelTabComplete implements TabCompleter {
continue;
}
}
if (ctx.worldPerms.isPanelWorldEnabled(p, panel.getConfig())) {
if (ctx.openPanel.permission.isPanelWorldEnabled(p, panel.getConfig())) {
apanels.add(panel.getName());
}
}

View File

@ -1,6 +1,6 @@
package me.rockyhawk.commandpanels.completetabs;
package me.rockyhawk.commandpanels.commands.tabcomplete;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -1,7 +1,6 @@
package me.rockyhawk.commandpanels.configuration;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.CharSequenceReader;
import org.bukkit.Bukkit;
@ -77,7 +76,7 @@ public class ConfigHandler {
//save the example files and the template.yml file
if (!panelsFolder.exists()) {
try {
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
if(ctx.version.isBelow("1.13")){
FileConfiguration exampleFileConfiguration = YamlConfiguration.loadConfiguration(getReaderFromStream(ctx.plugin.getResource("exampleLegacy.yml")));
exampleFileConfiguration.save(new File(panelsFolder + File.separator + "example.yml"));
}else {

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.datamanager;
package me.rockyhawk.commandpanels.configuration;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.Bukkit;

View File

@ -37,7 +37,7 @@ public class CompatibilityConverter {
}
} else {
// Single menu format
List<String> requirements = convertMenu(inputYaml, ChatColor.stripColor(ctx.tex.colour(inputYaml.getString("menu_title"))), panelsSection);
List<String> requirements = convertMenu(inputYaml, ChatColor.stripColor(ctx.text.colour(inputYaml.getString("menu_title"))), panelsSection);
allRequirementDetails.addAll(requirements);
}

View File

@ -1,6 +1,7 @@
package me.rockyhawk.commandpanels.api;
package me.rockyhawk.commandpanels.events;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

View File

@ -1,16 +1,17 @@
package me.rockyhawk.commandpanels.api;
package me.rockyhawk.commandpanels.events;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class PanelCommandEvent extends Event {
public class PanelInteractionEvent extends Event {
private final Player p;
private final String args;
private final Panel panel;
public PanelCommandEvent(Player player, String message, Panel panel1) {
public PanelInteractionEvent(Player player, String message, Panel panel1) {
this.p = player;
this.args = message;
this.panel = panel1;

View File

@ -1,6 +1,7 @@
package me.rockyhawk.commandpanels.api;
package me.rockyhawk.commandpanels.events;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.classresources.placeholders;
package me.rockyhawk.commandpanels.formatter;
import me.clip.placeholderapi.PlaceholderAPI;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.classresources.placeholders;
package me.rockyhawk.commandpanels.formatter;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.ChatColor;

View File

@ -1,18 +1,14 @@
package me.rockyhawk.commandpanels.classresources;
package me.rockyhawk.commandpanels.formatter;
import me.rockyhawk.commandpanels.Context;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import java.util.List;
import java.util.stream.Collectors;
public class MiniMessageUtils {
public class MiniMessage {
Context ctx;
public MiniMessageUtils(Context pl) {
public MiniMessage(Context pl) {
this.ctx = pl;
}
@ -24,14 +20,14 @@ public class MiniMessageUtils {
*/
public String doMiniMessageLegacy(String string) {
MiniMessage miniMessage;
net.kyori.adventure.text.minimessage.MiniMessage miniMessage;
try {
// Try the newer method first
miniMessage = (MiniMessage) MiniMessage.class.getMethod("miniMessage").invoke(null);
miniMessage = (net.kyori.adventure.text.minimessage.MiniMessage) net.kyori.adventure.text.minimessage.MiniMessage.class.getMethod("miniMessage").invoke(null);
} catch (Exception e) {
try {
// Fallback to older method
miniMessage = (MiniMessage) MiniMessage.class.getMethod("get").invoke(null);
miniMessage = (net.kyori.adventure.text.minimessage.MiniMessage) net.kyori.adventure.text.minimessage.MiniMessage.class.getMethod("get").invoke(null);
} catch (Exception ex) {
return string; // Return raw text if no method exists
}
@ -53,7 +49,7 @@ public class MiniMessageUtils {
LegacyComponentSerializer legacyComponentSerializer = LegacyComponentSerializer.builder().hexColors().character('&').build();
Component component = legacyComponentSerializer.deserialize(string.replace('§', '&'));
return MiniMessage.miniMessage().deserialize(MiniMessage.miniMessage().serialize(component.decoration(TextDecoration.ITALIC, false))
return net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().serialize(component.decoration(TextDecoration.ITALIC, false))
.replace("\\<", "<").replace("\\", "").replace("\n", "<br>")).decoration(TextDecoration.ITALIC, false);
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.datamanager;
package me.rockyhawk.commandpanels.formatter.data;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.configuration.file.YamlConfiguration;
@ -8,9 +8,9 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.UUID;
public class PanelDataLoader {
public class DataLoader {
Context ctx;
public PanelDataLoader(Context pl) {
public DataLoader(Context pl) {
this.ctx = pl;
}
public YamlConfiguration dataConfig;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.datamanager;
package me.rockyhawk.commandpanels.formatter.data;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
@ -9,14 +9,14 @@ import org.bukkit.event.player.PlayerJoinEvent;
import java.util.HashMap;
import java.util.UUID;
public class PanelDataPlayerManager implements Listener {
public class DataManager implements Listener {
//will return UUID if found or null
public UUID getOffline(String playerName){
return knownPlayers.getOrDefault(playerName, null);
}
//Run on initialisation
public PanelDataPlayerManager() {
public DataManager() {
reloadAllPlayers();
}
@ -36,4 +36,4 @@ public class PanelDataPlayerManager implements Listener {
public void onPlayerJoin(PlayerJoinEvent e) {
knownPlayers.put(e.getPlayer().getName(), e.getPlayer().getUniqueId());
}
}
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.classresources.placeholders;
package me.rockyhawk.commandpanels.formatter.placeholders;
import java.util.HashMap;

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.classresources.placeholders.expansion;
package me.rockyhawk.commandpanels.formatter.placeholders;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

View File

@ -1,11 +1,10 @@
package me.rockyhawk.commandpanels.classresources.placeholders;
package me.rockyhawk.commandpanels.formatter.placeholders;
import com.earth2me.essentials.Essentials;
import io.lumine.mythic.lib.api.item.NBTItem;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -111,7 +110,7 @@ public class Placeholders {
return position.toString();
}
case("tag"): {
return ctx.tex.colour(ctx.tag);
return ctx.text.colour(ctx.tag);
}
}
@ -193,8 +192,7 @@ public class Placeholders {
// Check if the item is not null and has potion meta
if (item != null && item.hasItemMeta() && item.getItemMeta() instanceof PotionMeta) {
//choose between legacy PotionData (pre 1.20.5) or PotionType
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_19) ||
(ctx.legacy.MAJOR_VERSION == MinecraftVersions.v1_20 && ctx.legacy.MINOR_VERSION <= 4)){
if(ctx.version.isBelow("1.20.5")){
//Returns the value like this <Type>:<Extended>:<Upgraded> Example SLOWNESS:true:false
return ctx.legacyPotion.retrievePotionData(item).replaceAll("\\s",":");
}else{
@ -219,7 +217,7 @@ public class Placeholders {
String material;
try {
material = p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber)).getType().toString();
if (ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
if(ctx.version.isBelow("1.13")){
//add the ID to the end if it is legacy (eg, material:id)
material = material + ":" + p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber)).getData().getData();
}
@ -317,7 +315,7 @@ public class Placeholders {
boolean damaged = false;
ItemStack itm = p.getOpenInventory().getTopInventory().getItem((int)Double.parseDouble(matNumber));
try {
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
if(ctx.version.isBelow("1.13")){
if(itm.getType().getMaxDurability() != 0) {
damaged = (itm.getType().getMaxDurability() - itm.getDurability()) < itm.getType().getMaxDurability();
}
@ -468,7 +466,7 @@ public class Placeholders {
}
}
//player is not found
return ctx.tex.colour(Objects.requireNonNull(ctx.configHandler.config.getString("config.format.offline")));
return ctx.text.colour(Objects.requireNonNull(ctx.configHandler.config.getString("config.format.offline")));
}catch (Exception ex){
ctx.debug.send(ex,p, ctx);
return "";

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.generatepanels;
package me.rockyhawk.commandpanels.generate;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.List;
public class TabCompleteGenerate implements TabCompleter {
public class GenTabComplete implements TabCompleter {
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player && args.length == 1){

View File

@ -1,8 +1,7 @@
package me.rockyhawk.commandpanels.generatepanels;
package me.rockyhawk.commandpanels.generate;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.YamlConfiguration;
@ -79,7 +78,7 @@ public class GenUtils implements Listener {
}
if(!foundItem){
//panels don't need items but I cancel on generate with no items because then players have the option to cancel if they need to
p.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Cancelled Panel!"));
p.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Cancelled Panel!"));
return;
}
YamlConfiguration file;
@ -100,7 +99,7 @@ public class GenUtils implements Listener {
file.set("panels." + date + ".title", "&8Generated " + date);
file.addDefault("panels." + date + ".command", date);
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) {
if(ctx.version.isBelow("1.13")){
file.set("panels." + date + ".empty", "STAINED_GLASS_PANE");
file.set("panels." + date + ".emptyID", "15");
}else{
@ -111,9 +110,9 @@ public class GenUtils implements Listener {
try {
file.save(new File(ctx.configHandler.panelsFolder + File.separator + date + ".yml"));
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Saved Generated File To: " + date + ".yml"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.GREEN + "Saved Generated File To: " + date + ".yml"));
} catch (IOException var16) {
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.RED + "Could Not Save Generated Panel!"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.RED + "Could Not Save Generated Panel!"));
}
ctx.reloader.reloadPanelFiles();
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.generatepanels;
package me.rockyhawk.commandpanels.generate;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.Bukkit;
@ -18,7 +18,7 @@ public class GenerateCommand implements CommandExecutor {
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(!(sender instanceof Player)) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
return true;
}
Player p = (Player) sender;
@ -31,25 +31,25 @@ public class GenerateCommand implements CommandExecutor {
Inventory i = Bukkit.createInventory(null, Integer.parseInt(args[0]) * 9, "Generate New Panel");
p.openInventory(i);
} else {
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.RED + "Please use integer from 1-6."));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.RED + "Please use integer from 1-6."));
}
}catch(Exception exc){
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.RED + "Please use integer from 1-6."));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.RED + "Please use integer from 1-6."));
}
return true;
}else if (args.length == 0) {
if (this.ctx.generator.generateMode.contains(p)) {
this.ctx.generator.generateMode.remove(p);
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Generate Mode Disabled!"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.GREEN + "Generate Mode Disabled!"));
} else {
this.ctx.generator.generateMode.add(p);
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.GREEN + "Generate Mode Enabled!"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.GREEN + "Generate Mode Enabled!"));
}
return true;
}
p.sendMessage(ctx.tex.colour( ctx.tag + ChatColor.RED + "Usage: /cpg [rows]"));
p.sendMessage(ctx.text.colour( ctx.tag + ChatColor.RED + "Usage: /cpg [rows]"));
}else{
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.panelblocks;
package me.rockyhawk.commandpanels.interaction.blocks;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
@ -16,22 +16,22 @@ import java.io.File;
import java.io.IOException;
import java.util.Objects;
public class BlocksCommand implements CommandExecutor {
public class BlockCommand implements CommandExecutor {
Context ctx;
public BlocksCommand(Context pl) { this.ctx = pl; }
public BlockCommand(Context pl) { this.ctx = pl; }
@EventHandler
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(args.length >= 2) {
if (args[0].equalsIgnoreCase("add")) {
if(!(sender instanceof Player)) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
return true;
}
Player p = (Player)sender;
if(p.hasPermission("commandpanel.block.add")){
if(!ctx.configHandler.isTrue("config.panel-blocks")) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
boolean foundPanel = false;
@ -42,12 +42,12 @@ public class BlocksCommand implements CommandExecutor {
}
}
if(!foundPanel){
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
return true;
}
Block blockType = p.getTargetBlock(null, 5);
if(blockType.getType() == Material.AIR){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Look at a block to add a panel!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Look at a block to add a panel!"));
return true;
}
Location blockLocation = blockType.getLocation();
@ -59,14 +59,14 @@ public class BlocksCommand implements CommandExecutor {
ctx.configHandler.blockConfig.save(new File(ctx.plugin.getDataFolder() + File.separator + "blocks.yml"));
} catch (IOException e) {
ctx.debug.send(e,p, ctx);
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Could not save to file!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Could not save to file!"));
return true;
}
//make the material name look okay
String coordinates = blockLocation.getBlockX() + ", " + blockLocation.getBlockY() + ", " + blockLocation.getBlockZ();
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.WHITE + args[1] + ChatColor.GREEN + " will now open when right clicking a block in the coordinates " + ChatColor.WHITE + coordinates));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.WHITE + args[1] + ChatColor.GREEN + " will now open when right clicking a block in the coordinates " + ChatColor.WHITE + coordinates));
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}
@ -74,13 +74,13 @@ public class BlocksCommand implements CommandExecutor {
if(args.length == 1){
if (args[0].equalsIgnoreCase("remove")) {
if(!(sender instanceof Player)) {
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Please execute command as a Player!"));
return true;
}
Player p = (Player)sender;
if(p.hasPermission("commandpanel.block.remove")){
if(!ctx.configHandler.isTrue("config.panel-blocks")){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
Block blockType = p.getTargetBlock(null, 5);
@ -92,38 +92,38 @@ public class BlocksCommand implements CommandExecutor {
ctx.configHandler.blockConfig.save(new File(ctx.plugin.getDataFolder() + File.separator + "blocks.yml"));
} catch (IOException e) {
ctx.debug.send(e,p, ctx);
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Could not save to file!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Could not save to file!"));
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.GREEN + "Panel has been removed from block."));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Panel has been removed from block."));
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.nopanel")));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}
if (args[0].equalsIgnoreCase("list")) {
if(sender.hasPermission("commandpanel.block.list")){
if(!ctx.configHandler.isTrue("config.panel-blocks")){
sender.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Panel blocks disabled in config!"));
return true;
}
if(ctx.configHandler.blockConfig.contains("blocks")){
if(Objects.requireNonNull(ctx.configHandler.blockConfig.getConfigurationSection("blocks")).getKeys(false).size() == 0){
sender.sendMessage(ctx.tex.colour(ctx.tag) + ChatColor.RED + "No panel blocks found.");
sender.sendMessage(ctx.text.colour(ctx.tag) + ChatColor.RED + "No panel blocks found.");
return true;
}
sender.sendMessage(ctx.tex.colour(ctx.tag) + ChatColor.DARK_AQUA + "Panel Block Locations:");
sender.sendMessage(ctx.text.colour(ctx.tag) + ChatColor.DARK_AQUA + "Panel Block Locations:");
for (String location : Objects.requireNonNull(ctx.configHandler.blockConfig.getConfigurationSection("blocks")).getKeys(false)) {
sender.sendMessage(ChatColor.GREEN + location.replaceAll("_"," ") + ": " + ChatColor.WHITE + ctx.configHandler.blockConfig.getString("blocks." + location + ".panel"));
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag) + ChatColor.RED + "No panel blocks found.");
sender.sendMessage(ctx.text.colour(ctx.tag) + ChatColor.RED + "No panel blocks found.");
}
}else{
sender.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
return true;
}

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.panelblocks;
package me.rockyhawk.commandpanels.interaction.blocks;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -12,9 +12,9 @@ import org.bukkit.event.player.PlayerInteractEvent;
import java.util.Objects;
public class PanelBlockOnClick implements Listener {
public class BlockEvents implements Listener {
Context ctx;
public PanelBlockOnClick(Context pl) {
public BlockEvents(Context pl) {
this.ctx = pl;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.panelblocks;
package me.rockyhawk.commandpanels.interaction.blocks;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
@ -11,9 +11,9 @@ import java.util.ArrayList;
import java.util.List;
public class BlocksTabComplete implements TabCompleter {
public class BlockTabComplete implements TabCompleter {
Context ctx;
public BlocksTabComplete(Context pl) { this.ctx = pl; }
public BlockTabComplete(Context pl) { this.ctx = pl; }
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player){
@ -28,7 +28,7 @@ public class BlocksTabComplete implements TabCompleter {
continue;
}
if (sender.hasPermission("commandpanel.panel." + panel.getConfig().getString("perm"))) {
if(ctx.worldPerms.isPanelWorldEnabled(p,panel.getConfig())){
if(ctx.openPanel.permission.isPanelWorldEnabled(p,panel.getConfig())){
apanels.add(panel.getName());
}
}

View File

@ -1,8 +1,9 @@
package me.rockyhawk.commandpanels;
package me.rockyhawk.commandpanels.interaction.click;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.interactives.input.PlayerInput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.input.PlayerInput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -12,9 +13,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class Utils implements Listener {
public class InteractionHandler implements Listener {
Context ctx;
public Utils(Context pl) {
public InteractionHandler(Context pl) {
ctx = pl;
}
@ -90,7 +91,7 @@ public class Utils implements Listener {
//this loops through all the items in the panel
String foundSlot = null;
for(String item : Objects.requireNonNull(panel.getConfig().getConfigurationSection("item")).getKeys(false)){
String slot = ctx.tex.placeholdersNoColour(panel, position, p, item);
String slot = ctx.text.placeholdersNoColour(panel, position, p, item);
if (slot.equals(Integer.toString(clickedSlot))) {
foundSlot = item;
break;

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.interactives;
package me.rockyhawk.commandpanels.interaction.click;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -9,9 +9,9 @@ import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
public class OutsideClickEvent implements Listener {
public class OutsideHandler implements Listener {
Context ctx;
public OutsideClickEvent(Context pl) {
public OutsideHandler(Context pl) {
this.ctx = pl;
}
@EventHandler

View File

@ -1,17 +1,16 @@
package me.rockyhawk.commandpanels.commandtags;
package me.rockyhawk.commandpanels.interaction.commands;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.commandtags.paywalls.*;
import me.rockyhawk.commandpanels.commandtags.paywalls.itempaywall.ItemPaywall;
import me.rockyhawk.commandpanels.commandtags.tags.other.DataTags;
import me.rockyhawk.commandpanels.commandtags.tags.other.PlaceholderTags;
import me.rockyhawk.commandpanels.commandtags.tags.other.SpecialTags;
import me.rockyhawk.commandpanels.commandtags.tags.standard.BasicTags;
import me.rockyhawk.commandpanels.commandtags.tags.standard.BungeeTags;
import me.rockyhawk.commandpanels.commandtags.tags.standard.ItemTags;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.paywalls.*;
import me.rockyhawk.commandpanels.interaction.commands.paywalls.itempaywall.ItemPaywall;
import me.rockyhawk.commandpanels.interaction.commands.tags.other.DataTags;
import me.rockyhawk.commandpanels.interaction.commands.tags.other.PlaceholderTags;
import me.rockyhawk.commandpanels.interaction.commands.tags.other.SpecialTags;
import me.rockyhawk.commandpanels.interaction.commands.tags.standard.BasicTags;
import me.rockyhawk.commandpanels.interaction.commands.tags.standard.BungeeTags;
import me.rockyhawk.commandpanels.interaction.commands.tags.standard.ItemTags;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
@ -54,7 +53,7 @@ public class CommandRunner {
CommandTagEvent tags = new CommandTagEvent(ctx, panel, position, p, commandRAW);
Bukkit.getPluginManager().callEvent(tags);
if (!tags.commandTagUsed) {
Bukkit.dispatchCommand(p, ctx.tex.attachPlaceholders(panel, position, p, commandRAW.trim()));
Bukkit.dispatchCommand(p, ctx.text.attachPlaceholders(panel, position, p, commandRAW.trim()));
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.commandtags;
package me.rockyhawk.commandpanels.interaction.commands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
@ -37,7 +37,7 @@ public class CommandTagEvent extends Event {
this.name = split[0].trim();
this.raw = split[1].trim().split("\\s");
if(doApiPlaceholders) {
this.args = ctx.tex.attachPlaceholders(panel1,pos, player, split[1].trim()).split("\\s");
this.args = ctx.text.attachPlaceholders(panel1,pos, player, split[1].trim()).split("\\s");
}else{
this.args = ctx.placeholders.setPlaceholders(panel, pos, p,split[1].trim(),false).split("\\s");
this.args = ctx.placeholders.setPlaceholders(panel, pos, p,split[1].trim(),true).split("\\s");

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.commandtags;
package me.rockyhawk.commandpanels.interaction.commands;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
@ -39,7 +39,7 @@ public class PaywallEvent extends Event {
this.name = split[0].trim();
this.raw = split[1].trim().split("\\s");
if(doApiPlaceholders) {
this.args = ctx.tex.attachPlaceholders(panel1,pos, player, split[1].trim()).split("\\s");
this.args = ctx.text.attachPlaceholders(panel1,pos, player, split[1].trim()).split("\\s");
}else{
this.args = ChatColor.translateAlternateColorCodes('&',ctx.placeholders.setPlaceholders(panel, pos, p,split[1].trim(),false)).split("\\s");
this.args = ChatColor.translateAlternateColorCodes('&',ctx.placeholders.setPlaceholders(panel, pos, p,split[1].trim(),true)).split("\\s");

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.commandtags;
package me.rockyhawk.commandpanels.interaction.commands;
public enum PaywallOutput {
Blocked,

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.paywalls;
package me.rockyhawk.commandpanels.interaction.commands.paywalls;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -22,21 +22,21 @@ public class DataPaywall implements Listener {
try {
if (Double.parseDouble(ctx.panelData.getUserData(e.p.getUniqueId(), e.args[0])) >= Double.parseDouble(e.args[1])) {
if (e.doDelete)
ctx.panelData.doDataMath(e.p.getUniqueId(), e.args[0], "-" + ctx.tex.placeholdersNoColour(e.panel, PanelPosition.Top, e.p, e.args[1]));
ctx.panelData.doDataMath(e.p.getUniqueId(), e.args[0], "-" + ctx.text.placeholdersNoColour(e.panel, PanelPosition.Top, e.p, e.args[1]));
//if the message is empty don't send
if (ctx.configHandler.isTrue("purchase.data.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.data.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.data.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (ctx.configHandler.isTrue("purchase.data.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.data.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.data.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} catch (Exception buyc) {
ctx.debug.send(buyc, e.p, ctx);
ctx.tex.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
ctx.text.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.paywalls;
package me.rockyhawk.commandpanels.interaction.commands.paywalls;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -21,12 +21,12 @@ public class Hasperm implements Listener {
//if player uses hasperm= [perm]
if (e.p.hasPermission(e.args[0])) {
if (ctx.configHandler.isTrue("purchase.permission.enable") && e.doDelete) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (ctx.configHandler.isTrue("purchase.currency.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
@ -36,12 +36,12 @@ public class Hasperm implements Listener {
//if player uses hasnoperm= [perm]
if (!e.p.hasPermission(e.args[0])) {
if (ctx.configHandler.isTrue("purchase.permission.enable") && e.doDelete) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (ctx.configHandler.isTrue("purchase.currency.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.permission.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.paywalls;
package me.rockyhawk.commandpanels.interaction.commands.paywalls;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -26,22 +26,22 @@ public class Paywall implements Listener {
if (plugin.econ.getBalance(e.p) >= paywallAmount) {
if (e.doDelete) plugin.econ.withdrawPlayer(e.p, paywallAmount);
if (plugin.configHandler.isTrue("purchase.currency.enable") && e.doDelete) {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.configHandler.config.getString("purchase.currency.success")).replaceAll("%cp-args%", e.args[0]));
plugin.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.configHandler.config.getString("purchase.currency.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (plugin.configHandler.isTrue("purchase.currency.enable")) {
plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.configHandler.config.getString("purchase.currency.failure")));
plugin.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.configHandler.config.getString("purchase.currency.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} else {
plugin.tex.sendString(e.p, plugin.tag + ChatColor.RED + "Paying Requires Vault and an Economy to work!");
plugin.text.sendString(e.p, plugin.tag + ChatColor.RED + "Paying Requires Vault and an Economy to work!");
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} catch (Exception buyc) {
plugin.debug.send(buyc, e.p, plugin);
plugin.tex.sendString(e.p, plugin.tag + plugin.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
plugin.text.sendString(e.p, plugin.tag + plugin.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.commandtags.paywalls;
package me.rockyhawk.commandpanels.interaction.commands.paywalls;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
@ -49,27 +49,27 @@ public class TokenPaywall implements Listener {
}
// if the message is empty don't send
if (ctx.configHandler.isTrue("purchase.tokens.enable") && e.doDelete) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (ctx.configHandler.isTrue("purchase.tokens.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.tokens.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.tokens.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} else {
ctx.tex.sendString(e.p, ctx.tag + ChatColor.RED + "Needs TokenManager to work!");
ctx.text.sendString(e.p, ctx.tag + ChatColor.RED + "Needs TokenManager to work!");
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} else {
ctx.tex.sendString(e.p, ctx.tag + ChatColor.RED + "Needs TokenManager to work!");
ctx.text.sendString(e.p, ctx.tag + ChatColor.RED + "Needs TokenManager to work!");
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} catch (Exception ex) {
ctx.debug.send(ex, e.p, ctx);
ctx.tex.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
ctx.text.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.paywalls;
package me.rockyhawk.commandpanels.interaction.commands.paywalls;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -35,18 +35,18 @@ public class XpPaywall implements Listener {
}
//if the message is empty don't send
if (ctx.configHandler.isTrue("purchase.xp.enable") && e.doDelete) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.xp.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.xp.success")).replaceAll("%cp-args%", e.args[0]));
}
e.PAYWALL_OUTPUT = PaywallOutput.Passed;
} else {
if (ctx.configHandler.isTrue("purchase.xp.enable")) {
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.xp.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.xp.failure")));
}
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
} catch (Exception buyc) {
ctx.debug.send(buyc, e.p, ctx);
ctx.tex.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
ctx.text.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.commandtags.paywalls.itempaywall;
package me.rockyhawk.commandpanels.interaction.commands.paywalls.itempaywall;
import org.bukkit.inventory.ItemStack;

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.paywalls.itempaywall;
package me.rockyhawk.commandpanels.interaction.commands.paywalls.itempaywall;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.PaywallEvent;
import me.rockyhawk.commandpanels.commandtags.PaywallOutput;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.PaywallEvent;
import me.rockyhawk.commandpanels.interaction.commands.PaywallOutput;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -54,18 +54,18 @@ public class ItemPaywall implements Listener {
if (removedItem == PaywallOutput.Blocked) {
if (ctx.configHandler.isTrue("purchase.item.enable")) {
//no item found to remove
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.item.failure")));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.item.failure")));
}
} else {
if (ctx.configHandler.isTrue("purchase.item.enable") && e.doDelete) {
//item was removed
ctx.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.item.success")).replaceAll("%cp-args%", e.args[0]));
ctx.text.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(ctx.configHandler.config.getString("purchase.item.success")).replaceAll("%cp-args%", e.args[0]));
}
}
e.PAYWALL_OUTPUT = removedItem;
} catch (Exception buyc) {
ctx.debug.send(buyc, e.p, ctx);
ctx.tex.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
ctx.text.sendString(e.p, ctx.tag + ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.name);
e.PAYWALL_OUTPUT = PaywallOutput.Blocked;
}
}

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.commandtags.tags.other;
package me.rockyhawk.commandpanels.interaction.commands.tags.other;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -16,60 +16,60 @@ public class DataTags implements Listener {
if(e.name.equalsIgnoreCase("set-data=")){
e.commandTagUsed();
if(e.args.length == 3){
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
return;
}
//this will overwrite data. set-data= [data point] [data value] [optional player]
ctx.panelData.setUserData(e.p.getUniqueId(),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),true);
return;
}
if(e.name.equalsIgnoreCase("add-data=")){
e.commandTagUsed();
if(e.args.length == 3){
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
ctx.panelData.setUserData(ctx.panelDataPlayers.getOffline(ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
return;
}
//this will not overwrite existing data. add-data= [data point] [data value] [optional player]
ctx.panelData.setUserData(e.p.getUniqueId(),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]),false);
return;
}
if(e.name.equalsIgnoreCase("math-data=")){
e.commandTagUsed();
if(e.args.length == 3){
ctx.panelData.doDataMath(ctx.panelDataPlayers.getOffline(ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
ctx.panelData.doDataMath(ctx.panelDataPlayers.getOffline(ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[2])),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
return;
}
//only works if data is number, goes math-data= [data point] [operator:number] [optional player] eg, math-data= -1 OR /3
ctx.panelData.doDataMath(e.p.getUniqueId(),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1]));
return;
}
if(e.name.equalsIgnoreCase("clear-data=")){
e.commandTagUsed();
//will clear all data for player clear-data= [playerName]
ctx.panelData.clearData(ctx.panelDataPlayers.getOffline(ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0])));
ctx.panelData.clearData(ctx.panelDataPlayers.getOffline(ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0])));
return;
}
if(e.name.equalsIgnoreCase("del-data=")){
e.commandTagUsed();
if(e.args.length == 2){
ctx.panelData.delUserData(ctx.panelDataPlayers.getOffline(ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1])),
ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]));
ctx.panelData.delUserData(ctx.panelDataPlayers.getOffline(ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[1])),
ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]));
return;
}
//this will remove data. del-data= [data point] [optional player]
ctx.panelData.delUserData(e.p.getUniqueId(), ctx.tex.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]));
ctx.panelData.delUserData(e.p.getUniqueId(), ctx.text.placeholdersNoColour(e.panel,e.pos,e.p,e.args[0]));
}
}
}

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.commandtags.tags.other;
package me.rockyhawk.commandpanels.interaction.commands.tags.other;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -30,7 +30,7 @@ public class PlaceholderTags implements Listener {
//do not change the placeholder
String placeholder = contents.substring(0,contents.indexOf(':'));
//only convert placeholders for the value
String value = ctx.tex.placeholders(e.panel,e.pos,e.p,contents.substring(contents.indexOf(':')+1));
String value = ctx.text.placeholders(e.panel,e.pos,e.p,contents.substring(contents.indexOf(':')+1));
e.panel.placeholders.addPlaceholder(placeholder,value);
i = i+contents.length()-1;
}
@ -56,7 +56,7 @@ public class PlaceholderTags implements Listener {
//only convert placeholders for the value
if (!e.panel.placeholders.keys.containsKey(placeholder)) {
//only convert placeholders for the value
String value = ctx.tex.placeholders(e.panel,e.pos, e.p, contents.substring(contents.indexOf(':') + 1));
String value = ctx.text.placeholders(e.panel,e.pos, e.p, contents.substring(contents.indexOf(':') + 1));
e.panel.placeholders.addPlaceholder(placeholder, value);
}
i = i + contents.length() - 1;

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.tags.other;
package me.rockyhawk.commandpanels.interaction.commands.tags.other;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
@ -44,7 +44,7 @@ public class SpecialTags implements Listener {
//do not change the placeholder
String placeholder = contents.substring(0,contents.indexOf(':'));
//only convert placeholders for the value
String value = ctx.tex.placeholders(e.panel,e.pos,e.p,contents.substring(contents.indexOf(':')+1));
String value = ctx.text.placeholders(e.panel,e.pos,e.p,contents.substring(contents.indexOf(':')+1));
openPanel.placeholders.addPlaceholder(placeholder,value);
i = i+contents.length()-1;
}else if(cm[i].equals('{')){
@ -84,10 +84,10 @@ public class SpecialTags implements Listener {
String title;
String subtitle = "";
if(message.toString().contains("/n/")) {
title = ctx.tex.placeholders(e.panel, e.pos, e.p, message.toString().split("/n/")[0]);
subtitle = ctx.tex.placeholders(e.panel, e.pos, e.p, message.toString().split("/n/")[1]);
title = ctx.text.placeholders(e.panel, e.pos, e.p, message.toString().split("/n/")[0]);
subtitle = ctx.text.placeholders(e.panel, e.pos, e.p, message.toString().split("/n/")[1]);
}else{
title = ctx.tex.placeholders(e.panel, e.pos, e.p, message.toString().trim());
title = ctx.text.placeholders(e.panel, e.pos, e.p, message.toString().trim());
}
try{
p.sendTitle(title, subtitle, Integer.parseInt(e.args[1]), Integer.parseInt(e.args[2]), Integer.parseInt(e.args[3]));
@ -156,14 +156,14 @@ public class SpecialTags implements Listener {
//if player uses op= it will perform command as op
final int delayTicks = Integer.parseInt(e.args[0]);
final String staticValue = e.raw[1];
final String parsedValue = ctx.tex.placeholders(e.panel, e.pos, e.p, e.args[1].trim());
final String parsedValue = ctx.text.placeholders(e.panel, e.pos, e.p, e.args[1].trim());
String finalCommand = String.join(" ",e.args).replaceFirst(e.args[0],"").replaceFirst(e.args[1],"").trim();
new BukkitRunnable() {
@Override
public void run() {
try {
//If old parsed value does not equal the new value after delay then stop execute.
if(ctx.tex.placeholders(e.panel, e.pos, e.p, staticValue.trim()).equals(parsedValue)){
if(ctx.text.placeholders(e.panel, e.pos, e.p, staticValue.trim()).equals(parsedValue)){
ctx.commandRunner.runCommand(e.panel,e.pos, e.p, finalCommand);
}
} catch (Exception ex) {

View File

@ -1,11 +1,10 @@
package me.rockyhawk.commandpanels.commandtags.tags.standard;
package me.rockyhawk.commandpanels.interaction.commands.tags.standard;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.PanelCommandEvent;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.events.PanelInteractionEvent;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
@ -70,12 +69,12 @@ public class BasicTags implements Listener {
}
if(e.name.equalsIgnoreCase("msg=")) {
e.commandTagUsed();
ctx.tex.sendString(e.panel,e.pos,e.p,String.join(" ",e.args));
ctx.text.sendString(e.panel,e.pos,e.p,String.join(" ",e.args));
return;
}
if(e.name.equalsIgnoreCase("broadcast=")) {
e.commandTagUsed();
Bukkit.broadcastMessage(ctx.tex.placeholders(e.panel, e.pos, e.p,String.join(" ",e.args).trim()));
Bukkit.broadcastMessage(ctx.text.placeholders(e.panel, e.pos, e.p,String.join(" ",e.args).trim()));
return;
}
if(e.name.equalsIgnoreCase("broadcast-perm=")) {
@ -85,7 +84,7 @@ public class BasicTags implements Listener {
message.append(e.args[i]).append(" ");
}
// <perm> <message>
Bukkit.broadcast(ctx.tex.placeholders(e.panel, e.pos, e.p,String.join(" ",message).trim()),String.valueOf(e.args[0]));
Bukkit.broadcast(ctx.text.placeholders(e.panel, e.pos, e.p,String.join(" ",message).trim()),String.valueOf(e.args[0]));
return;
}
if(e.name.equalsIgnoreCase("op=")) {
@ -99,7 +98,7 @@ public class BasicTags implements Listener {
} catch (Exception exc) {
e.p.setOp(isop);
ctx.debug.send(exc,e.p, ctx);
e.p.sendMessage(ctx.tag + ctx.tex.colour( ctx.configHandler.config.getString("config.format.error") + " op=: Error in op command!"));
e.p.sendMessage(ctx.tag + ctx.text.colour( ctx.configHandler.config.getString("config.format.error") + " op=: Error in op command!"));
}
return;
}
@ -114,7 +113,7 @@ public class BasicTags implements Listener {
}
} catch (Exception s) {
ctx.debug.send(s, e.p, ctx);
ctx.tex.sendMessage(e.p, ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.args[0]);
ctx.text.sendMessage(e.p, ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.args[0]);
}
return;
}
@ -124,25 +123,25 @@ public class BasicTags implements Listener {
e.p.stopSound(Sound.valueOf(e.args[0]));
} catch (Exception ss) {
ctx.debug.send(ss, e.p, ctx);
ctx.tex.sendMessage(e.p, ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.args[0]);
ctx.text.sendMessage(e.p, ctx.configHandler.config.getString("config.format.error") + " " + "commands: " + e.args[0]);
}
return;
}
if(e.name.equalsIgnoreCase("event=")) {
e.commandTagUsed();
PanelCommandEvent commandEvent = new PanelCommandEvent(e.p, String.join(" ",e.args), e.panel);
PanelInteractionEvent commandEvent = new PanelInteractionEvent(e.p, String.join(" ",e.args), e.panel);
Bukkit.getPluginManager().callEvent(commandEvent);
return;
}
if(e.name.equalsIgnoreCase("minimessage=")){
e.commandTagUsed();
//do mini message if conditions are met
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18)) {
if(ctx.version.isAtLeast("1.18")){
Audience player = (Audience) e.p; // Needed because the basic Player from the Event can't send Paper's Components
Component parsedText = ctx.miniMessage.doMiniMessage(String.join(" ", e.args));
player.sendMessage(parsedText);
} else {
ctx.tex.sendString(e.p, ctx.tag + ChatColor.RED + "MiniMessage-Feature needs Paper 1.18 or newer to work!");
ctx.text.sendString(e.p, ctx.tag + ChatColor.RED + "MiniMessage-Feature needs Paper 1.18 or newer to work!");
}
}
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.commandtags.tags.standard;
package me.rockyhawk.commandpanels.interaction.commands.tags.standard;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -46,7 +46,7 @@ public class BungeeTags implements Listener {
out.writeUTF(e.args[0]);
player.sendPluginMessage(ctx.plugin, "BungeeCord", out.toByteArray());
}else{
player.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
player.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.perms")));
}
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.commandtags.tags.standard;
package me.rockyhawk.commandpanels.interaction.commands.tags.standard;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.interaction.commands.CommandTagEvent;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.interactives.input;
package me.rockyhawk.commandpanels.interaction.input;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.event.inventory.ClickType;

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.interactives.input;
package me.rockyhawk.commandpanels.interaction.input;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -47,10 +47,10 @@ public class PlayerInputUtils implements Listener {
if((playerInput.get(e.getPlayer()).panel.getConfig().getString("max-input-length") != null) && (Integer.parseInt(playerInput.get(e.getPlayer()).panel.getConfig().getString("max-input-length")) != -1) && (e.getMessage().length() > Integer.parseInt(playerInput.get(e.getPlayer()).panel.getConfig().getString("max-input-length")))) {
e.getPlayer().sendMessage(ctx.tex.colour(ctx.tag + playerInput.get(e.getPlayer()).panel.getConfig().getString("custom-messages.input")));
e.getPlayer().sendMessage(ctx.text.colour(ctx.tag + playerInput.get(e.getPlayer()).panel.getConfig().getString("custom-messages.input")));
return;
}else if(e.getMessage().length() > Integer.parseInt(ctx.configHandler.config.getString("input.max-input-length")) && (Integer.parseInt(ctx.configHandler.config.getString("input.max-input-length")) != -1)) {
e.getPlayer().sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.input")));
e.getPlayer().sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.input")));
return;
}
//get certain words from the input
@ -86,7 +86,7 @@ public class PlayerInputUtils implements Listener {
}
for (String temp : inputMessages) {
temp = temp.replaceAll("%cp-args%", Objects.requireNonNull(ctx.configHandler.config.getString("input.input-cancel")));
p.sendMessage(ctx.tex.placeholders(panel,pos,p, temp));
p.sendMessage(ctx.text.placeholders(panel,pos,p, temp));
}
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.playerinventoryhandler;
package me.rockyhawk.commandpanels.inventory;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.events.PanelOpenedEvent;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.playerinventoryhandler;
package me.rockyhawk.commandpanels.inventory;
import me.rockyhawk.commandpanels.Context;
import org.bukkit.inventory.ItemStack;

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.playerinventoryhandler.pickupevent;
package me.rockyhawk.commandpanels.inventory.pickupevent;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.playerinventoryhandler.pickupevent;
package me.rockyhawk.commandpanels.inventory.pickupevent;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

View File

@ -1,59 +0,0 @@
package me.rockyhawk.commandpanels.ioclasses.legacy;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.ioclasses.storagecontents.GetStorageContents;
import me.rockyhawk.commandpanels.ioclasses.storagecontents.GetStorageContentsLegacy;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class LegacyVersion {
Context ctx;
public MinecraftVersions MAJOR_VERSION; //The major version of the server (eg, converts 1.20.5 to 1.20)
public int MINOR_VERSION; //The minor version of the server (1.20.5 to 5)
public LegacyVersion(Context pl) {
this.ctx = pl;
String VERSION = ctx.plugin.getServer().getBukkitVersion().split("-")[0];
MAJOR_VERSION = MinecraftVersions.get(extractMajorVersion(VERSION));
MINOR_VERSION = extractMinorVersion(VERSION);
}
public String extractMajorVersion(String version) {
String[] parts = version.split("\\.");
if (parts.length < 2) {
// Handle the case where there aren't enough parts for a "major.major.minor" format.
return version; // Return the original version.
}
return parts[0] + "." + parts[1];
}
public Integer extractMinorVersion(String version) {
String[] parts = version.split("\\.");
if (parts.length > 2) {
// Take only the third part and convert it to an integer.
try {
return Integer.parseInt(parts[2]);
} catch (NumberFormatException e) {
return 0;
}
}
return 0; // Return 0 if there are no parts beyond the first two.
}
public ItemStack[] getStorageContents(Inventory i){
if(MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
return new GetStorageContentsLegacy().getStorageContents(i);
}else{
return new GetStorageContents().getStorageContents(i);
}
}
public void setStorageContents(Player p, ItemStack[] i){
if(MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
new GetStorageContentsLegacy().setStorageContents(p,i);
}else{
new GetStorageContents().setStorageContents(p,i);
}
}
}

View File

@ -1,45 +0,0 @@
package me.rockyhawk.commandpanels.ioclasses.legacy;
public enum MinecraftVersions {
v1_8( "1.8", 0 ),
v1_9( "1.9", 1 ),
v1_10( "1.10", 2 ),
v1_11( "1.11", 3 ),
v1_12( "1.12", 4 ),
v1_13( "1.13", 5 ),
v1_14( "1.14", 6 ),
v1_15( "1.15", 7 ),
v1_16( "1.16", 8 ),
v1_17( "1.17", 9 ),
v1_18( "1.18", 10 ),
v1_19( "1.19", 11 ),
v1_20( "1.20", 12 ),
v1_21( "1.21", 13 ),
v1_22( "1.22", 14 );
private int order;
private String key;
MinecraftVersions( String key, int v ) {
this.key = key;
order = v;
}
public boolean greaterThanOrEqualTo( MinecraftVersions other ) {
return order >= other.order;
}
public boolean lessThanOrEqualTo( MinecraftVersions other ) {
return order <= other.order;
}
public static MinecraftVersions get(String v ) {
for ( MinecraftVersions k : MinecraftVersions.values() ) {
if ( v.contains( k.key ) ) {
return k;
}
}
return null;
}
}

View File

@ -1,22 +0,0 @@
package me.rockyhawk.commandpanels.ioclasses.legacy;
import me.rockyhawk.commandpanels.Context;
public class PlayerHeads {
Context ctx;
public PlayerHeads(Context pl) {
this.ctx = pl;
}
public boolean ifSkullOrHead(String material) {
return material.equalsIgnoreCase("PLAYER_HEAD") || material.equalsIgnoreCase("SKULL_ITEM");
}
public String playerHeadString() {
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
return "SKULL_ITEM";
}else{
return "PLAYER_HEAD";
}
}
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.classresources;
package me.rockyhawk.commandpanels.items;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
@ -51,8 +51,8 @@ public class HasSections {
continue;
}
String value = ChatColor.stripColor(ctx.tex.placeholders(panel, position, p, currentSection.getString("value" + a)));
String compare = ChatColor.stripColor(ctx.tex.placeholders(panel, position, p, currentSection.getString("compare" + a)));
String value = ChatColor.stripColor(ctx.text.placeholders(panel, position, p, currentSection.getString("value" + a)));
String compare = ChatColor.stripColor(ctx.text.placeholders(panel, position, p, currentSection.getString("compare" + a)));
String operator = "AND"; // Default operator for the current condition.
if (compare.endsWith(" OR")) {

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.classresources;
package me.rockyhawk.commandpanels.items;
import com.google.common.collect.ImmutableMultimap;
import de.tr7zw.changeme.nbtapi.NBTItem;
@ -6,8 +6,7 @@ import dev.lone.itemsadder.api.CustomStack;
import me.arcaniax.hdb.api.HeadDatabaseAPI;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem;
import net.Indyuce.mmoitems.manager.ItemManager;
@ -42,14 +41,14 @@ public class ItemCreation {
@SuppressWarnings("deprecation")
public ItemStack makeItemFromConfig(Panel panel, PanelPosition position, ConfigurationSection itemSection, Player p, boolean placeholders, boolean colours, boolean addNBT){
String material = ctx.tex.placeholdersNoColour(panel,position,p,itemSection.getString("material"));
String material = ctx.text.placeholdersNoColour(panel,position,p,itemSection.getString("material"));
try {
if (Objects.requireNonNull(material).equalsIgnoreCase("AIR")) {
return null;
}
}catch(NullPointerException e){
ctx.debug.send(e,p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: could not load material!"));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: could not load material!"));
return null;
}
ItemStack s = null;
@ -86,16 +85,16 @@ public class ItemCreation {
}
if (matraw.split("\\s")[0].equalsIgnoreCase("cps=") || matraw.split("\\s")[0].toLowerCase().equals("cpo=")) {
skullname = p.getUniqueId().toString();
mat = ctx.getHeads.playerHeadString();
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
mat = ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD";
if(ctx.version.isBelow("1.13")){
id = 3;
}
}
if (matraw.split("\\s")[0].equalsIgnoreCase("hdb=")) {
skullname = "hdb";
mat = ctx.getHeads.playerHeadString();
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
mat = ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD";
if(ctx.version.isBelow("1.13")){
id = 3;
}
}
@ -189,7 +188,7 @@ public class ItemCreation {
BookMeta bookMeta = (BookMeta) s.getItemMeta();
bookMeta.setTitle(matraw.split("\\s")[1]);
bookMeta.setAuthor(matraw.split("\\s")[1]);
List<String> bookLines = ctx.tex.placeholdersList(panel,position,p,itemSection.getStringList("write"),true);
List<String> bookLines = ctx.text.placeholdersList(panel,position,p,itemSection.getStringList("write"),true);
String result = bookLines.stream().map(String::valueOf).collect(Collectors.joining("\n" + ChatColor.RESET, "", ""));
bookMeta.setPages(result);
s.setItemMeta(bookMeta);
@ -212,27 +211,27 @@ public class ItemCreation {
if (matraw.split("\\s")[1].equalsIgnoreCase("self")) {
//if cps= self
meta = (SkullMeta) s.getItemMeta();
if(!ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
if(ctx.version.isAtLeast("1.13")){
try {
assert meta != null;
meta.setOwningPlayer(Bukkit.getOfflinePlayer(UUID.fromString(skullname)));
} catch (Exception var23) {
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: cps= self"));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: cps= self"));
ctx.debug.send(var23,p, ctx);
}
}else{
meta.setOwner(p.getName());
}
s.setItemMeta(meta);
}else if (ctx.tex.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]).length() <= 16) {
}else if (ctx.text.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]).length() <= 16) {
//if cps= username
s = ctx.customHeads.getPlayerHead(ctx.tex.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]));
s = ctx.customHeads.getPlayerHead(ctx.text.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]));
} else {
//custom data cps= base64
s = ctx.customHeads.getCustomHead(ctx.tex.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]));
s = ctx.customHeads.getCustomHead(ctx.text.placeholdersNoColour(panel,position,p,matraw.split("\\s")[1]));
}
} catch (Exception var32) {
p.sendMessage(ctx.tex.colour( ctx.tag + ctx.configHandler.config.getString("config.format.error") + " head material: Could not load skull"));
p.sendMessage(ctx.text.colour( ctx.tag + ctx.configHandler.config.getString("config.format.error") + " head material: Could not load skull"));
ctx.debug.send(var32,p, ctx);
}
}
@ -250,11 +249,11 @@ public class ItemCreation {
try {
s = api.getItemHead(matraw.split("\\s")[1].trim());
} catch (Exception var22) {
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " hdb: could not load skull!"));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " hdb: could not load skull!"));
ctx.debug.send(var22,p, ctx);
}
} else {
p.sendMessage(ctx.tex.colour(ctx.tag + "Download HeadDatabaseHook from Spigot to use this feature!"));
p.sendMessage(ctx.text.colour(ctx.tag + "Download HeadDatabaseHook from Spigot to use this feature!"));
}
}
@ -302,7 +301,7 @@ public class ItemCreation {
s.setItemMeta(EnchantMeta);
}
} catch (Exception ench) {
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " enchanted: " + itemSection.getString("enchanted")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " enchanted: " + itemSection.getString("enchanted")));
ctx.debug.send(ench,p, ctx);
}
}
@ -316,7 +315,7 @@ public class ItemCreation {
Method setItemModelMethod = ItemMeta.class.getMethod("setItemModel", NamespacedKey.class);
// Invoke it dynamically
setItemModelMethod.invoke(itemMeta, NamespacedKey.fromString(ctx.tex.placeholders(panel, position, p, itemSection.getString("itemmodel"))));
setItemModelMethod.invoke(itemMeta, NamespacedKey.fromString(ctx.text.placeholders(panel, position, p, itemSection.getString("itemmodel"))));
s.setItemMeta(itemMeta);
} catch (NoSuchMethodException e) {
@ -335,7 +334,7 @@ public class ItemCreation {
Method setTooltipMethod = ItemMeta.class.getMethod("setTooltipStyle", NamespacedKey.class);
// Invoke it dynamically
setTooltipMethod.invoke(itemMeta, NamespacedKey.fromString(ctx.tex.placeholders(panel, position, p, itemSection.getString("tooltip-style"))));
setTooltipMethod.invoke(itemMeta, NamespacedKey.fromString(ctx.text.placeholders(panel, position, p, itemSection.getString("tooltip-style"))));
s.setItemMeta(itemMeta);
} catch (NoSuchMethodException e) {
@ -347,7 +346,7 @@ public class ItemCreation {
if (itemSection.contains("customdata")) {
ItemMeta customMeta = s.getItemMeta();
assert customMeta != null;
customMeta.setCustomModelData(Integer.parseInt(ctx.tex.placeholders(panel,position,p,itemSection.getString("customdata"))));
customMeta.setCustomModelData(Integer.parseInt(ctx.text.placeholders(panel,position,p,itemSection.getString("customdata"))));
s.setItemMeta(customMeta);
}
try {
@ -355,7 +354,7 @@ public class ItemCreation {
BannerMeta bannerMeta = (BannerMeta) s.getItemMeta();
List<Pattern> patterns = new ArrayList<>(); //Load patterns in order top to bottom
for (String temp : itemSection.getStringList("banner")) {
temp = ctx.tex.placeholdersNoColour(panel,position,p,temp);
temp = ctx.text.placeholdersNoColour(panel,position,p,temp);
String[] dyePattern = temp.split(",");
patterns.add(new Pattern(DyeColor.valueOf(dyePattern[0]), PatternType.valueOf(dyePattern[1]))); //load patterns in config: RED,STRIPE_TOP
}
@ -374,7 +373,7 @@ public class ItemCreation {
s.getType() == Material.LEATHER_HELMET ||
s.getType() == Material.matchMaterial("LEATHER_HORSE_ARMOR")) { //avoid exceptions on older versions which don't have leather armour
LeatherArmorMeta leatherMeta = (LeatherArmorMeta) s.getItemMeta();
String colourCode = ctx.tex.placeholdersNoColour(panel,position,p,itemSection.getString("leatherarmor"));
String colourCode = ctx.text.placeholdersNoColour(panel,position,p,itemSection.getString("leatherarmor"));
assert colourCode != null;
if (!colourCode.contains(",")) {
//use a color name
@ -396,17 +395,16 @@ public class ItemCreation {
} catch (Exception er) {
//don't colour the armor
ctx.debug.send(er,p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " leatherarmor: " + itemSection.getString("leatherarmor")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " leatherarmor: " + itemSection.getString("leatherarmor")));
}
}
if (itemSection.contains("potion")) {
//if the item is a potion, give it an effect
String[] effectType = ctx.tex.placeholdersNoColour(panel,position,p,itemSection.getString("potion")).split("\\s");
String[] effectType = ctx.text.placeholdersNoColour(panel,position,p,itemSection.getString("potion")).split("\\s");
//potion legacy or current
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_19) ||
(ctx.legacy.MAJOR_VERSION == MinecraftVersions.v1_20 && ctx.legacy.MINOR_VERSION <= 4)){
if(ctx.legacy.MAJOR_VERSION.equals(MinecraftVersions.v1_8)){
if(ctx.version.isBelow("1.20.5")){
if(ctx.version.isBelow("1.9")){
ctx.classicPotion.applyPotionEffect(p, s, effectType);
}else {
ctx.legacyPotion.applyPotionEffect(p, s, effectType);
@ -422,13 +420,13 @@ public class ItemCreation {
} catch (Exception er) {
//don't add the effect
ctx.debug.send(er,p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ChatColor.RED + ctx.configHandler.config.getString("config.format.error") + " potion: " + itemSection.getString("potion")));
p.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + ctx.configHandler.config.getString("config.format.error") + " potion: " + itemSection.getString("potion")));
}
}
}
if(itemSection.contains("potion-color")){
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_11)){
if(ctx.version.isAtLeast("1.11")){
String[] rgb = Objects.requireNonNull(itemSection.getString("potion-color")).split(",");
Color color = Color.fromRGB(Integer.parseInt(rgb[0]), Integer.parseInt(rgb[1]), Integer.parseInt(rgb[2]));
PotionMeta potionMeta = (PotionMeta)s.getItemMeta();
@ -441,12 +439,12 @@ public class ItemCreation {
if (itemSection.contains("damage")) {
//change the damage amount (placeholders accepted)
//if the damage is not unbreakable and should be a value
if (ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)) {
if(ctx.version.isBelow("1.13")){
try {
s.setDurability(Short.parseShort(Objects.requireNonNull(ctx.tex.placeholders(panel,position,p, itemSection.getString("damage")))));
s.setDurability(Short.parseShort(Objects.requireNonNull(ctx.text.placeholders(panel,position,p, itemSection.getString("damage")))));
} catch (Exception e) {
ctx.debug.send(e, p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
}
} else {
if(itemSection.getString("damage").equalsIgnoreCase("-1")){
@ -457,17 +455,17 @@ public class ItemCreation {
}else {
try {
Damageable itemDamage = (Damageable) s.getItemMeta();
itemDamage.setDamage(Integer.parseInt(Objects.requireNonNull(ctx.tex.placeholders(panel, position, p, itemSection.getString("damage")))));
itemDamage.setDamage(Integer.parseInt(Objects.requireNonNull(ctx.text.placeholders(panel, position, p, itemSection.getString("damage")))));
s.setItemMeta((ItemMeta) itemDamage);
} catch (Exception e) {
ctx.debug.send(e, p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " damage: " + itemSection.getString("damage")));
}
}
}
}
// 1.20 Trim Feature for Player Armor
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20) && itemSection.contains("trim")){
if(ctx.version.isAtLeast("1.20") && itemSection.contains("trim")){
// trim: <Material> <Pattern>
String trim = itemSection.getString("trim");
String[] trimList = trim.split("\\s");
@ -491,7 +489,7 @@ public class ItemCreation {
}
if (itemSection.contains("stack")) {
//change the stack amount (placeholders accepted)
int amount = (int)Double.parseDouble(Objects.requireNonNull(ctx.tex.placeholders(panel,position,p,itemSection.getString("stack"))));
int amount = (int)Double.parseDouble(Objects.requireNonNull(ctx.text.placeholders(panel,position,p,itemSection.getString("stack"))));
s.setAmount(amount);
}
//do the items commands throughout the refresh
@ -505,7 +503,7 @@ public class ItemCreation {
}
} catch (IllegalArgumentException | NullPointerException var33) {
ctx.debug.send(var33,p, ctx);
p.sendMessage(ctx.tex.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: " + itemSection.getString("material")));
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " material: " + itemSection.getString("material")));
return null;
}
s = setName(panel,s, itemSection.getString("name"), itemSection.getStringList("lore"), p, placeholders, colours, hideAttributes, hideTooltip);
@ -526,10 +524,10 @@ public class ItemCreation {
ItemMeta renamedMeta = renamed.getItemMeta();
//set cp placeholders
if (usePlaceholders) {
customName = ctx.tex.placeholdersNoColour(panel, PanelPosition.Top, p, customName);
customName = ctx.text.placeholdersNoColour(panel, PanelPosition.Top, p, customName);
}
if (useColours) {
customName = ctx.tex.colour(customName);
customName = ctx.text.colour(customName);
}
assert renamedMeta != null;
@ -538,32 +536,29 @@ public class ItemCreation {
renamedMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
renamedMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
//HIDE_ADDITIONAL_TOOLTIP was added into 1.20.5 api
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20) && ctx.legacy.MINOR_VERSION >= 5)) {
if(ctx.version.isAtLeast("1.20.5")){
renamedMeta.addItemFlags(ItemFlag.valueOf("HIDE_ADDITIONAL_TOOLTIP"));
}
//HIDE_POTION_EFFECTS was removed in the 1.20.5 api
if (ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_19) ||
(ctx.legacy.MAJOR_VERSION == MinecraftVersions.v1_20 && ctx.legacy.MINOR_VERSION <= 4)) {
if(ctx.version.isBelow("1.20.5")){
renamedMeta.addItemFlags(ItemFlag.valueOf("HIDE_POTION_EFFECTS"));
}
//HIDE_ARMOR_TRIM was added into 1.20 api
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_20)) {
if(ctx.version.isAtLeast("1.20")){
renamedMeta.addItemFlags(ItemFlag.HIDE_ARMOR_TRIM);
}
//HIDE_DYE was added into 1.17 api
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_17)) {
if(ctx.version.isAtLeast("1.17")){
renamedMeta.addItemFlags(ItemFlag.HIDE_DYE);
}
//setAttributeModifiers was added into 1.14 api
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_14)) {
if(ctx.version.isAtLeast("1.14")){
renamedMeta.setAttributeModifiers(ImmutableMultimap.of());
}
}
//HIDE TOOLTIP added in 1.21.4 which hides box of item when hovering
if (hideTooltip) {
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_22) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) && ctx.legacy.MINOR_VERSION >= 4)) {
if(ctx.version.isAtLeast("1.21.4")){
try {
// Check if the setHideTooltip method exists
Method setHideTooltipMethod = ItemMeta.class.getMethod("setHideTooltip", boolean.class);
@ -585,11 +580,11 @@ public class ItemCreation {
List<String> re_lore;
if (lore != null) {
if (usePlaceholders && useColours) {
re_lore = ctx.tex.placeholdersList(panel, PanelPosition.Top, p, lore, true);
re_lore = ctx.text.placeholdersList(panel, PanelPosition.Top, p, lore, true);
} else if (usePlaceholders) {
re_lore = ctx.tex.placeholdersNoColour(panel, PanelPosition.Top, p, lore);
re_lore = ctx.text.placeholdersNoColour(panel, PanelPosition.Top, p, lore);
} else if (useColours) {
re_lore = ctx.tex.placeholdersList(panel, PanelPosition.Top, p, lore, false);
re_lore = ctx.text.placeholdersList(panel, PanelPosition.Top, p, lore, false);
} else {
re_lore = lore;
}
@ -647,14 +642,14 @@ public class ItemCreation {
}
}
}
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
if(ctx.version.isBelow("1.13")){
if (cont.getDurability() != 0 && !cont.getType().toString().equals("SKULL_ITEM")) {
file.set("panels." + panelName + ".item." + i + ".ID", cont.getDurability());
}
}
if(file.contains("panels." + panelName + ".item." + i + ".material")){
if(Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("%") || Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("=")){
if(!ctx.getHeads.ifSkullOrHead(cont.getType().toString())){
if(!cont.getType().toString().equalsIgnoreCase("PLAYER_HEAD") || cont.getType().toString().equalsIgnoreCase("SKULL_ITEM")){
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
}
}else{
@ -663,9 +658,10 @@ public class ItemCreation {
}else{
file.set("panels." + panelName + ".item." + i + ".material", cont.getType().toString());
}
if(ctx.getHeads.ifSkullOrHead(cont.getType().toString())){
if(cont.getType().toString().equalsIgnoreCase("PLAYER_HEAD") || cont.getType().toString().equalsIgnoreCase("SKULL_ITEM")){
if(!Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("%") && !Objects.requireNonNull(file.getString("panels." + panelName + ".item." + i + ".material")).contains("=")) {
file.set("panels." + panelName + ".item." + i + ".material", ctx.getHeads.playerHeadString());
file.set("panels." + panelName + ".item." + i + ".material",
ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD");
}
}
try {
@ -681,8 +677,7 @@ public class ItemCreation {
}
try {
//potion legacy PotionData or current PotionType
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_19) ||
(ctx.legacy.MAJOR_VERSION == MinecraftVersions.v1_20 && ctx.legacy.MINOR_VERSION <= 4)){
if(ctx.version.isBelow("1.20.5")){
if(ctx.legacyPotion.retrievePotionData(cont) != null) {
file.set("panels." + panelName + ".item." + i + ".potion", ctx.legacyPotion.retrievePotionData(cont));
}
@ -707,13 +702,12 @@ public class ItemCreation {
}
file.set("panels." + panelName + ".item." + i + ".name", Objects.requireNonNull(cont.getItemMeta()).getDisplayName());
file.set("panels." + panelName + ".item." + i + ".lore", Objects.requireNonNull(cont.getItemMeta()).getLore());
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_14)){
if(ctx.version.isAtLeast("1.14")){
if(cont.getItemMeta().hasCustomModelData()){
file.set("panels." + panelName + ".item." + i + ".customdata", Objects.requireNonNull(cont.getItemMeta()).getCustomModelData());
}
}
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_22) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) && ctx.legacy.MINOR_VERSION >= 4)){
if(ctx.version.isAtLeast("1.21.4")){
try {
// Check if the getItemModel method exists
Method getItemModelMethod = ItemMeta.class.getMethod("getItemModel");
@ -786,7 +780,7 @@ public class ItemCreation {
}catch(Exception ignore){}
//check for ID 1.12.2 and below
try {
if (ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12) &&
if (ctx.version.isBelow("1.13") &&
(one.getDurability() != two.getDurability())) {
return false;
}
@ -801,7 +795,7 @@ public class ItemCreation {
}catch(Exception ignore){}
//check for custom model data
try {
if (ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_14)){
if (ctx.version.isAtLeast("1.14")){
if (one.getItemMeta().getCustomModelData() != (two.getItemMeta().getCustomModelData())) {
if(one.getItemMeta().hasCustomModelData()) {
return false;
@ -811,8 +805,7 @@ public class ItemCreation {
}catch(Exception ignore){}
//check for item model data
try {
if(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_22) ||
(ctx.legacy.MAJOR_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_21) && ctx.legacy.MINOR_VERSION >= 4)){
if(ctx.version.isAtLeast("1.21.4")){
try {
// Check if the getItemModel method exists
Method getItemModelMethod = ItemMeta.class.getMethod("getItemModel");
@ -841,7 +834,7 @@ public class ItemCreation {
}
//check for damage
try {
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_12)){
if(ctx.version.isBelow("1.13")){
if(one.getDurability() != two.getDurability()) {
return false;
}
@ -856,8 +849,7 @@ public class ItemCreation {
//check for potions
try {
//choose between legacy PotionData (pre 1.20.5) or PotionType
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_19) ||
(ctx.legacy.MAJOR_VERSION == MinecraftVersions.v1_20 && ctx.legacy.MINOR_VERSION <= 4)){
if(ctx.version.isBelow("1.20.5")){
String potionOne = ctx.legacyPotion.retrievePotionData(one);
String potionTwo = ctx.legacyPotion.retrievePotionData(two);
if(!potionOne.equals(potionTwo)){

View File

@ -0,0 +1,8 @@
package me.rockyhawk.commandpanels.items.customheads;
import org.bukkit.inventory.ItemStack;
public interface CustomHeadProvider {
ItemStack getCustomHead(String base64);
ItemStack getPlayerHead(String playerName);
}

View File

@ -0,0 +1,24 @@
package me.rockyhawk.commandpanels.items.customheads;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.items.customheads.methods.CustomHeadGameProfile;
import me.rockyhawk.commandpanels.items.customheads.methods.CustomHeadPlayerProfile;
import org.bukkit.inventory.ItemStack;
public class GetCustomHeads {
private final CustomHeadProvider headProvider;
public GetCustomHeads(Context ctx) {
this.headProvider = ctx.version.isAtLeast("1.18")
? new CustomHeadPlayerProfile()
: new CustomHeadGameProfile(ctx);
}
public ItemStack getCustomHead(String base64) {
return headProvider.getCustomHead(base64);
}
public ItemStack getPlayerHead(String playerName) {
return headProvider.getPlayerHead(playerName);
}
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.classresources.customheads;
package me.rockyhawk.commandpanels.items.customheads;
import org.bukkit.inventory.ItemStack;

View File

@ -1,11 +1,11 @@
package me.rockyhawk.commandpanels.classresources.customheads.methods;
package me.rockyhawk.commandpanels.items.customheads.methods;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import com.mojang.authlib.properties.PropertyMap;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.classresources.customheads.SavedCustomHead;
import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions;
import me.rockyhawk.commandpanels.items.customheads.CustomHeadProvider;
import me.rockyhawk.commandpanels.items.customheads.SavedCustomHead;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -20,7 +20,7 @@ import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.*;
public class CustomHeadGameProfile {
public class CustomHeadGameProfile implements CustomHeadProvider {
Context ctx;
public CustomHeadGameProfile(Context pl) {
this.ctx = pl;
@ -31,7 +31,7 @@ public class CustomHeadGameProfile {
//getting the head from a Player Name
public ItemStack getPlayerHead(String name) {
byte id = 0;
if (ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) {
if(ctx.version.isBelow("1.13")){
id = 3;
}
@ -39,7 +39,7 @@ public class CustomHeadGameProfile {
if (savedCustomHeads.containsKey(name)) {
if (!savedCustomHeads.get(name).isValid && (System.currentTimeMillis() - savedCustomHeads.get(name).lastAttempt) < 60000) {
// If the last attempt was less than 60 seconds ago and was invalid, return null or a default item
return new ItemStack(Material.valueOf(ctx.getHeads.playerHeadString()));
return new ItemStack(Material.valueOf(ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD"));
}
if(savedCustomHeads.get(name).isValid) {
return savedCustomHeads.get(name).headItem; // Return cached item if valid
@ -47,7 +47,7 @@ public class CustomHeadGameProfile {
}
//create ItemStack
ItemStack itemStack = new ItemStack(Material.matchMaterial(ctx.getHeads.playerHeadString()), 1, id);
ItemStack itemStack = new ItemStack(Material.matchMaterial(ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD"), 1, id);
//Run fallback code, if API call fails, use legacy setOwner
SkullMeta meta = (SkullMeta) itemStack.getItemMeta();
@ -58,7 +58,7 @@ public class CustomHeadGameProfile {
Bukkit.getScheduler().runTaskAsynchronously(ctx.plugin, () -> {
try {
if(ctx.debug.consoleDebug){
Bukkit.getServer().getConsoleSender().sendMessage(ctx.tex.colour(ctx.tag +
Bukkit.getServer().getConsoleSender().sendMessage(ctx.text.colour(ctx.tag +
ChatColor.WHITE +
"Download & Cache Head Texture for " + name));
}
@ -134,10 +134,10 @@ public class CustomHeadGameProfile {
} else {
propertyMap.put("textures", new Property("textures", b64stringtexture));
byte id = 0;
if(ctx.legacy.MAJOR_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)){
if(ctx.version.isBelow("1.13")){
id = 3;
}
ItemStack head = new ItemStack(Material.matchMaterial(ctx.getHeads.playerHeadString()), 1,id);
ItemStack head = new ItemStack(Material.matchMaterial(ctx.version.isBelow("1.13") ? "SKULL_ITEM" : "PLAYER_HEAD"), 1,id);
ItemMeta headMeta = head.getItemMeta();
assert headMeta != null;

View File

@ -1,7 +1,8 @@
package me.rockyhawk.commandpanels.classresources.customheads.methods;
package me.rockyhawk.commandpanels.items.customheads.methods;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import me.rockyhawk.commandpanels.items.customheads.CustomHeadProvider;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
@ -14,7 +15,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
public class CustomHeadPlayerProfile {
public class CustomHeadPlayerProfile implements CustomHeadProvider {
//cached itemstacks stored for access
public HashMap<String, ItemStack> savedCustomHeads = new HashMap<>();

View File

@ -1,6 +1,6 @@
package me.rockyhawk.commandpanels.classresources.item_fall;
package me.rockyhawk.commandpanels.items.dropitem;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.PanelClosedEvent;
import me.rockyhawk.commandpanels.events.PanelClosedEvent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
@ -8,9 +8,9 @@ import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
public class ItemFallManager implements Listener {
public class DroppedItemHandler implements Listener {
Context ctx;
public ItemFallManager(Context pl) {
public DroppedItemHandler(Context pl) {
this.ctx = pl;
}

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.classresources.item_fall;
package me.rockyhawk.commandpanels.items.dropitem;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.ioclasses.potions;
package me.rockyhawk.commandpanels.items.potions;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.ioclasses.potions;
package me.rockyhawk.commandpanels.items.potions;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.interactives;
package me.rockyhawk.commandpanels.manager;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -9,9 +9,9 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerJoinEvent;
public class OpenOnJoin implements Listener {
public class OpenEvent implements Listener {
Context ctx;
public OpenOnJoin(Context pl) {
public OpenEvent(Context pl) {
this.ctx = pl;
}
@EventHandler
@ -44,4 +44,4 @@ public class OpenOnJoin implements Listener {
ctx.commandRunner.runCommand(null, PanelPosition.Top,p, command);
}
}
}
}

View File

@ -0,0 +1,9 @@
package me.rockyhawk.commandpanels.manager;
public enum PanelOpenType {
Normal,
Return,
Refresh
}
// After refactoring this should no longer be a necessary enum to keep

View File

@ -0,0 +1,75 @@
package me.rockyhawk.commandpanels.manager.open;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.events.PanelOpenedEvent;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
public class OpenPanel {
public final PermissionValidator permission;
private final Context ctx;
private final PanelCommandExecutor commandExecutor;
private final SoundHandler soundPlayer;
private final PreLoadCommands preloader;
public OpenPanel(Context ctx) {
this.ctx = ctx;
this.permission = new PermissionValidator(ctx);
this.commandExecutor = new PanelCommandExecutor(ctx);
this.soundPlayer = new SoundHandler(ctx);
this.preloader = new PreLoadCommands(ctx);
}
public void open(CommandSender sender, Player p, Panel panel, PanelPosition position) {
if (p == null) {
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Player not found."));
return;
}
if (p.isSleeping()) return;
if ((ctx.debug.isEnabled(sender) || ctx.configHandler.isTrue("config.auto-update-panels")) && panel.getFile() != null) {
panel.setConfig(YamlConfiguration.loadConfiguration(panel.getFile()));
}
boolean openForOtherUser = !(sender instanceof Player && sender == p);
if (!permission.hasPermission(sender, p, panel, openForOtherUser)) return;
if (position != PanelPosition.Top && !ctx.openPanels.hasPanelOpen(p.getName(), PanelPosition.Top)) {
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.RED + "Cannot open a panel without a panel at the top already."));
return;
}
if (!ctx.openPanels.hasPanelOpen(p.getName(), PanelPosition.Top) && p.getOpenInventory().getType() != InventoryType.CRAFTING) {
p.closeInventory();
}
PanelOpenedEvent openedEvent = new PanelOpenedEvent(p, panel, position);
Bukkit.getPluginManager().callEvent(openedEvent);
if (openedEvent.isCancelled()) return;
preloader.executePreLoad(panel, position, p);
try {
ctx.createGUI.openGui(panel, p, position, PanelOpenType.Normal, 0);
commandExecutor.executeOpenCommands(panel, position, p);
soundPlayer.playOpenSound(panel, p);
if (openForOtherUser) {
sender.sendMessage(ctx.text.colour(ctx.tag + ChatColor.GREEN + "Panel Opened for " + p.getDisplayName()));
}
} catch (Exception r) {
ctx.debug.send(r, null, ctx);
sender.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error")));
ctx.openPanels.closePanelForLoader(p.getName(), position);
p.closeInventory();
}
}
}

View File

@ -0,0 +1,24 @@
package me.rockyhawk.commandpanels.manager.open;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
public class PanelCommandExecutor {
private final Context ctx;
public PanelCommandExecutor(Context ctx) {
this.ctx = ctx;
}
public void executeOpenCommands(Panel panel, PanelPosition position, Player p) {
if (panel.getConfig().contains("commands-on-open")) {
try {
ctx.commandRunner.runCommands(panel, position, p, panel.getConfig().getStringList("commands-on-open"), null);
} catch (Exception e) {
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " commands-on-open: " + panel.getConfig().getString("commands-on-open")));
}
}
}
}

View File

@ -0,0 +1,47 @@
package me.rockyhawk.commandpanels.manager.open;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
public class PermissionValidator {
private final Context ctx;
public PermissionValidator(Context ctx) {
this.ctx = ctx;
}
public boolean hasPermission(CommandSender sender, Player p, Panel panel, boolean openForOtherUser) {
String permMessage = panel.getConfig().getString("custom-messages.perms");
String defaultPerm = ctx.configHandler.config.getString("config.format.perms");
if (!sender.hasPermission("commandpanel.panel." + panel.getConfig().getString("perm"))) {
sender.sendMessage(ctx.text.colour(ctx.tag + (permMessage != null ? permMessage : defaultPerm)));
return false;
}
if (sender.hasPermission("commandpanel.other") || !openForOtherUser) {
if (!isPanelWorldEnabled(p, panel.getConfig())) {
sender.sendMessage(ctx.text.colour(ctx.tag + (permMessage != null ? permMessage : defaultPerm)));
return false;
}
return true;
}
sender.sendMessage(ctx.text.colour(ctx.tag + (permMessage != null ? permMessage : defaultPerm)));
return false;
}
//if panel has the world enabled
public boolean isPanelWorldEnabled(Player p, ConfigurationSection panelConfig){
if(panelConfig.contains("disabled-worlds")){
return !panelConfig.getStringList("disabled-worlds").contains(p.getWorld().getName());
}
if(panelConfig.contains("enabled-worlds")){
return panelConfig.getStringList("enabled-worlds").contains(p.getWorld().getName());
}
return true;
}
}

View File

@ -0,0 +1,24 @@
package me.rockyhawk.commandpanels.manager.open;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.entity.Player;
public class PreLoadCommands {
private final Context ctx;
public PreLoadCommands(Context ctx) {
this.ctx = ctx;
}
public void executePreLoad(Panel panel, PanelPosition position, Player p) {
if (panel.getConfig().contains("pre-load-commands")) {
try {
ctx.commandRunner.runCommands(panel, position, p, panel.getConfig().getStringList("pre-load-commands"), null);
} catch (Exception e) {
ctx.debug.send(e, p, ctx);
}
}
}
}

View File

@ -0,0 +1,34 @@
package me.rockyhawk.commandpanels.manager.open;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import java.util.Objects;
public class SoundHandler {
private final Context ctx;
public SoundHandler(Context ctx) {
this.ctx = ctx;
}
public void playOpenSound(Panel panel, Player p) {
if (panel.getConfig().contains("sound-on-open")) {
String soundStr = panel.getConfig().getString("sound-on-open");
if (!"off".equalsIgnoreCase(soundStr)) {
try {
String[] args = Objects.requireNonNull(soundStr).split(" ");
if (args.length >= 3) {
p.playSound(p.getLocation(), Sound.valueOf(args[0].toUpperCase()), Float.parseFloat(args[1]), Float.parseFloat(args[2]));
} else {
p.playSound(p.getLocation(), Sound.valueOf(soundStr.toUpperCase()), 1F, 1F);
}
} catch (Exception e) {
p.sendMessage(ctx.text.colour(ctx.tag + ctx.configHandler.config.getString("config.format.error") + " sound-on-open: " + soundStr));
}
}
}
}
}

View File

@ -1,9 +1,9 @@
package me.rockyhawk.commandpanels.interactives;
package me.rockyhawk.commandpanels.manager.refresh;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelOpenedEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType;
import me.rockyhawk.commandpanels.events.PanelOpenedEvent;
import me.rockyhawk.commandpanels.manager.PanelOpenType;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
import org.bukkit.configuration.file.YamlConfiguration;

View File

@ -1,4 +1,4 @@
package me.rockyhawk.commandpanels.openpanelsmanager;
package me.rockyhawk.commandpanels.manager.session;
public enum PanelPosition {
Top,

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.openpanelsmanager;
package me.rockyhawk.commandpanels.manager.session;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelClosedEvent;
import me.rockyhawk.commandpanels.events.PanelClosedEvent;
import me.rockyhawk.commandpanels.api.PanelsInterface;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -10,9 +10,9 @@ import org.bukkit.inventory.ItemStack;
import java.util.*;
public class OpenPanelsLoader {
public class SessionHandler {
Context ctx;
public OpenPanelsLoader(Context pl) {
public SessionHandler(Context pl) {
this.ctx = pl;
}

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.openpanelsmanager;
package me.rockyhawk.commandpanels.manager.session;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.api.PanelClosedEvent;
import me.rockyhawk.commandpanels.events.PanelClosedEvent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -14,16 +14,16 @@ import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerQuitEvent;
public class UtilsPanelsLoader implements Listener {
public class SessionUtils implements Listener {
Context ctx;
public UtilsPanelsLoader(Context pl) {
public SessionUtils(Context pl) {
this.ctx = pl;
}
//tell panel loader that player has opened panel
@EventHandler
public void onPlayerClosePanel(PlayerQuitEvent e){
ctx.openPanels.closePanelForLoader(e.getPlayer().getName(),PanelPosition.Top);
ctx.openPanels.closePanelForLoader(e.getPlayer().getName(), PanelPosition.Top);
Player p = e.getPlayer();
p.updateInventory();
ctx.openPanels.deleteCommandPanelsItems(p);

View File

@ -1,10 +1,10 @@
package me.rockyhawk.commandpanels.ioclasses.nbt;
package me.rockyhawk.commandpanels.nbt;
import de.tr7zw.changeme.nbtapi.NBTCompound;
import de.tr7zw.changeme.nbtapi.NBTItem;
import de.tr7zw.changeme.nbtapi.NBTType;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

View File

@ -1,7 +1,7 @@
package me.rockyhawk.commandpanels.ioclasses.nbt;
package me.rockyhawk.commandpanels.nbt;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

View File

@ -1,8 +1,8 @@
package me.rockyhawk.commandpanels.ioclasses.nbt;
package me.rockyhawk.commandpanels.nbt;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.api.Panel;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import me.rockyhawk.commandpanels.manager.session.PanelPosition;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;

Some files were not shown because too many files have changed in this diff Show More