i am going insane
This commit is contained in:
1 parent
e87e9eebca
commit
80d65bc2f4
14 files changed
+423
-31
No files matched your search
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+7
-7
@@ -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();
|
||||
}
|
||||
}
|
||||
+57
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+150
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+50
-12
@@ -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;
|
||||
}
|
||||
|
||||
+5
-4
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user