This commit is contained in:
Ajneb97 2023-10-06 19:57:10 -03:00
parent f41f74033e
commit 23384a49df
6 changed files with 273 additions and 7 deletions

View file

@ -39,6 +39,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
delete(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("reset")) {
reset(sender,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("migrate")) {
migrate(sender,args,messagesConfig,msgManager);
}else{
help(sender,msgManager,messagesConfig);
}
@ -69,6 +71,8 @@ public class MainCommand implements CommandExecutor, TabCompleter {
edit(player,args,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("verify")){
verify(player,messagesConfig,msgManager);
}else if(args[0].equalsIgnoreCase("migrate")) {
migrate(sender,args,messagesConfig,msgManager);
}
else{
// /kit <kit> (short command)
@ -113,6 +117,15 @@ public class MainCommand implements CommandExecutor, TabCompleter {
sender.sendMessage(MessagesManager.getColoredMessage("&7[ [ &8[&bPlayerKits&a²&8] &7] ]"));
}
public void migrate(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){
if(!PlayerUtils.isPlayerKitsAdmin(sender)){
msgManager.sendMessage(sender,messagesConfig.getString("noPermissions"),true);
return;
}
plugin.getMigrationManager().migrateKits(sender);
}
public void verify(Player player,FileConfiguration messagesConfig,MessagesManager msgManager){
if(!PlayerUtils.isPlayerKitsAdmin(player)){
msgManager.sendMessage(player,messagesConfig.getString("noPermissions"),true);
@ -328,7 +341,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
if(PlayerUtils.isPlayerKitsAdmin(sender)){
commands.add("give");commands.add("delete");commands.add("create");
commands.add("reload");commands.add("reset");commands.add("edit");
commands.add("verify");
commands.add("verify");commands.add("migrate");
}
for(String c : commands) {
if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) {

View file

@ -37,6 +37,7 @@ public class PlayerKits2 extends JavaPlugin {
private NMSManager nmsManager;
private UpdateCheckerManager updateCheckerManager;
private VerifyManager verifyManager;
private MigrationManager migrationManager;
private InventoryUpdateTaskManager inventoryUpdateTaskManager;
private PlayerDataSaveTask playerDataSaveTask;
@ -59,6 +60,8 @@ public class PlayerKits2 extends JavaPlugin {
this.configsManager = new ConfigsManager(this);
this.configsManager.configure();
this.migrationManager = new MigrationManager(this);
this.inventoryUpdateTaskManager = new InventoryUpdateTaskManager(this);
this.inventoryUpdateTaskManager.start();
@ -170,6 +173,9 @@ public class PlayerKits2 extends JavaPlugin {
return verifyManager;
}
public MigrationManager getMigrationManager() {
return migrationManager;
}
public void updateMessage(UpdateCheckerResult result){
if(!result.isError()){

View file

@ -15,10 +15,7 @@ import pk.ajneb97.model.item.*;
import pk.ajneb97.utils.ItemUtils;
import pk.ajneb97.utils.OtherUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
public class KitItemManager {
@ -432,7 +429,133 @@ public class KitItemManager {
return kitItem;
}
public KitItem getKitItemFromV1Config(FileConfiguration config, String path){
String id = config.getString(path+".id");
String name = config.contains(path+".name") ? config.getString(path+".name") : null;
List<String> lore = config.contains(path+".lore") ? config.getStringList(path+".lore") : null;
int amount = config.contains(path+".amount") ? Integer.parseInt(config.getString(path+".amount")) : 1;
short durability = config.contains(path+".durability") ? Short.parseShort(config.getString(path+".durability")) : 0;
int customModelData = config.contains(path+".custom_model_data") ? Integer.parseInt(config.getString(path+".custom_model_data")) : 0;
int color = config.contains(path+".color") ? Integer.parseInt(config.getString(path+".color")) : 0;
List<String> enchants = config.contains(path+".enchants") ? config.getStringList(path+".enchants") : null;
List<String> flags = config.contains(path+".hide-flags") ? config.getStringList(path+".hide-flags") : null;
List<String> bookEnchants = config.contains(path+".book-enchants") ? config.getStringList(path+".book-enchants") : null;
KitItemPotionData potionData = null;
if(config.contains(path+".potion-type")) {
List<String> potionEffects = null;
boolean extended = false;
boolean upgraded = false;
String potionType = null;
int potionColor = 0;
if(config.contains(path+".potion-effects")) {
potionEffects = config.getStringList(path+".potion-effects");
}
if(config.contains(path+".potion-extended")) {
extended = Boolean.parseBoolean(config.getString(path+".potion-extended"));
}
if(config.contains(path+".potion-upgraded")) {
upgraded = Boolean.parseBoolean(config.getString(path+".potion-upgraded"));
}
potionType = config.getString(path+".potion-type");
if(config.contains(path+".potion-color")) {
potionColor = config.getInt(path+".potion-color");
}
potionData = new KitItemPotionData(upgraded,extended,potionType,potionColor,potionEffects);
}
KitItemBookData bookData = null;
if(config.contains(path+".book-title")) {
List<String> pages = config.getStringList(path+".book-pages");
String author = null;
String generation = null;
String title = null;
if(config.contains(path+".book-author")) {
author = config.getString(path+".book-author");
}
if(config.contains(path+".book-generation")) {
generation = config.getString(path+".book-generation");
}
title = config.getString(path+".book-title");
bookData = new KitItemBookData(pages,author,generation,title);
}
KitItemFireworkData fireworkData = null;
if(config.contains(path+".firework-effects")) {
List<String> rocketEffects = null;
int power = 0;
rocketEffects = config.getStringList(path+".firework-effects");
if(config.contains(path+".firework-power")) {
power = Integer.parseInt(config.getString(path+".firework-power"));
}
fireworkData = new KitItemFireworkData(rocketEffects,null,power);
}
KitItemBannerData bannerData = null;
if(config.contains(path+".banner-pattern")) {
List<String> patterns = null;
String baseColor = null;
String[] pattern = config.getString(path+".banner-pattern").split(";");
patterns = new ArrayList<>();
for(String p : pattern){
String[] pSep = p.split(":");
patterns.add(pSep[0]+";"+pSep[1]);
}
if(config.contains(path+".banner-color")) {
baseColor = config.getString(path+".banner-color");
}
bannerData = new KitItemBannerData(patterns,baseColor);
}
KitItemSkullData skullData = null;
if(config.contains(path+".skull-texture")) {
String skullTexture = null;
String skullId = null;
skullTexture = config.getString(path+".skull-texture");
skullId = UUID.randomUUID().toString();
skullData = new KitItemSkullData(null,skullTexture,skullId);
}
List<String> nbtList = new ArrayList<>();
if(config.contains(path+".nbt")){
nbtList = config.getStringList(path+".nbt");
for(int i=0;i<nbtList.size();i++){
nbtList.set(i,nbtList.get(i).replace(";","|"));
}
}
List<String> attributes = new ArrayList<>();
if(config.contains(path+".attributes")){
for(String attributeName : config.getConfigurationSection(path+".attributes").getKeys(false)){
String attribute = config.getString(path+".attributes."+attributeName+".modifiers");
attributes.add(attribute);
}
}
boolean offhand = config.contains(path+".offhand") ? config.getBoolean(path+".offhand") : false;
KitItem kitItem = new KitItem(id);
kitItem.setName(name);
kitItem.setLore(lore);
kitItem.setAmount(amount);
kitItem.setDurability(durability);
kitItem.setCustomModelData(customModelData);
kitItem.setColor(color);
kitItem.setEnchants(enchants);
kitItem.setFlags(flags);
kitItem.setBookEnchants(bookEnchants);
kitItem.setNbt(nbtList);
kitItem.setAttributes(attributes);
kitItem.setSkullData(skullData);
kitItem.setPotionData(potionData);
kitItem.setFireworkData(fireworkData);
kitItem.setBannerData(bannerData);
kitItem.setBookData(bookData);
kitItem.setOffhand(offhand);
return kitItem;
}
public void replaceVariables(ItemStack item, ArrayList<KitVariable> variables){
if(item.hasItemMeta()){

View file

@ -190,7 +190,8 @@ public class KitsManager {
//Requirements - Buy
KitRequirements kitRequirements = kit.getRequirements();
if(!giveKitInstructions.isIgnoreRequirements() && kitRequirements != null){
if(!giveKitInstructions.isIgnoreRequirements() && kitRequirements != null &&
(kitRequirements.getPrice() != 0 || !kitRequirements.getExtraRequirements().isEmpty())){
if(!(kitRequirements.isOneTimeRequirements() && playerDataManager.isKitBought(player,kit.getName()))){
if(!giveKitInstructions.isRequirementsSatisfied()){
//Player must buy it first

View file

@ -0,0 +1,123 @@
package pk.ajneb97.managers;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.configs.KitsConfigManager;
import pk.ajneb97.model.Kit;
import pk.ajneb97.model.KitAction;
import pk.ajneb97.model.KitRequirements;
import pk.ajneb97.model.item.KitItem;
import pk.ajneb97.model.item.KitItemSkullData;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MigrationManager {
private PlayerKits2 plugin;
public MigrationManager(PlayerKits2 plugin){
this.plugin = plugin;
}
public void migrateKits(CommandSender sender){
File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "PlayerKits");
File configFile = new File(bStatsFolder, "kits.yml");
if(!configFile.exists()){
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &cPlayerKits1 kits.yml file not found."));
return;
}
KitItemManager kitItemManager = plugin.getKitItemManager();
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
Kit defaultValues = plugin.getConfigsManager().getMainConfigManager().getNewKitDefault();
KitsConfigManager kitsConfigManager = plugin.getConfigsManager().getKitsConfigManager();
if(config.contains("Kits")){
for(String kitName : config.getConfigurationSection("Kits").getKeys(false)){
try{
String path = "Kits."+kitName;
Kit kit = new Kit(kitName);
boolean oneTime = config.contains(path+".one_time") ? config.getBoolean(path+".one_time") : false;
int cooldown = config.contains(path+".cooldown") ? config.getInt(path+".cooldown") : 0;
boolean permissionRequired = config.contains(path+".permission");
boolean autoArmor = config.contains(path+".auto_armor") ? config.getBoolean(path+".auto_armor") : false;
ArrayList<KitAction> claimActions = new ArrayList<>();
if(config.contains(path+".Commands")){
for(String command : config.getStringList(path+".Commands")){
claimActions.add(new KitAction("console_command: "+command,null,false,false));
}
}
ArrayList<KitItem> items = new ArrayList<>();
if(config.contains(path+".Items")){
for(String key : config.getConfigurationSection(path+".Items").getKeys(false)){
String pathItem = path+".Items."+key;
KitItem kitItem = kitItemManager.getKitItemFromV1Config(config,pathItem);
items.add(kitItem);
}
}
KitRequirements kitRequirements = null;
if(config.contains(path+".price")){
kitRequirements = new KitRequirements();
kitRequirements.setPrice(config.getInt(path+".price"));
boolean oneTimeBuy = config.contains(path+".one_time_buy") ? config.getBoolean(path+".one_time_buy") : false;
kitRequirements.setOneTimeRequirements(oneTimeBuy);
}
kit.setDisplayItemDefault(getDisplayItem(config,path));
if(config.contains(path+".noPermissionsItem")){
kit.setDisplayItemNoPermission(getDisplayItem(config,path+".noPermissionsItem"));
}
kit.setDisplayItemCooldown(defaultValues.getDisplayItemCooldown());
kit.setDisplayItemOneTime(defaultValues.getDisplayItemOneTime());
kit.setCooldown(cooldown);
kit.setAutoArmor(autoArmor);
kit.setOneTime(oneTime);
kit.setPermissionRequired(permissionRequired);
kit.setItems(items);
kit.setClaimActions(claimActions);
kit.setErrorActions(new ArrayList<>());
kit.setRequirements(kitRequirements);
kitsConfigManager.saveConfig(kit);
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &aKit &7"+kitName+" &amigrated."));
}catch(Exception e){
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &cError while trying to migrate kit &7"+kitName+"&c, check console."));
e.printStackTrace();
}
}
}else{
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &cNo kits found."));
return;
}
plugin.getConfigsManager().reload();
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &aMigration completed."));
}
public KitItem getDisplayItem(YamlConfiguration config,String path){
KitItem kitItem = new KitItem(config.getString(path+".display_item"));
String name = config.contains(path+".display_name") ? config.getString(path+".display_name") : null;
List<String> lore = config.contains(path+".display_lore") ? config.getStringList(path+".display_lore") : null;
int customModelData = config.contains(path+".display_item_custom_model_data") ? config.getInt(path+".display_item_custom_model_data") : 0;
KitItemSkullData skullData = null;
if(config.contains(path+".display_item_skulldata")) {
String[] fullSkull = config.getString(path+".display_item_skulldata").split(";");
skullData = new KitItemSkullData(null,fullSkull[0],fullSkull[1]);
}
kitItem.setName(name);
kitItem.setLore(lore);
kitItem.setCustomModelData(customModelData);
kitItem.setSkullData(skullData);
return kitItem;
}
}

View file

@ -1,5 +1,5 @@
main: pk.ajneb97.PlayerKits2
version: 1.6.1
version: 1.7.1
name: PlayerKits2
api-version: 1.13
softdepend: [Vault,PlaceholderAPI]