diff --git a/pom.xml b/pom.xml
index 4b0e507..2751478 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
UltimateKits
4.0.0
- 2.4.14
+ 2.5
clean install
UltimateKits-${project.version}
@@ -106,91 +106,6 @@
LATEST
compile
-
- org
- kingdoms
- 13.0.9
-
-
- me.ryanhamshire
- GriefPrevention
- 16.6
-
-
- com.sk89q
- worldedit
- 7.0.0
-
-
- com.sk89q
- worldguard
- 7.0.0
-
-
- com
- plotsquared
- 3.5.0
-
-
- com.palmergames.bukkit
- towny
- 0.93.0.0
-
-
- com.wasteofplastic
- askyblock
- 3.0.6.8
-
-
- us.talabrek
- ultimateskyblock
- 2.7.2
-
-
- me.markeh
- factionsframework
- 1.2.0
-
-
- br.net.fabiozumbi12
- RedProtect
- 7.3.0
-
-
- com.gmail.nossr50
- mcmmo
- 1.5.09
-
-
- com.gamingmesh
- jobs
- 4.6.0
-
-
- me.botsko
- prism
- 2.0.6
-
-
- de.diddiz
- logblock
- 1.10.0
-
-
- net
- coreprotect
- 2.14.2
-
-
- uk.antiperson
- stackmob
- 2.2.6
-
-
- net.sothatsit
- blockstore
- 1.5.0
-
me.clip
placeholderapi
diff --git a/src/main/java/com/songoda/ultimatekits/UltimateKits.java b/src/main/java/com/songoda/ultimatekits/UltimateKits.java
index 72520d7..7bf0b21 100644
--- a/src/main/java/com/songoda/ultimatekits/UltimateKits.java
+++ b/src/main/java/com/songoda/ultimatekits/UltimateKits.java
@@ -13,6 +13,8 @@ import com.songoda.core.gui.GuiManager;
import com.songoda.core.hooks.EconomyManager;
import com.songoda.core.hooks.HologramManager;
import com.songoda.core.utils.TextUtils;
+import com.songoda.ultimatekits.category.Category;
+import com.songoda.ultimatekits.category.CategoryManager;
import com.songoda.ultimatekits.commands.*;
import com.songoda.ultimatekits.conversion.Convert;
import com.songoda.ultimatekits.database.DataManager;
@@ -23,11 +25,7 @@ import com.songoda.ultimatekits.handlers.ParticleHandler;
import com.songoda.ultimatekits.key.Key;
import com.songoda.ultimatekits.key.KeyManager;
import com.songoda.ultimatekits.kit.*;
-import com.songoda.ultimatekits.listeners.BlockListeners;
-import com.songoda.ultimatekits.listeners.ChatListeners;
-import com.songoda.ultimatekits.listeners.EntityListeners;
-import com.songoda.ultimatekits.listeners.InteractListeners;
-import com.songoda.ultimatekits.listeners.PlayerListeners;
+import com.songoda.ultimatekits.listeners.*;
import com.songoda.ultimatekits.settings.Settings;
import com.songoda.ultimatekits.utils.ItemSerializer;
import com.songoda.ultimatekits.utils.Methods;
@@ -42,9 +40,11 @@ import java.util.*;
import java.util.stream.Collectors;
public class UltimateKits extends SongodaPlugin {
+
private static UltimateKits INSTANCE;
private final Config kitConfig = new Config(this, "kit.yml");
+ private final Config categoryConfig = new Config(this, "category.yml");
private final Config dataFile = new Config(this, "data.yml");
private final Config keyFile = new Config(this, "keys.yml");
@@ -55,6 +55,7 @@ public class UltimateKits extends SongodaPlugin {
private KitManager kitManager;
private CommandManager commandManager;
private KeyManager keyManager;
+ private CategoryManager categoryManager;
private ItemSerializer itemSerializer;
@@ -102,10 +103,13 @@ public class UltimateKits extends SongodaPlugin {
this.kitManager = new KitManager();
this.keyManager = new KeyManager();
+ this.categoryManager = new CategoryManager(this);
kitConfig.load();
Convert.runKitConversions();
+ categoryConfig.load();
+
// load kits
dataFile.load();
keyFile.load();
@@ -121,6 +125,7 @@ public class UltimateKits extends SongodaPlugin {
.addSubCommand(new CommandReload())
.addSubCommand(new CommandSettings(guiManager))
.addSubCommand(new CommandCreatekit(guiManager))
+ .addSubCommand(new CommandCategories(guiManager))
.addSubCommand(new CommandEdit(guiManager))
.addSubCommand(new CommandKey())
.addSubCommand(new CommandSet())
@@ -181,7 +186,7 @@ public class UltimateKits extends SongodaPlugin {
@Override
public List getExtraConfig() {
- return Arrays.asList(kitConfig, keyFile);
+ return Arrays.asList(kitConfig, keyFile, categoryConfig);
}
@Override
@@ -190,35 +195,54 @@ public class UltimateKits extends SongodaPlugin {
this.dataManager.bulkUpdateBlockData(this.getKitManager().getKitLocations());
kitConfig.load();
+ categoryConfig.load();
loadKits();
}
void loadKits() {
Bukkit.getScheduler().runTaskLater(this, () -> {
+ //Empty categories from manager.
+ categoryManager.clearCategories();
+
+ /*
+ * Register categories into CategoryManager from Configuration.
+ */
+ if (categoryConfig.getConfigurationSection("Categories") != null)
+ for (String key : categoryConfig.getConfigurationSection("Categories").getKeys(false)) {
+ ConfigurationSection section = categoryConfig.getConfigurationSection("Categories." + key);
+ if (section == null) continue;
+
+ Category category = categoryManager.addCategory(key, section.getString("name"));
+ if (section.contains("material"))
+ category.setMaterial(CompatibleMaterial.getMaterial(section.getString("material")).getMaterial());
+ }
+
//Empty kits from manager.
kitManager.clearKits();
/*
- * Register kit into KitManager from Configuration.
+ * Register kits into KitManager from Configuration.
*/
- for (String kitName : kitConfig.getConfigurationSection("Kits").getKeys(false)) {
- ConfigurationSection section = kitConfig.getConfigurationSection("Kits." + kitName);
- if (section == null) continue;
+ if (kitConfig.getConfigurationSection("Kits") != null)
+ for (String kitName : kitConfig.getConfigurationSection("Kits").getKeys(false)) {
+ ConfigurationSection section = kitConfig.getConfigurationSection("Kits." + kitName);
+ if (section == null) continue;
- kitManager.addKit(new Kit(kitName)
- .setTitle(section.getString("title"))
- .setDelay(section.getLong("delay"))
- .setLink(section.getString("link"))
- .setDisplayItem(section.contains("displayItem")
- ? CompatibleMaterial.getMaterial(section.getString("displayItem"), CompatibleMaterial.DIAMOND_HELMET)
- : null)
- .setHidden(section.getBoolean("hidden"))
- .setPrice(section.getDouble("price"))
- .setContents(section.getStringList("items").stream().map(KitItem::new).collect(Collectors.toList()))
- .setKitAnimation(KitAnimation.valueOf(section.getString("animation", KitAnimation.NONE.name())))
- );
- }
+ kitManager.addKit(new Kit(kitName)
+ .setTitle(section.getString("title"))
+ .setDelay(section.getLong("delay"))
+ .setLink(section.getString("link"))
+ .setDisplayItem(section.contains("displayItem")
+ ? CompatibleMaterial.getMaterial(section.getString("displayItem"), CompatibleMaterial.DIAMOND_HELMET)
+ : null)
+ .setCategory(categoryManager.getCategory(section.getString("category")))
+ .setHidden(section.getBoolean("hidden"))
+ .setPrice(section.getDouble("price"))
+ .setContents(section.getStringList("items").stream().map(KitItem::new).collect(Collectors.toList()))
+ .setKitAnimation(KitAnimation.valueOf(section.getString("animation", KitAnimation.NONE.name())))
+ );
+ }
/*
* Register legacy kit locations into KitManager from Configuration.
@@ -276,7 +300,8 @@ public class UltimateKits extends SongodaPlugin {
public void removeHologram(KitBlockData data) {
if (HologramManager.isEnabled()) {
- Location location = getKitLocation(data, Settings.HOLOGRAM_LAYOUT.getStringList().size());
+ List lines = formatHologram(data);
+ Location location = getKitLocation(data, lines.size());
HologramManager.removeHologram(location);
}
}
@@ -344,7 +369,7 @@ public class UltimateKits extends SongodaPlugin {
case "{TITLE}":
String title = kit.getTitle();
if (title == null) {
- lines.add(ChatColor.DARK_PURPLE + TextUtils.formatText(kit.getName(), true));
+ lines.add(ChatColor.DARK_PURPLE + TextUtils.formatText(kit.getKey(), true));
} else {
lines.add(ChatColor.DARK_PURPLE + TextUtils.formatText(title));
}
@@ -395,35 +420,54 @@ public class UltimateKits extends SongodaPlugin {
// Hot fix for kit file resets.
if (kitConfig.contains("Kits"))
for (String kitName : kitConfig.getConfigurationSection("Kits").getKeys(false)) {
- if (kitManager.getKits().stream().noneMatch(kit -> kit.getName().equals(kitName)))
+ if (kitManager.getKits().stream().noneMatch(kit -> kit.getKey().equals(kitName)))
kitConfig.set("Kits." + kitName, null);
}
+ // Hot fix for category file resets.
+ if (categoryConfig.contains("Categories"))
+ for (String key : categoryConfig.getConfigurationSection("Categories").getKeys(false)) {
+ if (categoryManager.getCategories().stream().noneMatch(category -> category.getKey().equals(key)))
+ categoryConfig.set("Categories." + key, null);
+ }
+
/*
- * Save kit from KitManager to Configuration.
+ * Save kits from KitManager to Configuration.
*/
for (Kit kit : kitManager.getKits()) {
- kitConfig.set("Kits." + kit.getName() + ".delay", kit.getDelay());
- kitConfig.set("Kits." + kit.getName() + ".title", kit.getTitle());
- kitConfig.set("Kits." + kit.getName() + ".link", kit.getLink());
- kitConfig.set("Kits." + kit.getName() + ".price", kit.getPrice());
- kitConfig.set("Kits." + kit.getName() + ".hidden", kit.isHidden());
- kitConfig.set("Kits." + kit.getName() + ".animation", kit.getKitAnimation().name());
+ kitConfig.set("Kits." + kit.getKey() + ".delay", kit.getDelay());
+ kitConfig.set("Kits." + kit.getKey() + ".title", kit.getTitle());
+ kitConfig.set("Kits." + kit.getKey() + ".link", kit.getLink());
+ kitConfig.set("Kits." + kit.getKey() + ".price", kit.getPrice());
+ kitConfig.set("Kits." + kit.getKey() + ".hidden", kit.isHidden());
+ kitConfig.set("Kits." + kit.getKey() + ".animation", kit.getKitAnimation().name());
+ if (kit.getCategory() != null)
+ kitConfig.set("Kits." + kit.getKey() + ".category", kit.getCategory().getKey());
if (kit.getDisplayItem() != null)
- kitConfig.set("Kits." + kit.getName() + ".displayItem", kit.getDisplayItem().toString());
+ kitConfig.set("Kits." + kit.getKey() + ".displayItem", kit.getDisplayItem().toString());
else
- kitConfig.set("Kits." + kit.getName() + ".displayItem", null);
+ kitConfig.set("Kits." + kit.getKey() + ".displayItem", null);
List contents = kit.getContents();
List strContents = new ArrayList<>();
for (KitItem item : contents) strContents.add(item.getSerialized());
- kitConfig.set("Kits." + kit.getName() + ".items", strContents);
+ kitConfig.set("Kits." + kit.getKey() + ".items", strContents);
}
+ /*
+ * Save categories from CategoryManager to Configuration.
+ */
+ for (Category category : categoryManager.getCategories()) {
+ categoryConfig.set("Categories." + category.getKey() + ".name", category.getName());
+ categoryConfig.set("Categories." + category.getKey() + ".material", category.getMaterial().name());
+ }
+
+
// Save to file
kitConfig.saveChanges();
+ categoryConfig.saveChanges();
}
/*
@@ -504,4 +548,8 @@ public class UltimateKits extends SongodaPlugin {
public DataManager getDataManager() {
return dataManager;
}
+
+ public CategoryManager getCategoryManager() {
+ return categoryManager;
+ }
}
diff --git a/src/main/java/com/songoda/ultimatekits/category/Category.java b/src/main/java/com/songoda/ultimatekits/category/Category.java
new file mode 100644
index 0000000..04340bb
--- /dev/null
+++ b/src/main/java/com/songoda/ultimatekits/category/Category.java
@@ -0,0 +1,50 @@
+package com.songoda.ultimatekits.category;
+
+import org.bukkit.Material;
+
+import java.util.Objects;
+
+public class Category {
+
+ private final String key;
+ private String name;
+ private Material material = Material.DIAMOND;
+
+ public Category(String key, String name) {
+ this.key = key;
+ this.name = name;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Material getMaterial() {
+ return material;
+ }
+
+ public void setMaterial(Material material) {
+ this.material = material;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Category category = (Category) o;
+ return Objects.equals(key, category.key);
+ }
+}
diff --git a/src/main/java/com/songoda/ultimatekits/category/CategoryManager.java b/src/main/java/com/songoda/ultimatekits/category/CategoryManager.java
new file mode 100644
index 0000000..270c09f
--- /dev/null
+++ b/src/main/java/com/songoda/ultimatekits/category/CategoryManager.java
@@ -0,0 +1,53 @@
+package com.songoda.ultimatekits.category;
+
+import com.songoda.core.utils.TextUtils;
+import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.kit.Kit;
+import org.bukkit.ChatColor;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class CategoryManager {
+
+ private final UltimateKits plugin;
+
+ private final Map registeredCategories = new LinkedHashMap<>();
+
+ public CategoryManager(UltimateKits plugin) {
+ this.plugin = plugin;
+ }
+
+ public Category getCategory(String key) {
+ return registeredCategories.get(key);
+ }
+
+ public Category getCategoryByName(String name) {
+ return registeredCategories.values().stream()
+ .filter(c -> ChatColor.stripColor(TextUtils.formatText(c.getName())).equalsIgnoreCase(name))
+ .findFirst().orElse(null);
+ }
+
+ public Category addCategory(String key, String name) {
+ Category category = new Category(key, name);
+ registeredCategories.put(key, category);
+ return category;
+ }
+
+ public void removeCategory(Category category) {
+ registeredCategories.remove(category.getKey());
+ for (Kit kit : plugin.getKitManager().getKits())
+ if (kit.getCategory() == category)
+ kit.setCategory(null);
+ }
+
+ public List getCategories() {
+ return new LinkedList(registeredCategories.values());
+ }
+
+ public void clearCategories() {
+ registeredCategories.clear();
+ }
+}
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandCategories.java b/src/main/java/com/songoda/ultimatekits/commands/CommandCategories.java
new file mode 100644
index 0000000..d3b1a55
--- /dev/null
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandCategories.java
@@ -0,0 +1,50 @@
+package com.songoda.ultimatekits.commands;
+
+import com.songoda.core.commands.AbstractCommand;
+import com.songoda.core.gui.GuiManager;
+import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.gui.CategoryEditorGui;
+import com.songoda.ultimatekits.gui.KitEditorGui;
+import com.songoda.ultimatekits.kit.Kit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class CommandCategories extends AbstractCommand {
+
+ final UltimateKits plugin = UltimateKits.getInstance();
+ final GuiManager guiManager;
+
+ public CommandCategories(GuiManager guiManager) {
+ super(CommandType.PLAYER_ONLY, "categories");
+ this.guiManager = guiManager;
+ }
+
+ @Override
+ protected ReturnType runCommand(CommandSender sender, String... args) {
+ guiManager.showGUI((Player)sender, new CategoryEditorGui(plugin, (Player)sender));
+ return ReturnType.SUCCESS;
+ }
+
+ @Override
+ protected List onTab(CommandSender sender, String... args) {
+ return null;
+ }
+
+ @Override
+ public String getPermissionNode() {
+ return "ultimatekits.admin";
+ }
+
+ @Override
+ public String getSyntax() {
+ return "/KitAdmin categories";
+ }
+
+ @Override
+ public String getDescription() {
+ return "Open the category editor.";
+ }
+}
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandEdit.java b/src/main/java/com/songoda/ultimatekits/commands/CommandEdit.java
index 0d0cc69..ddc7272 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandEdit.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandEdit.java
@@ -54,7 +54,7 @@ public class CommandEdit extends AbstractCommand {
List tab = new ArrayList<>();
if (args.length == 1) {
for (Kit kit : UltimateKits.getInstance().getKitManager().getKits())
- tab.add(kit.getName());
+ tab.add(kit.getKey());
return tab;
}
return tab;
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandKey.java b/src/main/java/com/songoda/ultimatekits/commands/CommandKey.java
index c1d40dc..393905e 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandKey.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandKey.java
@@ -60,14 +60,14 @@ public class CommandKey extends AbstractCommand {
if (playerTo != null) {
PlayerUtils.giveItem(playerTo, key.getKeyItem(kit, amt));
instance.getLocale().getMessage("event.key.given")
- .processPlaceholder("kit", kit == null ? "Any" : kit.getShowableName())
+ .processPlaceholder("kit", kit == null ? "Any" : kit.getName())
.sendPrefixedMessage(playerTo);
return ReturnType.SUCCESS;
}
for (Player pl : instance.getServer().getOnlinePlayers()) {
PlayerUtils.giveItem(pl, key.getKeyItem(kit, amt));
instance.getLocale().getMessage("event.key.given")
- .processPlaceholder("kit", kit == null ? "Any" : kit.getShowableName())
+ .processPlaceholder("kit", kit == null ? "Any" : kit.getName())
.sendPrefixedMessage(pl);
}
return ReturnType.SUCCESS;
@@ -82,7 +82,7 @@ public class CommandKey extends AbstractCommand {
if (args.length == 1) {
tab.add("all");
for (Kit kit : UltimateKits.getInstance().getKitManager().getKits())
- tab.add(kit.getName());
+ tab.add(kit.getKey());
return tab;
} else if (args.length == 2) {
for (Key key : UltimateKits.getInstance().getKeyManager().getKeys())
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandKit.java b/src/main/java/com/songoda/ultimatekits/commands/CommandKit.java
index 1205526..89ab27b 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandKit.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandKit.java
@@ -3,6 +3,7 @@ package com.songoda.ultimatekits.commands;
import com.songoda.core.commands.AbstractCommand;
import com.songoda.core.gui.GuiManager;
import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.gui.CategorySelectorGui;
import com.songoda.ultimatekits.gui.KitSelectorGui;
import com.songoda.ultimatekits.kit.Kit;
import org.bukkit.Bukkit;
@@ -28,7 +29,10 @@ public class CommandKit extends AbstractCommand {
if (args.length == 0 && sender instanceof Player) {
// /kit - Opens GUI.
- guiManager.showGUI((Player) sender, new KitSelectorGui(instance, (Player) sender));
+ if (instance.getKitManager().getKits().stream().anyMatch(kit -> kit.getCategory() != null))
+ guiManager.showGUI((Player) sender, new CategorySelectorGui(instance, (Player) sender));
+ else
+ guiManager.showGUI((Player) sender, new KitSelectorGui(instance, (Player) sender, null));
return ReturnType.SUCCESS;
}
@@ -45,7 +49,7 @@ public class CommandKit extends AbstractCommand {
return ReturnType.NEEDS_PLAYER;
- if (!kit.hasPermission((Player)sender)) {
+ if (!kit.hasPermission((Player) sender)) {
instance.getLocale().getMessage("command.general.noperms").sendPrefixedMessage(sender);
return ReturnType.FAILURE;
}
@@ -71,18 +75,18 @@ public class CommandKit extends AbstractCommand {
if (player != null) {
kit.processGenericUse(player, true);
instance.getLocale().getMessage("event.claim.givesuccess")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.sendPrefixedMessage(sender);
} else {
Bukkit.getOnlinePlayers().forEach(onlinePlayer -> {
kit.processGenericUse(onlinePlayer, true);
instance.getLocale().getMessage("event.claim.givesuccess")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.sendPrefixedMessage(sender);
});
}
- instance.getLocale().newMessage("&7You gave &9" + who + "&7 kit &9" + kit.getShowableName() + "&7.")
+ instance.getLocale().newMessage("&7You gave &9" + who + "&7 kit &9" + kit.getName() + "&7.")
.sendPrefixedMessage(sender);
return ReturnType.SUCCESS;
}
@@ -97,7 +101,7 @@ public class CommandKit extends AbstractCommand {
if (!(sender instanceof Player)) return tab;
if (args.length == 1) {
- for (Kit kit : instance.getKitManager().getKits()) tab.add(kit.getName());
+ for (Kit kit : instance.getKitManager().getKits()) tab.add(kit.getKey());
} else if (args.length == 2) {
tab.add("all");
Bukkit.getOnlinePlayers().forEach(player -> tab.add(player.getName()));
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandPreviewKit.java b/src/main/java/com/songoda/ultimatekits/commands/CommandPreviewKit.java
index 4772aaf..bdff49f 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandPreviewKit.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandPreviewKit.java
@@ -45,7 +45,7 @@ public class CommandPreviewKit extends AbstractCommand {
if (args.length == 2) {
List tab = new ArrayList<>();
for (Kit kit : UltimateKits.getInstance().getKitManager().getKits()) {
- tab.add(kit.getName());
+ tab.add(kit.getKey());
}
return tab;
}
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandRemove.java b/src/main/java/com/songoda/ultimatekits/commands/CommandRemove.java
index d4800f0..8af321e 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandRemove.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandRemove.java
@@ -31,7 +31,7 @@ public class CommandRemove extends AbstractCommand {
.forEach(data -> instance.removeHologram(data));
}
- instance.getLocale().newMessage("&8Kit &9" + kit.getName() + " &8unassigned from: &a" + block.getType().toString() + "&8.").sendPrefixedMessage(player);
+ instance.getLocale().newMessage("&8Kit &9" + kit.getKey() + " &8unassigned from: &a" + block.getType().toString() + "&8.").sendPrefixedMessage(player);
return ReturnType.SUCCESS;
}
diff --git a/src/main/java/com/songoda/ultimatekits/commands/CommandSet.java b/src/main/java/com/songoda/ultimatekits/commands/CommandSet.java
index 31b30a1..9fb7d98 100644
--- a/src/main/java/com/songoda/ultimatekits/commands/CommandSet.java
+++ b/src/main/java/com/songoda/ultimatekits/commands/CommandSet.java
@@ -34,7 +34,7 @@ public class CommandSet extends AbstractCommand {
Block b = player.getTargetBlock(null, 200);
KitBlockData data = instance.getKitManager().addKitToLocation(kit, b.getLocation());
UltimateKits.getInstance().getDataManager().createBlockData(data);
- instance.getLocale().newMessage("&8Kit &a" + kit.getName() + " &8set to: &a" + b.getType().toString() + "&8.")
+ instance.getLocale().newMessage("&8Kit &a" + kit.getKey() + " &8set to: &a" + b.getType().toString() + "&8.")
.sendPrefixedMessage(sender);
return ReturnType.SUCCESS;
@@ -49,7 +49,7 @@ public class CommandSet extends AbstractCommand {
if (args.length == 1) {
List tab = new ArrayList<>();
for (Kit kit : UltimateKits.getInstance().getKitManager().getKits()) {
- tab.add(kit.getName());
+ tab.add(kit.getKey());
}
return tab;
}
diff --git a/src/main/java/com/songoda/ultimatekits/database/DataManager.java b/src/main/java/com/songoda/ultimatekits/database/DataManager.java
index 0996f7c..4b453ce 100644
--- a/src/main/java/com/songoda/ultimatekits/database/DataManager.java
+++ b/src/main/java/com/songoda/ultimatekits/database/DataManager.java
@@ -33,7 +33,7 @@ public class DataManager extends DataManagerAbstract {
for (KitBlockData data : blockData.values()) {
if (data == null || data.getWorld() == null) continue;
statement.setString(1, data.getType().toString());
- statement.setString(2, data.getKit().getName());
+ statement.setString(2, data.getKit().getKey());
statement.setBoolean(3, data.showHologram());
statement.setBoolean(4, data.isDisplayingItems());
statement.setBoolean(5, data.hasParticles());
@@ -58,7 +58,7 @@ public class DataManager extends DataManagerAbstract {
"WHERE world = ? AND x = ? AND y = ? AND z = ?";
try (PreparedStatement statement = connection.prepareStatement(updateData)) {
statement.setString(1, blockData.getType().toString());
- statement.setString(2, blockData.getKit().getName());
+ statement.setString(2, blockData.getKit().getKey());
statement.setBoolean(3, blockData.showHologram());
statement.setBoolean(4, blockData.isDisplayingItems());
statement.setBoolean(5, blockData.hasParticles());
@@ -80,7 +80,7 @@ public class DataManager extends DataManagerAbstract {
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement statement = connection.prepareStatement(createData)) {
statement.setString(1, blockData.getType().toString());
- statement.setString(2, blockData.getKit().getName());
+ statement.setString(2, blockData.getKit().getKey());
statement.setBoolean(3, blockData.showHologram());
statement.setBoolean(4, blockData.isDisplayingItems());
statement.setBoolean(5, blockData.hasParticles());
diff --git a/src/main/java/com/songoda/ultimatekits/gui/AnimatedKitGui.java b/src/main/java/com/songoda/ultimatekits/gui/AnimatedKitGui.java
index 896b86c..f6e5137 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/AnimatedKitGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/AnimatedKitGui.java
@@ -42,7 +42,7 @@ public class AnimatedKitGui extends Gui {
this.give = give;
setRows(3);
setAllowClose(false);
- setTitle(kit.getShowableName());
+ setTitle(kit.getName());
setDefaultItem(GuiUtils.getBorderItem(CompatibleMaterial.GRAY_STAINED_GLASS_PANE));
// ideally, we'd populate the items in such a way that the end item isn't far from the center when the animation is complete
diff --git a/src/main/java/com/songoda/ultimatekits/gui/BlockEditorGui.java b/src/main/java/com/songoda/ultimatekits/gui/BlockEditorGui.java
index 5c1b053..0462e89 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/BlockEditorGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/BlockEditorGui.java
@@ -21,7 +21,7 @@ public class BlockEditorGui extends Gui {
this.kitBlockData = kitBlockData;
setRows(3);
setTitle(plugin.getLocale().getMessage("interface.kitblock.title")
- .processPlaceholder("kit", kitBlockData.getKit().getShowableName())
+ .processPlaceholder("kit", kitBlockData.getKit().getName())
.getMessage());
// fill glass borders
diff --git a/src/main/java/com/songoda/ultimatekits/gui/CategoryEditorGui.java b/src/main/java/com/songoda/ultimatekits/gui/CategoryEditorGui.java
new file mode 100644
index 0000000..b958b79
--- /dev/null
+++ b/src/main/java/com/songoda/ultimatekits/gui/CategoryEditorGui.java
@@ -0,0 +1,99 @@
+package com.songoda.ultimatekits.gui;
+
+import com.songoda.core.compatibility.CompatibleMaterial;
+import com.songoda.core.gui.Gui;
+import com.songoda.core.gui.GuiUtils;
+import com.songoda.core.input.ChatPrompt;
+import com.songoda.core.utils.TextUtils;
+import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.category.Category;
+import com.songoda.ultimatekits.category.CategoryManager;
+import com.songoda.ultimatekits.settings.Settings;
+import com.songoda.ultimatekits.utils.Methods;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.ClickType;
+
+import java.util.List;
+
+public class CategoryEditorGui extends Gui {
+
+ private final UltimateKits plugin;
+ private final Player player;
+ private final CategoryManager categoryManager;
+
+ public CategoryEditorGui(UltimateKits plugin, Player player) {
+ this.plugin = plugin;
+ this.player = player;
+ this.categoryManager = plugin.getCategoryManager();
+ setRows(3);
+ setTitle("Category Editor");
+ setAcceptsItems(true); // display item takes an item
+
+ // fill glass borders
+ Methods.fillGlass(this);
+ GuiUtils.mirrorFill(this, 1, 1, false, true, getDefaultItem());
+
+ setButton(4, GuiUtils.createButtonItem(CompatibleMaterial.GREEN_DYE, "Create Category"),
+ (event) -> {
+ if (categoryManager.getCategories().size() >= 7) {
+ plugin.getLocale().newMessage("&cYou already have the maximum amount of categories...").sendPrefixedMessage(player);
+ } else {
+ ChatPrompt.showPrompt(event.manager.getPlugin(), event.player, "Enter a category name:", response -> {
+ String msg = response.getMessage().trim();
+
+ String key = msg.toUpperCase().replace(" ", "_");
+
+ if (categoryManager.getCategory(key) != null) {
+ plugin.getLocale().newMessage("&cA category with that name already exists...").sendPrefixedMessage(player);
+ return;
+ }
+
+ categoryManager.addCategory(key, msg);
+ plugin.getLocale().newMessage("&aCategory added successfully!").sendPrefixedMessage(player);
+
+ player.closeInventory();
+ }).setOnClose(() -> {
+ event.manager.showGUI(event.player, new CategoryEditorGui(plugin, event.player));
+ });
+ }
+ });
+
+ // exit button
+ setButton(0, 8, GuiUtils.createButtonItem(Settings.EXIT_ICON.getMaterial(CompatibleMaterial.OAK_DOOR),
+ plugin.getLocale().getMessage("interface.button.exit").getMessage()),
+ ClickType.LEFT,
+ event -> exit());
+ paint();
+ }
+
+ private void paint() {
+ List categories = categoryManager.getCategories();
+ for (int i = 0; i < categories.size(); i++) {
+ Category category = categories.get(i);
+ setButton(i + 10,
+ GuiUtils.createButtonItem(CompatibleMaterial.getMaterial(category.getMaterial()),
+ TextUtils.formatText(category.getName()),
+ TextUtils.formatText("&6Left click to change name"),
+ "",
+ TextUtils.formatText("&6Middle click to set material"),
+ TextUtils.formatText("&6to item in hand."),
+ "",
+ TextUtils.formatText("&cRight click to remove."),
+ TextUtils.formatText("&c(Kits will not be removed)")),
+ (event) -> {
+ if (event.clickType == ClickType.LEFT)
+ ChatPrompt.showPrompt(event.manager.getPlugin(), event.player, "Enter a name:", response -> {
+ category.setName(response.getMessage().trim());
+ event.manager.showGUI(event.player, new CategoryEditorGui(plugin, event.player));
+ });
+ else if (event.clickType == ClickType.MIDDLE) {
+ category.setMaterial(player.getItemInHand().getType());
+ event.manager.showGUI(event.player, new CategoryEditorGui(plugin, event.player));
+ } else if (event.clickType == ClickType.RIGHT) {
+ categoryManager.removeCategory(category);
+ event.manager.showGUI(event.player, new CategoryEditorGui(plugin, event.player));
+ }
+ });
+ }
+ }
+}
diff --git a/src/main/java/com/songoda/ultimatekits/gui/CategorySelectorGui.java b/src/main/java/com/songoda/ultimatekits/gui/CategorySelectorGui.java
new file mode 100644
index 0000000..c0bd01e
--- /dev/null
+++ b/src/main/java/com/songoda/ultimatekits/gui/CategorySelectorGui.java
@@ -0,0 +1,98 @@
+package com.songoda.ultimatekits.gui;
+
+import com.songoda.core.compatibility.CompatibleMaterial;
+import com.songoda.core.gui.Gui;
+import com.songoda.core.gui.GuiUtils;
+import com.songoda.core.utils.TextUtils;
+import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.category.Category;
+import com.songoda.ultimatekits.kit.Kit;
+import com.songoda.ultimatekits.settings.Settings;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.*;
+
+public class CategorySelectorGui extends Gui {
+
+ private int timer;
+
+ public CategorySelectorGui(UltimateKits plugin, Player player) {
+ boolean glassless = Settings.DO_NOT_USE_GLASS_BORDERS.getBoolean();
+
+ Set categories = new LinkedHashSet<>();
+
+ for (Kit kit : plugin.getKitManager().getKits())
+ if (kit.hasPermission(player) && kit.getCategory() != null)
+ categories.add(kit.getCategory());
+
+ setTitle(plugin.getLocale().getMessage("interface.categoryselector.title").getMessage());
+
+ int showPerRow = glassless ? 9 : 7;
+ int nrows = (int) Math.ceil(categories.size() / (double) showPerRow);
+ setRows(glassless ? nrows : nrows + 2);
+
+ setItem(0, 4, GuiUtils.createButtonItem(CompatibleMaterial.BOOK,
+ plugin.getLocale().getMessage("interface.categoryselector.details")
+ .processPlaceholder("player", player.getName()).getMessage().split("\\|")));
+
+ if (!glassless) {
+ setButton(rows - 1, 4, GuiUtils.createButtonItem(Settings.EXIT_ICON.getMaterial(CompatibleMaterial.OAK_DOOR),
+ UltimateKits.getInstance().getLocale().getMessage("interface.button.exit").getMessage()),
+ event -> exit());
+ }
+
+ ItemStack glass2 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_2.getMaterial());
+ setDefaultItem(AIR);
+ GuiUtils.mirrorFill(this, 0, 0, true, true, glass2);
+
+ if (!glassless) {
+ if (Settings.RAINBOW.getBoolean()) {
+ animateGlass();
+ timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
+ if (inventory.getViewers().isEmpty()) return;
+ animateGlass();
+ }, 20L, 20L);
+ setOnClose(event -> Bukkit.getScheduler().cancelTask(timer));
+ } else {
+ ItemStack glass1 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_1.getMaterial());
+ ItemStack glass3 = GuiUtils.getBorderItem(Settings.GLASS_TYPE_3.getMaterial());
+ GuiUtils.mirrorFill(this, 0, 0, true, true, glass2);
+ GuiUtils.mirrorFill(this, 1, 0, true, true, glass2);
+ GuiUtils.mirrorFill(this, 0, 1, true, true, glass2);
+ GuiUtils.mirrorFill(this, 0, 2, true, true, glass3);
+ GuiUtils.mirrorFill(this, 0, 3, false, true, glass1);
+ }
+ }
+
+ int i = 10;
+ for (Category category : categories) {
+ setButton(i, GuiUtils.createButtonItem(CompatibleMaterial.getMaterial(category.getMaterial()),
+ TextUtils.formatText(category.getName()),
+ "",
+ plugin.getLocale().getMessage("interface.categoryselector.view").getMessage()),
+ event -> {
+ guiManager.showGUI(player, new KitSelectorGui(plugin, player, category));
+ });
+ i++;
+ }
+ }
+
+ static final Random rand = new Random();
+
+ private void animateGlass() {
+ for (int col = 1; col < 8; ++col) {
+ ItemStack it;
+ if ((it = getItem(0, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
+ setItem(0, col, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
+ if ((it = getItem(rows - 1, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
+ setItem(rows - 1, col, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
+ }
+ for (int row = 1; row + 1 < rows; ++row) {
+ setItem(row, 0, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
+ setItem(row, 8, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
+ }
+ }
+}
diff --git a/src/main/java/com/songoda/ultimatekits/gui/ConfirmBuyGui.java b/src/main/java/com/songoda/ultimatekits/gui/ConfirmBuyGui.java
index f4d9682..f272866 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/ConfirmBuyGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/ConfirmBuyGui.java
@@ -31,7 +31,7 @@ public class ConfirmBuyGui extends Gui {
// Kit information
setItem(0, 4, GuiUtils.createButtonItem(kit.getDisplayItem() != null ? kit.getDisplayItem() : CompatibleMaterial.DIAMOND_HELMET,
- ChatColor.RED + TextUtils.formatText(kit.getName().toLowerCase(), true),
+ ChatColor.RED + TextUtils.formatText(kit.getKey().toLowerCase(), true),
ChatColor.GREEN + Settings.CURRENCY_SYMBOL.getString() + Methods.formatEconomy(cost)));
// confirm button
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitDecorOptionsGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitDecorOptionsGui.java
index b099ae8..e1649e7 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitDecorOptionsGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitDecorOptionsGui.java
@@ -20,7 +20,7 @@ public class KitDecorOptionsGui extends Gui {
super(parent);
setRows(3);
setTitle(plugin.getLocale().getMessage("interface.kitdecor.title")
- .processPlaceholder("kit", kitBlockData.getKit().getShowableName())
+ .processPlaceholder("kit", kitBlockData.getKit().getName())
.getMessage());
Kit kit = kitBlockData.getKit();
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitEditorGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitEditorGui.java
index f86fd4a..55b47ef 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitEditorGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitEditorGui.java
@@ -36,6 +36,8 @@ public class KitEditorGui extends DoubleGui {
private boolean isInFunction = false;
private boolean isInInventory = false;
+ private ItemStack[] stash;
+
public KitEditorGui(UltimateKits plugin, Player player, Kit kit, Gui back) {
super(back);
this.plugin = plugin;
@@ -45,12 +47,14 @@ public class KitEditorGui extends DoubleGui {
setDefaultItem(null);
setRows(6);
setTitle(plugin.getLocale().getMessage("interface.kiteditor.title")
- .processPlaceholder("name", kit.getShowableName())
+ .processPlaceholder("name", kit.getName())
.getMessage());
setInvItems();
setOnClose((event) -> {
this.saveKit(player, inventory, false);
+ if (!isInInventory)
+ restoreItemsInstance();
CompatibleSound.ENTITY_VILLAGER_YES.play(player);
});
@@ -80,11 +84,12 @@ public class KitEditorGui extends DoubleGui {
// info icon
setItem(0, 4, GuiUtils.createButtonItem(CompatibleMaterial.CHEST,
plugin.getLocale().getMessage("interface.kiteditor.info")
- .processPlaceholder("kit", kit.getName())
- .processPlaceholder("perm", "ultimatekits.kit." + kit.getName().toLowerCase())
+ .processPlaceholder("kit", kit.getKey())
+ .processPlaceholder("perm", "ultimatekits.kit." + kit.getKey().toLowerCase())
.getMessage().split("\\|"))
);
+ saveItemsInstance();
paint();
}
@@ -193,7 +198,7 @@ public class KitEditorGui extends DoubleGui {
this.setPlayerActionForRange(0, 0, 3, 8, event -> {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
if (isInInventory)
- stash.put(player, player.getInventory().getContents().clone());
+ stash = player.getInventory().getContents().clone();
}, 0L);
if (!isInInventory && event.player.getItemOnCursor().getType() != Material.AIR) {
event.event.setCancelled(true);
@@ -203,14 +208,15 @@ public class KitEditorGui extends DoubleGui {
private void saveItemsInstance() {
setPlayerUnlockedRange(0, 0, 3, 8, false);
- stash.put(player, player.getInventory().getContents().clone());
+ stash = player.getInventory().getContents().clone();
player.getInventory().clear();
isInInventory = false;
}
private void restoreItemsInstance() {
setPlayerUnlockedRange(0, 0, 3, 8);
- player.getInventory().setContents(stash.get(player));
+ if (stash != null)
+ player.getInventory().setContents(stash);
player.updateInventory();
isInInventory = true;
}
@@ -339,7 +345,7 @@ public class KitEditorGui extends DoubleGui {
kit.saveKit(Arrays.asList(items));
if (!muteSave)
plugin.getLocale().getMessage("interface.kiteditor.saved")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.sendPrefixedMessage(player);
}
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitGeneralOptionsGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitGeneralOptionsGui.java
index 396cdca..3f5a40d 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitGeneralOptionsGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitGeneralOptionsGui.java
@@ -6,6 +6,7 @@ import com.songoda.core.gui.Gui;
import com.songoda.core.gui.GuiUtils;
import com.songoda.core.utils.ItemUtils;
import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.category.Category;
import com.songoda.ultimatekits.kit.Kit;
import com.songoda.ultimatekits.settings.Settings;
import com.songoda.ultimatekits.utils.Methods;
@@ -18,7 +19,7 @@ public class KitGeneralOptionsGui extends Gui {
super(back);
setRows(3);
setTitle(plugin.getLocale().getMessage("interface.kitoptions.title")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.getMessage());
// fill glass borders
@@ -40,7 +41,7 @@ public class KitGeneralOptionsGui extends Gui {
setButton(1, 2, GuiUtils.createButtonItem(CompatibleMaterial.CLOCK,
plugin.getLocale().getMessage("interface.kitoptions.delay").getMessage(),
plugin.getLocale().getMessage("interface.kitoptions.delaylore")
- .processPlaceholder("delay", kit.getDelay()).getMessage().split("\\|")),
+ .processPlaceholder("delay", kit.getDelay()).getMessage().split("\\|")),
event -> {
AnvilGui gui = new AnvilGui(event.player, this);
gui.setTitle(plugin.getLocale().getMessage("interface.kitoptions.delayprompt").getMessage());
@@ -62,16 +63,43 @@ public class KitGeneralOptionsGui extends Gui {
guiManager.showGUI(event.player, gui);
});
+ // edit category
+ setButton(1, 4, GuiUtils.createButtonItem(CompatibleMaterial.BOOK,
+ plugin.getLocale().getMessage("interface.kitoptions.category").getMessage(),
+ plugin.getLocale().getMessage("interface.kitoptions.categorylore")
+ .processPlaceholder("category", kit.getCategory() == null ? "none" : kit.getCategory().getName()).getMessage().split("\\|")),
+ event -> {
+ if (event.clickType == ClickType.LEFT) {
+ AnvilGui gui = new AnvilGui(event.player, this);
+ gui.setTitle(plugin.getLocale().getMessage("interface.kitoptions.categoryprompt").getMessage());
+ gui.setAction(aevent -> {
+ final String msg = gui.getInputText().trim();
+ Category category = plugin.getCategoryManager().getCategoryByName(msg);
+ if (category != null) {
+ kit.setCategory(category);
+ updateItemLore(event.slot, plugin.getLocale().getMessage("interface.kitoptions.categorylore")
+ .processPlaceholder("category", kit.getCategory() == null ? "none" : kit.getCategory().getName()).getMessage().split("\\|"));
+ aevent.player.closeInventory();
+ return;
+ }
+ plugin.getLocale().getMessage("interface.kitoptions.notacategory").processPlaceholder("input", msg).sendPrefixedMessage(player);
+ });
+ guiManager.showGUI(event.player, gui);
+ } else if (event.clickType == ClickType.RIGHT) {
+ kit.setCategory(null);
+ }
+ });
+
// delete
setButton(1, 6, GuiUtils.createButtonItem(CompatibleMaterial.TNT,
plugin.getLocale().getMessage("interface.kitoptions.destroy").getMessage(),
plugin.getLocale().getMessage("interface.kitoptions.destroylore").getMessage().split("\\|")),
event -> {
AnvilGui gui = new AnvilGui(event.player);
- gui.setTitle(plugin.getLocale().getMessage("interface.kitoptions.destroyprompt").processPlaceholder("kit", kit.getName()).getMessage());
+ gui.setTitle(plugin.getLocale().getMessage("interface.kitoptions.destroyprompt").processPlaceholder("kit", kit.getKey()).getMessage());
gui.setAction(aevent -> {
final String msg = gui.getInputText();
- if (msg != null && msg.trim().equalsIgnoreCase(kit.getName())) {
+ if (msg != null && msg.trim().equalsIgnoreCase(kit.getKey())) {
plugin.getKitManager().removeKit(kit);
plugin.updateHologram(kit);
plugin.getLocale().getMessage("interface.kitoptions.destroyok").sendPrefixedMessage(player);
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitGuiOptionsGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitGuiOptionsGui.java
index 32472a9..a2357b1 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitGuiOptionsGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitGuiOptionsGui.java
@@ -27,7 +27,7 @@ public class KitGuiOptionsGui extends Gui {
this.player = player;
setRows(3);
setTitle(plugin.getLocale().getMessage("interface.kitblock.title")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.getMessage());
setAcceptsItems(true); // display item takes an item
@@ -66,7 +66,7 @@ public class KitGuiOptionsGui extends Gui {
kit.setTitle(msg);
plugin.getLocale().getMessage("interface.kitguioptions.holoset")
.processPlaceholder("title", msg)
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.sendPrefixedMessage(player);
plugin.updateHologram(kit);
@@ -95,13 +95,13 @@ public class KitGuiOptionsGui extends Gui {
plugin.getLocale().getMessage("interface.kitguioptions.itemnoitem").sendPrefixedMessage(player);
} else {
kit.setDisplayItem(is);
- plugin.getLocale().getMessage("interface.kitguioptions.itemset").processPlaceholder("item", kit.getShowableName()).sendPrefixedMessage(player);
+ plugin.getLocale().getMessage("interface.kitguioptions.itemset").processPlaceholder("item", kit.getName()).sendPrefixedMessage(player);
paint();
}
});
setAction(1, 4, ClickType.RIGHT, event -> {
kit.setDisplayItem((ItemStack) null);
- plugin.getLocale().getMessage("interface.kitguioptions.itemremoved").processPlaceholder("kit", kit.getShowableName()).sendPrefixedMessage(player);
+ plugin.getLocale().getMessage("interface.kitguioptions.itemremoved").processPlaceholder("kit", kit.getName()).sendPrefixedMessage(player);
paint();
});
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitSelectorGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitSelectorGui.java
index dc4fb4b..b30bf44 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitSelectorGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitSelectorGui.java
@@ -6,14 +6,10 @@ import com.songoda.core.gui.GuiUtils;
import com.songoda.core.utils.ItemUtils;
import com.songoda.core.utils.TextUtils;
import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.category.Category;
import com.songoda.ultimatekits.kit.Kit;
import com.songoda.ultimatekits.settings.Settings;
import com.songoda.ultimatekits.utils.Methods;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -21,21 +17,29 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
+
public class KitSelectorGui extends Gui {
private Player player;
private UltimateKits plugin;
private int timer;
+ private Category category;
private List kitList;
private boolean kitsmode = false;
private boolean glassless;
private int showPerRow, showPerPage;
- public KitSelectorGui(UltimateKits plugin, Player player) {
+ public KitSelectorGui(UltimateKits plugin, Player player, Category category) {
this.player = player;
this.plugin = plugin;
+ this.category = category;
glassless = Settings.DO_NOT_USE_GLASS_BORDERS.getBoolean();
setTitle(plugin.getLocale().getMessage("interface.selector.title").getMessage());
@@ -48,7 +52,7 @@ public class KitSelectorGui extends Gui {
setItem(0, 4, GuiUtils.createButtonItem(CompatibleMaterial.BOOK,
plugin.getLocale().getMessage("interface.selector.details")
- .processPlaceholder("player", player.getName()).getMessage().split("\\|")));
+ .processPlaceholder("player", player.getName()).getMessage().split("\\|")));
if (pages > 1) {
this.setNextPage(rows - 1, 5, GuiUtils.createButtonItem(ItemUtils.getCustomHead("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b"),
@@ -70,8 +74,8 @@ public class KitSelectorGui extends Gui {
setDefaultItem(AIR);
GuiUtils.mirrorFill(this, 0, 0, true, true, glass2);
- if(!glassless) {
- if(Settings.RAINBOW.getBoolean()) {
+ if (!glassless) {
+ if (Settings.RAINBOW.getBoolean()) {
animateGlass();
timer = Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
if (inventory.getViewers().isEmpty()) return;
@@ -89,27 +93,35 @@ public class KitSelectorGui extends Gui {
}
}
+ if (category != null)
+ setButton(0, 0, GuiUtils.createButtonItem(ItemUtils.getCustomHead("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23"),
+ plugin.getLocale().getMessage("interface.button.back").getMessage()),
+ event -> guiManager.showGUI(player, new CategorySelectorGui(plugin, player)));
+
+
showPage();
}
private void loadKits() {
boolean showAll = !Settings.ONLY_SHOW_KITS_WITH_PERMS.getBoolean();
kitList = plugin.getKitManager().getKits().stream()
- .filter(kit -> !kit.isHidden() && (showAll || kit.hasPermission(player)))
- .map(kit -> kit.getName())
+ .filter(kit -> !kit.isHidden() && (showAll || kit.hasPermission(player))
+ && (category == null || kit.getCategory() == category))
+ .map(Kit::getKey)
.collect(Collectors.toList());
}
static final Random rand = new Random();
+
private void animateGlass() {
- for(int col = 1; col < 8; ++col) {
+ for (int col = 1; col < 8; ++col) {
ItemStack it;
- if((it = getItem(0, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
+ if ((it = getItem(0, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
setItem(0, col, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
- if((it = getItem(rows - 1, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
+ if ((it = getItem(rows - 1, col)) == null || it.getType() == Material.AIR || it.getType().name().contains("PANE"))
setItem(rows - 1, col, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
}
- for(int row = 1; row + 1 < rows; ++row) {
+ for (int row = 1; row + 1 < rows; ++row) {
setItem(row, 0, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
setItem(row, 8, GuiUtils.getBorderItem(CompatibleMaterial.getGlassPaneColor(rand.nextInt(16))));
}
@@ -119,7 +131,7 @@ public class KitSelectorGui extends Gui {
int index = (page - 1) * showPerPage;
for (int row = glassless ? 0 : 1; row < (!glassless || pages != 1 ? rows - 1 : rows); ++row) {
for (int col = glassless ? 0 : 1; col < (glassless ? 9 : 8); ++col) {
- if(index >= kitList.size()) {
+ if (index >= kitList.size()) {
setItem(row, col, null);
clearActions(row, col);
continue;
@@ -160,50 +172,50 @@ public class KitSelectorGui extends Gui {
private List getKitLore(Kit kit) {
ArrayList lore = new ArrayList<>();
- if (kit.getPrice() != 0)
- lore.add(plugin.getLocale().getMessage("interface.selector.aboutkitprice")
- .processPlaceholder("price", String.valueOf(kit.getPrice()))
- .getMessage());
- else if (kit.getLink() != null)
- lore.add(plugin.getLocale().getMessage("general.type.link").getMessage());
+ if (kit.getPrice() != 0)
+ lore.add(plugin.getLocale().getMessage("interface.selector.aboutkitprice")
+ .processPlaceholder("price", String.valueOf(kit.getPrice()))
+ .getMessage());
+ else if (kit.getLink() != null)
+ lore.add(plugin.getLocale().getMessage("general.type.link").getMessage());
- if (!kitsmode) {
- if (!plugin.getLocale().getMessage("interface.selector.aboutkit").getMessage().trim().equals("")) {
- String[] parts = plugin.getLocale().getMessage("interface.selector.aboutkit").getMessage().split("\\|");
- lore.add("");
- for (String line : parts)
- lore.add(ChatColor.translateAlternateColorCodes('&', line));
- }
- if (kit.hasPermission(player)) {
- if (kit.getNextUse(player) == -1) {
- lore.add(plugin.getLocale().getMessage("event.claim.once").getMessage());
- } else if (kit.getNextUse(player) > 0) {
- if (!plugin.getLocale().getMessage("event.claim.wait").getMessage().trim().equals("")) {
- lore.add(plugin.getLocale().getMessage("event.claim.wait")
- .processPlaceholder("time", Methods.makeReadable(kit.getNextUse(player)))
- .getMessage());
- }
- } else if (!plugin.getLocale().getMessage("event.claim.ready").getMessage().trim().equals("")) {
- lore.add(plugin.getLocale().getMessage("event.claim.ready").getMessage());
- }
- } else
- lore.add(plugin.getLocale().getMessage("event.claim.noaccess").getMessage());
+ if (!kitsmode) {
+ if (!plugin.getLocale().getMessage("interface.selector.aboutkit").getMessage().trim().equals("")) {
+ String[] parts = plugin.getLocale().getMessage("interface.selector.aboutkit").getMessage().split("\\|");
lore.add("");
- lore.add(plugin.getLocale().getMessage("interface.selector.leftpreview").getMessage());
- if (kit.hasPermission(player)) {
- lore.add(plugin.getLocale().getMessage("interface.selector.rightclaim").getMessage());
- } else if (kit.getPrice() != 0 || kit.getLink() != null) {
- lore.add(plugin.getLocale().getMessage("interface.selector.rightbuy").getMessage());
- }
-
- if (player.hasPermission("ultimatekits.admin")) {
- lore.add("");
- lore.add(plugin.getLocale().getMessage("interface.selector.adminlore").getMessage());
- }
- } else {
- lore.addAll(Arrays.asList(plugin.getLocale().getMessage("interface.selector.editlore").getMessage().split("\\|")));
+ for (String line : parts)
+ lore.add(ChatColor.translateAlternateColorCodes('&', line));
}
- return lore;
+ if (kit.hasPermission(player)) {
+ if (kit.getNextUse(player) == -1) {
+ lore.add(plugin.getLocale().getMessage("event.claim.once").getMessage());
+ } else if (kit.getNextUse(player) > 0) {
+ if (!plugin.getLocale().getMessage("event.claim.wait").getMessage().trim().equals("")) {
+ lore.add(plugin.getLocale().getMessage("event.claim.wait")
+ .processPlaceholder("time", Methods.makeReadable(kit.getNextUse(player)))
+ .getMessage());
+ }
+ } else if (!plugin.getLocale().getMessage("event.claim.ready").getMessage().trim().equals("")) {
+ lore.add(plugin.getLocale().getMessage("event.claim.ready").getMessage());
+ }
+ } else
+ lore.add(plugin.getLocale().getMessage("event.claim.noaccess").getMessage());
+ lore.add("");
+ lore.add(plugin.getLocale().getMessage("interface.selector.leftpreview").getMessage());
+ if (kit.hasPermission(player)) {
+ lore.add(plugin.getLocale().getMessage("interface.selector.rightclaim").getMessage());
+ } else if (kit.getPrice() != 0 || kit.getLink() != null) {
+ lore.add(plugin.getLocale().getMessage("interface.selector.rightbuy").getMessage());
+ }
+
+ if (player.hasPermission("ultimatekits.admin")) {
+ lore.add("");
+ lore.add(plugin.getLocale().getMessage("interface.selector.adminlore").getMessage());
+ }
+ } else {
+ lore.addAll(Arrays.asList(plugin.getLocale().getMessage("interface.selector.editlore").getMessage().split("\\|")));
+ }
+ return lore;
}
}
diff --git a/src/main/java/com/songoda/ultimatekits/gui/KitSellingOptionsGui.java b/src/main/java/com/songoda/ultimatekits/gui/KitSellingOptionsGui.java
index 62862f0..b0d4277 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/KitSellingOptionsGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/KitSellingOptionsGui.java
@@ -12,7 +12,6 @@ import com.songoda.ultimatekits.settings.Settings;
import com.songoda.ultimatekits.utils.Methods;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
-import java.util.Random;
public class KitSellingOptionsGui extends Gui {
@@ -27,7 +26,7 @@ public class KitSellingOptionsGui extends Gui {
this.kit = kit;
setRows(3);
setTitle(plugin.getLocale().getMessage("interface.kitblock.title")
- .processPlaceholder("kit", kit.getShowableName())
+ .processPlaceholder("kit", kit.getName())
.getMessage());
// fill glass borders
diff --git a/src/main/java/com/songoda/ultimatekits/gui/PreviewKitGui.java b/src/main/java/com/songoda/ultimatekits/gui/PreviewKitGui.java
index b24b8c3..faaf5fe 100644
--- a/src/main/java/com/songoda/ultimatekits/gui/PreviewKitGui.java
+++ b/src/main/java/com/songoda/ultimatekits/gui/PreviewKitGui.java
@@ -27,7 +27,6 @@ public class PreviewKitGui extends Gui {
private final boolean buyable;
private final List list;
private final boolean useGlassBorder = !Settings.DO_NOT_USE_GLASS_BORDERS.getBoolean();
- static final Random rand = new Random();
public PreviewKitGui(UltimateKits plugin, Player player, Kit kit, Gui back) {
super(back);
@@ -38,7 +37,7 @@ public class PreviewKitGui extends Gui {
this.buyable = (kit.getLink() != null || kit.getPrice() != 0);
setTitle(plugin.getLocale().getMessage("interface.preview.title")
- .processPlaceholder("kit", kit.getTitle() != null ? TextUtils.formatText(kit.getTitle(), true) : kit.getShowableName()).getMessage());
+ .processPlaceholder("kit", kit.getTitle() != null ? TextUtils.formatText(kit.getTitle(), true) : kit.getName()).getMessage());
int amt = 0;
for (ItemStack is : list) {
diff --git a/src/main/java/com/songoda/ultimatekits/key/Key.java b/src/main/java/com/songoda/ultimatekits/key/Key.java
index a36b45a..859e6f3 100644
--- a/src/main/java/com/songoda/ultimatekits/key/Key.java
+++ b/src/main/java/com/songoda/ultimatekits/key/Key.java
@@ -36,7 +36,7 @@ public class Key {
String kitName;
if (kit != null)
- kitName = TextUtils.formatText(kit.getShowableName(), true);
+ kitName = TextUtils.formatText(kit.getName(), true);
else
kitName = "Any";
diff --git a/src/main/java/com/songoda/ultimatekits/kit/Kit.java b/src/main/java/com/songoda/ultimatekits/kit/Kit.java
index 66af149..d2ee4ce 100644
--- a/src/main/java/com/songoda/ultimatekits/kit/Kit.java
+++ b/src/main/java/com/songoda/ultimatekits/kit/Kit.java
@@ -8,6 +8,7 @@ import com.songoda.core.gui.GuiManager;
import com.songoda.core.hooks.EconomyManager;
import com.songoda.core.utils.TextUtils;
import com.songoda.ultimatekits.UltimateKits;
+import com.songoda.ultimatekits.category.Category;
import com.songoda.ultimatekits.gui.AnimatedKitGui;
import com.songoda.ultimatekits.gui.ConfirmBuyGui;
import com.songoda.ultimatekits.gui.PreviewKitGui;
@@ -32,7 +33,9 @@ import java.util.*;
*/
public class Kit {
- private final String name, showableName;
+ private final String key, name;
+ private Category category = null;
+
private static UltimateKits plugin;
private double price = 0;
private String link, title = null;
@@ -42,11 +45,11 @@ public class Kit {
private List contents = new ArrayList<>();
private KitAnimation kitAnimation = KitAnimation.NONE;
- public Kit(String name) {
+ public Kit(String key) {
if (plugin == null)
plugin = UltimateKits.getInstance();
- this.name = name;
- this.showableName = TextUtils.formatText(name, true);
+ this.key = key;
+ this.name = TextUtils.formatText(key, true);
}
public void buy(Player player, GuiManager manager) {
@@ -55,7 +58,7 @@ public class Kit {
return;
}
- if (!player.hasPermission("ultimatekits.buy." + name)) {
+ if (!player.hasPermission("ultimatekits.buy." + key)) {
UltimateKits.getInstance().getLocale().getMessage("command.general.noperms")
.sendPrefixedMessage(player);
return;
@@ -105,7 +108,7 @@ public class Kit {
Key key = plugin.getKeyManager().getKey(ChatColor.stripColor(item.getItemMeta().getLore().get(0)).replace(" Key", ""));
if (!item.getItemMeta().getDisplayName().equals(plugin.getLocale().getMessage("interface.key.title")
- .processPlaceholder("kit", showableName).getMessage())
+ .processPlaceholder("kit", name).getMessage())
&& !item.getItemMeta().getDisplayName().equals(plugin.getLocale().getMessage("interface.key.title")
.processPlaceholder("kit", "Any").getMessage())) {
plugin.getLocale().getMessage("event.crate.wrongkey").sendPrefixedMessage(player);
@@ -113,7 +116,7 @@ public class Kit {
}
if (giveKit(player, key)) {
plugin.getLocale().getMessage("event.key.success")
- .processPlaceholder("kit", showableName).sendPrefixedMessage(player);
+ .processPlaceholder("kit", name).sendPrefixedMessage(player);
if (player.getInventory().getItemInHand().getAmount() != 1) {
item.setAmount(item.getAmount() - 1);
player.setItemInHand(item);
@@ -126,13 +129,13 @@ public class Kit {
public void processPurchaseUse(Player player) {
if (!EconomyManager.isEnabled()) return;
- if (!player.hasPermission("ultimatekits.buy." + name)) {
+ if (!player.hasPermission("ultimatekits.buy." + key)) {
UltimateKits.getInstance().getLocale().getMessage("command.general.noperms")
.sendPrefixedMessage(player);
return;
} else if (!EconomyManager.hasBalance(player, price)) {
plugin.getLocale().getMessage("event.claim.cannotafford")
- .processPlaceholder("kit", showableName).sendPrefixedMessage(player);
+ .processPlaceholder("kit", name).sendPrefixedMessage(player);
return;
}
if (this.delay > 0) {
@@ -152,7 +155,7 @@ public class Kit {
updateDelay(player); //updates delay on buy
plugin.getLocale().getMessage("event.claim.purchasesuccess")
- .processPlaceholder("kit", showableName).sendPrefixedMessage(player);
+ .processPlaceholder("kit", name).sendPrefixedMessage(player);
}
}
@@ -164,7 +167,7 @@ public class Kit {
updateDelay(player);
if (kitAnimation == KitAnimation.NONE)
plugin.getLocale().getMessage("event.claim.givesuccess")
- .processPlaceholder("kit", showableName).sendPrefixedMessage(player);
+ .processPlaceholder("kit", name).sendPrefixedMessage(player);
}
} else {
plugin.getLocale().getMessage("event.claim.delay")
@@ -176,20 +179,20 @@ public class Kit {
@SuppressWarnings("Duplicates")
public void display(Player player, GuiManager manager, Gui back) {
if (!player.hasPermission("previewkit.use")
- && !player.hasPermission("previewkit." + name)
+ && !player.hasPermission("previewkit." + key)
&& !player.hasPermission("ultimatekits.use")
- && !player.hasPermission("ultimatekits." + name)) {
+ && !player.hasPermission("ultimatekits." + key)) {
UltimateKits.getInstance().getLocale().getMessage("command.general.noperms")
.sendPrefixedMessage(player);
return;
}
- if (name == null) {
+ if (key == null) {
plugin.getLocale().getMessage("command.kit.kitdoesntexist").sendPrefixedMessage(player);
return;
}
plugin.getLocale().getMessage("event.preview.kit")
- .processPlaceholder("kit", showableName).sendPrefixedMessage(player);
+ .processPlaceholder("kit", name).sendPrefixedMessage(player);
manager.showGUI(player, new PreviewKitGui(plugin, player, this, back));
}
@@ -353,11 +356,11 @@ public class Kit {
}
public void updateDelay(Player player) {
- plugin.getDataFile().set("Kits." + name + ".delays." + player.getUniqueId().toString(), System.currentTimeMillis());
+ plugin.getDataFile().set("Kits." + key + ".delays." + player.getUniqueId().toString(), System.currentTimeMillis());
}
public Long getNextUse(Player player) {
- String configSectionPlayer = "Kits." + name + ".delays." + player.getUniqueId().toString();
+ String configSectionPlayer = "Kits." + key + ".delays." + player.getUniqueId().toString();
Config config = plugin.getDataFile();
if (!config.contains(configSectionPlayer)) {
@@ -371,9 +374,9 @@ public class Kit {
}
public boolean hasPermission(Player player) {
- if (player.hasPermission("uc.kit." + name.toLowerCase())) return true;
- if (player.hasPermission("essentials.kit." + name.toLowerCase())) return true;
- if (player.hasPermission("ultimatekits.kit." + name.toLowerCase())) return true;
+ if (player.hasPermission("uc.kit." + key.toLowerCase())) return true;
+ if (player.hasPermission("essentials.kit." + key.toLowerCase())) return true;
+ if (player.hasPermission("ultimatekits.kit." + key.toLowerCase())) return true;
return false;
}
@@ -413,6 +416,15 @@ public class Kit {
return this;
}
+ public Category getCategory() {
+ return category;
+ }
+
+ public Kit setCategory(Category category) {
+ this.category = category;
+ return this;
+ }
+
public List getContents() {
return this.contents;
}
@@ -422,12 +434,12 @@ public class Kit {
return this;
}
- public String getName() {
- return name;
+ public String getKey() {
+ return key;
}
- public String getShowableName() {
- return showableName;
+ public String getName() {
+ return name;
}
public CompatibleMaterial getDisplayItem() {
@@ -463,7 +475,7 @@ public class Kit {
@Override
public int hashCode() {
- return 31 * (name != null ? name.hashCode() : 0);
+ return 31 * (key != null ? key.hashCode() : 0);
}
@Override
@@ -472,7 +484,7 @@ public class Kit {
if (!(o instanceof Kit)) return false;
Kit kit = (Kit) o;
- return Objects.equals(name, kit.name);
+ return Objects.equals(key, kit.key);
}
}
diff --git a/src/main/java/com/songoda/ultimatekits/kit/KitItem.java b/src/main/java/com/songoda/ultimatekits/kit/KitItem.java
index a8cf980..689b0df 100644
--- a/src/main/java/com/songoda/ultimatekits/kit/KitItem.java
+++ b/src/main/java/com/songoda/ultimatekits/kit/KitItem.java
@@ -44,20 +44,20 @@ public class KitItem {
ItemStack itemStack = item.clone();
ItemMeta meta = itemStack.getItemMeta();
if (itemStack.hasItemMeta() && meta.hasDisplayName() && meta.getDisplayName().contains(";")) {
- translateLine(meta.getDisplayName());
- String[] split = meta.getDisplayName().replace(String.valueOf(ChatColor.COLOR_CHAR), "").split(";", 2);
- meta.setDisplayName(split[1].contains("faqe") ? null : meta.getDisplayName().split(";", 2)[1]);
+ String translated = translateLine(meta.getDisplayName()).replace(TextUtils.convertToInvisibleString("faqe"), "");
+ if (translated.equalsIgnoreCase(WordUtils.capitalize(item.getType().toString().toLowerCase().replace("_", " "))))
+ meta.setDisplayName(null);
+ else
+ meta.setDisplayName(translated);
itemStack.setItemMeta(meta);
}
- String line = itemStack.hasItemMeta() && itemStack.getItemMeta().hasDisplayName() ? meta.getDisplayName() : "";
-
- processContent(line, item);
+ processContent(null, itemStack);
}
private void processContent(String line, ItemStack item) {
- if (line.startsWith(Settings.CURRENCY_SYMBOL.getString())) {
+ if (line != null && line.startsWith(Settings.CURRENCY_SYMBOL.getString())) {
this.content = new KitContentEconomy(Double.parseDouble(line.substring(1).trim()));
- } else if (line.startsWith("/")) {
+ } else if (line != null && line.startsWith("/")) {
this.content = new KitContentCommand(line.substring(1));
} else {
ItemStack itemStack = item == null ? UltimateKits.getInstance().getItemSerializer().deserializeItemStackFromJson(line) : item;
@@ -153,7 +153,7 @@ public class KitItem {
}
public ItemStack getMoveableItem() {
- if(content == null) return null;
+ if (content == null) return null;
ItemStack item = content.getItemForDisplay();
ItemMeta meta = item.getItemMeta();
if (chance != 0 || displayItem != null || displayName != null || displayLore != null) {
@@ -168,14 +168,14 @@ public class KitItem {
}
public ItemStack getItemForDisplay() {
- if(content == null) return null;
+ if (content == null) return null;
ItemStack item = content.getItemForDisplay();
ItemMeta meta = item.getItemMeta();
if (displayItem != null) {
item.setType(displayItem);
}
- if(meta != null) {
+ if (meta != null) {
if (displayName != null) {
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', displayName));
}
diff --git a/src/main/java/com/songoda/ultimatekits/kit/KitManager.java b/src/main/java/com/songoda/ultimatekits/kit/KitManager.java
index acc7a0b..d726def 100644
--- a/src/main/java/com/songoda/ultimatekits/kit/KitManager.java
+++ b/src/main/java/com/songoda/ultimatekits/kit/KitManager.java
@@ -55,7 +55,7 @@ public final class KitManager {
}
public Kit getKit(String name) {
- return registeredKits.stream().filter(kit -> kit.getName().equalsIgnoreCase(name.trim()))
+ return registeredKits.stream().filter(kit -> kit.getKey().equalsIgnoreCase(name.trim()))
.findFirst().orElse(null);
}
diff --git a/src/main/java/com/songoda/ultimatekits/listeners/BlockListeners.java b/src/main/java/com/songoda/ultimatekits/listeners/BlockListeners.java
index 941dbe1..68e0080 100644
--- a/src/main/java/com/songoda/ultimatekits/listeners/BlockListeners.java
+++ b/src/main/java/com/songoda/ultimatekits/listeners/BlockListeners.java
@@ -36,7 +36,7 @@ public class BlockListeners implements Listener {
instance.getKitManager().removeKitFromLocation(block.getLocation());
- instance.getLocale().newMessage("&8Kit &9" + kit.getName() + " &8unassigned from: &a" + block.getType() + "&8.")
+ instance.getLocale().newMessage("&8Kit &9" + kit.getKey() + " &8unassigned from: &a" + block.getType() + "&8.")
.sendPrefixedMessage(event.getPlayer());
}
diff --git a/src/main/resources/en_US.lang b/src/main/resources/en_US.lang
index 800e28e..7774dcc 100644
--- a/src/main/resources/en_US.lang
+++ b/src/main/resources/en_US.lang
@@ -6,6 +6,7 @@ general:
type:
command: '&7Command'
chance: Chance
+ category: Category
money: '&6Money'
link: '&9Link'
free: Free
@@ -24,6 +25,10 @@ interface:
rightbuy: '&6&lRIGHT CLICK &7to buy kit.'
adminlore: '&6Middle Click &7to edit positioning.'
editlore: '&6&lEdit Mode||&6Left Click &7to move kit left|&6Right Click &7to move kit right||&6Middle Click &7to go back.'
+ categoryselector:
+ title: '&8Server Kit Categories'
+ details: '&7Hello &e%player%&7!|&7Listed below are our server''s kits.||&7Click on a &ecategory &7to view |&7the contained kits.'
+ view: '&6&lCLICK &7to view category.'
hologram:
previewonly: Click to Preview!
preview: Right-Click to Preview!
@@ -115,6 +120,10 @@ interface:
delaylore: '&7Currently set to: &a%delay%&7.||&7Use this to alter this kit delay.||&7Use &6-1 &7to make this kit single|&7use only.'
delayprompt: 'Delay in Seconds:'
delaynonumber: '&a%input% &8is not a number.'
+ category: '&5&lSet Category'
+ categorylore: '&7Currently set to: &a%category%&7.||&7Adding this kit to a category will|&7cause it do be displayed in|&7that category.||&cRight click to remove.'
+ categoryprompt: 'Category name:'
+ notacategory: '&cThat is not a category...'
destroy: '&c&lDestroy Kit'
destroylore: '|&7Click this to destroy this kit.'
destroyprompt: Enter "%kit%"
@@ -147,7 +156,7 @@ interface:
switchtoinventorylore: '&7Click to switch to|&7your inventory.'
switchtokitfunctions: '&6Switch To Kit Functions'
switchtokitfunctionslore: '&7Click to switch back|&7to the kit functions.'
- itemfunctionlore: '&7Display Item: &6%item%|&7Display Name: &6%name%|&7Display Lore: &6||&7Left-Click: &6To set a display item.|&7Middle-Click: &6To set a display name.|&7Right-Click: &6To set display lore.|&7Shift-Click: &6To set chance.||&7Display options only show up on display.|&7This can be useful if you want to explain|&7What an item does without putting it in the|&7permanent lore.||&6Leave function mode to move items.'
+ itemfunctionlore: '&7Display Item: &6%item%|&7Display Name: &6%name%|&7Display Lore: &6%lore%||&7Left-Click: &6To set a display item.|&7Middle-Click: &6To set a display name.|&7Right-Click: &6To set display lore.|&7Shift-Click: &6To set chance.||&7Display options only show up on display.|&7This can be useful if you want to explain|&7What an item does without putting it in the|&7permanent lore.||&6Leave function mode to move items.'
saved: '&8Changes to &a%kit% &8saved successfully.'
# Command Messages