Updated SQL support & fixed saving

This commit is contained in:
Lilac 2019-08-13 15:20:04 +01:00
parent e0f0bfa8e0
commit 70e06c5162
9 changed files with 54 additions and 25 deletions

View File

@ -31,6 +31,7 @@ import com.songoda.update.Plugin;
import com.songoda.update.SongodaUpdate;
import org.apache.commons.lang.ArrayUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
@ -173,6 +174,9 @@ public class UltimateKits extends JavaPlugin {
Bukkit.getScheduler().runTaskLater(this, () -> {
this.dataManager.getBlockData((blockData) -> {
this.kitManager.setKitLocations(blockData);
kitManager.getKitLocations().forEach((location, data) -> {
UltimateKits.getInstance().getHologram().add(data);
});
});
}, 20L);
@ -184,8 +188,9 @@ public class UltimateKits extends JavaPlugin {
*/
public void onDisable() {
saveToFile();
kitManager.clearKits();
dataFile.saveConfig();
this.dataManager.bulkUpdateBlockData(this.getKitManager().getKitLocations());
kitManager.clearKits();
console.sendMessage(Methods.formatText("&a============================="));
console.sendMessage(Methods.formatText("&7UltimateKits " + this.getDescription().getVersion() + " by &5Songoda <3!"));
console.sendMessage(Methods.formatText("&7Action: &cDisabling&7..."));
@ -336,11 +341,20 @@ public class UltimateKits extends JavaPlugin {
* Reload plugin yaml files.
*/
public void reload() {
this.dataManager.bulkUpdateBlockData(this.getKitManager().getKitLocations());
kitFile.reloadConfig();
this.locale = Locale.getLocale(getConfig().getString("System.Language Mode"));
this.locale.reloadMessages();
settingsManager.reloadConfig();
loadFromFile();
Bukkit.getScheduler().runTaskLater(this, () -> {
this.dataManager.getBlockData((blockData) -> {
this.kitManager.setKitLocations(blockData);
kitManager.getKitLocations().forEach((location, data) -> {
UltimateKits.getInstance().getHologram().add(data);
});
});
}, 20L);
}
/**

View File

@ -4,6 +4,7 @@ import com.songoda.ultimatekits.UltimateKits;
import com.songoda.ultimatekits.kit.KitBlockData;
import com.songoda.ultimatekits.kit.KitType;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.plugin.Plugin;
@ -33,12 +34,19 @@ public class DataManager {
public void bulkUpdateBlockData(Map<Location, KitBlockData> blockData) {
this.databaseConnector.connect(connection -> {
String updateData = "UPDATE " + this.getTablePrefix() + "blockdata SET kit = ? WHERE " +
"world = ? AND x = ? AND y = ? AND z = ?";
String updateData = "UPDATE " + this.getTablePrefix() + "blockdata SET type = ?, kit = ?, holograms = ?, " +
"displayItems = ?, particles = ?, itemOverride = ? " +
"WHERE world = ? AND x = ? AND y = ? AND z = ?";
try (PreparedStatement statement = connection.prepareStatement(updateData)) {
for (int i = 0; i < blockData.size(); i++) {
KitBlockData data = blockData.get(i);
if (data == null) continue;
statement.setString(1, data.getType().toString());
statement.setString(2, data.getKit().getName());
statement.setBoolean(3, data.showHologram());
statement.setBoolean(4, data.isDisplayingItems());
statement.setBoolean(5, data.hasParticles());
statement.setBoolean(6, data.isItemOverride());
statement.setString(7, data.getWorld().getName());
statement.setInt(8, data.getX());
statement.setInt(9, data.getY());
@ -54,10 +62,16 @@ public class DataManager {
public void updateBlockData(KitBlockData blockData) {
this.async(() -> this.databaseConnector.connect(connection -> {
String updateData = "UPDATE " + this.getTablePrefix() + "blockdata SET kit = ? WHERE " +
"world = ? AND x = ? AND y = ? AND z = ?";
String updateData = "UPDATE " + this.getTablePrefix() + "blockdata SET type = ?, kit = ?, holograms = ?, " +
"displayItems = ?, particles = ?, itemOverride = ? " +
"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.setBoolean(3, blockData.showHologram());
statement.setBoolean(4, blockData.isDisplayingItems());
statement.setBoolean(5, blockData.hasParticles());
statement.setBoolean(6, blockData.isItemOverride());
statement.setString(7, blockData.getWorld().getName());
statement.setInt(8, blockData.getX());
statement.setInt(9, blockData.getY());
@ -93,16 +107,10 @@ public class DataManager {
String deleteData = "DELETE FROM " + this.getTablePrefix() + "blockdata WHERE world = ? " +
"AND x = ? AND y = ? AND z = ?";
try (PreparedStatement statement = connection.prepareStatement(deleteData)) {
statement.setString(1, blockData.getType().toString());
statement.setString(2, blockData.getKit().getName());
statement.setBoolean(3, blockData.showHologram());
statement.setBoolean(4, blockData.isDisplayingItems());
statement.setBoolean(5, blockData.hasParticles());
statement.setBoolean(6, blockData.isItemOverride());
statement.setString(7, blockData.getWorld().getName());
statement.setInt(8, blockData.getX());
statement.setInt(9, blockData.getY());
statement.setInt(10, blockData.getZ());
statement.setString(1, blockData.getWorld().getName());
statement.setInt(2, blockData.getX());
statement.setInt(3, blockData.getY());
statement.setInt(4, blockData.getZ());
statement.executeUpdate();
}
}));

View File

@ -6,9 +6,11 @@ import com.songoda.ultimatekits.kit.KitBlockData;
import com.songoda.ultimatekits.utils.Methods;
import com.songoda.ultimatekits.utils.ServerVersion;
import com.songoda.ultimatekits.utils.gui.AbstractGUI;
import com.songoda.ultimatekits.utils.gui.OnClose;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;

View File

@ -36,6 +36,7 @@ public class GUIKitEditor extends AbstractGUI {
private boolean isInInventory = false;
private ItemStack toReplace;
private int slot;
@ -312,7 +313,6 @@ public class GUIKitEditor extends AbstractGUI {
KitItem item2 = new KitItem(itemStack);
item2.setDisplayItem(material);
toReplace = item2.getMoveableItem();
} catch (Exception e) {
player.sendMessage(Methods.formatText("&a" + msg + " &8is not a valid material."));
@ -338,13 +338,15 @@ public class GUIKitEditor extends AbstractGUI {
String msg = event.getName();
KitItem item2 = new KitItem(itemStack);
item2.setDisplayName(msg);
this.toReplace = item2.getMoveableItem();
this.slot = slot;
});
gui.setOnClose((player1, inventory1) -> init(title, 54));
gui.setOnClose((player1, inventory1) -> {
kit.getContents().forEach((item1) -> {
});
init(title, 54);
});
ItemStack item2 = new ItemStack(Material.NAME_TAG);
ItemMeta meta2 = item2.getItemMeta();

View File

@ -71,6 +71,7 @@ public abstract class Hologram {
private void format(KitBlockData data, Action action) {
if (data == null) return;
instance.getDataManager().updateBlockData(data);
KitType kitType = data.getType();
ArrayList<String> lines = new ArrayList<>();

View File

@ -331,8 +331,7 @@ public class Kit {
new CrateAnimateTask(plugin, player, this, item.getItem());
return true;
} else {
if (Setting.AUTO_EQUIP_ARMOR.getBoolean()
&& ArmorType.equip(player, item.getItem())) continue;
if (Setting.AUTO_EQUIP_ARMOR.getBoolean() && ArmorType.equip(player, item.getItem())) continue;
Map<Integer, ItemStack> overfilled = player.getInventory().addItem(item.getItem());
for (ItemStack item2 : overfilled.values()) {

View File

@ -20,10 +20,12 @@ public class KitBlockData {
this.items = items;
this.itemOverride = itemOverride;
this.type = type;
UltimateKits.getInstance().getDataManager().createBlockData(this);
}
public KitBlockData(Kit kit, Location location) {
this(kit, location, KitType.PREVIEW, false, false, false, false);
UltimateKits.getInstance().getDataManager().createBlockData(this);
}
public void reset() {
@ -34,6 +36,7 @@ public class KitBlockData {
if (UltimateKits.getInstance().getHologram() != null)
UltimateKits.getInstance().getHologram().remove(this);
UltimateKits.getInstance().getDataManager().updateBlockData(this);
}
public Kit getKit() {

View File

@ -6,6 +6,7 @@ import com.songoda.ultimatekits.kit.type.KitContentCommand;
import com.songoda.ultimatekits.kit.type.KitContentEconomy;
import com.songoda.ultimatekits.kit.type.KitContentItem;
import com.songoda.ultimatekits.utils.Methods;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@ -73,7 +74,6 @@ public class KitItem {
private String translateLine(String line) {
String[] lineSplit = line.trim().split(";", 2);
String[] kitOptions = lineSplit[0].replace(String.valueOf(ChatColor.COLOR_CHAR), "").split(" ");
for (String s : kitOptions) {
if (s.equals("")) continue;
String[] sSplit = s.split(":", 2);
@ -167,7 +167,8 @@ public class KitItem {
ItemStack item = content.getItemForDisplay();
ItemMeta meta = item.getItemMeta();
if (chance != 0 || displayItem != null || displayName != null || displayLore != null) {
meta.setDisplayName(meta.hasDisplayName() ? Methods.convertToInvisibleString(compileOptions() + ";") + meta.getDisplayName() : Methods.convertToInvisibleString(compileOptions() + ";faqe") + item.getType().name().replace("_", " "));
meta.setDisplayName(meta.hasDisplayName() ? Methods.convertToInvisibleString(compileOptions() + ";")
+ meta.getDisplayName() : Methods.convertToInvisibleString(compileOptions() + ";faqe") + item.getType().name().replace("_", " "));
}
item.setItemMeta(meta);
return item;

View File

@ -1,6 +1,7 @@
package com.songoda.ultimatekits.kit;
import com.songoda.ultimatekits.UltimateKits;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import java.util.*;
@ -32,14 +33,12 @@ public final class KitManager {
public void addKitToLocation(Kit kit, Location location) {
KitBlockData data = new KitBlockData(kit, location);
kitsAtLocations.put(roundLocation(location), data);
UltimateKits.getInstance().getDataManager().createBlockData(data);
}
public void addKitToLocation(Kit kit, Location location, KitType type, boolean hologram, boolean particles, boolean items, boolean itemOverride) {
KitBlockData kitBlockData = kitsAtLocations.put(roundLocation(location), new KitBlockData(kit, location, type, hologram, particles, items, itemOverride));
if (UltimateKits.getInstance().getHologram() != null)
UltimateKits.getInstance().getHologram().update(kitBlockData);
UltimateKits.getInstance().getDataManager().createBlockData(kitBlockData);
}
public Kit removeKitFromLocation(Location location) {