i am going insane

This commit is contained in:
Luka de Vrij committed 2024-01-05 22:12:31 +01:00
1 parent e87e9eebca
commit 80d65bc2f4
14 files changed
+423 -31

No files matched your search

+8
View File
@@ -111,6 +111,7 @@
<id>sonatype-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
@@ -125,5 +126,12 @@
<artifactId>bukkit-sidebar</artifactId>
<version>6.2.5-SNAPSHOT</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-jdbc -->
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>6.1</version>
</dependency>
</dependencies>
</project>
@@ -6,8 +6,10 @@ import org.bukkit.Bukkit;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin;
@@ -17,7 +19,7 @@ public abstract class AbstractInventory implements Listener {
public AbstractInventory(int size, Component title, Plugin plugin) {
this.plugin = plugin;
// Create a new inventory, with no owner (as this isn't a real inventory), a size of nine, called example
// Create a new inventory, with no owner (as this isn't a real inventory)
inv = Bukkit.createInventory(null, size, title);
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@@ -31,6 +33,10 @@ public abstract class AbstractInventory implements Listener {
ent.openInventory(inv);
}
public void unregisterEvents(){
HandlerList.unregisterAll(this);
}
// Check for clicks on items
@EventHandler
public void onInventoryClick(final InventoryClickEvent e) {
@@ -46,4 +52,10 @@ public abstract class AbstractInventory implements Listener {
}
public abstract void onInventoryClickLogic(final InventoryClickEvent e);
@EventHandler
public void onInventoryClose(InventoryCloseEvent e){
if (!e.getInventory().equals(inv)) return;
HandlerList.unregisterAll(this);
}
}
@@ -4,6 +4,7 @@ import me.lifelessnerd.purekitpvp.combathandlers.leveling.PlayerLevelChat;
import me.lifelessnerd.purekitpvp.combathandlers.killhandler.Suicide;
import me.lifelessnerd.purekitpvp.combathandlers.mobhandler.OnPlayerSpawnMob;
import me.lifelessnerd.purekitpvp.combathandlers.killhandler.DeathHandler;
import me.lifelessnerd.purekitpvp.database.KitDatabase;
import me.lifelessnerd.purekitpvp.files.lang.LanguageConfig;
import me.lifelessnerd.purekitpvp.globalevents.events.DoubleHealthListeners;
import me.lifelessnerd.purekitpvp.scoreboards.SidebarScoreboard;
@@ -26,10 +27,14 @@ import me.lifelessnerd.purekitpvp.kitCommand.KitsGUI;
import me.lifelessnerd.purekitpvp.noncombatstats.commands.GetStats;
import me.lifelessnerd.purekitpvp.noncombatstats.listeners.ArrowsShotStat;
import me.lifelessnerd.purekitpvp.noncombatstats.listeners.ProjectilesThrownStat;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import java.sql.SQLException;
public final class PureKitPvP extends JavaPlugin {
private KitDatabase kitDatabase;
@Override
public void onEnable() {
PerkFireHandler.plugin = this; //idk? fixes npe?
@@ -39,13 +44,23 @@ public final class PureKitPvP extends JavaPlugin {
getConfig().options().copyDefaults();
saveConfig();
//Database
try {
// Ensure the plugin's data folder exists
if (!getDataFolder().exists()) {
getDataFolder().mkdirs();
}
kitDatabase = new KitDatabase(getDataFolder().getAbsolutePath() + "/kitdatabase.db");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Failed to connect to database! " + e.getMessage());
Bukkit.getPluginManager().disablePlugin(this);
}
//Kits config
KitConfig.setup();
KitConfig.get().addDefault("kits", "");
//Might create problems, I tried to just keep value null but then the entire value didn't show up until I created a kit
//Which is not too bad either so whatever, if there are any problems ever change this and hope for the best
//Otherwise find a way to make a path without a value, like: kits: , instead of kits: ''
//: fix this with createConfiguration if I feel like it, tbf it works fine (IT DOES)
KitConfig.get().options().copyDefaults(true);
KitConfig.save();
@@ -126,5 +141,8 @@ public final class PureKitPvP extends JavaPlugin {
getLogger().info("Goodbye!");
}
public KitDatabase getKitDatabase() {
return kitDatabase;
}
}
@@ -100,25 +100,25 @@ public class ProjectileTrail implements Listener {
case "none":
return;
case "flame":
location.getWorld().spawnParticle(Particle.FLAME, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.FLAME, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "sparkle":
location.getWorld().spawnParticle(Particle.END_ROD, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.END_ROD, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "water_drip":
location.getWorld().spawnParticle(Particle.DRIP_WATER, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.DRIP_WATER, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "heart":
location.getWorld().spawnParticle(Particle.HEART, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.HEART, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "firework":
location.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.FIREWORKS_SPARK, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "totem":
location.getWorld().spawnParticle(Particle.TOTEM, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.TOTEM, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
case "smoke":
location.getWorld().spawnParticle(Particle.CAMPFIRE_COSY_SMOKE, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, true);
location.getWorld().spawnParticle(Particle.CAMPFIRE_COSY_SMOKE, location, plugin.getConfig().getInt("projectile-trail-count"), 0.1, 0.1, 0.1, 0.001, null, true);
break;
default:
break;
@@ -0,0 +1,73 @@
package me.lifelessnerd.purekitpvp.database;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.jdbc.JdbcConnectionSource;
import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import me.lifelessnerd.purekitpvp.database.entities.PlayerKitPreferences;
import org.bukkit.entity.Player;
import java.sql.SQLException;
import java.util.HashMap;
public class KitDatabase {
private final Dao<PlayerKitPreferences, String> playerKitPreferencesDao;
public KitDatabase(String path) throws SQLException {
ConnectionSource connectionSource = new JdbcConnectionSource("jdbc:sqlite:" + path);
TableUtils.createTableIfNotExists(connectionSource, PlayerKitPreferences.class);
playerKitPreferencesDao = DaoManager.createDao(connectionSource, PlayerKitPreferences.class);
}
public void addEntry(Player player, String kitName, HashMap<Integer, Integer> prefs) throws SQLException {
if (hasEntry(player, kitName)){
updateEntry(player, kitName, prefs);
return;
}
PlayerKitPreferences playerKitPreferences = new PlayerKitPreferences();
playerKitPreferences.setUuid(player.getUniqueId().toString());
playerKitPreferences.setUsername(player.getName());
playerKitPreferences.setKitName(kitName);
playerKitPreferences.setPreferences(prefs);
playerKitPreferencesDao.create(playerKitPreferences);
}
public boolean hasEntry(Player player, String kitName) throws SQLException {
// Query for a user with the specified uuid and kitName
QueryBuilder<PlayerKitPreferences, ?> queryBuilder = playerKitPreferencesDao.queryBuilder();
queryBuilder.where().eq("uuid", player.getUniqueId().toString()).and().eq("kitName", kitName);
// Check if any records match the criteria
return queryBuilder.queryForFirst() != null;
}
public void updateEntry(Player player, String kitName, HashMap<Integer, Integer> prefs) throws SQLException {
QueryBuilder<PlayerKitPreferences, ?> queryBuilder = playerKitPreferencesDao.queryBuilder();
queryBuilder.where().eq("uuid", player.getUniqueId().toString()).and().eq("kitName", kitName);
PlayerKitPreferences playerKitPreferences = queryBuilder.queryForFirst();
if (playerKitPreferences != null) {
playerKitPreferences.setPreferences(prefs);
playerKitPreferencesDao.update(playerKitPreferences);
} else {
addEntry(player, kitName, prefs);
}
}
public PlayerKitPreferences getEntry(Player player, String kitName) throws SQLException {
if (!hasEntry(player, kitName)){
HashMap<Integer, Integer> emptyMap = new HashMap<>();
addEntry(player, kitName, emptyMap);
}
// Query for a user with the specified uuid and kitName
QueryBuilder<PlayerKitPreferences, ?> queryBuilder = playerKitPreferencesDao.queryBuilder();
queryBuilder.where().eq("uuid", player.getUniqueId().toString()).and().eq("kitName", kitName);
// Check if any records match the criteria
return queryBuilder.queryForFirst();
}
}
@@ -0,0 +1,57 @@
package me.lifelessnerd.purekitpvp.database.entities;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.util.HashMap;
@DatabaseTable(tableName = "player_kit_preferences")
public class PlayerKitPreferences {
@DatabaseField(generatedId = true, canBeNull = false)
private int id;
@DatabaseField(canBeNull = false)
private String uuid;
@DatabaseField(canBeNull = false)
private String username;
@DatabaseField(canBeNull = false)
private String kitName;
@DatabaseField(dataType = DataType.SERIALIZABLE)
private HashMap<Integer, Integer> preferences;
public PlayerKitPreferences() {
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getKitName() {
return kitName;
}
public void setKitName(String kitName) {
this.kitName = kitName;
}
public HashMap<Integer, Integer> getPreferences() {
return preferences;
}
public void setPreferences(HashMap<Integer, Integer> preferences) {
this.preferences = preferences;
}
}
@@ -149,6 +149,11 @@ public class LanguageConfig {
defaults.put(LanguageKey.KITS_GUI_PREVIEW_TITLE, "&aKit Preview > &b%KIT%");
defaults.put(LanguageKey.KITS_GUI_PREVIEW_TEXT, "&aRight click to preview.");
defaults.put(LanguageKey.KITS_GUI_PREVIEW_STATS, "&6Global Stats");
defaults.put(LanguageKey.KITS_GUI_PREVIEW_PREFS, "&6Customize layout");
defaults.put(LanguageKey.KITS_GUI_PREFS_TITLE, "&6Customizing > &b%KIT%");
defaults.put(LanguageKey.KITS_GUI_PREFS_SAVE, "&6Save custom layout");
defaults.put(LanguageKey.KITS_GUI_PREFS_SAVED, "&6Custom layout saved!");
defaults.put(LanguageKey.KITS_GUI_PREFS_BACK, "&6Back to kit preview");
defaults.put(LanguageKey.KITS_GUI_PREVIEW_SELECT, "&aSelect Kit");
defaults.put(LanguageKey.KITS_GUI_PREVIEW_BACK, "&aBack to Kits");
defaults.put(LanguageKey.KITS_GUI_EDIT_SAVE, "&aSave Kit");
@@ -60,6 +60,11 @@ public enum LanguageKey {
KITS_GUI_PREVIEW_TITLE,
KITS_GUI_PREVIEW_TEXT,
KITS_GUI_PREVIEW_STATS,
KITS_GUI_PREVIEW_PREFS,
KITS_GUI_PREFS_TITLE,
KITS_GUI_PREFS_SAVE,
KITS_GUI_PREFS_SAVED,
KITS_GUI_PREFS_BACK,
KITS_GUI_PREVIEW_SELECT,
KITS_GUI_PREVIEW_BACK,
KITS_GUI_EDIT_SAVE,
@@ -51,7 +51,7 @@ public class GUIListener implements Listener {
KitPreviewInventory kitPreviewInventory = new KitPreviewInventory(54,
LanguageConfig.lang.get("KITS_GUI_PREVIEW_TITLE").replaceText(ComponentUtils.replaceConfig("%KIT%", displayName)),
plugin,
displayName);
displayName, player);
kitPreviewInventory.openInventory(player);
return;
}
@@ -1,5 +1,8 @@
package me.lifelessnerd.purekitpvp.kitCommand;
import me.lifelessnerd.purekitpvp.PureKitPvP;
import me.lifelessnerd.purekitpvp.database.KitDatabase;
import me.lifelessnerd.purekitpvp.database.entities.PlayerKitPreferences;
import me.lifelessnerd.purekitpvp.files.KitConfig;
import me.lifelessnerd.purekitpvp.files.KitStatsConfig;
import me.lifelessnerd.purekitpvp.files.lang.LanguageConfig;
@@ -20,8 +23,11 @@ import org.bukkit.potion.PotionEffect;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GetKit implements TabExecutor, Listener {
Plugin plugin;
@@ -94,13 +100,25 @@ public class GetKit implements TabExecutor, Listener {
for (PotionEffect effect : player.getActivePotionEffects())
player.removePotionEffect(effect.getType());
Map<Integer, Integer> playerPrefs = new HashMap<>();
PureKitPvP pureKitPvP = (PureKitPvP) plugin;
KitDatabase db = pureKitPvP.getKitDatabase();
try {
if(db.hasEntry(player, kitNameArg)){
PlayerKitPreferences playerKitPreferences = db.getEntry(player, kitNameArg);
playerPrefs = playerKitPreferences.getPreferences();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
//Give items
for (int index = 0; index < kitItems.size(); index++) {
ItemStack item = kitItems.get(index);
if (item == null) {
item = new ItemStack(Material.AIR);
}
player.getInventory().setItem(index, item);
player.getInventory().setItem(playerPrefs.getOrDefault(index, index), item);
}
@@ -0,0 +1,150 @@
package me.lifelessnerd.purekitpvp.kitCommand;
import me.lifelessnerd.purekitpvp.AbstractInventory;
import me.lifelessnerd.purekitpvp.PureKitPvP;
import me.lifelessnerd.purekitpvp.database.KitDatabase;
import me.lifelessnerd.purekitpvp.database.entities.PlayerKitPreferences;
import me.lifelessnerd.purekitpvp.files.KitConfig;
import me.lifelessnerd.purekitpvp.files.lang.LanguageConfig;
import me.lifelessnerd.purekitpvp.files.lang.LanguageKey;
import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.inventory.*;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.Plugin;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class KitPreferencesInventory extends AbstractInventory {
String kitName;
Player player;
KitDatabase db;
public KitPreferencesInventory(int size, Component title, Plugin plugin, String kitName, Player toBeShownPlayer) {
super(size, title, plugin);
this.kitName = kitName;
this.player = toBeShownPlayer;
PureKitPvP pureKitPvP = (PureKitPvP) this.plugin;
db = pureKitPvP.getKitDatabase();
initializeItems();
}
@Override
public void initializeItems() {
FileConfiguration fileConfiguration = KitConfig.get();
List<ItemStack> kitItems = (List<ItemStack>) fileConfiguration.get("kits." + kitName + ".contents");
Map<Integer, Integer> playerPrefs = new HashMap<>();
try {
if(db.hasEntry(player, kitName)){
PlayerKitPreferences playerKitPreferences = db.getEntry(player, kitName);
playerPrefs = playerKitPreferences.getPreferences();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
for (int index = 0; index < kitItems.size(); index++) {
ItemStack item = kitItems.get(index);
if (item == null) continue;
ItemMeta meta = item.getItemMeta();
// Sets defaults indices as PDC - only after this we shift stuff around
meta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_GUI_PREFS_INDEX"), PersistentDataType.INTEGER, index);
item.setItemMeta(meta);
inv.setItem(playerPrefs.getOrDefault(index, index), item);
}
ItemStack redStainedGlass = new ItemStack(Material.RED_STAINED_GLASS_PANE, 1);
ItemMeta glassMeta = redStainedGlass.getItemMeta();
glassMeta.displayName(Component.text(""));
redStainedGlass.setItemMeta(glassMeta);
for (int i = 41; i < 54; i++) inv.setItem(i, redStainedGlass);
ItemStack greenConcrete = new ItemStack(Material.GREEN_CONCRETE, 1);
ItemMeta saveMeta = greenConcrete.getItemMeta();
saveMeta.displayName(LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREFS_SAVE.toString()));
greenConcrete.setItemMeta(saveMeta);
inv.setItem(49, greenConcrete);
ItemStack arrow = new ItemStack(Material.ARROW, 1);
ItemMeta backMeta = arrow.getItemMeta();
backMeta.displayName(LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREFS_BACK.toString()));
arrow.setItemMeta(backMeta);
inv.setItem(48, arrow);
}
@Override
public void onInventoryClickLogic(InventoryClickEvent e) {
if (e.getSlot() < 41){
e.setCancelled(false);
return;
}
if (e.getSlot() >= 41) { // red panes
e.setCancelled(true);
}
if (e.getSlot() == 48){ // back button
KitPreviewInventory kitPreviewInventory = new KitPreviewInventory(54,
LanguageConfig.lang.get("KITS_GUI_PREVIEW_TITLE").replaceText(ComponentUtils.replaceConfig("%KIT%", kitName)),
plugin,
kitName, player);
kitPreviewInventory.openInventory(player);
return;
}
if (e.getSlot() == 49) { // save icon
HashMap<Integer, Integer> newPrefs = new HashMap<>();
// See changes in inventory
int index = 0;
for (ItemStack item : inv.getContents()){
if (index >= 41) break;
if (item == null) {
index++;
continue;
}
ItemMeta itemMeta = item.getItemMeta();
int oldIndex = itemMeta.getPersistentDataContainer().get(new NamespacedKey(plugin, "KITS_GUI_PREFS_INDEX"), PersistentDataType.INTEGER);
if (oldIndex != index){ // Change is different from standard!
System.out.println("change! item that was on " + oldIndex + " now on " + index);
newPrefs.put(oldIndex, index);
}
index++;
}
// Update db pref value
try {
db.updateEntry(player, kitName, newPrefs);
} catch(Exception ex){
throw new RuntimeException(ex);
}
player.sendMessage(LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREFS_SAVED.toString()));
return;
}
e.setCancelled(true); // ensures no listeners are fighting
}
@EventHandler
public void onInventoryMove(InventoryClickEvent e){
System.out.println(e.getRawSlot());
if (!e.getView().getTopInventory().equals(inv)) return;
if (!e.getView().getBottomInventory().getType().equals(InventoryType.PLAYER)) return;
if (e.getRawSlot() >= 54){ // TODO
e.setCancelled(true);
}
}
}
@@ -1,9 +1,14 @@
package me.lifelessnerd.purekitpvp.kitCommand;
import me.lifelessnerd.purekitpvp.AbstractInventory;
import me.lifelessnerd.purekitpvp.PureKitPvP;
import me.lifelessnerd.purekitpvp.database.KitDatabase;
import me.lifelessnerd.purekitpvp.database.entities.PlayerKitPreferences;
import me.lifelessnerd.purekitpvp.files.KitConfig;
import me.lifelessnerd.purekitpvp.files.KitStatsConfig;
import me.lifelessnerd.purekitpvp.files.lang.LanguageConfig;
import me.lifelessnerd.purekitpvp.files.lang.LanguageKey;
import me.lifelessnerd.purekitpvp.utils.ComponentUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
@@ -18,30 +23,45 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.Plugin;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class KitPreviewInventory extends AbstractInventory {
public String kitName;
KitDatabase db;
Player player;
public KitPreviewInventory(int size, Component title, Plugin plugin, String kitName) {
public KitPreviewInventory(int size, Component title, Plugin plugin, String kitName, Player playerToBeShown) {
super(size, title, plugin);
this.kitName = kitName;
this.player = playerToBeShown;
PureKitPvP pureKitPvP = (PureKitPvP) this.plugin;
db = pureKitPvP.getKitDatabase();
initializeItems();
}
@Override
public void initializeItems() {
FileConfiguration fileConfiguration = KitConfig.get();
System.out.println(kitName);
List<ItemStack> kitItems = (List<ItemStack>) fileConfiguration.get("kits." + kitName + ".contents");
Map<Integer, Integer> playerPrefs = new HashMap<>();
try {
if(db.hasEntry(player, kitName)){
PlayerKitPreferences playerKitPreferences = db.getEntry(player, kitName);
playerPrefs = playerKitPreferences.getPreferences();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
for (int index = 0; index < kitItems.size(); index++) {
ItemStack item = kitItems.get(index);
if (item == null) {
item = new ItemStack(Material.AIR);
}
inv.setItem(index, item);
if (item == null) continue;
inv.setItem(playerPrefs.getOrDefault(index, index), item);
}
ItemStack redStainedGlass = new ItemStack(Material.RED_STAINED_GLASS_PANE, 1);
@@ -62,14 +82,22 @@ public class KitPreviewInventory extends AbstractInventory {
selectItem.setItemMeta(selectMeta);
inv.setItem(50, selectItem);
ItemStack anvil = new ItemStack(Material.ANVIL, 1);
ItemMeta anvilMeta = anvil.getItemMeta();
anvilMeta.displayName(LanguageConfig.lang.get("KITS_GUI_PREVIEW_STATS"));
anvilMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM"), PersistentDataType.STRING, "Stats");
ItemStack paper = new ItemStack(Material.PAPER, 1);
ItemMeta paperMeta = paper.getItemMeta();
paperMeta.displayName(LanguageConfig.lang.get("KITS_GUI_PREVIEW_STATS"));
paperMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM"), PersistentDataType.STRING, "Stats");
ArrayList<Component> lore2 = new ArrayList<>();
int kitChosen = KitStatsConfig.get().getInt(kitName);
lore2.add(Component.text("Times Chosen: ", NamedTextColor.AQUA).append(Component.text(kitChosen, NamedTextColor.GREEN)).decoration(TextDecoration.ITALIC, false));
anvilMeta.lore(lore2);
paperMeta.lore(lore2);
paper.setItemMeta(paperMeta);
inv.setItem(51, paper);
ItemStack anvil = new ItemStack(Material.ANVIL, 1);
ItemMeta anvilMeta = anvil.getItemMeta();
anvilMeta.displayName(LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREVIEW_PREFS.toString()));
anvilMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM"), PersistentDataType.STRING, "Edit");
anvilMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM_KIT"), PersistentDataType.STRING, kitName);
anvil.setItemMeta(anvilMeta);
inv.setItem(49, anvil);
@@ -87,12 +115,13 @@ public class KitPreviewInventory extends AbstractInventory {
ItemStack clickedItem = e.getCurrentItem();
Player player = (Player) e.getWhoClicked();
InventoryView inv = e.getView();
String kitName;
if (clickedItem.getItemMeta().getPersistentDataContainer().has(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM"))){
String pdcValue = clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM"), PersistentDataType.STRING);
switch(pdcValue){
case "Select":
String kitName = clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM_KIT"), PersistentDataType.STRING);
kitName = clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM_KIT"), PersistentDataType.STRING);
player.chat("/getkit " + kitName);
player.closeInventory();
break;
@@ -102,6 +131,15 @@ public class KitPreviewInventory extends AbstractInventory {
case "Back":
player.chat("/kit");
break;
case "Edit":
kitName = clickedItem.getItemMeta().getPersistentDataContainer().get(new NamespacedKey(plugin, "KITS_PREVIEW_GUI_ITEM_KIT"), PersistentDataType.STRING);
KitPreferencesInventory kitPreferencesInventory = new KitPreferencesInventory(54,
LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREFS_TITLE.toString()).
replaceText(ComponentUtils.replaceConfig("%KIT%", kitName)).
decoration(TextDecoration.ITALIC, false),
plugin, kitName, player);
kitPreferencesInventory.openInventory(player);
break;
default:
break;
}
@@ -44,11 +44,11 @@ public class EditKitInventory extends AbstractInventory {
glassMeta.displayName(Component.text(""));
redStainedGlass.setItemMeta(glassMeta);
for (int i = 45; i < 54; i++) inv.setItem(i, redStainedGlass);
for (int i = 41; i < 54; i++) inv.setItem(i, redStainedGlass);
ItemStack greenConcrete = new ItemStack(Material.GREEN_CONCRETE, 1);
ItemMeta saveMeta = greenConcrete.getItemMeta();
saveMeta.displayName(LanguageConfig.lang.get("KITS_GUI_EDIT_SAVE"));
saveMeta.displayName(LanguageConfig.lang.get(LanguageKey.KITS_GUI_PREFS_SAVE.toString()));
saveMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_GUI_EDIT_ITEM"), PersistentDataType.STRING, "Save");
saveMeta.getPersistentDataContainer().set(new NamespacedKey(plugin, "KITS_GUI_EDIT_ITEM_KIT"), PersistentDataType.STRING, kitName);
greenConcrete.setItemMeta(saveMeta);
@@ -59,7 +59,7 @@ public class EditKitInventory extends AbstractInventory {
@Override
public void onInventoryClickLogic(InventoryClickEvent e) {
if (e.getSlot() >= 45){ // red panes
if (e.getSlot() >= 41){ // red panes
e.setCancelled(true);
}
if (e.getSlot() == 49){ // save icon
@@ -68,7 +68,7 @@ public class EditKitInventory extends AbstractInventory {
ItemStack[] kitContents = inv.getContents();
int index = 0;
for (ItemStack item : inv.getContents()){
if (index >= 45) {
if (index >= 41) {
kitContents[index] = null;
}
@@ -79,6 +79,7 @@ public class EditKitInventory extends AbstractInventory {
KitConfig.reload();
e.getWhoClicked().sendMessage(LanguageConfig.lang.get(LanguageKey.KITS_GUI_EDIT_SAVED.toString()));
inv.close();
}
@@ -3,10 +3,17 @@ package me.lifelessnerd.purekitpvp;
import me.lifelessnerd.purekitpvp.files.lang.LanguageKey;
import java.util.HashMap;
import java.util.Map;
public class sample {
public static void main(String[] args) {
System.out.println(String.valueOf(LanguageKey.SCOREBOARD_GLOBAL_LEVEL));
Map<Integer, Integer> playerPrefs = new HashMap<>();
playerPrefs.put(0, 8);
playerPrefs.put(1, 7);
System.out.println(playerPrefs);
}