diff --git a/pom.xml b/pom.xml
index 76c21d84..87e485ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
dwarfcraft
DwarfCraft
jar
- 4.3
+ 4.3-SNAPSHOT
UTF-8
@@ -90,12 +90,6 @@
true
-
- ${project.basedir}/src/main/resources
-
- default_files/**/*.*
-
-
${project.basedir}/src/main/resources
@@ -104,12 +98,4 @@
-
-
-
- github
- GitHub Packages
- https://maven.pkg.github.com/jessy1237/dwarfcraft
-
-
diff --git a/src/main/java/com/jessy1237/dwarfcraft/DwarfCraft.java b/src/main/java/com/jessy1237/dwarfcraft/DwarfCraft.java
index ea4f35a3..008352b6 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/DwarfCraft.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/DwarfCraft.java
@@ -10,7 +10,6 @@
package com.jessy1237.dwarfcraft;
-import java.util.Objects;
import java.util.logging.Level;
import org.bukkit.ChatColor;
@@ -25,9 +24,16 @@
import net.milkbowl.vault.chat.Chat;
import com.jessy1237.dwarfcraft.commands.*;
-import com.jessy1237.dwarfcraft.data.DataManager;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
+import com.jessy1237.dwarfcraft.data.DwarfManager;
+import com.jessy1237.dwarfcraft.data.RaceManager;
+import com.jessy1237.dwarfcraft.data.SkillManager;
+import com.jessy1237.dwarfcraft.legacy.DataManager;
import com.jessy1237.dwarfcraft.listeners.*;
import com.jessy1237.dwarfcraft.models.DwarfTrainerTrait;
+import com.jessy1237.dwarfcraft.util.Out;
+import com.jessy1237.dwarfcraft.util.PlaceholderHook;
+import com.jessy1237.dwarfcraft.util.Util;
public class DwarfCraft extends JavaPlugin
{
@@ -35,6 +41,7 @@ public class DwarfCraft extends JavaPlugin
private ConfigManager config_manager;
private DataManager data_manager;
private CommandManager command_manager;
+ private DwarfManager dwarf_manager;
private SkillManager skill_manager;
private EffectRegistry effect_registry;
private RaceManager race_manager;
@@ -42,7 +49,7 @@ public class DwarfCraft extends JavaPlugin
private Util util;
private Chat chat = null;
public boolean isAuraActive = false;
- public static int debugMessagesThreshold = 10;
+ public int debugMessagesThreshold = 5;
private final DwarfInventoryListener inventoryListener = new DwarfInventoryListener( this );
private final DwarfEntityListener entityListener = new DwarfEntityListener( this );
@@ -57,12 +64,21 @@ public ConfigManager getConfigManager()
return config_manager;
}
+ @Deprecated
public DataManager getDataManager()
{
return data_manager;
}
- public CommandManager getCommandManager() { return command_manager; }
+ public CommandManager getCommandManager()
+ {
+ return command_manager;
+ }
+
+ public DwarfManager getDwarfManager()
+ {
+ return dwarf_manager;
+ }
public SkillManager getSkillManager()
{
@@ -132,70 +148,59 @@ public void onEnable()
public void onEnable( boolean reload ) {
PluginManager pm = getServer().getPluginManager();
util = new Util( this ); //Need to initialise Util earlier if going to use it in the enabling method
- race_manager = new RaceManager( this );
- effect_registry = new EffectRegistry();
- skill_manager = new SkillManager( this );
if ( !checkDependencies() ) onDisable();
+ if ( isEnabled() ) {
+ config_manager = new ConfigManager( this, getDataFolder().getAbsolutePath() );
+ dwarf_manager = new DwarfManager( this );
+ race_manager = new RaceManager( this );
+ effect_registry = new EffectRegistry();
+ skill_manager = new SkillManager( this );
+
+ race_manager.init(); // Races must be loaded before skills for validation
+ skill_manager.init();
+
+ data_manager = new DataManager( this );
+ data_manager.dbInitialize();
+ dwarf_manager.init();
+
+ command_manager = new CommandManager( this );
+ out = new Out( this );
+
+ // Creates the citizen trait for the DwarfTrainers
+ if ( !reload )
+ {
+ pm.registerEvents( new DwarfPlayerListener( this ), this );
+ pm.registerEvents( entityListener, this );
+ pm.registerEvents( new DwarfBlockListener( this ), this );
+ pm.registerEvents( new DwarfVehicleListener( this ), this );
+ pm.registerEvents( inventoryListener, this );
+ pm.registerEvents( new DwarfListener( this ), this );
+
+ TraitInfo trainerTrait = TraitInfo.create(DwarfTrainerTrait.class).withName("DwarfTrainer");
+ CitizensAPI.getTraitFactory().registerTrait(trainerTrait);
+ }
+ else
+ {
+ util.reloadTrainers();
+ this.getConfigManager().clearCommands();
+ }
- config_manager = new ConfigManager( this, getDataFolder().getAbsolutePath() );
- Registration.init();
- race_manager.init(); // Races must be loaded before skills for validation
- skill_manager.init();
+ getServer().getScheduler().runTaskAsynchronously( this, () -> {
+ getUtil().removePlayerPrefixes();
+ for (Player player : getServer().getOnlinePlayers()) {
+ //getUtil().setPlayerPrefix(player); //TODO
+ }
+ });
- data_manager = new DataManager( this, config_manager.dbType );
- data_manager.dbInitialize();
+ command_manager.init();
- command_manager = new CommandManager( this );
- out = new Out( this );
-
- // Creates the citizen trait for the DwarfTrainers
- if ( !reload )
- {
- pm.registerEvents( new DwarfPlayerListener( this ), this );
- pm.registerEvents( entityListener, this );
- pm.registerEvents( new DwarfBlockListener( this ), this );
- pm.registerEvents( new DwarfVehicleListener( this ), this );
- pm.registerEvents( inventoryListener, this );
- pm.registerEvents( new DwarfListener( this ), this );
-
- TraitInfo trainerTrait = TraitInfo.create(DwarfTrainerTrait.class).withName("DwarfTrainer");
- CitizensAPI.getTraitFactory().registerTrait(trainerTrait);
- }
- else
- {
- util.reloadTrainers();
- this.getConfigManager().clearCommands();
- }
+ getUtil().consoleLog( String.format( "%s %s is enabled!", getDescription().getName(), getDescription().getVersion()), ChatColor.GREEN );
- getServer().getScheduler().runTaskAsynchronously( this, () -> {
- getUtil().removePlayerPrefixes();
- for (Player player : getServer().getOnlinePlayers()) {
- getUtil().setPlayerPrefix(player);
- }
- });
-
- if ( isEnabled() ) {
- Objects.requireNonNull(this.getCommand("dwarfcraft")).setExecutor( new DwarfCommandExecutor( this ) );
- Objects.requireNonNull(this.getCommand("dwarfcraft")).setTabCompleter( new DwarfCommandExecutor( this ) );
- command_manager.registerCommand( new CommandSkillSheet( "skillsheet", this ) );
- command_manager.registerCommand( new CommandTutorial( "tutorial", this ) );
- command_manager.registerCommand( new CommandInfo( "info", this ) );
- command_manager.registerCommand( new CommandSkill( "skill", this ) );
- command_manager.registerCommand( new CommandRace( "race", this ) );
- command_manager.registerCommand( new CommandHelp( "help", this ) );
- command_manager.registerCommand( new CommandDebug( "debug", this ) );
- command_manager.registerCommand( new CommandList( "list", this ) );
- command_manager.registerCommand( new CommandSetSkill( "set_skill", this ) );
- command_manager.registerCommand( new CommandCreate( "create", this ) );
- command_manager.registerCommand( new CommandReload( "reload", this ) );
+ // Log warning if the build is a Snapshot/Development build
+ if ( this.getDescription().getVersion().contains("-SNAPSHOT") )
+ getUtil().consoleLog( "*** WARNING: This is a development build. Please keep backups and update frequently. ***", Level.SEVERE );
}
-
- getUtil().consoleLog( String.format( "%s %s is enabled!", getDescription().getName(), getDescription().getVersion()), ChatColor.GREEN );
-
- // Log warning if the build is a Snapshot/Development build
- if ( this.getDescription().getVersion().contains("-SNAPSHOT") )
- getUtil().consoleLog( "*** WARNING: This is a development build. Please keep backups and update frequently. ***", Level.SEVERE );
}
private boolean checkDependencies() {
@@ -208,7 +213,7 @@ private boolean checkDependencies() {
}
if ( setupChat() )
- getUtil().consoleLog( "Success! Hooked into a Vault chat plugin!", ChatColor.GREEN );
+ getUtil().consoleLog( "Hooked into a Vault chat plugin!", ChatColor.GREEN );
if ( pm.getPlugin( "Citizens" ) == null || !pm.getPlugin( "Citizens" ).isEnabled() )
{
@@ -217,13 +222,13 @@ private boolean checkDependencies() {
return false;
}
- getUtil().consoleLog( "Success! Hooked into Citizens!", ChatColor.GREEN );
+ getUtil().consoleLog( "Hooked into Citizens!", ChatColor.GREEN );
npc_registry = CitizensAPI.getNPCRegistry();
if ( pm.getPlugin( "PlaceholderAPI" ) != null )
{
new PlaceholderHook().register();
- getUtil().consoleLog( "Success! Hooked into PlaceholderAPI!", ChatColor.GREEN );
+ getUtil().consoleLog( "Hooked into PlaceholderAPI!", ChatColor.GREEN );
}
return true;
diff --git a/src/main/java/com/jessy1237/dwarfcraft/Messages.java b/src/main/java/com/jessy1237/dwarfcraft/Messages.java
deleted file mode 100644
index a12b27e2..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/Messages.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2023.
- *
- * DwarfCraft is an RPG plugin that allows players to improve their characters
- * skills and capabilities through training, not experience.
- *
- * Authors: Jessy1237 and Drekryan
- * Original Authors: smartaleq, LexManos and RCarretta
- */
-
-package com.jessy1237.dwarfcraft;
-
-import java.util.ArrayList;
-
-public final class Messages
-{
-
- public Messages()
- {
- Messages.tutorial.clear();
- Messages.tutorial.add( "&5&lWelcome to DwarfCraft!\n\n&0You have a set of skills that let you do certain tasks better. When you first start things may be more difficult than you're used to, but as you level your skills up you will be much more productive." );
- Messages.tutorial.add( "&5The Races of DwarfCraft\n\n&0There are four basic races in DwarfCraft. It is up to you to choose a race that best fits your play style. You will not be able to level any skills in DwarfCraft until you pick a race.\n" );
- Messages.tutorial.add( "{\"text\":\"Read about the four races on the pages that follow, then type '/dc race' or click here to begin your journey.\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/dc race\"}}" );
- Messages.tutorial.add( "&3The Dwarf\n\n&0The Dwarf race specializes in mining. The skills in this race will allow you to mine more efficiently, gather additional ores, and excavate terrain. The Dwarf plays an important role in providing resources for tools and equipment needed by the other races. Their race relies on you providing resources. If you enjoy mining, this race would be great for you." );
- Messages.tutorial.add( "&9The Gnome\n\n&0The Gnome race specializes in crafting and building. They will provide structures for you, craft your tools and equipment, and are all around masters of the crafting table. If you enjoy casually and creatively building or are a master in redstone contraptions, this race would be great for you." );
- Messages.tutorial.add( "&4The Elf\n\n&0The Elf race specializes in all things combat. They deal extra damage to animals and mobs and get extra drops. They are great at gaining experience levels and protecting your fellow members. They are also great archers and have great exploration skills whether it be on foot or boat. If you enjoy combat and exploring, the elven race is all about you." );
- Messages.tutorial.add( "&8The Human\n\n&0The Human race specializes in various support and utility skills such as smelting, cooking, fishing, and farming. They are great lumberjacks and are great for gathering wood and processing resources from the Dwarf for the Gnome and Elf. If you enjoy playing a casual support role, the Human race best fits you." );
- Messages.tutorial.add( "&5Skilling in DwarfCraft\n\n&0Now that you have learned about the various races to choose from and hopefully found one that fits you, it is time to learn how you can advance your character in that race. If you want to become the best of your class you will need to train by visiting trainers in the world. We will learn more about trainers in a bit. First lets talk about your skills and skillsheet." );
- Messages.tutorial.add( "&0At first your skills will be very poor which means you will perform tasks worse than normal gameplay. You will find your low level skills dropping less resources, crafting less items, taking longer, or requiring more tools. As you level you will begin to exceed the normal rates and excel in some tasks. Normal gameplay rates take effect around level %racelevellimit%. You also wont be able to excel in every skill to the highest level. " +
- "The skills in which your race specializes in can be levelled to level %maxskilllevel% while all other skills outside your race specialty will cap out at the normal rates." );
- Messages.tutorial.add( "[{\"text\":\"You can access your current skill levels at anytime with '/dc skillsheet'.\\n\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/dc skillsheet\"}},{\"text\":\"\\nYou can find all the skills which your character has yet to train by typing '/dc skillsheet full'.\",\"color\":\"dark_red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/dc skillsheet full\"}}]" );
- Messages.tutorial.add( "&0Now that you know the basics of how skilling works in DwarfCraft. Lets discuss the final topic in DwarfCraft, which is how you train those skills." );
- Messages.tutorial.add( "&5DwarfCraft Trainers\n\n&0Trainers (NPCs) are experts in the skill they teach. They will share their knowledge with you in return for specific resources related to that skill and can be found in various places throughout the world." );
- Messages.tutorial.add( "&0As they teach you, the requirements will become increasingly harder to meet. Also, the more skill levels you gain as a player the harder the difficulty. So the skills you choose early on will be easier than the ones you put aside. Each level up affects all other skills you have yet to master. You achieve mastery in a skill when you have reached the maximum level." );
- Messages.tutorial.add( "&0You may also find some trainers that simply have limits to what they can teach you. Some trainers will only be able to teach you up to a certain level in that skill and you may have to look elsewhere to train further. Exploring to find trainers in the world is a must to fully master every skill." );
- Messages.tutorial.add( "&5Working Together\n\n&0DwarfCraft was designed in a way in which players have to interact and work with each other to accomplish goals. Each race needs the other three races in order to be as effective. You will find that not working together or trying to be a Jack of All Trades will greatly hinder progression. Find other players that need the skills and services you provide. They will need you.\n\nLastly, remember to have fun. We hope you enjoy DwarfCraft." );
- }
-
- // String messages fixed for DwarfCraft, and backup messages when loading
- // fails.
- protected enum Fixed
- {
- WELCOME( "Welcome to a DwarfCraft world! Things are bit different here as this world focuses heavily on skilling. To learn more about what you can do here, type '&4/dc tutorial&2' to get started." ),
- GENERALINFO( "&dWelcome to DwarfCraft. You are a player with a set of skills that let you do certain tasks better. For more information see &4/dc tutorial&d. Original Authors: smartaleq, LexManos and RCarretta Authors: Jessy1237" );
-
- private String message;
-
- Fixed( String message )
- {
- this.message = message;
- }
-
- public String getMessage()
- {
- return message;
- }
- }
-
- // String messages loaded from messages.config
- public static String welcomePrefix = "&6[DwarfCraft] ";
- public static String welcome = "&fWelcome, &9 &6";
- public static String announcementMessage = " has just leveled to level !";
- public static String skillSheetHeader = "&6Skillsheet for &9 &6[&9 &6- &6Lvl &3&6]";
- public static String skillSheetSkillLine = "&6[&3&6] &b";
- public static String skillSheetUntrainedSkillHeader = "&6Untrained Skills:\n";
- public static String skillSheetUntrainedSkillLine = "&7&6";
- public static String skillInfoHeader = "&6Skill Info for &b&6 || &b&6 || Your level &3/";
- public static String skillInfoMinorHeader = "&f------&6[Effect]&f------";
- public static String skillInfoEffectIDPrefix = "&6[&5*&6] ";
- public static String skillInfoMaxSkillLevel = "&6---This skill is maximum level, no training available---";
- public static String skillInfoAtTrainerLevel = "&6---You're as skilled as me, you need a more advanced trainer!--";
- public static String skillInfoTrainCostHeader = "&6---Train costs for level &3";
- public static String skillInfoTrainCost = " &6-- &2 of &6 --";
- public static String raceCheck = "You are a ";
- public static String adminRaceCheck = " is a ";
- public static String alreadyRace = "You are already a ";
- public static String changedRace = "You are now a ";
- public static String confirmRace = "You need to confirm this command with confirm at the end. (Note: This will reset all their skills)";
- public static String raceDoesNotExist = "The race doesn't exist";
- public static String chooseARace = "&cPlease choose a race! Use /dc race";
- public static String trainSkillPrefix = "&6[Train &b&6] ";
- public static String raceDoesNotContainSkill = "&cYour race doesn't have this skill!";
- public static String raceDoesNotSpecialize = "&cYour race doesn't specialize in this skill! Max level is ()!";
- public static String maxSkillLevel = "&cYour skill is max level ()!";
- public static String trainerMaxLevel = "&cI can't teach you any more, find a higher level trainer";
- public static String trainerLevelTooHigh = "&cI can't teach a low level like you, find a lower level trainer";
- public static String noMoreItemNeeded = "&aNo more &2 &ais needed";
- public static String moreItemNeeded = "&cAn additional &2 &cis required";
- public static String trainingSuccessful = "&6Training Successful!";
- public static String depositSuccessful = "&6Deposit Successful!";
- public static String trainerGUITitle = "&8&6 || &3/";
- public static String trainerOccupied = "&6Please wait. I am talking to someone else.";
- public static String trainerCooldown = "&6Sorry, I need time to recuperate.";
- public static String describeGeneral = "Effect Block Trigger: Block Output: . Effect value ranges from - for levels 0 to 30. Non specialists have the effect , as if they were level . Tools affected: .";
- public static String describeLevelExplosionDamageMore = "&6You take % more &6damage from explosions";
- public static String describeLevelExplosionDamageLess = "&6You take % less &6damage from explosions";
- public static String describeLevelFireDamageMore = "&6You take % more &6damage from fire";
- public static String describeLevelFireDamageLess = "&6You take % less &6damage from fire";
- public static String describeLevelFallingDamageMore = "&6You take % more &6damage from falling";
- public static String describeLevelFallingDamageLess = "&6You take % less &6damage from falling";
- public static String vanillaRace = "Sorry but you are the vanilla race. Change your race to use DwarfCraft";
- public static ArrayList tutorial = new ArrayList<>();
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/Registration.java b/src/main/java/com/jessy1237/dwarfcraft/Registration.java
deleted file mode 100644
index 959b1aaa..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/Registration.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.jessy1237.dwarfcraft;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public
-class Registration
-{
- private static final List skill_files = new ArrayList<>();
- private static final List race_files = new ArrayList<>();
-
- public static void init() {
- registerSkill( "pickaxe_use.json" );
- registerSkill( "shovel_use.json" );
- registerSkill( "axe_use.json" );
- registerSkill( "seed_gatherer.json" );
- registerSkill( "melon_farmer.json" );
- registerSkill( "fishing.json" );
- registerSkill( "stone_shaper.json" );
- registerSkill( "smelter.json" );
- registerSkill( "iron_forger.json" );
- registerSkill( "diamond_forger.json" );
- registerSkill( "excavator.json" );
- registerSkill( "quarry_worker.json" );
- registerSkill( "ore_miner.json" );
- registerSkill( "exotic_miner.json" );
- registerSkill( "wood_carver.json" );
- registerSkill( "gold_forger.json" );
- registerSkill( "nether_miner.json" );
- registerSkill( "sand_digger.json" );
- registerSkill( "gravel_digger.json" );
- registerSkill( "dirt_digger.json" );
- registerSkill( "lumberjack.json" );
- registerSkill( "carpenter.json" );
- registerSkill( "wheat_farmer.json" );
- registerSkill( "exotic_farmer.json" );
- registerSkill( "vegetable_farmer.json" );
- registerSkill( "mason.json" );
- registerSkill( "glass_worker.json" );
- registerSkill( "wood_crafter.json" );
- registerSkill( "bookmaker.json" );
- registerSkill( "brickmaker.json" );
- registerSkill( "demolitionist.json" );
- registerSkill( "fire_starter.json" );
- registerSkill( "railworker.json" );
- registerSkill( "baker.json" );
- registerSkill( "fletcher.json" );
- registerSkill( "butcher.json" );
- registerSkill( "sailor.json" );
- registerSkill( "climber.json" );
- registerSkill( "survivalist.json" );
- registerSkill( "florist.json" );
- registerSkill( "dungeon_delver.json" );
- registerSkill( "nether_hunter.json" );
- registerSkill( "shearer.json" );
- registerSkill( "huntsman.json" );
- registerSkill( "monster_hunter.json" );
- registerSkill( "scout.json" );
- registerSkill( "soldier.json" );
- registerSkill( "archer.json" );
- registerSkill( "exotic_armour.json" );
- registerSkill( "swordsman.json" );
- registerSkill( "sign_maker.json" );
- registerSkill( "torch_maker.json" );
- registerSkill( "alchemist.json" );
- registerSkill( "noble.json" );
- registerSkill( "axe_swinger.json" );
-
- registerRace( "dwarf.json" );
- registerRace( "elf.json" );
- registerRace( "gnome.json" );
- registerRace( "human.json" );
- }
-
- public static
- void registerSkill( String file_name ) {
- skill_files.add( file_name );
- }
-
- public static
- void registerRace( String file_name ) {
- race_files.add( file_name );
- }
-
- public static
- List getSkillFiles() {
- return skill_files;
- }
-
- public static
- List getRaceFiles() {
- return race_files;
- }
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandDebug.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandDebug.java
index 39b02139..bb2244d3 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandDebug.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandDebug.java
@@ -22,6 +22,7 @@
import org.bukkit.entity.Player;
import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfCommand;
public class CommandDebug extends DwarfCommand implements TabCompleter
@@ -57,10 +58,18 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
desiredArguments.add( i );
outputList = parser.parse( desiredArguments, false );
- DwarfCraft.debugMessagesThreshold = ( Integer ) outputList.get( 0 );
- plugin.getUtil().consoleLog( "*** DC DEBUG LEVEL CHANGED TO " + DwarfCraft.debugMessagesThreshold + " ***", Level.FINE );
+ if (outputList.size() < 1) {
+ sender.sendMessage( getUsage() );
+ return false;
+ }
+
+ plugin.getConfig().set( "Debug Level", outputList.get( 0 ) );
+ plugin.saveConfig();
+ plugin.debugMessagesThreshold = (Integer) plugin.getConfig().get("Debug Level");
+
+ plugin.getUtil().consoleLog( "*** DC DEBUG LEVEL CHANGED TO " + plugin.debugMessagesThreshold + " ***", Level.FINE );
if ( sender instanceof Player )
- plugin.getOut().sendMessage( sender, "Debug messaging level set to " + DwarfCraft.debugMessagesThreshold );
+ plugin.getOut().sendMessage( sender, "Debug messaging level set to " + plugin.debugMessagesThreshold );
}
catch ( CommandException e )
{
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandList.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandList.java
index 327ba2a3..18727b28 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandList.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandList.java
@@ -45,7 +45,8 @@ public boolean execute( CommandSender sender, String commandLabel, String[] args
{
if ( sender instanceof Player )
{
- DwarfPlayer dwarfPlayer = new DwarfPlayer( plugin, ( Player ) sender );
+ Player player = (Player) sender;
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player.getUniqueId() );
ListGUI listTrainersGUI = new ListGUI( plugin, dwarfPlayer );
plugin.getDwarfInventoryListener().addDwarfGUI( dwarfPlayer.getPlayer(), listTrainersGUI );
return true;
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandManager.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandManager.java
index 7c5ec3b5..5e77fb5a 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandManager.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandManager.java
@@ -21,7 +21,7 @@ public CommandManager( DwarfCraft plugin ) {
try
{
if ( setupPermissions() )
- plugin.getUtil().consoleLog( "Success! Hooked into a Vault permissions plugin!", ChatColor.GREEN );
+ plugin.getUtil().consoleLog( "Hooked into a Vault permissions plugin!", ChatColor.GREEN );
}
catch ( Exception e )
{
@@ -30,6 +30,26 @@ public CommandManager( DwarfCraft plugin ) {
}
}
+ public void init() {
+ plugin.getCommand("dwarfcraft").setExecutor( new DwarfCommandExecutor( plugin ) );
+ plugin.getCommand("dwarfcraft").setTabCompleter( new DwarfCommandExecutor( plugin ) );
+ registerCommands();
+ }
+
+ public void registerCommands() {
+ registerCommand( new CommandSkillSheet( "skillsheet", plugin ) );
+ registerCommand( new CommandTutorial( "tutorial", plugin ) );
+ registerCommand( new CommandInfo( "info", plugin ) );
+ registerCommand( new CommandSkill( "skill", plugin ) );
+ registerCommand( new CommandRace( "race", plugin ) );
+ registerCommand( new CommandHelp( "help", plugin ) );
+ registerCommand( new CommandDebug( "debug", plugin ) );
+ registerCommand( new CommandList( "list", plugin ) );
+ registerCommand( new CommandSetSkill( "set_skill", plugin ) );
+ registerCommand( new CommandCreate( "create", plugin ) );
+ registerCommand( new CommandReload( "reload", plugin ) );
+ }
+
public void registerCommand( DwarfCommand command ) {
commands.put( command.getName(), command );
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandParser.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandParser.java
index 29c786eb..70965429 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandParser.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandParser.java
@@ -105,7 +105,7 @@ private DwarfPlayer parseDwarf( int argNumber ) throws CommandException
player = sender.getServer().getPlayer( dwarf );
if ( player != null && player.isOnline() )
- dCPlayer = plugin.getDataManager().find( player );
+ dCPlayer = plugin.getDwarfManager().getDwarf( player );
else if ( player == null || !player.isOnline() )
{
@@ -170,7 +170,7 @@ private DwarfSkill parseSkill( int argNumber ) throws CommandException
return null;
if ( target == null )
- target = plugin.getDataManager().find( ( Player ) sender );
+ target = plugin.getDwarfManager().getDwarf( ( Player ) sender );
if ( !( sender instanceof Player ) )
{
for ( DwarfSkill dwarfSkill : plugin.getSkillManager().getAllSkills().values() )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandRace.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandRace.java
index cc174e74..1247d9db 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandRace.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandRace.java
@@ -12,6 +12,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.ChatColor;
@@ -45,7 +46,7 @@ public boolean execute( CommandSender sender, String commandLabel, String[] args
if ( args.length == 0 && sender instanceof Player )
{
Player p = ( Player ) sender;
- RaceGUI gui = new RaceGUI( plugin, plugin.getDataManager().find( p ) );
+ RaceGUI gui = new RaceGUI( plugin, plugin.getDwarfManager().getDwarf( p ) );
plugin.getDwarfInventoryListener().addDwarfGUI( p, gui );
return true;
}
@@ -59,7 +60,7 @@ else if ( args.length == 0 )
List desiredArguments = new ArrayList();
List outputList = null;
- DwarfPlayer dCPlayer = new DwarfPlayer( plugin, null );
+ DwarfPlayer dCPlayer = new DwarfPlayer( plugin, new UUID(0, 0));
String newRace = "";
boolean confirm = false;
desiredArguments.add( dCPlayer );
@@ -101,7 +102,7 @@ else if ( dce.getType() == Type.PARSEDWARFFAIL && sender instanceof Player )
outputList = parser.parse( desiredArguments, true );
newRace = ( String ) outputList.get( 0 );
confirm = ( ( Boolean ) outputList.get( 1 ) );
- dCPlayer = plugin.getDataManager().find( ( Player ) sender );
+ dCPlayer = plugin.getDwarfManager().getDwarf( ( Player ) sender );
if ( plugin.getRaceManager().raceExists( newRace ) )
{
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSetSkill.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSetSkill.java
index 9baedfb9..d80596f4 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSetSkill.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSetSkill.java
@@ -14,6 +14,7 @@
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.ChatColor;
@@ -59,7 +60,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
List desiredArguments = new ArrayList<>();
List outputList;
- DwarfPlayer dCPlayer = new DwarfPlayer( plugin, null );
+ DwarfPlayer dCPlayer = new DwarfPlayer( plugin, new UUID(0, 0) );
DwarfSkill skill = new DwarfSkill( plugin,"", null, new LinkedHashMap<>(), 0, null, null, null, null, null );
int level = 0;
String name;
@@ -97,8 +98,6 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
}
if ( skill == null )
{
- DwarfSkill[] skills = new DwarfSkill[dCPlayer.getSkills().values().size()];
- int i = 0;
for ( DwarfSkill s : dCPlayer.getSkills().values() )
{
int oldLevel = s.getLevel();
@@ -106,23 +105,21 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
DwarfLevelUpEvent event = new DwarfLevelUpEvent( dCPlayer, null, s );
plugin.getServer().getPluginManager().callEvent( event );
- dCPlayer.runLevelUpCommands( skill );
if ( !event.isCancelled() )
{
s.setDeposit( 0, 1 );
s.setDeposit( 0, 2 );
s.setDeposit( 0, 3 );
- skills[i] = s;
- i++;
}
else
{
s.setLevel( oldLevel );
}
+ dCPlayer.setSkill(s);
}
+ plugin.getDwarfManager().saveDwarf( dCPlayer );
plugin.getOut().sendMessage(sender, "&eAll skills for player &9" + name + "&e have been set to level &3" + level);
- plugin.getDataManager().saveDwarfData( dCPlayer, skills );
}
else
{
@@ -131,17 +128,15 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
DwarfLevelUpEvent event = new DwarfLevelUpEvent( dCPlayer, null, skill );
plugin.getServer().getPluginManager().callEvent( event );
- dCPlayer.runLevelUpCommands( skill );
if ( !event.isCancelled() )
{
skill.setDeposit( 0, 1 );
skill.setDeposit( 0, 2 );
skill.setDeposit( 0, 3 );
- DwarfSkill[] skills = new DwarfSkill[1];
- skills[0] = skill;
+ dCPlayer.setSkill(skill);
plugin.getOut().sendMessage(sender, "&b" + skill.getDisplayName() + " &eskill for player &9" + name + "&e has been set to level &3" + level);
- plugin.getDataManager().saveDwarfData( dCPlayer, skills );
+ plugin.getDwarfManager().saveDwarf( dCPlayer );
}
else
{
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkill.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkill.java
index 2cca289d..600e8226 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkill.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkill.java
@@ -12,7 +12,6 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.logging.Level;
@@ -25,8 +24,7 @@
import net.md_5.bungee.api.ChatColor;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
-import com.jessy1237.dwarfcraft.commands.CommandException.Type;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfCommand;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
@@ -73,7 +71,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
plugin.getOut().sendMessage( sender, "Unable to locate player");
return true;
}
- DwarfPlayer dwarfPlayer = new DwarfPlayer(plugin, player);
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf(player);
DwarfSkill skill;
if (args.length == 1 && player != null)
@@ -84,7 +82,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
if ( dwarfPlayer.getRace() == null )
{
if ((sender instanceof Player)) {
- plugin.getOut().sendMessage( sender, Messages.chooseARace );
+ plugin.getOut().sendMessage( sender, ConfigManager.getMessage("Trainer Messages.Choose Race") );
} else {
plugin.getOut().sendMessage(sender, "Player has no data");
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkillSheet.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkillSheet.java
index fe098536..b36dbbf4 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkillSheet.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandSkillSheet.java
@@ -12,14 +12,15 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
import com.jessy1237.dwarfcraft.commands.CommandException.Type;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfCommand;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
@@ -40,10 +41,10 @@ public boolean execute( CommandSender sender, String commandLabel, String[] args
{
if ( args.length == 0 && sender instanceof Player )
{
- DwarfPlayer dCPlayer = plugin.getDataManager().find( ( Player ) sender );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( (Player)sender );
if ( dCPlayer.getRace().getId().equals( "" ) )
{
- plugin.getOut().sendMessage( sender, Messages.chooseARace );
+ plugin.getOut().sendMessage( sender, ConfigManager.getMessage("Trainer Messages.Choose Race") );
return true;
}
@@ -72,7 +73,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
desiredArguments.add( args[0] );
}
- DwarfPlayer dCPlayer = new DwarfPlayer( plugin, null );
+ DwarfPlayer dCPlayer = new DwarfPlayer( plugin, new UUID(0, 0) );
desiredArguments.add( dCPlayer );
try
@@ -89,7 +90,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
{
if ( sender instanceof Player )
{
- dCPlayer = plugin.getDataManager().find( ( Player ) sender );
+ dCPlayer = plugin.getDwarfManager().getDwarf( ( Player ) sender );
}
else
throw new CommandException( plugin, Type.CONSOLECANNOTUSE );
@@ -100,7 +101,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
if ( dCPlayer.getRace().getId().equals( "" ) )
{
- plugin.getOut().sendMessage( sender, Messages.chooseARace );
+ plugin.getOut().sendMessage( sender, ConfigManager.getMessage("Trainer Messages.Choose Race") );
return true;
}
plugin.getOut().printSkillSheet( dCPlayer, sender, printFull );
diff --git a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandTutorial.java b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandTutorial.java
index 8cd54aca..17adc43f 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/commands/CommandTutorial.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/commands/CommandTutorial.java
@@ -13,6 +13,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.ChatColor;
@@ -26,8 +27,8 @@
import net.md_5.bungee.chat.ComponentSerializer;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
import com.jessy1237.dwarfcraft.commands.CommandException.Type;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfCommand;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
@@ -53,7 +54,7 @@ public boolean execute( CommandSender sender, String commandLabel, String[] args
{
Player player = ( Player ) sender;
// Add Written Book to Players Inventory
- HashMap overflow = player.getInventory().addItem( createTutorialBook( plugin.getDataManager().find( player ) ) );
+ HashMap overflow = player.getInventory().addItem( createTutorialBook( plugin.getDwarfManager().getDwarf( player ) ) );
dropBookIfInventoryFull( player, overflow );
return true;
@@ -73,7 +74,7 @@ else if ( args[0].equalsIgnoreCase( "?" ) )
List desiredArguments = new ArrayList();
List outputList = null;
- DwarfPlayer target = new DwarfPlayer( plugin, null );
+ DwarfPlayer target = new DwarfPlayer( plugin, new UUID(0, 0) );
desiredArguments.add( target );
outputList = parser.parse( desiredArguments, false );
@@ -102,9 +103,9 @@ public ItemStack createTutorialBook( DwarfPlayer dwarfPlayer )
// Set the BookMeta onto the Written Book
BookMeta bookMeta = ( BookMeta ) book.getItemMeta();
bookMeta.setTitle( "DwarfCraft Pocket Guide" );
- bookMeta.setAuthor( "Jessy1237" );
+ bookMeta.setAuthor( "Jessy1237 and Drekryan" );
- for ( String readPage : Messages.tutorial )
+ for ( String readPage : ConfigManager.getTutorialBookPages() )
{
String page = plugin.getOut().parseColors( dwarfPlayer.toString( readPage ) );
diff --git a/src/main/java/com/jessy1237/dwarfcraft/ConfigManager.java b/src/main/java/com/jessy1237/dwarfcraft/data/ConfigManager.java
similarity index 53%
rename from src/main/java/com/jessy1237/dwarfcraft/ConfigManager.java
rename to src/main/java/com/jessy1237/dwarfcraft/data/ConfigManager.java
index 071baca8..0f61a46e 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/ConfigManager.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/ConfigManager.java
@@ -8,10 +8,11 @@
* Original Authors: smartaleq, LexManos and RCarretta
*/
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.data;
import java.io.File;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
@@ -21,21 +22,14 @@
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
+import com.jessy1237.dwarfcraft.DwarfCraft;
+
public final class ConfigManager
{
-
private final DwarfCraft plugin;
private final String configDirectory;
-
- public String dbType;
- public String host;
- public int port;
- public String database;
- public String username;
- public String password;
- private String dbpath;
private Integer trainDelay;
private Integer announcementInterval;
private ArrayList skillLevelCommands;
@@ -59,7 +53,10 @@ public final class ConfigManager
public boolean hardcorePenalty = true;
public boolean spawnTutorialBook = true;
- protected ConfigManager( DwarfCraft plugin, String directory )
+ protected static final HashMap messages = new HashMap<>();
+ protected static final ArrayList tutorialBookPages = new ArrayList();
+
+ public ConfigManager( DwarfCraft plugin, String directory )
{
this.plugin = plugin;
if ( !directory.endsWith( File.separator ) )
@@ -95,9 +92,9 @@ private void checkFiles( String path )
}
// Create Data Files
- File locale = new File( root + "/data/dwarfcraft/locale/", "en_US.yml" );
+ File locale = new File( root + "/data/locale/", "en_US.yml" );
if ( !locale.exists() )
- plugin.saveResource( "data/dwarfcraft/locale/en_US.yml", false );
+ plugin.saveResource( "data/locale/en_US.yml", false );
}
catch ( Exception e )
{
@@ -115,16 +112,8 @@ private boolean readConfigFile()
skillMaxCapeCommands = new ArrayList<>();
FileConfiguration config = plugin.getConfig();
-
- dbType = config.getString( "Database Type" );
- host = config.getString( "MySQL Hostname" );
- port = config.getInt( "MySQL Port" );
- database = config.getString( "MySQL Database" );
- username = config.getString( "MySQL Username" );
- password = config.getString( "MySQL Password" );
- dbpath = config.getString( "Database File Name" );
- DwarfCraft.debugMessagesThreshold = config.getInt( "Debug Level" );
+ plugin.debugMessagesThreshold = config.getInt( "Debug Level" );
sendGreeting = config.getBoolean( "Send Login Greet" );
disableCacti = config.getBoolean( "Disable Farm Exploits" );
worldBlacklist = config.getBoolean( "World Blacklist" );
@@ -157,73 +146,87 @@ private boolean readConfigFile()
private boolean readLocaleFile()
{
- plugin.getUtil().consoleLog( "Reading locale file: " + ChatColor.AQUA + configDirectory + "data/dwarfcraft/locale/" + "en_US.yml" );
+ plugin.getUtil().consoleLog( "Reading locale file: " + ChatColor.AQUA + configDirectory + "data/locale/" + "en_US.yml" );
- FileConfiguration localeConfig = YamlConfiguration.loadConfiguration( new File( plugin.getDataFolder() + "/data/dwarfcraft/locale/en_US.yml" ));
+ FileConfiguration localeConfig = YamlConfiguration.loadConfiguration( new File( plugin.getDataFolder() + "/data/locale/en_US.yml" ));
// Welcome Messages
- Messages.welcomePrefix = localeConfig.getString( "Welcome prefix" );
- Messages.welcome = localeConfig.getString( "Welcome" );
- Messages.announcementMessage = localeConfig.getString( "Announcement Message" );
+ addMessage("Welcome prefix", localeConfig);
+ addMessage("Welcome", localeConfig);
+ addMessage("Announcement Message", localeConfig);
// Skillsheet Messages
- Messages.skillSheetHeader = localeConfig.getString( "Skillsheet.Header" );
- Messages.skillSheetSkillLine = localeConfig.getString( "Skillsheet.Skill Line" );
- Messages.skillSheetUntrainedSkillHeader = localeConfig.getString( "Skillsheet.Untrained Skill Header" );
- Messages.skillSheetUntrainedSkillLine = localeConfig.getString( "Skillsheet.Untrained Skill Line" );
+ addMessage("Skillsheet.Header", localeConfig);
+ addMessage("Skillsheet.Skill Line", localeConfig);
+ addMessage("Skillsheet.Untrained Skill Header", localeConfig);
+ addMessage("Skillsheet.Untrained Skill Line", localeConfig);
// Skill Info Messages
- Messages.skillInfoHeader = localeConfig.getString( "Skill Info.Header" );
- Messages.skillInfoMinorHeader = localeConfig.getString( "Skill Info.Subheader" );
- Messages.skillInfoMaxSkillLevel = localeConfig.getString( "Skill Info.Max Skill Level" );
- Messages.skillInfoAtTrainerLevel = localeConfig.getString( "Skill Info.Max Trainer Level" );
- Messages.skillInfoTrainCostHeader = localeConfig.getString( "Skill Info.Train Cost Header" );
- Messages.skillInfoTrainCost = localeConfig.getString( "Skill Info.Train Cost" );
+ addMessage("Skill Info.Header", localeConfig);
+ addMessage("Skill Info.Subheader", localeConfig);
+ addMessage("Skill Info.Max Skill Level", localeConfig);
+ addMessage("Skill Info.Max Trainer Level", localeConfig);
+ addMessage("Skill Info.Train Cost Header", localeConfig);
+ addMessage("Skill Info.Train Cost", localeConfig);
// Race Messages
- Messages.raceCheck = localeConfig.getString( "Race Messages.Race Info" );
- Messages.adminRaceCheck = localeConfig.getString( "Race Messages.Admin Race Info" );
- Messages.alreadyRace = localeConfig.getString( "Race Messages.Already Race" );
- Messages.changedRace = localeConfig.getString( "Race Messages.Changed Race" );
- Messages.confirmRace = localeConfig.getString( "Race Messages.Confirm Race" );
- Messages.raceDoesNotExist = localeConfig.getString( "Race Messages.Race Failed" );
+ addMessage("Race Messages.Race Info", localeConfig);
+ addMessage("Race Messages.Admin Race Info", localeConfig);
+ addMessage("Race Messages.Already Race", localeConfig);
+ addMessage("Race Messages.Changed Race", localeConfig);
+ addMessage("Race Messages.Confirm Race", localeConfig);
+ addMessage("Race Messages.Race Failed", localeConfig);
// Trainer Messages
- Messages.chooseARace = localeConfig.getString( "Trainer Messages.Choose Race" );
- Messages.trainSkillPrefix = localeConfig.getString( "Trainer Messages.Train Skill Prefix" );
- Messages.raceDoesNotContainSkill = localeConfig.getString( "Trainer Messages.Skill Blocked" );
- Messages.raceDoesNotSpecialize = localeConfig.getString( "Trainer Messages.Non-Racial Skill" );
- Messages.maxSkillLevel = localeConfig.getString( "Trainer Messages.Max Skill Level" );
- Messages.trainerMaxLevel = localeConfig.getString( "Trainer Messages.Max Level" );
- Messages.trainerLevelTooHigh = localeConfig.getString( "Trainer Messages.Level Too High" );
- Messages.noMoreItemNeeded = localeConfig.getString( "Trainer Messages.No More Item Needed" );
- Messages.moreItemNeeded = localeConfig.getString( "Trainer Messages.More Item Needed" );
- Messages.trainingSuccessful = localeConfig.getString( "Trainer Messages.Training Successful" );
- Messages.depositSuccessful = localeConfig.getString( "Trainer Messages.Deposit Successful" );
- Messages.trainerGUITitle = localeConfig.getString( "Trainer Messages.GUI Title" );
- Messages.trainerOccupied = localeConfig.getString( "Trainer Messages.Occupied" );
- Messages.trainerCooldown = localeConfig.getString( "Trainer Messages.Cooldown" );
+ addMessage("Trainer Messages.Choose Race", localeConfig);
+ addMessage("Trainer Messages.Train Skill Prefix", localeConfig);
+ addMessage("Trainer Messages.Skill Blocked", localeConfig);
+ addMessage("Trainer Messages.Non-Racial Skill", localeConfig);
+ addMessage("Trainer Messages.Max Skill Level", localeConfig);
+ addMessage("Trainer Messages.Max Level", localeConfig);
+ addMessage("Trainer Messages.Level Too High", localeConfig);
+ addMessage("Trainer Messages.No More Item Needed", localeConfig);
+ addMessage("Trainer Messages.More Item Needed", localeConfig);
+ addMessage("Trainer Messages.Training Successful", localeConfig);
+ addMessage("Trainer Messages.Deposit Successful", localeConfig);
+ addMessage("Trainer Messages.GUI Title", localeConfig);
+ addMessage("Trainer Messages.Occupied", localeConfig);
+ addMessage("Trainer Messages.Cooldown", localeConfig);
// Effect Messages
- Messages.describeGeneral = localeConfig.getString( "Effect Descriptions.General" );
- Messages.describeLevelExplosionDamageMore = localeConfig.getString( "Effect Descriptions.Explosion Damage (more)" );
- Messages.describeLevelExplosionDamageLess = localeConfig.getString( "Effect Descriptions.Explosion Damage (less)" );
- Messages.describeLevelFireDamageMore = localeConfig.getString( "Effect Descriptions.Fire Damage (more)" );
- Messages.describeLevelFireDamageLess = localeConfig.getString( "Effect Descriptions.Fire Damage (less)" );
- Messages.describeLevelFallingDamageMore = localeConfig.getString( "Effect Descriptions.Fall Damage (more)" );
- Messages.describeLevelFallingDamageLess = localeConfig.getString( "Effect Descriptions.Fall Damage (less)" );
-
- List tutorialPages = localeConfig.getStringList( "Tutorial Pages" );
- // If there is at least one tutorial page, reset default messages and add custom messages
- if ( tutorialPages.size() > 0 )
- {
- Messages.tutorial.clear();
- Messages.tutorial.addAll( tutorialPages );
- }
+ addMessage("Effect Descriptions.General", localeConfig);
+ addMessage("Effect Descriptions.Explosion Damage", localeConfig);
+ addMessage("Effect Descriptions.Fire Damage", localeConfig);
+ addMessage("Effect Descriptions.Fall Damage", localeConfig);
+
+ // Tutorial Book Pages
+ tutorialBookPages.clear();
+ tutorialBookPages.addAll( localeConfig.getStringList( "Tutorial Pages" ) );
+
+ plugin.getUtil().consoleLog("Loaded " + ChatColor.AQUA + messages.size() + ChatColor.WHITE + " Message(s)");
return true;
}
+ public void addMessage(String key, FileConfiguration localeConfig) {
+ boolean hasKey = localeConfig.contains(key);
+ if (hasKey) {
+ messages.put(key, localeConfig.get(key).toString());
+ plugin.getUtil().debugLog(4, Level.INFO, "Loaded locale message: " + ChatColor.AQUA + key);
+ }
+ }
+
+ public static String getMessage(String key) {
+ if (!messages.containsKey(key)) {
+ System.out.println("Warning: Unable to find message with key: " + key);
+ }
+ return messages.get(key);
+ }
+
+ public static ArrayList getTutorialBookPages() {
+ return tutorialBookPages;
+ }
+
public String getPrefix()
{
return prefixStr;
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapper.java b/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapper.java
deleted file mode 100644
index daa498ca..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.jessy1237.dwarfcraft.data;
-
-import java.util.UUID;
-
-import com.jessy1237.dwarfcraft.models.DwarfPlayer;
-import com.jessy1237.dwarfcraft.models.DwarfSkill;
-
-public interface DBWrapper
-{
-
- void dbInitialize();
-
- void dbFinalize();
-
- void createDwarfData(DwarfPlayer dCPlayer);
-
- boolean checkDwarfData(DwarfPlayer player);
-
- /**
- * Used for creating and populating a dwarf with a null(off line) player
- *
- * @param player
- * @param uuid
- */
- boolean checkDwarfData( DwarfPlayer player, UUID uuid );
-
- boolean saveDwarfData(DwarfPlayer dwarfPlayer, DwarfSkill[] skills);
-
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperFactory.java b/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperFactory.java
deleted file mode 100644
index 6a714460..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperFactory.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.jessy1237.dwarfcraft.data;
-
-import com.jessy1237.dwarfcraft.ConfigManager;
-import com.jessy1237.dwarfcraft.DwarfCraft;
-
-public class DBWrapperFactory
-{
-
- public static DBWrapper createWrapper( DwarfCraft plugin, String type )
- {
- DBWrapper dbWrapper = null;
-
- if ( type.equalsIgnoreCase( "sqlite" ) )
- {
- dbWrapper = new DBWrapperSQLite( plugin, plugin.getConfigManager() );
- }
- else if ( type.equalsIgnoreCase( "MySQL" ) )
- {
- dbWrapper = new DBWrapperMySQL( plugin, plugin.getConfigManager() );
- }
-
- return dbWrapper;
- }
-
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperMySQL.java b/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperMySQL.java
deleted file mode 100644
index 86e02f45..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperMySQL.java
+++ /dev/null
@@ -1,347 +0,0 @@
-package com.jessy1237.dwarfcraft.data;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.UUID;
-import java.util.logging.Level;
-
-import com.jessy1237.dwarfcraft.ConfigManager;
-import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.models.DwarfPlayer;
-import com.jessy1237.dwarfcraft.models.DwarfSkill;
-
-class DBWrapperMySQL implements DBWrapper
-{
- private final DwarfCraft plugin;
- private Connection mDBCon;
-
- private final String host;
- private final int port;
- private final String database;
- private final String username;
- private final String password;
-
- DBWrapperMySQL( DwarfCraft plugin, ConfigManager cm )
- {
- this.plugin = plugin;
-
- this.host = cm.host;
- this.port = cm.port;
- this.database = cm.database;
- this.username = cm.username;
- this.password = cm.password;
- }
-
- @SuppressWarnings( "deprecation" )
- public void dbInitialize()
- {
- try
- {
- Class.forName( "com.mysql.jdbc.Driver" );
- mDBCon = DriverManager.getConnection( "jdbc:mysql://" + host + ":" + port + "/" + database, username, password );
- Statement statement = mDBCon.createStatement();
- ResultSet rs = null;
-
- // Ensure database is valid
- buildDB();
-
- // Ensure skill deposits exist
- try
- {
- rs = statement.executeQuery( "SELECT deposit1 FROM skills;" );
- }
- catch ( SQLException ex )
- {
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit1 INT DEFAULT 0;" );
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit2 INT DEFAULT 0;" );
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit3 INT DEFAULT 0;" );
- }
-
- // Adds the uuid arg to the player table
- try
- {
- rs = statement.executeQuery( "select uuid from players" );
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.INFO, "Converting Player Database..." );
- mDBCon.setAutoCommit( false );
- HashMap dcplayers = new HashMap<>();
- HashMap ids = new HashMap<>();
-
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "SELECT * FROM players" );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- dcplayers.put( plugin.getServer().getOfflinePlayer( rs.getString( "name" ) ).getUniqueId(), rs.getString( "race" ) );
- ids.put( plugin.getServer().getOfflinePlayer( rs.getString( "name" ) ).getUniqueId(), rs.getInt( "id" ) );
- }
-
- }
- catch ( Exception e1 )
- {
- e1.printStackTrace();
- }
- statement.executeUpdate( "DROP TABLE players" );
- statement.executeUpdate( "CREATE TABLE IF NOT EXISTS `" + database + "`. `players` ( `id` INT NOT NULL AUTO_INCREMENT, `uuid` TEXT, `race` TEXT, `raceMaster` TEXT, PRIMARY KEY( `id` ))ENGINE = InnoDB;" );
- for ( UUID uuid : dcplayers.keySet() )
- {
- if ( uuid != null )
- {
- PreparedStatement prep = mDBCon.prepareStatement( "INSERT INTO players(id, uuid, race, raceMaster) values(?,?,?,?);" );
- prep.setInt( 1, ids.get( uuid ) );
- prep.setString( 2, uuid.toString() );
- prep.setString( 3, dcplayers.get( uuid ) );
- prep.setBoolean( 4, false );
- prep.execute();
- prep.close();
- }
- }
- plugin.getLogger().log( Level.INFO, "Successfully converted the players database..." );
- }
-
- // Adds raceMaster arg to the player table
- try
- {
- rs = statement.executeQuery( "select raceMaster from players" );
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.INFO, "Converting player database..." );
- mDBCon.setAutoCommit( false );
- HashMap dcplayers = new HashMap<>();
- HashMap ids = new HashMap<>();
-
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "SELECT * FROM players" );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- dcplayers.put( UUID.fromString( rs.getString( "uuid" ) ), rs.getString( "race" ) );
- ids.put( UUID.fromString( rs.getString( "uuid" ) ), rs.getInt( "id" ) );
- }
-
- }
- catch ( Exception e1 )
- {
- e1.printStackTrace();
- }
- statement.executeUpdate( "DROP TABLE players" );
- statement.executeUpdate( "CREATE TABLE IF NOT EXISTS `" + database + "`. `players` ( `id` INT NOT NULL AUTO_INCREMENT, `uuid` TEXT, `race` TEXT, `raceMaster` TEXT, PRIMARY KEY( `id` ))ENGINE = InnoDB" );
- for ( UUID uuid : dcplayers.keySet() )
- {
- if ( uuid != null )
- {
- PreparedStatement prep = mDBCon.prepareStatement( "insert into players(id, uuid, race, raceMaster) values(?,?,?,?);" );
- prep.setInt( 1, ids.get( uuid ) );
- prep.setString( 2, uuid.toString() );
- prep.setString( 3, dcplayers.get( uuid ) );
- prep.setBoolean( 4, false );
- prep.execute();
- prep.close();
- }
- }
- plugin.getLogger().log( Level.INFO, "Successfully converted the players database..." );
- }
-
- if ( rs != null )
- rs.close();
- mDBCon.setAutoCommit( true );
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- private void buildDB()
- {
- try
- {
- Statement statement = mDBCon.createStatement();
-
- // Attempt to build database if it cannot be found
- ResultSet rs = statement.executeQuery( "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '" + database + "'" );
- if ( !rs.next() )
- {
- statement.executeQuery( "CREATE DATABASE IF NOT EXISTS '" + database + "'" );
- }
-
- // Attempt to build tables if they cannot be found
- statement.executeUpdate( "CREATE TABLE IF NOT EXISTS `" + database + "`.`players` (`id` INT NOT NULL AUTO_INCREMENT, `uuid` TEXT,`race` TEXT,`raceMaster` TEXT,PRIMARY KEY (`id`)) ENGINE = InnoDB;" );
- statement.executeUpdate( "CREATE TABLE IF NOT EXISTS `" + database
- + "`.`skills` ( `player` INT NOT NULL , `id` VARCHAR(260) NOT NULL , `level` INT NOT NULL DEFAULT '0' , `deposit1` INT NOT NULL DEFAULT '0' , `deposit2` INT NOT NULL DEFAULT '0' , `deposit3` INT NOT NULL DEFAULT '0' , PRIMARY KEY (`player`, `id`)) ENGINE = InnoDB;" );
-
- rs.close();
- }
- catch ( SQLException e )
- {
- plugin.getLogger().log( Level.SEVERE, "DB not built successfully" );
- e.printStackTrace();
- plugin.getServer().getPluginManager().disablePlugin( plugin );
- }
- }
-
- public void dbFinalize()
- {
- try
- {
- mDBCon.close();
- mDBCon = null;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- public void createDwarfData( DwarfPlayer dCPlayer )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "insert into players(uuid, race) values(?,?);" );
- prep.setString( 1, dCPlayer.getPlayer().getUniqueId().toString() );
- prep.setString( 2, plugin.getRaceManager().getDefaultRace().getId() );
- prep.execute();
- prep.close();
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- public boolean checkDwarfData( DwarfPlayer player )
- {
- return checkDwarfData( player, player.getPlayer().getUniqueId() );
- }
-
- /**
- * Used for creating and populating a dwarf with a null(off line) player
- *
- * @param player
- * @param uuid
- */
- public boolean checkDwarfData( DwarfPlayer player, UUID uuid )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "select * from players WHERE uuid = ?;" );
- prep.setString( 1, uuid.toString() );
- ResultSet rs = prep.executeQuery();
-
- if ( !rs.next() )
- return false;
-
- player.setRace( rs.getString( "race" ) );
- player.setRaceMaster( rs.getBoolean( "raceMaster" ) );
-
- int id = rs.getInt( "id" );
- rs.close();
-
- prep.close();
- prep = mDBCon.prepareStatement( "select id, level, deposit1, deposit2, deposit3 " + "from skills WHERE player = ?;" );
- prep.setInt( 1, id );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- String skillID = rs.getString( "id" );
- int level = rs.getInt( "level" );
- DwarfSkill skill = player.getSkill( skillID );
- if ( skill != null )
- {
- skill.setLevel( level );
- skill.setDeposit( rs.getInt( "deposit1" ), 1 );
- skill.setDeposit( rs.getInt( "deposit2" ), 2 );
- skill.setDeposit( rs.getInt( "deposit3" ), 3 );
- }
- }
- rs.close();
- prep.close();
-
- if ( !plugin.getDataManager().dwarves.contains( player ) )
- plugin.getDataManager().dwarves.add( player );
-
- return true;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- return false;
- }
- }
-
- private int getPlayerID( UUID uuid )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "select id from players WHERE uuid = ?;" );
- prep.setString( 1, uuid.toString() );
- ResultSet rs = prep.executeQuery();
-
- if ( !rs.next() )
- return -1;
-
- int id = rs.getInt( "id" );
- rs.close();
- prep.close();
- return id;
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.WARNING, "Failed to get player ID: " + uuid.toString() );
- }
- return -1;
- }
-
- public boolean saveDwarfData( DwarfPlayer dwarfPlayer, DwarfSkill[] skills )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "UPDATE players SET race=? WHERE uuid=?;" );
- prep.setString( 1, dwarfPlayer.getRace().getId() );
- prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
- prep.execute();
- prep.close();
-
- prep = mDBCon.prepareStatement( "UPDATE players SET raceMaster=? WHERE uuid=?;" );
- prep.setBoolean( 1, dwarfPlayer.isRaceMaster() );
- prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
- prep.execute();
- prep.close();
-
- prep = mDBCon.prepareStatement( "REPLACE INTO skills(player, id, level, " + "deposit1, deposit2, deposit3) " + "values(?,?,?,?,?,?);" );
-
- int id = getPlayerID( dwarfPlayer.getPlayer().getUniqueId() );
- for ( DwarfSkill skill : skills )
- {
- prep.setInt( 1, id );
- prep.setString( 2, skill.getId() );
- prep.setInt( 3, skill.getLevel() );
- prep.setInt( 4, skill.getDeposit( 1 ) );
- prep.setInt( 5, skill.getDeposit( 2 ) );
- prep.setInt( 6, skill.getDeposit( 3 ) );
- prep.addBatch();
- }
- prep.executeBatch();
- prep.close();
- return true;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- return false;
- }
- }
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperSQLite.java b/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperSQLite.java
deleted file mode 100644
index c4b7ed5e..00000000
--- a/src/main/java/com/jessy1237/dwarfcraft/data/DBWrapperSQLite.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * Copyright (c) 2023.
- *
- * DwarfCraft is an RPG plugin that allows players to improve their characters
- * skills and capabilities through training, not experience.
- *
- * Authors: Jessy1237 and Drekryan
- * Original Authors: smartaleq, LexManos and RCarretta
- */
-
-package com.jessy1237.dwarfcraft.data;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.UUID;
-import java.util.logging.Level;
-
-import org.bukkit.Location;
-import org.bukkit.entity.EntityType;
-
-import com.jessy1237.dwarfcraft.ConfigManager;
-import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.models.DwarfPlayer;
-import com.jessy1237.dwarfcraft.models.DwarfSkill;
-import com.jessy1237.dwarfcraft.models.DwarfTrainerTrait;
-
-import net.citizensnpcs.api.npc.AbstractNPC;
-
-class DBWrapperSQLite implements DBWrapper
-{
- private final ConfigManager configManager;
- private final DwarfCraft plugin;
- private Connection mDBCon;
-
- DBWrapperSQLite( DwarfCraft plugin, ConfigManager cm )
- {
- this.plugin = plugin;
- this.configManager = cm;
- }
-
- @SuppressWarnings( "deprecation" )
- public void dbInitialize()
- {
- try
- {
- Class.forName( "org.sqlite.JDBC" );
- mDBCon = DriverManager.getConnection( "jdbc:sqlite:" + configManager.getDatabasePath() );
- Statement statement = mDBCon.createStatement();
- ResultSet rs = statement.executeQuery( "select * from sqlite_master WHERE name = 'players';" );
- if ( !rs.next() )
- {
- buildDB();
- }
-
- // check for update to skill deposits
- try
- {
- rs = statement.executeQuery( "SELECT deposit1 FROM skills;" );
- }
- catch ( SQLException ex )
- {
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit1 NUMERIC DEFAULT 0;" );
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit2 NUMERIC DEFAULT 0;" );
- statement.executeUpdate( "ALTER TABLE skills ADD COLUMN deposit3 NUMERIC DEFAULT 0;" );
- }
-
- // Adds the uuid arg to the player table
- try
- {
- rs = statement.executeQuery( "select uuid from players" );
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.INFO, "Converting Player DB (may lag a little wait for completion message)." );
- mDBCon.setAutoCommit( false );
- HashMap dcplayers = new HashMap<>();
- HashMap ids = new HashMap<>();
-
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "SELECT * FROM players" );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- dcplayers.put( plugin.getServer().getOfflinePlayer( rs.getString( "name" ) ).getUniqueId(), rs.getString( "race" ) );
- ids.put( plugin.getServer().getOfflinePlayer( rs.getString( "name" ) ).getUniqueId(), rs.getInt( "id" ) );
- }
-
- }
- catch ( Exception e1 )
- {
- e1.printStackTrace();
- }
- statement.executeUpdate( "DROP TABLE players" );
- statement.executeUpdate( "create table players ( id INTEGER PRIMARY KEY, uuid, race, raceMaster );" );
- for ( UUID uuid : dcplayers.keySet() )
- {
- if ( uuid != null )
- {
- PreparedStatement prep = mDBCon.prepareStatement( "insert into players(id, uuid, race, raceMaster) values(?,?,?,?);" );
- prep.setInt( 1, ids.get( uuid ) );
- prep.setString( 2, uuid.toString() );
- prep.setString( 3, dcplayers.get( uuid ) );
- prep.setBoolean( 4, false );
- prep.execute();
- prep.close();
- }
- }
- plugin.getLogger().log( Level.INFO, "Finished Converting the Players DB." );
- }
-
- // Adds raceMaster arg to the player table
- try
- {
- rs = statement.executeQuery( "select raceMaster from players" );
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.INFO, "Converting Player DB (may lag a little wait for completion message)." );
- mDBCon.setAutoCommit( false );
- HashMap dcplayers = new HashMap<>();
- HashMap ids = new HashMap<>();
-
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "SELECT * FROM players" );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- dcplayers.put( UUID.fromString( rs.getString( "uuid" ) ), rs.getString( "race" ) );
- ids.put( UUID.fromString( rs.getString( "uuid" ) ), rs.getInt( "id" ) );
- }
-
- }
- catch ( Exception e1 )
- {
- e1.printStackTrace();
- }
- statement.executeUpdate( "DROP TABLE players" );
- statement.executeUpdate( "create table players ( id INTEGER PRIMARY KEY, uuid, race, raceMaster );" );
- for ( UUID uuid : dcplayers.keySet() )
- {
- if ( uuid != null )
- {
- PreparedStatement prep = mDBCon.prepareStatement( "insert into players(id, uuid, race, raceMaster) values(?,?,?,?);" );
- prep.setInt( 1, ids.get( uuid ) );
- prep.setString( 2, uuid.toString() );
- prep.setString( 3, dcplayers.get( uuid ) );
- prep.setBoolean( 4, false );
- prep.execute();
- prep.close();
- }
- }
- plugin.getLogger().log( Level.INFO, "Finished Converting the Players DB." );
- }
-
- try
- {
- rs = statement.executeQuery( "select * from sqlite_master WHERE name = 'trainers';" );
- if ( rs.next() )
- {
- plugin.getLogger().log( Level.INFO, "Transferring Trainer DB to citizens (may lag a little wait for completion message)." );
-
- rs = statement.executeQuery( "select * from trainers;" );
-
- while ( rs.next() )
- {
- AbstractNPC npc1;
- if ( rs.getString( "type" ).equalsIgnoreCase( "PLAYER" ) )
- {
- npc1 = ( AbstractNPC ) plugin.getNPCRegistry().createNPC( EntityType.PLAYER, UUID.randomUUID(), Integer.parseInt( rs.getString( "uniqueId" ) ), rs.getString( "name" ) );
- }
- else
- {
- npc1 = ( AbstractNPC ) plugin.getNPCRegistry().createNPC( EntityType.valueOf( rs.getString( "type" ) ), UUID.randomUUID(), Integer.parseInt( rs.getString( "uniqueId" ) ), rs.getString( "name" ) );
- }
- npc1.spawn( new Location( plugin.getServer().getWorld( rs.getString( "world" ) ), rs.getDouble( "x" ), rs.getDouble( "y" ), rs.getDouble( "z" ), rs.getFloat( "yaw" ), rs.getFloat( "pitch" ) ) );
- npc1.addTrait( new DwarfTrainerTrait( plugin, rs.getString( "skill" ), rs.getInt( "maxSkill" ), rs.getInt( "minSkill" ) ) );
- npc1.setProtected( true );
- }
- }
- statement.execute( "DROP TABLE trainers" );
- plugin.getLogger().log( Level.INFO, "Finished Transferring the Trainers DB." );
- }
- catch ( Exception e )
- {
- // NOOP
- }
- rs.close();
- mDBCon.setAutoCommit( true );
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- private void buildDB()
- {
- try
- {
- Statement statement = mDBCon.createStatement();
- ResultSet rs = statement.executeQuery( "select * from sqlite_master WHERE name = 'players';" );
- if ( !rs.next() )
- {
- statement.executeUpdate( "create table players ( id INTEGER PRIMARY KEY, uuid, race, raceMaster );" );
- }
- rs.close();
-
- rs = statement.executeQuery( "select * from sqlite_master WHERE name = 'skills';" );
- if ( !rs.next() )
- {
- statement.executeUpdate( "CREATE TABLE 'skills' " + " ( " + " 'player' INT, " + " 'id' TEXT, " + " 'level' INT DEFAULT 0, " + " 'deposit1' INT DEFAULT 0, " + " 'deposit2' INT DEFAULT 0, " + " 'deposit3' INT DEFAULT 0, " + " PRIMARY KEY ('player','id') " + " "
- + " );" );
- }
- rs.close();
-
- }
- catch ( SQLException e )
- {
- plugin.getLogger().log( Level.SEVERE, "DB not built successfully" );
- e.printStackTrace();
- plugin.getServer().getPluginManager().disablePlugin( plugin );
- }
- }
-
- public void dbFinalize()
- {
- try
- {
- mDBCon.close();
- mDBCon = null;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- public void createDwarfData( DwarfPlayer dCPlayer )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "insert into players(uuid, race) values(?,?);" );
- prep.setString( 1, dCPlayer.getPlayer().getUniqueId().toString() );
- prep.setString( 2, plugin.getRaceManager().getDefaultRace().getId() );
- prep.execute();
- prep.close();
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- }
-
- public boolean checkDwarfData( DwarfPlayer player )
- {
- return checkDwarfData( player, player.getPlayer().getUniqueId() );
- }
-
- /**
- * Used for creating and populating a dwarf with a null(off line) player
- *
- * @param player
- * @param uuid
- */
- public boolean checkDwarfData( DwarfPlayer player, UUID uuid )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "select * from players WHERE uuid = ?;" );
- prep.setString( 1, uuid.toString() );
- ResultSet rs = prep.executeQuery();
-
- if ( !rs.next() )
- return false;
-
- player.setRace( rs.getString( "race" ) );
- player.setRaceMaster( rs.getBoolean( "raceMaster" ) );
-
- int id = rs.getInt( "id" );
- rs.close();
-
- prep.close();
- prep = mDBCon.prepareStatement( "select id, level, deposit1, deposit2, deposit3 " + "from skills WHERE player = ?;" );
- prep.setInt( 1, id );
- rs = prep.executeQuery();
-
- while ( rs.next() )
- {
- String skillID = rs.getString( "id" );
- int level = rs.getInt( "level" );
- DwarfSkill skill = player.getSkill( skillID );
- if ( skill != null )
- {
- skill.setLevel( level );
- skill.setDeposit( rs.getInt( "deposit1" ), 1 );
- skill.setDeposit( rs.getInt( "deposit2" ), 2 );
- skill.setDeposit( rs.getInt( "deposit3" ), 3 );
- }
- }
- rs.close();
- prep.close();
-
- if ( !plugin.getDataManager().dwarves.contains( player ) )
- plugin.getDataManager().dwarves.add( player );
-
- return true;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- return false;
- }
- }
-
- private int getPlayerID( UUID uuid )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "select id from players WHERE uuid = ?;" );
- prep.setString( 1, uuid.toString() );
- ResultSet rs = prep.executeQuery();
-
- if ( !rs.next() )
- return -1;
-
- int id = rs.getInt( "id" );
- rs.close();
- prep.close();
- return id;
- }
- catch ( Exception e )
- {
- plugin.getLogger().log( Level.WARNING, "Failed to get player ID: " + uuid.toString() );
- }
- return -1;
- }
-
- public boolean saveDwarfData( DwarfPlayer dwarfPlayer, DwarfSkill[] skills )
- {
- try
- {
- PreparedStatement prep = mDBCon.prepareStatement( "UPDATE players SET race=? WHERE uuid=?;" );
- prep.setString( 1, dwarfPlayer.getRace().getId() );
- prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
- prep.execute();
- prep.close();
-
- prep = mDBCon.prepareStatement( "UPDATE players SET raceMaster=? WHERE uuid=?;" );
- prep.setBoolean( 1, dwarfPlayer.isRaceMaster() );
- prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
- prep.execute();
- prep.close();
-
- prep = mDBCon.prepareStatement( "REPLACE INTO skills(player, id, level, " + "deposit1, deposit2, deposit3) " + "values(?,?,?,?,?,?);" );
-
- int id = getPlayerID( dwarfPlayer.getPlayer().getUniqueId() );
- for ( DwarfSkill skill : skills )
- {
- prep.setInt( 1, id );
- prep.setString( 2, skill.getId() );
- prep.setInt( 3, skill.getLevel() );
- prep.setInt( 4, skill.getDeposit( 1 ) );
- prep.setInt( 5, skill.getDeposit( 2 ) );
- prep.setInt( 6, skill.getDeposit( 3 ) );
- prep.addBatch();
- }
- prep.executeBatch();
- prep.close();
- return true;
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- return false;
- }
- }
-}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DwarfManager.java b/src/main/java/com/jessy1237/dwarfcraft/data/DwarfManager.java
new file mode 100644
index 00000000..a325de81
--- /dev/null
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/DwarfManager.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2023.
+ *
+ * DwarfCraft is an RPG plugin that allows players to improve their characters
+ * skills and capabilities through training, not experience.
+ *
+ * Authors: Jessy1237 and Drekryan
+ * Original Authors: smartaleq, LexManos and RCarretta
+ */
+
+package com.jessy1237.dwarfcraft.data;
+
+import java.util.HashMap;
+import java.util.UUID;
+
+import org.bukkit.ChatColor;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+
+import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.models.DwarfPlayer;
+
+public class DwarfManager
+{
+ private final DwarfCraft plugin;
+ private HashMap dwarves = new HashMap<>();
+ private DwarfReader reader;
+
+ public DwarfManager( DwarfCraft plugin ) {
+ this.plugin = plugin;
+ reader = new DwarfReader( this.plugin, this );
+ }
+
+ public void init() {
+ dwarves = reader.parseDwarves();
+ plugin.getUtil().consoleLog( "Loaded " + ChatColor.AQUA + dwarves.values().size() + ChatColor.WHITE + " Players(s)" );
+ }
+
+ public void createDwarf( OfflinePlayer player ) {
+ DwarfPlayer dwarf = reader.createDwarf( player );
+ addDwarf(dwarf);
+ }
+
+ public void addDwarf(UUID uuid, DwarfPlayer dwarf) {
+ dwarves.put( uuid, dwarf );
+ }
+
+ public void addDwarf(DwarfPlayer dwarf) {
+ dwarves.put( dwarf.getPlayer().getUniqueId(), dwarf );
+ }
+
+ public DwarfPlayer getDwarf(Player player)
+ {
+ UUID uuid = player.getUniqueId();
+ return dwarves.get( uuid );
+ }
+
+ public DwarfPlayer getDwarf(UUID dwarf)
+ {
+ return dwarves.get( dwarf );
+ }
+
+ public boolean saveDwarf( DwarfPlayer player ) {
+ return reader.saveDwarf(player);
+ }
+
+ public HashMap getDwarves()
+ {
+ return dwarves;
+ }
+
+}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DwarfReader.java b/src/main/java/com/jessy1237/dwarfcraft/data/DwarfReader.java
new file mode 100644
index 00000000..d3f3cc75
--- /dev/null
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/DwarfReader.java
@@ -0,0 +1,194 @@
+package com.jessy1237.dwarfcraft.data;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.UUID;
+
+import org.bukkit.ChatColor;
+import org.bukkit.OfflinePlayer;
+
+import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.models.DwarfPlayer;
+import com.jessy1237.dwarfcraft.models.DwarfRace;
+import com.jessy1237.dwarfcraft.models.DwarfSkill;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.stream.JsonReader;
+
+public
+class DwarfReader {
+ private final DwarfCraft plugin;
+ private final DwarfManager manager;
+ private File dataDir;
+
+ public DwarfReader( DwarfCraft plugin, DwarfManager manager ) {
+ this.plugin = plugin;
+ this.manager = manager;
+ dataDir = new File( plugin.getDataFolder().getAbsolutePath() + "/data/players/" );
+
+ //Convert existing dwarves
+ if (!isConverted()) convertDwarves();
+ }
+
+ private boolean isConverted() {
+ return dataDir.exists();
+ }
+
+ private void createDirectory() {
+ if ( !isConverted() ) dataDir.mkdirs();
+ }
+
+ protected HashMap parseDwarves() {
+ HashMap dwarves = new HashMap();
+ if ( dataDir.list() != null && Objects.requireNonNull( dataDir.list() ).length > 0 )
+ {
+ for (String file_name : Objects.requireNonNull( dataDir.list() ) ) {
+ if (!file_name.endsWith(".json")) continue;
+ String uuidString = file_name.split("\\.")[0];
+ UUID uuid = UUID.fromString(uuidString);
+
+ DwarfPlayer dwarfPlayer = parseDwarf(new DwarfPlayer(plugin, uuid));
+ dwarves.put(uuid, dwarfPlayer);
+ }
+ }
+ return dwarves;
+ }
+
+ protected DwarfPlayer parseDwarf( DwarfPlayer player ) {
+ try
+ {
+ String uuidString = player.getUuid().toString();
+ String file_name = uuidString + ".json";
+ String content = new String( Files.readAllBytes( Paths.get( dataDir + "/" + file_name ) ) );
+ if ( !file_name.endsWith( ".json" ) ) return null;
+
+ JsonReader reader = new JsonReader( new StringReader( content.trim() ) );
+ reader.setLenient( true );
+ JsonElement element = new JsonParser().parse( reader );
+ if (!element.isJsonObject()) return null;
+ JsonObject json = element.getAsJsonObject();
+ DwarfPlayer dwarfPlayer;
+
+ // UUID
+ UUID uuid = UUID.fromString( file_name.split( "\\." )[0].toLowerCase() );
+
+ // Race
+ String raceString = json.get( "race" ).getAsString();
+ DwarfRace race = plugin.getRaceManager().getRace(raceString);
+
+ // Race Master
+ boolean isRaceMaster = json.get( "raceMaster" ).getAsBoolean();
+
+ // Skills
+ JsonObject skillsObject = json.get("skills").getAsJsonObject();
+ Set> entries = skillsObject.entrySet();
+ dwarfPlayer = new DwarfPlayer( plugin, uuid, race, isRaceMaster );
+
+ for (Map.Entry entry: entries) {
+ String skill_id = entry.getKey();
+ DwarfSkill skill = plugin.getSkillManager().getSkill(skill_id);
+
+ JsonObject skillObject = json.get("skills").getAsJsonObject().get(skill_id).getAsJsonObject();
+ skill.setLevel(skillObject.get("level").getAsInt());
+ skill.setDeposit(skillObject.get("deposit1").getAsInt(), 1);
+ skill.setDeposit(skillObject.get("deposit2").getAsInt(), 2);
+ skill.setDeposit(skillObject.get("deposit3").getAsInt(), 3);
+ dwarfPlayer.setSkill(skill);
+ }
+
+ if (!manager.getDwarves().containsKey(uuid)) {
+ if (plugin.getServer().getOfflinePlayer(uuid).isOnline()) {
+ dwarfPlayer.setPlayer(plugin.getServer().getPlayer(uuid));
+ }
+ }
+
+ return dwarfPlayer;
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ protected void createDwarf( DwarfPlayer player )
+ {
+ if (player.getPlayer() == null) return;
+ createDwarf( player.getPlayer() );
+ }
+
+ protected DwarfPlayer createDwarf( OfflinePlayer player )
+ {
+ String path = "/data/players/" + player.getUniqueId() + ".json";
+ File playerData = new File( plugin.getDataFolder().getAbsolutePath() + path );
+ if (playerData.exists()) return null;
+
+ try ( FileOutputStream fos = new FileOutputStream( playerData ); OutputStreamWriter isr = new OutputStreamWriter( fos, StandardCharsets.UTF_8 ) )
+ {
+ DwarfPlayer newDwarf = null;
+ DwarfPlayer dwarf = plugin.getDataManager().findOffline(player.getUniqueId());
+ if (dwarf == null) {
+ if (player.isOnline()) {
+ newDwarf = new DwarfPlayer( plugin, player.getPlayer() );
+ } else {
+ newDwarf = new DwarfPlayer (plugin, player.getUniqueId());
+ }
+ plugin.getUtil().consoleLog( "Creating data file: " + ChatColor.AQUA + path );
+ } else {
+ newDwarf = dwarf;
+ plugin.getUtil().consoleLog( "Found player data, creating data file: " + ChatColor.AQUA + path );
+ }
+
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create();
+ gson.toJson( newDwarf, isr );
+ return newDwarf;
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ protected boolean saveDwarf( DwarfPlayer player ) {
+ String path = "/data/players/" + player.getUuid() + ".json";
+ File playerData = new File( plugin.getDataFolder().getAbsolutePath() + path );
+ if (!playerData.exists()) return false;
+
+ try ( FileOutputStream fos = new FileOutputStream( playerData ); OutputStreamWriter isr = new OutputStreamWriter( fos, StandardCharsets.UTF_8 ) )
+ {
+ plugin.getUtil().consoleLog( "Saving data file: " + ChatColor.AQUA + path );
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create();
+ gson.toJson( player, isr );
+ return true;
+ } catch (IOException e) {
+ return false;
+ }
+ }
+
+ private void convertDwarves()
+ {
+ File database = new File( plugin.getDataFolder(), "dwarfcraft.db" );
+ if ( database.exists() ) {
+ plugin.getUtil().consoleLog( ChatColor.YELLOW + "Found legacy database. Converting player data..." );
+ plugin.getUtil().consoleLog( ChatColor.RED + "Please do not shutdown server, converting database." );
+ createDirectory();
+ OfflinePlayer[] players = plugin.getServer().getOfflinePlayers();
+ for (OfflinePlayer player : players) {
+ DwarfPlayer dwarf = plugin.getDataManager().findOffline(player.getUniqueId());
+ createDwarf( dwarf );
+ }
+ plugin.getUtil().consoleLog( ChatColor.GREEN + "Conversion complete!" );
+ }
+ }
+}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/RaceManager.java b/src/main/java/com/jessy1237/dwarfcraft/data/RaceManager.java
similarity index 59%
rename from src/main/java/com/jessy1237/dwarfcraft/RaceManager.java
rename to src/main/java/com/jessy1237/dwarfcraft/data/RaceManager.java
index 72abba69..6f2bd7c0 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/RaceManager.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/RaceManager.java
@@ -1,13 +1,12 @@
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.data;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import org.bukkit.ChatColor;
-import org.bukkit.plugin.java.JavaPlugin;
-import com.jessy1237.dwarfcraft.data.RaceReader;
+import com.jessy1237.dwarfcraft.DwarfCraft;
import com.jessy1237.dwarfcraft.events.DwarfLoadRacesEvent;
import com.jessy1237.dwarfcraft.models.DwarfRace;
@@ -23,7 +22,6 @@ public RaceManager( DwarfCraft plugin ) {
@SuppressWarnings( "unchecked" )
public void init() {
- createRaceFiles();
new RaceReader( plugin, this );
DwarfLoadRacesEvent e = new DwarfLoadRacesEvent( ( HashMap ) races.clone() );
plugin.getServer().getPluginManager().callEvent( e );
@@ -31,40 +29,11 @@ public void init() {
plugin.getUtil().consoleLog( "Loaded " + ChatColor.AQUA + races.values().size() + ChatColor.WHITE + " Races(s)" );
}
- private
- void createRaceFiles() {
- File root = new File( plugin.getDataFolder().getAbsolutePath() );
-
- if ( !root.exists() )
- {
- if ( !root.mkdirs() )
- {
- return;
- }
- }
-
- for ( String file_name : Registration.getRaceFiles() )
- {
- String path = "data/dwarfcraft/races/" + file_name;
- File destFile = new File( plugin.getDataFolder() + File.separator + path );
- InputStream source = plugin.getResource( path );
- if ( source != null && file_name.endsWith( ".json" ) && !destFile.exists() )
- {
- plugin.saveResource( path, true );
- plugin.getUtil().consoleLog( "Writing data file: " + ChatColor.AQUA + path );
- }
- }
-
- File customDir = new File( plugin.getDataFolder().getAbsolutePath() + "/data/custom/races/" );
- if ( !customDir.exists() ) customDir.mkdirs();
- }
-
public void addRace( DwarfRace race ) {
races.put( race.getId().toLowerCase(), race );
}
- public
- DwarfRace getRace( String race_id )
+ public DwarfRace getRace( String race_id )
{
if ( race_id.isEmpty() )
return new DwarfRace("", "");
@@ -72,8 +41,7 @@ DwarfRace getRace( String race_id )
return races.get( race_id.toLowerCase() );
}
- public
- HashMap getAllRaces()
+ public HashMap getAllRaces()
{
HashMap newRacesArray = new HashMap<>();
for ( DwarfRace r : races.values() )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/RaceReader.java b/src/main/java/com/jessy1237/dwarfcraft/data/RaceReader.java
index ea449865..bfc95a6b 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/data/RaceReader.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/RaceReader.java
@@ -1,18 +1,19 @@
package com.jessy1237.dwarfcraft.data;
import java.io.File;
+import java.io.InputStream;
import java.io.StringReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.List;
import java.util.Objects;
import java.util.logging.Level;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.RaceManager;
import com.jessy1237.dwarfcraft.models.DwarfRace;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -24,24 +25,53 @@ class RaceReader {
private final DwarfCraft plugin;
private final RaceManager manager;
+ private static final List race_files = new ArrayList<>();
+ private File dataDir;
private boolean vanillaEnabled = true;
public
RaceReader( DwarfCraft plugin, RaceManager manager ) {
this.plugin = plugin;
this.manager = manager;
+ dataDir = new File( plugin.getDataFolder().getAbsolutePath() + "/data/races/" );
this.vanillaEnabled = plugin.getConfigManager().vanilla;
+ registerRaces();
+ createRaceFiles();
parseRaces();
}
- private
- void parseRaces() {
+ private void registerRaces() {
+ registerRace( "dwarf" );
+ registerRace( "elf" );
+ registerRace( "gnome" );
+ registerRace( "human" );
+ }
+
+ public static
+ void registerRace( String race_id ) {
+ race_files.add( race_id.toLowerCase() + ".json" );
+ }
+
+ private void createRaceFiles() {
+ if ( !dataDir.exists() ) dataDir.mkdirs();
+ for ( String file_name : race_files )
+ {
+ String path = "data/races/" + "/" + file_name;
+ InputStream source = plugin.getResource( path );
+
+ File destFile = new File( dataDir.toString() + file_name );
+ if ( source != null && file_name.endsWith( ".json" ) && !destFile.exists() )
+ {
+ plugin.saveResource( path, false );
+ plugin.getUtil().consoleLog( "Writing data file: " + ChatColor.AQUA + path );
+ }
+ }
+ }
+
+ private void parseRaces() {
String content;
- File directory = new File( plugin.getDataFolder().getAbsolutePath() + "/data/dwarfcraft/races/" );
- File customRaces = new File( plugin.getDataFolder().getAbsolutePath() + "/data/custom/races/" );
- ArrayList overrideNames = new ArrayList<>( Arrays.asList( Objects.requireNonNull( customRaces.list() ) ) );
- overrideNames.removeIf( override->!override.endsWith( ".json" ) );
+ File directory = new File( plugin.getDataFolder().getAbsolutePath() + "/data/races/" );
if ( vanillaEnabled ) {
System.out.println("Adding vanilla race");
@@ -54,12 +84,8 @@ void parseRaces() {
for (String file_name : Objects.requireNonNull( directory.list() ) ) {
try
{
- if ( overrideNames.contains( file_name ) ) {
- content = new String( Files.readAllBytes( Paths.get( customRaces + "/" + file_name ) ) );
- } else {
- content = new String( Files.readAllBytes( Paths.get( directory + "/" + file_name ) ) );
- if ( !file_name.endsWith( ".json" ) ) continue;
- }
+ content = new String( Files.readAllBytes( Paths.get( directory + "/" + file_name ) ) );
+ if ( !file_name.endsWith( ".json" ) ) continue;
JsonReader reader = new JsonReader( new StringReader( content.trim() ) );
reader.setLenient( true );
diff --git a/src/main/java/com/jessy1237/dwarfcraft/SkillManager.java b/src/main/java/com/jessy1237/dwarfcraft/data/SkillManager.java
similarity index 56%
rename from src/main/java/com/jessy1237/dwarfcraft/SkillManager.java
rename to src/main/java/com/jessy1237/dwarfcraft/data/SkillManager.java
index eb2010a0..eaeb76db 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/SkillManager.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/SkillManager.java
@@ -1,4 +1,4 @@
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.data;
import java.io.File;
import java.io.InputStream;
@@ -6,7 +6,7 @@
import org.bukkit.ChatColor;
-import com.jessy1237.dwarfcraft.data.SkillReader;
+import com.jessy1237.dwarfcraft.DwarfCraft;
import com.jessy1237.dwarfcraft.events.DwarfLoadSkillsEvent;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
@@ -22,7 +22,6 @@ public SkillManager( DwarfCraft plugin ) {
@SuppressWarnings( "unchecked" )
public void init() {
- createSkillFiles();
new SkillReader( plugin, this );
DwarfLoadSkillsEvent e = new DwarfLoadSkillsEvent( ( HashMap ) skills.clone() );
plugin.getServer().getPluginManager().callEvent( e );
@@ -30,34 +29,6 @@ public void init() {
plugin.getUtil().consoleLog( "Loaded " + ChatColor.AQUA + skills.values().size() + ChatColor.WHITE + " Skill(s)" );
}
- private
- void createSkillFiles() {
- File root = new File( plugin.getDataFolder().getAbsolutePath() );
-
- if ( !root.exists() )
- {
- if ( !root.mkdirs() )
- {
- return;
- }
- }
-
- for ( String file_name : Registration.getSkillFiles() )
- {
- String path = "data/dwarfcraft/skills/" + file_name;
- File destFile = new File( plugin.getDataFolder() + File.separator + path );
- InputStream source = plugin.getResource( path );
- if ( source != null && file_name.endsWith( ".json" ) && !destFile.exists() )
- {
- plugin.saveResource( path, true );
- plugin.getUtil().consoleLog( "Writing data file: " + ChatColor.AQUA + path );
- }
- }
-
- File customDir = new File( plugin.getDataFolder().getAbsolutePath() + "/data/custom/skills/" );
- if ( !customDir.exists() ) customDir.mkdirs();
- }
-
public void addSkill(DwarfSkill skill) {
skills.put( skill.getId(), skill );
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/SkillReader.java b/src/main/java/com/jessy1237/dwarfcraft/data/SkillReader.java
index ca3e96b4..4e67bbdd 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/data/SkillReader.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/data/SkillReader.java
@@ -1,16 +1,17 @@
package com.jessy1237.dwarfcraft.data;
import java.io.File;
+import java.io.InputStream;
import java.io.StringReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.logging.Level;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.SkillManager;
import com.jessy1237.dwarfcraft.models.DwarfItemHolder;
import com.jessy1237.dwarfcraft.models.DwarfRace;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
@@ -28,34 +29,110 @@ class SkillReader
{
private final DwarfCraft plugin;
private final SkillManager manager;
+ private static final List skill_files = new ArrayList<>();
+ private File dataDir;
public
SkillReader( DwarfCraft plugin, SkillManager manager ) {
this.plugin = plugin;
this.manager = manager;
+ dataDir = new File( plugin.getDataFolder().getAbsolutePath() + "/data/skills/" );
+
+ registerSkills();
+ createSkillFiles();
parseSkills();
}
- private
- void parseSkills()
+ private void registerSkills() {
+ registerSkill( "pickaxe_use" );
+ registerSkill( "shovel_use" );
+ registerSkill( "axe_use" );
+ registerSkill( "seed_gatherer" );
+ registerSkill( "melon_farmer" );
+ registerSkill( "fishing" );
+ registerSkill( "stone_shaper" );
+ registerSkill( "smelter" );
+ registerSkill( "iron_forger" );
+ registerSkill( "diamond_forger" );
+ registerSkill( "excavator" );
+ registerSkill( "quarry_worker" );
+ registerSkill( "ore_miner" );
+ registerSkill( "exotic_miner" );
+ registerSkill( "wood_carver" );
+ registerSkill( "gold_forger" );
+ registerSkill( "nether_miner" );
+ registerSkill( "sand_digger" );
+ registerSkill( "gravel_digger" );
+ registerSkill( "dirt_digger" );
+ registerSkill( "lumberjack" );
+ registerSkill( "carpenter" );
+ registerSkill( "wheat_farmer" );
+ registerSkill( "exotic_farmer" );
+ registerSkill( "vegetable_farmer" );
+ registerSkill( "mason" );
+ registerSkill( "glass_worker" );
+ registerSkill( "wood_crafter" );
+ registerSkill( "bookmaker" );
+ registerSkill( "brickmaker" );
+ registerSkill( "demolitionist" );
+ registerSkill( "fire_starter" );
+ registerSkill( "railworker" );
+ registerSkill( "baker" );
+ registerSkill( "fletcher" );
+ registerSkill( "butcher" );
+ registerSkill( "sailor" );
+ registerSkill( "climber" );
+ registerSkill( "survivalist" );
+ registerSkill( "florist" );
+ registerSkill( "dungeon_delver" );
+ registerSkill( "nether_hunter" );
+ registerSkill( "shearer" );
+ registerSkill( "huntsman" );
+ registerSkill( "monster_hunter" );
+ registerSkill( "scout" );
+ registerSkill( "soldier" );
+ registerSkill( "archer" );
+ registerSkill( "exotic_armour" );
+ registerSkill( "swordsman" );
+ registerSkill( "sign_maker" );
+ registerSkill( "torch_maker" );
+ registerSkill( "alchemist" );
+ registerSkill( "noble" );
+ registerSkill( "axe_swinger" );
+ }
+
+ public static void registerSkill( String skill_id ) {
+ skill_files.add( skill_id.toLowerCase() + ".json" );
+ }
+
+ private void createSkillFiles() {
+ if ( !dataDir.exists() ) dataDir.mkdirs();
+ for ( String file_name : skill_files )
+ {
+ String path = "data/skills/" + file_name;
+ InputStream source = plugin.getResource( path );
+
+ File destFile = new File( dataDir.toString() + "/" + file_name );
+ if ( source != null && file_name.endsWith( ".json" ) && !destFile.exists() )
+ {
+ plugin.saveResource( path, false );
+ plugin.getUtil().consoleLog( "Writing data file: " + ChatColor.AQUA + path );
+ }
+ }
+ }
+
+ private void parseSkills()
{
String content;
- File directory = new File( plugin.getDataFolder().getAbsolutePath() + "/data/dwarfcraft/skills/" );
- File customSkills = new File( plugin.getDataFolder().getAbsolutePath() + "/data/custom/skills/" );
- ArrayList overrideNames = new ArrayList<>( Arrays.asList( Objects.requireNonNull( customSkills.list() ) ) );
- overrideNames.removeIf( override->!override.endsWith( ".json" ) );
+ File directory = new File( plugin.getDataFolder().getAbsolutePath() + "/data/skills/" );
if ( directory.list() != null && Objects.requireNonNull( directory.list() ).length > 0 )
{
for (String file_name : Objects.requireNonNull( directory.list() ) ) {
try
{
- if ( overrideNames.contains( file_name ) ) {
- content = new String( Files.readAllBytes( Paths.get( customSkills + "/" + file_name ) ) );
- } else {
- content = new String( Files.readAllBytes( Paths.get( directory + "/" + file_name ) ) );
- if ( !file_name.endsWith( ".json" ) ) continue;
- }
+ content = new String( Files.readAllBytes( Paths.get( directory + "/" + file_name ) ) );
+ if ( !file_name.endsWith( ".json" ) ) continue;
JsonReader reader = new JsonReader( new StringReader( content.trim() ) );
reader.setLenient( true );
@@ -110,8 +187,7 @@ void parseSkills()
}
@SuppressWarnings( "unused" )
- private
- ArrayList parseEffects( JsonObject object, String skill_id )
+ private ArrayList parseEffects( JsonObject object, String skill_id )
{
ArrayList effectList = new ArrayList<>();
JsonArray effects = object.getAsJsonArray("effects");
diff --git a/src/main/java/com/jessy1237/dwarfcraft/guis/ListGUI.java b/src/main/java/com/jessy1237/dwarfcraft/guis/ListGUI.java
index 3a5494bc..544d75bf 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/guis/ListGUI.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/guis/ListGUI.java
@@ -129,6 +129,7 @@ private void initItems()
lore.add( "" );
lore.add( ChatColor.LIGHT_PURPLE + "Click to teleport to Trainer..." );
+ if (trainer.getEntity().getEntity() == null) continue;
if ( trainer.getEntity().getEntity().getType() == EntityType.PLAYER )
{
meta.setOwningPlayer( plugin.getServer().getOfflinePlayer( trainer.getName() ) );
diff --git a/src/main/java/com/jessy1237/dwarfcraft/guis/TrainerGUI.java b/src/main/java/com/jessy1237/dwarfcraft/guis/TrainerGUI.java
index d60c8f3a..44ccd954 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/guis/TrainerGUI.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/guis/TrainerGUI.java
@@ -25,7 +25,7 @@
import net.md_5.bungee.api.ChatMessageType;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
import com.jessy1237.dwarfcraft.models.DwarfTrainer;
@@ -49,7 +49,7 @@ public TrainerGUI( DwarfCraft plugin, DwarfTrainer trainer, DwarfPlayer dwarfPla
public void init()
{
DwarfSkill skill = dwarfPlayer.getSkill( trainer.getSkillTrained() );
- this.inventory = plugin.getServer().createInventory( dwarfPlayer.getPlayer(), 18, plugin.getOut().parseColors( skill.description( Messages.trainerGUITitle, dwarfPlayer ) ) );
+ this.inventory = plugin.getServer().createInventory( dwarfPlayer.getPlayer(), 18, plugin.getOut().parseColors( skill.description( ConfigManager.getMessage("Trainer Messages.GUI Title"), dwarfPlayer ) ) );
inventory.clear();
List> costs = dwarfPlayer.calculateTrainingCost( skill );
@@ -148,7 +148,7 @@ public void click( InventoryClickEvent event )
long currentTime = System.currentTimeMillis();
if ( trainer.getLastTrain() != 0 && ( currentTime - trainer.getLastTrain() ) < ( long ) ( plugin.getConfigManager().getTrainDelay() * 1000 ) )
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, Messages.trainerCooldown );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Cooldown") );
player.playSound( player.getLocation(), Sound.UI_BUTTON_CLICK, SoundCategory.MASTER, 0.5f, 1.0f );
}
else
@@ -197,7 +197,7 @@ public void updateTitle()
{
DwarfSkill skill = dwarfPlayer.getSkill( trainer.getSkillTrained() );
dwarfPlayer.getPlayer().closeInventory();
- this.inventory = plugin.getServer().createInventory( dwarfPlayer.getPlayer(), 18, plugin.getOut().parseColors( skill.description( Messages.trainerGUITitle, dwarfPlayer ) ) );
+ this.inventory = plugin.getServer().createInventory( dwarfPlayer.getPlayer(), 18, plugin.getOut().parseColors( skill.description( ConfigManager.getMessage("Trainer Messages.GUI Title"), dwarfPlayer ) ) );
plugin.getDwarfInventoryListener().addDwarfGUI( dwarfPlayer.getPlayer(), this );
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/data/DataManager.java b/src/main/java/com/jessy1237/dwarfcraft/legacy/DataManager.java
similarity index 67%
rename from src/main/java/com/jessy1237/dwarfcraft/data/DataManager.java
rename to src/main/java/com/jessy1237/dwarfcraft/legacy/DataManager.java
index 9903d75c..0ab0b9f1 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/data/DataManager.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/legacy/DataManager.java
@@ -8,10 +8,8 @@
* Original Authors: smartaleq, LexManos and RCarretta
*/
-package com.jessy1237.dwarfcraft.data;
+package com.jessy1237.dwarfcraft.legacy;
-import java.io.File;
-import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
@@ -27,61 +25,39 @@
public class DataManager
{
- List dwarves = new ArrayList<>();
- public HashMap vehicleMap = new HashMap<>();
+ protected List dwarves = new ArrayList<>();
+ private HashMap vehicleMap = new HashMap<>();
public HashMap trainerList = new HashMap<>();
private final DwarfCraft plugin;
- private final DBWrapper dbWrapper;
- private final String type;
+ private final SQLiteReader dbReader;
- public DataManager( DwarfCraft plugin, String type )
+ public DataManager( DwarfCraft plugin )
{
this.plugin = plugin;
- this.dbWrapper = DBWrapperFactory.createWrapper( plugin, type );
- this.type = type;
+ this.dbReader = new SQLiteReader(plugin, plugin.getConfigManager());
}
public void dbInitialize()
{
- File database = new File( plugin.getDataFolder(), "dwarfcraft.db" );
- if ( !database.exists() )
- {
- try
- {
- if ( !database.createNewFile() && type.equalsIgnoreCase( "sqlite" ) )
- {
- plugin.getUtil().consoleLog( "Failed to create database! Disabling...", Level.SEVERE );
- plugin.onDisable();
- return;
- }
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- }
- }
- dbWrapper.dbInitialize();
+ dbReader.dbInitialize();
}
public void dbFinalize()
{
- dbWrapper.dbFinalize();
- }
-
- public void createDwarfData( DwarfPlayer dCPlayer )
- {
- dbWrapper.createDwarfData( dCPlayer );
+ dbReader.dbFinalize();
}
+ @Deprecated
public boolean checkDwarfData( DwarfPlayer player )
{
- return dbWrapper.checkDwarfData( player );
+ return dbReader.checkDwarfData( player, player.getUuid() );
}
- public boolean saveDwarfData( DwarfPlayer dwarfPlayer, DwarfSkill[] skills )
- {
- return dbWrapper.saveDwarfData( dwarfPlayer, skills );
- }
+ // @Deprecated
+ // public boolean saveDwarfData( DwarfPlayer dwarfPlayer, DwarfSkill[] skills )
+ // {
+ // return dbWrapper.saveDwarfData( dwarfPlayer, skills );
+ // }
public void addVehicle( DwarfVehicle v )
{
@@ -106,31 +82,13 @@ public boolean checkTrainersInChunk( Chunk chunk )
return false;
}
- public DwarfPlayer createDwarf( Player player )
- {
- DwarfPlayer newDwarf = new DwarfPlayer( plugin, player );
- newDwarf.setRace( plugin.getRaceManager().getDefaultRace().getId() );
- newDwarf.setSkills( plugin.getSkillManager().getAllSkills() );
-
- for ( DwarfSkill skill : newDwarf.getSkills().values() )
- {
- skill.setLevel( 0 );
- skill.setDeposit( 0, 1 );
- skill.setDeposit( 0, 2 );
- skill.setDeposit( 0, 3 );
- }
-
- if ( player != null )
- dwarves.add( newDwarf );
- return newDwarf;
- }
-
/**
* Finds a DwarfPlayer from the server's static list based on player's name
*
* @param player
* @return DwarfPlayer or null
*/
+ @Deprecated
public DwarfPlayer find( Player player )
{
for ( DwarfPlayer d : dwarves )
@@ -150,10 +108,11 @@ public DwarfPlayer find( Player player )
return null;
}
+ @Deprecated
public DwarfPlayer findOffline( UUID uuid )
{
- DwarfPlayer dCPlayer = createDwarf( null );
- if ( dbWrapper.checkDwarfData( dCPlayer, uuid ) )
+ DwarfPlayer dCPlayer = new DwarfPlayer(plugin, uuid);
+ if ( dbReader.checkDwarfData( dCPlayer, uuid ) )
return dCPlayer;
else
{
diff --git a/src/main/java/com/jessy1237/dwarfcraft/legacy/SQLiteReader.java b/src/main/java/com/jessy1237/dwarfcraft/legacy/SQLiteReader.java
new file mode 100644
index 00000000..81440d03
--- /dev/null
+++ b/src/main/java/com/jessy1237/dwarfcraft/legacy/SQLiteReader.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2023.
+ *
+ * DwarfCraft is an RPG plugin that allows players to improve their characters
+ * skills and capabilities through training, not experience.
+ *
+ * Authors: Jessy1237 and Drekryan
+ * Original Authors: smartaleq, LexManos and RCarretta
+ */
+
+package com.jessy1237.dwarfcraft.legacy;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.UUID;
+
+import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
+import com.jessy1237.dwarfcraft.models.DwarfPlayer;
+import com.jessy1237.dwarfcraft.models.DwarfSkill;
+
+@Deprecated
+class SQLiteReader
+{
+ private final ConfigManager configManager;
+ private final DwarfCraft plugin;
+ private Connection mDBCon;
+
+ SQLiteReader( DwarfCraft plugin, ConfigManager cm )
+ {
+ this.plugin = plugin;
+ this.configManager = cm;
+ }
+
+ public void dbInitialize()
+ {
+ try
+ {
+ Class.forName( "org.sqlite.JDBC" );
+ mDBCon = DriverManager.getConnection( "jdbc:sqlite:" + configManager.getDatabasePath() );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void dbFinalize()
+ {
+ try
+ {
+ mDBCon.close();
+ mDBCon = null;
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Used for creating and populating a dwarf with a null(off line) player
+ *
+ * @param player
+ * @param uuid
+ */
+ public boolean checkDwarfData( DwarfPlayer player, UUID uuid )
+ {
+ try
+ {
+ PreparedStatement prep = mDBCon.prepareStatement( "select * from players WHERE uuid = ?;" );
+ prep.setString( 1, uuid.toString() );
+ ResultSet rs = prep.executeQuery();
+
+ if ( !rs.next() )
+ return false;
+
+ player.setRace( rs.getString( "race" ) );
+ player.setRaceMaster( rs.getBoolean( "raceMaster" ) );
+
+ int id = rs.getInt( "id" );
+ rs.close();
+
+ prep.close();
+ prep = mDBCon.prepareStatement( "select id, level, deposit1, deposit2, deposit3 " + "from skills WHERE player = ?;" );
+ prep.setInt( 1, id );
+ rs = prep.executeQuery();
+
+ while ( rs.next() )
+ {
+ String skillID = rs.getString( "id" );
+ int level = rs.getInt( "level" );
+ DwarfSkill skill = player.getSkill( skillID );
+ if ( skill != null )
+ {
+ skill.setLevel( level );
+ skill.setDeposit( rs.getInt( "deposit1" ), 1 );
+ skill.setDeposit( rs.getInt( "deposit2" ), 2 );
+ skill.setDeposit( rs.getInt( "deposit3" ), 3 );
+ }
+ }
+ rs.close();
+ prep.close();
+
+ if ( !plugin.getDataManager().dwarves.contains( player ) )
+ plugin.getDataManager().dwarves.add( player );
+
+ return true;
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ // public boolean saveDwarfData( DwarfPlayer dwarfPlayer, DwarfSkill[] skills )
+ // {
+ // try
+ // {
+ // PreparedStatement prep = mDBCon.prepareStatement( "UPDATE players SET race=? WHERE uuid=?;" );
+ // prep.setString( 1, dwarfPlayer.getRace().getId() );
+ // prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
+ // prep.execute();
+ // prep.close();
+
+ // prep = mDBCon.prepareStatement( "UPDATE players SET raceMaster=? WHERE uuid=?;" );
+ // prep.setBoolean( 1, dwarfPlayer.isRaceMaster() );
+ // prep.setString( 2, dwarfPlayer.getPlayer().getUniqueId().toString() );
+ // prep.execute();
+ // prep.close();
+
+ // prep = mDBCon.prepareStatement( "REPLACE INTO skills(player, id, level, " + "deposit1, deposit2, deposit3) " + "values(?,?,?,?,?,?);" );
+
+ // int id = getPlayerID( dwarfPlayer.getPlayer().getUniqueId() );
+ // for ( DwarfSkill skill : skills )
+ // {
+ // prep.setInt( 1, id );
+ // prep.setString( 2, skill.getId() );
+ // prep.setInt( 3, skill.getLevel() );
+ // prep.setInt( 4, skill.getDeposit( 1 ) );
+ // prep.setInt( 5, skill.getDeposit( 2 ) );
+ // prep.setInt( 6, skill.getDeposit( 3 ) );
+ // prep.addBatch();
+ // }
+ // prep.executeBatch();
+ // prep.close();
+ // return true;
+ // }
+ // catch ( Exception e )
+ // {
+ // e.printStackTrace();
+ // return false;
+ // }
+ // }
+}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfBlockListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfBlockListener.java
index 14a8dc11..84d4083e 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfBlockListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfBlockListener.java
@@ -115,7 +115,7 @@ public void onBlockBreak( BlockBreakEvent event )
return;
}
- DwarfPlayer player = plugin.getDataManager().find( event.getPlayer() );
+ DwarfPlayer player = plugin.getDwarfManager().getDwarf( event.getPlayer() );
HashMap skills = player.getSkills();
ItemStack tool = player.getPlayer().getInventory().getItemInMainHand();
@@ -323,7 +323,7 @@ public void onBlockDamage( BlockDamageEvent event )
return;
Player player = event.getPlayer();
- DwarfPlayer dCPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( player );
HashMap skills = dCPlayer.getSkills();
// Effect Specific information
@@ -400,7 +400,7 @@ else if ( event.getBlock().getType() == Material.CACTUS )
{
if ( b.getX() == x && b.getY() == y && b.getZ() == z )
{
- DwarfPlayer dCPlayer = plugin.getDataManager().find( crops.get( b ) );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( crops.get( b ) );
for ( DwarfEffect effect : plugin.getEffectRegistry().getEffectsOfType( DwarfEffectType.BLOCKDROP ) ) {
if ( effect.checkInitiator( Material.CACTUS ) ) {
int amount = plugin.getUtil().randomAmount(effect.getEffectAmount(dCPlayer));
@@ -470,7 +470,7 @@ else if ( event.getBlock().getType() == Material.SUGAR_CANE )
{
if ( b.getX() == x && b.getY() == y && b.getZ() == z )
{
- DwarfPlayer dCPlayer = plugin.getDataManager().find( crops.get( b ) );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( crops.get( b ) );
for ( DwarfEffect e : plugin.getEffectRegistry().getEffectsOfType( DwarfEffectType.BLOCKDROP ) ) {
if (e.checkInitiator( Material.SUGAR_CANE )) {
int amount = plugin.getUtil().randomAmount(e.getEffectAmount(dCPlayer));
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfEntityListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfEntityListener.java
index a6b4eab4..4730cb2f 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfEntityListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfEntityListener.java
@@ -31,8 +31,7 @@
import net.md_5.bungee.api.chat.TextComponent;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
-import com.jessy1237.dwarfcraft.Placeholder;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.events.DwarfEffectEvent;
import com.jessy1237.dwarfcraft.guis.TrainerGUI;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
@@ -41,6 +40,7 @@
import com.jessy1237.dwarfcraft.models.effects.DwarfEffect;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffectType;
import com.jessy1237.dwarfcraft.schedules.InitTrainerGUISchedule;
+import com.jessy1237.dwarfcraft.util.Placeholder;
public class DwarfEntityListener implements Listener
{
@@ -93,18 +93,16 @@ void checkTrainerLeftClick( NPCLeftClickEvent event )
if ( trainer != null )
{
Player player = event.getClicker();
- DwarfPlayer dCPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf(player.getUniqueId());
DwarfSkill skill = dCPlayer.getSkill( trainer.getSkillTrained() );
if (skill == null) return;
-
if ( dCPlayer.getRace().getId().equals( "" ) )
{
- plugin.getOut().sendMessage( event.getClicker(), Messages.chooseARace );
+ plugin.getOut().sendMessage( event.getClicker(), ConfigManager.getMessage("Trainer Messages.Choose Race") );
return;
}
plugin.getOut().printSkillInfo( player, skill, dCPlayer, trainer.getMaxSkill() );
-
}
}
@@ -113,14 +111,14 @@ void checkDwarfTrainer( NPCRightClickEvent event )
{
try
{
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( event.getClicker() );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( event.getClicker() );
DwarfTrainer trainer = plugin.getDataManager().getTrainer( event.getNPC() );
if ( trainer != null )
{
if ( trainer.isWaiting() )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.trainerOccupied ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Occupied") ) ) );
}
else
{
@@ -128,43 +126,43 @@ void checkDwarfTrainer( NPCRightClickEvent event )
if ( skill == null )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.raceDoesNotContainSkill ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Skill Blocked") ) ) );
return;
}
if ( dwarfPlayer.getRace().getId().equals( "" ) )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.chooseARace ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Choose Race") ) ) );
return;
}
if ( dwarfPlayer.getRace().getId().equalsIgnoreCase( "vanilla" ) )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.vanillaRace ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Choose Race") ) ) );
return;
}
if ( skill.getLevel() >= plugin.getConfigManager().getRaceLevelLimit() && !skill.doesSpecialize( dwarfPlayer.getRace() ) )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.raceDoesNotSpecialize.replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Non-Racial Skill").replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) ) ) );
return;
}
if ( skill.getLevel() >= plugin.getConfigManager().getMaxSkillLevel() )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.maxSkillLevel.replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Max Skill Level").replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) ) ) );
return;
}
if ( skill.getLevel() >= trainer.getMaxSkill() )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.trainerMaxLevel ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Max Level") ) ) );
return;
}
if ( skill.getLevel() < trainer.getMinSkill() )
{
- dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', Messages.trainerLevelTooHigh ) ) );
+ dwarfPlayer.getPlayer().spigot().sendMessage( ChatMessageType.ACTION_BAR, new TextComponent( ChatColor.translateAlternateColorCodes( '&', ConfigManager.getMessage("Trainer Messages.Level Too High") ) ) );
return;
}
@@ -225,7 +223,7 @@ public void onEntityAttack( EntityDamageByEntityEvent event )
double hp = victim.getHealth();
if ( damager instanceof Player )
{
- attacker = plugin.getDataManager().find( ( Player ) damager );
+ attacker = plugin.getDwarfManager().getDwarf( ( Player ) damager );
assert ( event.getDamager() == attacker.getPlayer() );
}
else
@@ -328,7 +326,7 @@ public void onEntityDamageByProjectile( EntityDamageByEntityEvent event )
if ( attacker instanceof Player )
{
- attackDwarf = plugin.getDataManager().find( ( Player ) attacker );
+ attackDwarf = plugin.getDwarfManager().getDwarf( ( Player ) attacker );
for ( DwarfSkill skill : attackDwarf.getSkills().values() )
{
for ( DwarfEffect effect : skill.getEffects() )
@@ -365,7 +363,7 @@ public void onEntityDamagedByEnvirons( EntityDamageEvent event )
if ( ( event.getEntity() instanceof Player ) )
{
- DwarfPlayer dCPlayer = plugin.getDataManager().find( ( Player ) event.getEntity() );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( ( Player ) event.getEntity() );
double damage = event.getDamage();
final double origDamage = event.getDamage();
for ( DwarfSkill s : dCPlayer.getSkills().values() )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfInventoryListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfInventoryListener.java
index f8b8b5f6..70e2797f 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfInventoryListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfInventoryListener.java
@@ -50,7 +50,7 @@ public DwarfInventoryListener( DwarfCraft plugin )
public void onFurnaceExtractEvent( FurnaceExtractEvent event )
{
Player player = event.getPlayer();
- DwarfPlayer dCPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( player );
ItemStack result = new ItemStack( event.getItemType(), event.getItemAmount() );
if ( !plugin.getUtil().isWorldAllowed( player.getWorld() ) )
@@ -108,7 +108,7 @@ public void onFurnaceExtractEvent( FurnaceExtractEvent event )
public void onCraftItem( CraftItemEvent event )
{
HumanEntity player = event.getWhoClicked();
- DwarfPlayer dCPlayer = plugin.getDataManager().find( ( Player ) event.getWhoClicked() );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( ( Player ) event.getWhoClicked() );
ItemStack result = event.getRecipe().getResult();
boolean isShiftClick = event.getClick().isShiftClick();
@@ -266,7 +266,7 @@ public void onInventoryClickEvent( InventoryClickEvent event )
// This code is kinda ugly but still needs to happen this way as far as im aware.
if ( event.getSlotType() == SlotType.CRAFTING && event.getSlot() < 3 && event.getSlot() >= 0 && event.getClickedInventory().getHolder() instanceof BrewingStand )
{
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( ( Player ) event.getWhoClicked() );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( ( Player ) event.getWhoClicked() );
HashMap skills = dwarfPlayer.getSkills();
ItemStack item = event.getCurrentItem();
final int amount = item.getAmount();
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfListener.java
index ff6ecda6..dc4ed5a8 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfListener.java
@@ -10,6 +10,9 @@
package com.jessy1237.dwarfcraft.listeners;
+import java.util.ArrayList;
+
+import org.bukkit.ChatColor;
import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.SoundCategory;
@@ -18,12 +21,12 @@
import org.bukkit.event.Listener;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
-import com.jessy1237.dwarfcraft.Placeholder;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.events.DwarfEffectEvent;
import com.jessy1237.dwarfcraft.events.DwarfLevelUpEvent;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
+import com.jessy1237.dwarfcraft.util.Placeholder;
public class DwarfListener implements Listener
{
@@ -52,12 +55,49 @@ public void onDwarfLevelUp( DwarfLevelUpEvent event )
if (suffix != null)
name = name.concat( suffix );
- String message = Messages.announcementMessage.replaceAll( Placeholder.PLAYER_NAME.value(), name ).replaceAll( Placeholder.SKILL_NAME.value(), skill.getDisplayName() ).replaceAll( Placeholder.SKILL_LEVEL.value(), String.valueOf(skill.getLevel()) ).replaceAll( Placeholder.LEVEL.value(), String.valueOf(skill.getLevel()) );
+ String message = ConfigManager.getMessage("Announcement Message").replaceAll( Placeholder.PLAYER_NAME.value(), name ).replaceAll( Placeholder.SKILL_NAME.value(), skill.getDisplayName() ).replaceAll( Placeholder.SKILL_LEVEL.value(), String.valueOf(skill.getLevel()) ).replaceAll( Placeholder.LEVEL.value(), String.valueOf(skill.getLevel()) );
player.getPlayer().playSound( player.getPlayer().getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.MASTER, 0.5f, 1.0f );
plugin.getServer().broadcastMessage( message );
player.getPlayer().getWorld().spawnParticle( Particle.ENCHANTMENT_TABLE, player.getPlayer().getLocation(), 100 );
}
+
+ // Run level up commands from config
+ if ( plugin.getConfigManager().getSkillLevelCommands().size() > 0 )
+ {
+ ArrayList commands;
+
+ if ( !plugin.getSkillManager().getAllSkills().containsValue( skill ) )
+ {
+ return;
+ }
+
+ if ( player.isMax() )
+ {
+ commands = plugin.getConfigManager().getSkillMaxCapeCommands();
+ }
+ else if ( skill.getLevel() >= skill.getMaxLevel( player ) )
+ {
+ commands = plugin.getConfigManager().getSkillMasteryCommands();
+ }
+ else
+ {
+ commands = plugin.getConfigManager().getSkillLevelCommands();
+ }
+
+ for ( String command : commands )
+ {
+ String playerPosition = player.getPlayer().getLocation().getX() + " " + player.getPlayer().getLocation().getY() + " " + player.getPlayer().getLocation().getZ();
+
+ command = command.replaceAll( "", playerPosition ).replaceAll( "", player.getPlayer().getWorld().getName() );
+ command = skill.description( command, player );
+ command = ChatColor.translateAlternateColorCodes( '&', command );
+
+ plugin.getServer().dispatchCommand( plugin.getServer().getConsoleSender(), command );
+ }
+
+ commands.clear();
+ }
}
@EventHandler
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfPlayerListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfPlayerListener.java
index 5f01bcc6..d400e0d8 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfPlayerListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfPlayerListener.java
@@ -28,15 +28,15 @@
import org.bukkit.inventory.ItemStack;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
-import com.jessy1237.dwarfcraft.Util;
import com.jessy1237.dwarfcraft.commands.CommandTutorial;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.events.DwarfEffectEvent;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
import com.jessy1237.dwarfcraft.models.DwarfTrainer;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffect;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffectType;
+import com.jessy1237.dwarfcraft.util.Util;
public class DwarfPlayerListener implements Listener
{
@@ -53,11 +53,17 @@ public DwarfPlayerListener( DwarfCraft plugin)
@EventHandler( priority = EventPriority.NORMAL )
public void onPlayerJoin( PlayerJoinEvent event )
{
- plugin.getUtil().setPlayerPrefix( event.getPlayer() );
+ //plugin.getUtil().setPlayerPrefix( event.getPlayer() ); //TODO
+ if ( plugin.getDwarfManager().getDwarf(event.getPlayer()) == null ) {
+ plugin.getDwarfManager().createDwarf(event.getPlayer());
+ }
+
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf(event.getPlayer());
+ dwarfPlayer.setPlayer(event.getPlayer());
+ plugin.getDwarfManager().addDwarf(event.getPlayer().getUniqueId(), dwarfPlayer);
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( event.getPlayer() );
if ( dwarfPlayer.getRace().getId().isEmpty() )
- plugin.getOut().sendMessage( dwarfPlayer.getPlayer(), Messages.chooseARace );
+ plugin.getOut().sendMessage( dwarfPlayer.getPlayer(), ConfigManager.getMessage("Trainer Messages.Choose Race") );
if ( plugin.getConfigManager().sendGreeting )
plugin.getOut().welcome( dwarfPlayer );
@@ -65,7 +71,7 @@ public void onPlayerJoin( PlayerJoinEvent event )
// Spawn tutorial book on first join
if ( !event.getPlayer().hasPlayedBefore() && plugin.getConfigManager().spawnTutorialBook )
{
- DwarfPlayer dcPlayer = plugin.getDataManager().find( event.getPlayer() );
+ DwarfPlayer dcPlayer = plugin.getDwarfManager().getDwarf( event.getPlayer() );
// Add Written Book to Players Inventory
CommandTutorial commandTutorial = new CommandTutorial( "tutorial", plugin );
@@ -75,7 +81,7 @@ public void onPlayerJoin( PlayerJoinEvent event )
plugin.getLogger().log( Level.INFO, event.getPlayer().getDisplayName() + " is new to the server! Spawning DwarfCraft Tutorial Book..." );
}
- if ( dwarfPlayer.isDwarfCraftDev() ) {
+ if ( dwarfPlayer.isDeveloper() ) {
plugin.getServer().getScheduler().runTaskLater( plugin, new AuraSpawnTask( plugin ), 10 );
}
}
@@ -92,7 +98,7 @@ public void onPlayerInteract( PlayerInteractEvent event )
return;
Player player = event.getPlayer();
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player );
HashMap skills = dwarfPlayer.getSkills();
// ItemStack item = player.getItemInHand(); Does this work the same as
@@ -172,7 +178,7 @@ public void onPlayerItemConsume( PlayerItemConsumeEvent event )
Player player = event.getPlayer();
ItemStack item = event.getItem();
Material mat = item.getType();
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player );
HashMap skills = dwarfPlayer.getSkills();
int lvl = Util.FoodLevel.getLvl( mat );
@@ -216,7 +222,7 @@ public void onPlayerShearEntityEvent( PlayerShearEntityEvent event )
Player player = event.getPlayer();
Entity entity = event.getEntity();
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player );
HashMap skills = dwarfPlayer.getSkills();
boolean changed = false;
@@ -320,7 +326,7 @@ public void onPlayerFish( PlayerFishEvent event )
if ( event.getState() == State.CAUGHT_FISH )
{
- DwarfPlayer player = plugin.getDataManager().find( event.getPlayer() );
+ DwarfPlayer player = plugin.getDwarfManager().getDwarf( event.getPlayer() );
ItemStack item = ( ( Item ) event.getCaught() ).getItemStack();
Location loc = player.getPlayer().getLocation();
diff --git a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfVehicleListener.java b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfVehicleListener.java
index 8b42e484..28d60a77 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfVehicleListener.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/listeners/DwarfVehicleListener.java
@@ -63,7 +63,7 @@ public void onVehicleDestroy( VehicleDestroyEvent event )
{
Player player = ( Player ) event.getAttacker();
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player );
Location loc = event.getVehicle().getLocation();
for ( DwarfSkill skill : dwarfPlayer.getSkills().values() )
@@ -141,7 +141,7 @@ public void onVehicleMove( VehicleMoveEvent event )
if ( !( passenger instanceof Player ) || !( event.getVehicle() instanceof Boat ) )
return;
- DwarfPlayer dCPlayer = plugin.getDataManager().find( (Player) passenger );
+ DwarfPlayer dCPlayer = plugin.getDwarfManager().getDwarf( (Player) passenger );
double effectAmount = 1.0;
DwarfEffect effect = null;
for ( DwarfSkill s : dCPlayer.getSkills().values() )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfPlayer.java b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfPlayer.java
index 7f9354d2..654a76a1 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfPlayer.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfPlayer.java
@@ -17,45 +17,64 @@
import java.util.UUID;
import java.util.logging.Level;
-import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Placeholder;
+import com.jessy1237.dwarfcraft.util.Placeholder;
public class DwarfPlayer
{
private final DwarfCraft plugin;
- private HashMap skills;
private Player player;
- private DwarfRace race;
- private boolean raceMaster;
+ private UUID uuid;
+ @Expose private HashMap skills;
+ @Expose @SerializedName("race") private String race_id;
+ @Expose private boolean raceMaster;
- public void setPlayer( Player player )
+ public DwarfPlayer( final DwarfCraft plugin, UUID uuid )
{
- this.player = player;
+ this.plugin = plugin;
+ this.uuid = uuid;
+ this.player = null;
+ this.race_id = plugin.getRaceManager().getDefaultRace().getId();
+ this.skills = new HashMap<>();
+ this.raceMaster = false;
}
- public DwarfPlayer( final DwarfCraft plugin, Player player )
+ public DwarfPlayer( final DwarfCraft plugin, UUID uuid, DwarfRace race, boolean raceMaster )
{
this.plugin = plugin;
- this.player = player;
- this.race = plugin.getRaceManager().getDefaultRace();
- this.skills = plugin.getSkillManager().getAllSkills();
- this.raceMaster = false;
+ this.uuid = uuid;
+ this.player = null;
+ this.race_id = race.getId();
+ this.skills = new HashMap<>();
+ this.raceMaster = raceMaster;
}
public DwarfPlayer( final DwarfCraft plugin, Player player, DwarfRace race, boolean raceMaster )
{
this.plugin = plugin;
+ this.uuid = player.getUniqueId();
this.player = player;
- this.race = race;
- this.skills = plugin.getSkillManager().getAllSkills();
+ this.race_id = race.getId();
+ this.skills = new HashMap<>();
this.raceMaster = raceMaster;
}
+ public DwarfPlayer( final DwarfCraft plugin, Player player )
+ {
+ this.plugin = plugin;
+ this.uuid = player.getUniqueId();
+ this.player = player;
+ this.race_id = plugin.getRaceManager().getDefaultRace().getId();
+ this.skills = new HashMap<>();
+ this.raceMaster = false;
+ }
+
public List> calculateTrainingCost( DwarfSkill skill )
{
int highSkills = countHighSkills();
@@ -161,26 +180,26 @@ public int getDwarfLevel()
return playerLevel;
}
+ public UUID getUuid()
+ {
+ return uuid;
+ }
+
public Player getPlayer()
{
+ if (!hasPlayer()) player = plugin.getServer().getPlayer(uuid);
return player;
}
- /**
- * Gets a dwarf's skill from an effect
- *
- * @param effect (does not have to be this dwarf's effect, only used for ID#)
- * @return DwarfSkill or null if none found
- */
-// public DwarfSkill getSkill( DwarfEffect effect )
-// {
-// for ( DwarfSkill skill : skills.values() )
-// {
-// if ( skill.getId() == effect.getId() / 10 )
-// return skill;
-// }
-// return null;
-// }
+ public void setPlayer( Player player )
+ {
+ this.player = player;
+ }
+
+ public boolean hasPlayer()
+ {
+ return !(player == null);
+ }
/**
* Gets a dwarf's skill by skill_id
@@ -225,7 +244,12 @@ public int level()
*/
public void setSkills( HashMap skills )
{
- this.skills = skills;
+ this.skills.putAll(skills);
+ }
+
+ public void setSkill( DwarfSkill skill )
+ {
+ this.skills.put( skill.getId(), skill);
}
public int getSkillLevel( String skill_id )
@@ -238,11 +262,10 @@ public int getSkillLevel( String skill_id )
public void changeRace( String race )
{
- final DwarfRace oldRace = this.race;
- this.race = plugin.getRaceManager().getRace( race );
- DwarfSkill[] dCSkills = new DwarfSkill[skills.size()];
+ final DwarfRace oldRace = plugin.getRaceManager().getRace( this.race_id );
+ if (!plugin.getRaceManager().raceExists( race.toLowerCase() )) return;
+ this.race_id = race.toLowerCase();
- int I = 0;
// Resets the players skills
for ( DwarfSkill skill : skills.values() )
{
@@ -269,7 +292,7 @@ public void changeRace( String race )
}
else
{
- if ( !plugin.getSkillManager().getSkill( skill.getId() ).getRaces().containsValue( race ) && skill.getLevel() > plugin.getConfigManager().getRaceLevelLimit() )
+ if ( !plugin.getSkillManager().getSkill( skill.getId() ).getRaces().containsValue( plugin.getRaceManager().getRace( race ) ) && skill.getLevel() > plugin.getConfigManager().getRaceLevelLimit() )
{
skill.setLevel( plugin.getConfigManager().getRaceLevelLimit() );
skill.setDeposit( 0, 1 );
@@ -278,8 +301,7 @@ public void changeRace( String race )
}
}
}
- dCSkills[I] = skill;
- I++;
+ skills.put(skill.getId(), skill);
}
// Resets the players prefix
@@ -288,20 +310,20 @@ public void changeRace( String race )
if ( plugin.getChat().getPlayerPrefix( getPlayer() ).contains( plugin.getUtil().getPlayerPrefix( oldRace.getName() ) ) )
plugin.getChat().setPlayerPrefix( getPlayer(), plugin.getChat().getPlayerPrefix( getPlayer() ).replace( plugin.getUtil().getPlayerPrefix( oldRace.getName() ), plugin.getUtil().getPlayerPrefix( this ) ) );
- plugin.getDataManager().saveDwarfData( this, dCSkills );
+ plugin.getDwarfManager().saveDwarf( this );
}
public DwarfRace getRace()
{
- return race;
+ return plugin.getRaceManager().getRace( this.race_id );
}
public void setRace( String race )
{
- if (race.isEmpty() )
- this.race = new DwarfRace("", "");
+ if ( plugin.getRaceManager().raceExists( race.toLowerCase() ) )
+ this.race_id = race.toLowerCase();
else
- this.race = plugin.getRaceManager().getRace( race );
+ this.race_id = "";
}
public boolean isRaceMaster()
@@ -328,53 +350,14 @@ public boolean isMax()
return isMax;
}
- public boolean isDwarfCraftDev()
+ public boolean isDeveloper()
{
ArrayList uuids = new ArrayList<>();
uuids.add( UUID.fromString( "83a00245-b186-4cda-a11d-c0c5fff4da1f" ) );
uuids.add( UUID.fromString( "193fef41-cfe9-4d35-b1f5-40fa23410e93" ) );
- return uuids.contains( this.player.getUniqueId() );
+ return uuids.contains( this.uuid );
}
- public void runLevelUpCommands( DwarfSkill skill )
- {
- if ( plugin.getConfigManager().getSkillLevelCommands().size() > 0 )
- {
- ArrayList commands;
-
- if ( !plugin.getSkillManager().getAllSkills().containsValue( skill ) )
- {
- return;
- }
-
- if ( isMax() )
- {
- commands = plugin.getConfigManager().getSkillMaxCapeCommands();
- }
- else if ( skill.getLevel() >= skill.getMaxLevel( this ) )
- {
- commands = plugin.getConfigManager().getSkillMasteryCommands();
- }
- else
- {
- commands = plugin.getConfigManager().getSkillLevelCommands();
- }
-
- for ( String command : commands )
- {
- String playerPosition = player.getLocation().getX() + " " + player.getLocation().getY() + " " + player.getLocation().getZ();
-
- command = command.replaceAll( "", playerPosition ).replaceAll( "", player.getWorld().getName() );
- command = skill.description( command, this );
- command = ChatColor.translateAlternateColorCodes( '&', command );
-
- plugin.getServer().dispatchCommand( plugin.getServer().getConsoleSender(), command );
- }
-
- commands.clear();
- }
- }
-
public String toString( String text )
{
return text.replaceAll( Placeholder.PLAYER_LEVEL.value(), "" + this.getDwarfLevel() ).replaceAll( Placeholder.PLAYER_NAME.value(), this.getPlayer().getDisplayName() )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfSkill.java b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfSkill.java
index 6bf76373..ad8ae4a8 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfSkill.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfSkill.java
@@ -14,10 +14,12 @@
import org.bukkit.Material;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Placeholder;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffect;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffectType;
+import com.jessy1237.dwarfcraft.util.Placeholder;
public class DwarfSkill implements Cloneable
{
@@ -25,11 +27,13 @@ public class DwarfSkill implements Cloneable
private final String mID;
private final String mName;
private final LinkedHashMap mRaces;
- private int mLevel;
+ @Expose @SerializedName("level") private int mLevel;
private final List mEffects;
private final Material mHeldItem;
private final DwarfTrainingItem mItem1, mItem2, mItem3;
- private int mDeposit1, mDeposit2, mDeposit3;
+ @Expose @SerializedName("deposit1") private int mDeposit1;
+ @Expose @SerializedName("deposit2")private int mDeposit2;
+ @Expose @SerializedName("deposit3") private int mDeposit3;
private final Map replacements = new HashMap<>();
diff --git a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfTrainer.java b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfTrainer.java
index 9c22f7b0..1199c52d 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/models/DwarfTrainer.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/models/DwarfTrainer.java
@@ -23,7 +23,7 @@
import net.md_5.bungee.api.ChatMessageType;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.events.DwarfDepositEvent;
import com.jessy1237.dwarfcraft.events.DwarfLevelUpEvent;
import com.jessy1237.dwarfcraft.guis.TrainerGUI;
@@ -135,9 +135,9 @@ public void depositOne( DwarfPlayer dCPlayer, ItemStack clickedItemStack, Traine
if ( deposited )
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, Messages.depositSuccessful );
- DwarfSkill[] dCSkills = { skill };
- plugin.getDataManager().saveDwarfData( dCPlayer, dCSkills );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Deposit Successful") );
+ dCPlayer.setSkill(skill);
+ plugin.getDwarfManager().saveDwarf( dCPlayer );
player.getWorld().playSound( player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.MASTER, 1.0f, 1.0f );
}
}
@@ -176,9 +176,9 @@ public void depositAll( DwarfPlayer dCPlayer, TrainerGUI trainerGUI )
if ( deposited )
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, Messages.depositSuccessful );
- DwarfSkill[] dCSkills = { skill };
- plugin.getDataManager().saveDwarfData( dCPlayer, dCSkills );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Deposit Successful") );
+ dCPlayer.setSkill(skill);
+ plugin.getDwarfManager().saveDwarf(dCPlayer);
player.getWorld().playSound( player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.MASTER, 1.0f, 1.0f );
}
}
@@ -211,7 +211,6 @@ public boolean trainSkill( DwarfPlayer dCPlayer, TrainerGUI trainerGUI )
e = new DwarfLevelUpEvent( dCPlayer, this, skill );
plugin.getServer().getPluginManager().callEvent( e );
- dCPlayer.runLevelUpCommands( skill );
}
if ( hasMatsOrDeposits[1] || hasMatsOrDeposits[0] )
{
@@ -232,13 +231,12 @@ public boolean trainSkill( DwarfPlayer dCPlayer, TrainerGUI trainerGUI )
}
else
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, Messages.trainingSuccessful );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Training Successful") );
}
}
- DwarfSkill[] dCSkills = new DwarfSkill[1];
- dCSkills[0] = skill;
- plugin.getDataManager().saveDwarfData( dCPlayer, dCSkills );
+ dCPlayer.setSkill(skill);
+ plugin.getDwarfManager().saveDwarf( dCPlayer );
trainerGUI.updateTitle();
player.getWorld().playSound( player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, SoundCategory.MASTER, 1.0f, 1.0f );
}
@@ -383,7 +381,7 @@ private boolean[] depositItem( ItemStack costStack, Set mats, DwarfPla
// Checks if the trainer has already accepted the required item
if ( costStack.getAmount() == 0 )
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, Messages.noMoreItemNeeded.replaceAll( "", plugin.getUtil().getCleanName( costStack ) ) );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.No More Item Needed").replaceAll( "", plugin.getUtil().getCleanName( costStack ) ) );
}
else
{
@@ -414,17 +412,17 @@ else if ( skill.getItem( 3 ).getDwarfItemHolder().getMaterials().contains( costS
else
{
hasMatsOrDeposits[0] = false;
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( Messages.moreItemNeeded, 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( ConfigManager.getMessage("Trainer Messages.More Item Needed"), 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
return hasMatsOrDeposits;
}
if ( costStack.getAmount() == 0 )
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( Messages.noMoreItemNeeded, 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( ConfigManager.getMessage("Trainer Messages.No More Item Needed"), 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
}
else
{
- plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( Messages.moreItemNeeded, 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
+ plugin.getUtil().sendPlayerMessage( player, ChatMessageType.CHAT, plugin.getOut().parseForTrainCosts( ConfigManager.getMessage("Trainer Messages.More Item Needed"), 0, costStack.getAmount(), 0, plugin.getUtil().getCleanName( costStack ) ) );
hasMatsOrDeposits[0] = false;
hasMatsOrDeposits[1] = true;
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/models/effects/DwarfEffect.java b/src/main/java/com/jessy1237/dwarfcraft/models/effects/DwarfEffect.java
index 6391b82b..6877c5f0 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/models/effects/DwarfEffect.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/models/effects/DwarfEffect.java
@@ -15,11 +15,11 @@
import org.bukkit.inventory.Recipe;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Placeholder;
-import com.jessy1237.dwarfcraft.Util;
import com.jessy1237.dwarfcraft.events.DwarfEffectEvent;
import com.jessy1237.dwarfcraft.models.DwarfItemHolder;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
+import com.jessy1237.dwarfcraft.util.Placeholder;
+import com.jessy1237.dwarfcraft.util.Util;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -371,9 +371,9 @@ public String description( DwarfPlayer dCPlayer )
replacements.put(Placeholder.EFFECT_AMOUNT_NORMAL, String.valueOf(this.getNormalLevel() ) );
replacements.put(Placeholder.EFFECT_AMOUNT_FOOD_ORIGINAL, origFoodLevel );
replacements.put(Placeholder.EFFECT_AMOUNT_FOOD, String.format( "%.2f", ( effectAmount / 2.0 ) ) );
- replacements.put(Placeholder.EFFECT_DAMAGE, String.valueOf ( effectAmount * 100 ) );
+ replacements.put(Placeholder.EFFECT_DAMAGE, String.format( "%.2f", effectAmount * 100 ) );
replacements.put(Placeholder.EFFECT_DAMAGE_BOW, String.format( "%.0f", ( effectAmount + 2 ) ) );
- replacements.put(Placeholder.EFFECT_DAMAGE_TAKEN, String.valueOf( effectAmount * 100 ) );
+ replacements.put(Placeholder.EFFECT_DAMAGE_TAKEN, String.format( "%.2f", effectAmount * 100 ) );
replacements.put(Placeholder.EFFECT_AMOUNT_DIG, String.format( "%.0f", +( effectAmount * 100 ) ) );
replacements.put(Placeholder.EFFECT_OUTPUT, ChatColor.DARK_GREEN + plugin.getUtil().getCleanName( getOutput(dCPlayer) ) );
replacements.put(Placeholder.EFFECT_TOOL_TYPE, toolType());
diff --git a/src/main/java/com/jessy1237/dwarfcraft/schedules/TrainSkillSchedule.java b/src/main/java/com/jessy1237/dwarfcraft/schedules/TrainSkillSchedule.java
index 6686c7c1..c001cce8 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/schedules/TrainSkillSchedule.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/schedules/TrainSkillSchedule.java
@@ -18,12 +18,12 @@
import net.md_5.bungee.api.ChatMessageType;
import com.jessy1237.dwarfcraft.DwarfCraft;
-import com.jessy1237.dwarfcraft.Messages;
-import com.jessy1237.dwarfcraft.Placeholder;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.guis.TrainerGUI;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
import com.jessy1237.dwarfcraft.models.DwarfTrainer;
+import com.jessy1237.dwarfcraft.util.Placeholder;
public class TrainSkillSchedule implements Runnable
{
@@ -53,7 +53,7 @@ public void run()
// Checks if after a level up if any of the limitting constraints have changed. i.e. player may have levelled up past the trainers ability while the inventory was open
if ( skill.getLevel() >= plugin.getConfigManager().getRaceLevelLimit() && !skill.doesSpecialize( dCPlayer.getRace() ) )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, Messages.raceDoesNotSpecialize.replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Non-Racial Skill").replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) );
dCPlayer.getPlayer().playSound( dCPlayer.getPlayer().getLocation(), Sound.BLOCK_NOTE_BLOCK_SNARE, SoundCategory.MASTER, 0.5f, 1.0f );
dCPlayer.getPlayer().closeInventory();
return;
@@ -61,7 +61,7 @@ public void run()
if ( skill.getLevel() >= plugin.getConfigManager().getMaxSkillLevel() )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, Messages.maxSkillLevel.replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Max Skill Level").replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) );
dCPlayer.getPlayer().playSound(dCPlayer.getPlayer().getLocation(), Sound.BLOCK_NOTE_BLOCK_SNARE, SoundCategory.MASTER, 0.5f, 1.0f );
dCPlayer.getPlayer().closeInventory();
return;
@@ -69,7 +69,7 @@ public void run()
if ( skill.getLevel() >= trainer.getMaxSkill() )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, Messages.trainerMaxLevel );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.CHAT, ConfigManager.getMessage("Trainer Messages.Max Level") );
dCPlayer.getPlayer().playSound(dCPlayer.getPlayer().getLocation(), Sound.BLOCK_NOTE_BLOCK_SNARE, SoundCategory.MASTER, 0.5f, 1.0f );
dCPlayer.getPlayer().closeInventory();
return;
@@ -106,20 +106,20 @@ else if ( clickedItem.getType() == Material.GREEN_DYE && clickedItem.getItemMeta
// Checks if after a level up if any of the limiting constraints have changed. i.e. player may have leveled up past the trainers ability while the inventory was open
if ( skill.getLevel() >= plugin.getConfigManager().getRaceLevelLimit() && !skill.doesSpecialize( dCPlayer.getRace() ) )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, Messages.raceDoesNotSpecialize.replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, ConfigManager.getMessage("Trainer Messages.Non-Racial Skill").replaceAll( Placeholder.RACE_LEVEL_LIMIT.value(), "" + plugin.getConfigManager().getRaceLevelLimit() ) );
dCPlayer.getPlayer().closeInventory();
return;
}
if ( skill.getLevel() >= plugin.getConfigManager().getMaxSkillLevel() )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, Messages.maxSkillLevel.replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, ConfigManager.getMessage("Trainer Messages.Max Skill Level").replaceAll( Placeholder.SKILL_MAX_LEVEL.value(), "" + plugin.getConfigManager().getMaxSkillLevel() ) );
dCPlayer.getPlayer().closeInventory();
return;
}
if ( skill.getLevel() >= trainer.getMaxSkill() )
{
- plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, Messages.trainerMaxLevel );
+ plugin.getUtil().sendPlayerMessage( dCPlayer, ChatMessageType.ACTION_BAR, ConfigManager.getMessage("Trainer Messages.Max Level") );
dCPlayer.getPlayer().closeInventory();
return;
}
diff --git a/src/main/java/com/jessy1237/dwarfcraft/Out.java b/src/main/java/com/jessy1237/dwarfcraft/util/Out.java
similarity index 83%
rename from src/main/java/com/jessy1237/dwarfcraft/Out.java
rename to src/main/java/com/jessy1237/dwarfcraft/util/Out.java
index 3a9189bd..eb2d5aab 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/Out.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/util/Out.java
@@ -8,7 +8,7 @@
* Original Authors: smartaleq, LexManos and RCarretta
*/
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.util;
import java.util.Iterator;
import java.util.List;
@@ -18,6 +18,8 @@
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
+import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.data.ConfigManager;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
import com.jessy1237.dwarfcraft.models.DwarfSkill;
import com.jessy1237.dwarfcraft.models.effects.DwarfEffect;
@@ -31,7 +33,7 @@ public class Out
private final int maxLines = 20;
private final DwarfCraft plugin;
- protected Out( DwarfCraft plugin )
+ public Out( DwarfCraft plugin )
{
this.plugin = plugin;
}
@@ -48,7 +50,7 @@ private String consoleLinePrinter( String line, String prefix )
public void info( CommandSender sender )
{
- sendMessage( sender, Messages.Fixed.GENERALINFO.getMessage(), "&6[&d?&6]" );
+ sendMessage( sender, ConfigManager.getMessage("Info Message"), "&6[&d?&6]" );
}
/**
@@ -117,29 +119,29 @@ private String playerLinePrinter( Player player, String message, String prefix )
public void printSkillInfo(CommandSender sender, DwarfSkill skill, DwarfPlayer dCPlayer, int maxTrainLevel )
{
// general line
- sendMessage( sender, skill.description( Messages.skillInfoHeader, dCPlayer ) );
+ sendMessage( sender, skill.description( ConfigManager.getMessage("Skill Info.Header"), dCPlayer ) );
// effects lines
for ( DwarfEffect effect : skill.getEffects() )
{
if ( effect != null )
- sendMessage( sender, effect.description( dCPlayer ), Messages.skillInfoEffectIDPrefix );
+ sendMessage( sender, effect.description( dCPlayer ), "&6[&5*&6] " );
}
// training lines
if ( skill.getLevel() >= skill.getMaxLevel(dCPlayer) )
{
- sendMessage( sender, Messages.skillInfoMaxSkillLevel );
+ sendMessage( sender, ConfigManager.getMessage("Skill Info.Max Skill Level") );
return;
}
if ( skill.getLevel() >= maxTrainLevel )
{
- sendMessage( sender, Messages.skillInfoAtTrainerLevel );
+ sendMessage( sender, ConfigManager.getMessage("Skill Info.Max Trainer Level") );
return;
}
- sendMessage( sender, skill.description( Messages.skillInfoTrainCostHeader ) );
+ sendMessage( sender, skill.description( ConfigManager.getMessage("Skill Info.Train Cost Header") ) );
List> costsTurnins = dCPlayer.calculateTrainingCost( skill );
List remaining = costsTurnins.get( 0 );
List total = costsTurnins.get( 1 );
@@ -151,7 +153,7 @@ public void printSkillInfo(CommandSender sender, DwarfSkill skill, DwarfPlayer d
{
int totalCost = t.getAmount();
int deposited = t.getAmount() - r.getAmount();
- sendMessage( sender, parseForTrainCosts( Messages.skillInfoTrainCost, deposited, r.getAmount(), totalCost, plugin.getUtil().getCleanName( skill.getItem( i+1 ).getDwarfItemHolder() ) ) );
+ sendMessage( sender, parseForTrainCosts( ConfigManager.getMessage("Skill Info.Train Cost"), deposited, r.getAmount(), totalCost, plugin.getUtil().getCleanName( skill.getItem( i+1 ).getDwarfItemHolder() ) ) );
}
}
@@ -162,11 +164,11 @@ public void printSkillSheet( DwarfPlayer dCPlayer, CommandSender sender, boolean
String message1;
String message2 = "";
- message1 = parseSkillSheet( Messages.skillSheetHeader, dCPlayer, null );
+ message1 = parseSkillSheet( ConfigManager.getMessage("Skillsheet.Header"), dCPlayer, null );
sendMessage( sender, message1, "" );
boolean odd = true;
- String untrainedSkills = Messages.skillSheetUntrainedSkillHeader;
+ String untrainedSkills = ConfigManager.getMessage("Skillsheet.Untrained Skill Header");
String seperator = ChatColor.GOLD + " | ";
Iterator iter = dCPlayer.getSkills().values().iterator();
while (iter.hasNext())
@@ -175,14 +177,14 @@ public void printSkillSheet( DwarfPlayer dCPlayer, CommandSender sender, boolean
if ( s.getLevel() == 0 )
{
if (!iter.hasNext()) seperator = "";
- untrainedSkills = untrainedSkills.concat( parseSkillSheet( Messages.skillSheetUntrainedSkillLine, dCPlayer, s ) ).concat(seperator);
+ untrainedSkills = untrainedSkills.concat( parseSkillSheet( ConfigManager.getMessage("Skillsheet.Untrained Skill Line"), dCPlayer, s ) ).concat(seperator);
continue;
}
odd = !odd;
// the goal here is for every skill sheet line to be 60 characters
// long.
// each skill should take 30 characters - no more, no less
- String interim = parseSkillSheet( Messages.skillSheetSkillLine, dCPlayer, s );
+ String interim = parseSkillSheet( ConfigManager.getMessage("Skillsheet.Skill Line"), dCPlayer, s );
if ( !odd )
{
@@ -304,7 +306,7 @@ public void welcome( DwarfPlayer dCPlayer )
try
{
if ( plugin.getConfigManager().sendGreeting )
- sendBroadcast( dCPlayer.toString( Messages.welcome ), Messages.welcomePrefix );
+ sendBroadcast( dCPlayer.toString( ConfigManager.getMessage("Welcome") ), ConfigManager.getMessage("Welcome prefix") );
}
catch ( Exception e )
{
@@ -314,32 +316,32 @@ public void welcome( DwarfPlayer dCPlayer )
public void race( CommandSender sender, Player player )
{
- sendMessage( sender, parseRace( Messages.raceCheck, plugin.getDataManager().find( player ), null ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Race Info"), plugin.getDwarfManager().getDwarf( player ), null ) );
}
public void adminRace( CommandSender sender, DwarfPlayer player )
{
- sendMessage( sender, parseRace( Messages.adminRaceCheck, player, null ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Admin Race Info"), player, null ) );
}
public void alreadyRace( CommandSender sender, DwarfPlayer dCPlayer, String newRace )
{
- sendMessage( sender, parseRace( Messages.alreadyRace, dCPlayer, newRace ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Already Race"), dCPlayer, newRace ) );
}
public void changedRace( CommandSender sender, DwarfPlayer dCPlayer, String newRace )
{
- sendMessage( sender, parseRace( Messages.changedRace, dCPlayer, newRace ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Changed Race"), dCPlayer, newRace ) );
}
public void confirmRace( CommandSender sender, DwarfPlayer dCPlayer, String newRace )
{
- sendMessage( sender, parseRace( Messages.confirmRace, dCPlayer, newRace ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Confirm Race"), dCPlayer, newRace ) );
}
public void dExistRace( CommandSender sender, DwarfPlayer dCPlayer, String newRace )
{
- sendMessage( sender, parseRace( Messages.raceDoesNotExist, dCPlayer, newRace ) );
+ sendMessage( sender, parseRace( ConfigManager.getMessage("Race Messages.Race Failed"), dCPlayer, newRace ) );
}
public String parseRace( String message, DwarfPlayer dCPlayer, String newRace )
diff --git a/src/main/java/com/jessy1237/dwarfcraft/Placeholder.java b/src/main/java/com/jessy1237/dwarfcraft/util/Placeholder.java
similarity index 96%
rename from src/main/java/com/jessy1237/dwarfcraft/Placeholder.java
rename to src/main/java/com/jessy1237/dwarfcraft/util/Placeholder.java
index 688a2991..042af791 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/Placeholder.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/util/Placeholder.java
@@ -8,7 +8,9 @@
* Original Authors: smartaleq, LexManos and RCarretta
*/
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.util;
+
+import com.jessy1237.dwarfcraft.DwarfCraft;
public enum Placeholder
{
diff --git a/src/main/java/com/jessy1237/dwarfcraft/PlaceholderHook.java b/src/main/java/com/jessy1237/dwarfcraft/util/PlaceholderHook.java
similarity index 87%
rename from src/main/java/com/jessy1237/dwarfcraft/PlaceholderHook.java
rename to src/main/java/com/jessy1237/dwarfcraft/util/PlaceholderHook.java
index 75a5dd15..6a01438e 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/PlaceholderHook.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/util/PlaceholderHook.java
@@ -1,15 +1,16 @@
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.util;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
+import static com.jessy1237.dwarfcraft.util.Placeholder.generalParse;
+
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
+import com.jessy1237.dwarfcraft.DwarfCraft;
import com.jessy1237.dwarfcraft.models.DwarfPlayer;
-import static com.jessy1237.dwarfcraft.Placeholder.generalParse;
-
public class PlaceholderHook extends PlaceholderExpansion
{
@Override
@@ -49,7 +50,7 @@ public String onPlaceholderRequest(Player player, @NotNull String identifier )
if (plugin == null) return null;
String out = generalParse( "<" + identifier + ">", plugin );
- DwarfPlayer dwarfPlayer = plugin.getDataManager().find( player );
+ DwarfPlayer dwarfPlayer = plugin.getDwarfManager().getDwarf( player );
if ( dwarfPlayer != null )
out = dwarfPlayer.toString(out);
diff --git a/src/main/java/com/jessy1237/dwarfcraft/Util.java b/src/main/java/com/jessy1237/dwarfcraft/util/Util.java
similarity index 87%
rename from src/main/java/com/jessy1237/dwarfcraft/Util.java
rename to src/main/java/com/jessy1237/dwarfcraft/util/Util.java
index b0f36ad2..1eb7ae45 100644
--- a/src/main/java/com/jessy1237/dwarfcraft/Util.java
+++ b/src/main/java/com/jessy1237/dwarfcraft/util/Util.java
@@ -8,7 +8,7 @@
* Original Authors: smartaleq, LexManos and RCarretta
*/
-package com.jessy1237.dwarfcraft;
+package com.jessy1237.dwarfcraft.util;
import java.util.Arrays;
import java.util.HashSet;
@@ -26,7 +26,8 @@
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
-import com.jessy1237.dwarfcraft.data.DataManager;
+import com.jessy1237.dwarfcraft.DwarfCraft;
+import com.jessy1237.dwarfcraft.legacy.DataManager;
import com.jessy1237.dwarfcraft.models.*;
import com.google.gson.JsonObject;
@@ -60,7 +61,7 @@ public void debugLog( int debugThreshold, Level logLevel, String message )
{
String prefix = ChatColor.YELLOW + "[" + plugin.getName() + "] [DEBUG] ";
String suffix = ChatColor.ITALIC + " (set to " + debugThreshold + " to silence.)";
- if ( DwarfCraft.debugMessagesThreshold < debugThreshold ) {
+ if ( plugin.debugMessagesThreshold < debugThreshold ) {
ChatColor color = chatColorForLogLevel(logLevel);
plugin.getServer().getConsoleSender().sendMessage(prefix + color + message + suffix);
}
@@ -315,55 +316,56 @@ public void removePlayerPrefixes()
}
}
- public void setPlayerPrefix( Player player )
- {
- DataManager dm = plugin.getDataManager();
- DwarfPlayer data = dm.find( player );
+ //TODO: Player prefixes
+ // public void setPlayerPrefix( Player player )
+ // {
+ // DataManager dm = plugin.getDataManager();
+ // DwarfPlayer data = dm.find( player );
- if ( data == null )
- data = dm.createDwarf( player );
- if ( !dm.checkDwarfData( data ) )
- {
- dm.createDwarfData( data );
- }
+ // if ( data == null )
+ // data = dm.createDwarf( player );
+ // if ( !dm.checkDwarfData( data ) )
+ // {
+ // dm.createDwarfData( data );
+ // }
- if ( plugin.isChatEnabled() )
- {
- String prefix = plugin.getChat().getPlayerPrefix( player );
- if ( plugin.getConfigManager().prefix )
- {
- if ( prefix != null )
- {
- if ( !prefix.equals( "" ) )
- {
- while ( plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
- {
- prefix = plugin.getChat().getPlayerPrefix( player );
- prefix = prefix.replace( plugin.getUtil().getPlayerPrefix( data ) + " ", "" );
- plugin.getChat().setPlayerPrefix( player, prefix );
- }
- }
+ // if ( plugin.isChatEnabled() )
+ // {
+ // String prefix = plugin.getChat().getPlayerPrefix( player );
+ // if ( plugin.getConfigManager().prefix )
+ // {
+ // if ( prefix != null )
+ // {
+ // if ( !prefix.equals( "" ) )
+ // {
+ // while ( plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
+ // {
+ // prefix = plugin.getChat().getPlayerPrefix( player );
+ // prefix = prefix.replace( plugin.getUtil().getPlayerPrefix( data ) + " ", "" );
+ // plugin.getChat().setPlayerPrefix( player, prefix );
+ // }
+ // }
- if ( plugin.getChat() != null && !plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
- {
- plugin.getChat().setPlayerPrefix( player, plugin.getUtil().getPlayerPrefix( data ) + " " + plugin.getChat().getPlayerPrefix( player ) );
- }
- }
- }
- else
- {
+ // if ( plugin.getChat() != null && !plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
+ // {
+ // plugin.getChat().setPlayerPrefix( player, plugin.getUtil().getPlayerPrefix( data ) + " " + plugin.getChat().getPlayerPrefix( player ) );
+ // }
+ // }
+ // }
+ // else
+ // {
- if ( prefix != null )
- if ( !prefix.equals( "" ) )
- while ( plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
- {
- prefix = plugin.getChat().getPlayerPrefix( player );
- prefix = prefix.replace( plugin.getUtil().getPlayerPrefix( data ) + " ", "" );
- plugin.getChat().setPlayerPrefix( player, prefix );
- }
- }
- }
- }
+ // if ( prefix != null )
+ // if ( !prefix.equals( "" ) )
+ // while ( plugin.getChat().getPlayerPrefix( player ).contains( plugin.getUtil().getPlayerPrefix( data ) ) )
+ // {
+ // prefix = plugin.getChat().getPlayerPrefix( player );
+ // prefix = prefix.replace( plugin.getUtil().getPlayerPrefix( data ) + " ", "" );
+ // plugin.getChat().setPlayerPrefix( player, prefix );
+ // }
+ // }
+ // }
+ // }
/**
* Gets the clean name of the Entity.
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index c80b52d9..ff25a8fe 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,19 +1,7 @@
#This is the default configuration setup for DwarfCraft
-#Select the Database type to use. Currently only supports "sqlite" or "MySQL"
-Database Type: "sqlite"
-
-MySQL Hostname: "127.0.0.1"
-MySQL Port: 3306
-MySQL Database: "dwarfcraft"
-MySQL Username: "root"
-MySQL Password: ""
-
-#Manually set the DwarfCraft database to another database file, if you are using multiple sqlite plugins this should work.
-Database File Name: "dwarfcraft.db"
-
#Affects debug level on restart
-Debug Level: 7
+Debug Level: 10
#If we should greet every player as they come online
Send Login Greet: true
@@ -54,7 +42,7 @@ Announce Level Up: true
#This is the interval of levels that the announcements go off for when a player successfully levels up a skill. i.e. If its set to 5 then at every 5 levels an announcement will go out.
Announcement Interval: 5
-#This decides how to sort the DwarfTrainers for the "/dc listtrainers" command. If true it will sort by Unique IDs otherwise if false it will sort by Name
+#This decides how to sort the DwarfTrainers for the "/dc list" command. If true it will sort by Unique IDs otherwise if false it will sort by Name
Sort DwarfTrainers by Unique ID: true
#This decides the race change penalty.
diff --git a/src/main/resources/data/dwarfcraft/locale/en_US.yml b/src/main/resources/data/locale/en_US.yml
similarity index 93%
rename from src/main/resources/data/dwarfcraft/locale/en_US.yml
rename to src/main/resources/data/locale/en_US.yml
index 8bb62a5a..99f7843b 100644
--- a/src/main/resources/data/dwarfcraft/locale/en_US.yml
+++ b/src/main/resources/data/locale/en_US.yml
@@ -10,6 +10,7 @@
Welcome prefix: "&6[DwarfCraft] "
Welcome: "&fWelcome, &9 &6"
Announcement Message: " has just leveled to level !"
+Info Message: "&dWelcome to DwarfCraft. You are a player with a set of skills that let you do certain tasks better. For more information see &4/dc tutorial&d. Original Authors: smartaleq, LexManos and RCarretta Authors: Jessy1237"
# ################################################################# #
# Messages used when displaying information for /dc skillsheet #
@@ -66,12 +67,9 @@ Trainer Messages:
# ################################################################# #
Effect Descriptions:
General: "Effect Block Trigger: Block Output: . Effect value ranges from %.2 - %.2 for levels 0 to 30. Non specialists have the effect %.2 , as if they were level . Tools affected: ."
- Explosion Damage (more): "&6You take % more &6damage from explosions"
- Explosion Damage (less): "&6You take % less &6damage from explosions"
- Fire Damage (more): "&6You take % more &6damage from fire"
- Fire Damage (less): "&6You take % less &6damage from fire"
- Fall Damage (more): "&6You take % more &6damage from falling"
- Fall Damage (less): "&6You take % less &6damage from falling"
+ Explosion Damage: "&6You take % &6damage from explosions"
+ Fire Damage: "&6You take % &6damage from fire"
+ Fall Damage: "&6You take % &6damage from falling"
# ################################################################# #
# Tutorial Book Pages #
diff --git a/src/main/resources/data/dwarfcraft/races/dwarf.json b/src/main/resources/data/races/dwarf.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/races/dwarf.json
rename to src/main/resources/data/races/dwarf.json
diff --git a/src/main/resources/data/dwarfcraft/races/elf.json b/src/main/resources/data/races/elf.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/races/elf.json
rename to src/main/resources/data/races/elf.json
diff --git a/src/main/resources/data/dwarfcraft/races/gnome.json b/src/main/resources/data/races/gnome.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/races/gnome.json
rename to src/main/resources/data/races/gnome.json
diff --git a/src/main/resources/data/dwarfcraft/races/human.json b/src/main/resources/data/races/human.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/races/human.json
rename to src/main/resources/data/races/human.json
diff --git a/src/main/resources/data/dwarfcraft/skills/alchemist.json b/src/main/resources/data/skills/alchemist.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/alchemist.json
rename to src/main/resources/data/skills/alchemist.json
diff --git a/src/main/resources/data/dwarfcraft/skills/archer.json b/src/main/resources/data/skills/archer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/archer.json
rename to src/main/resources/data/skills/archer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/axe_swinger.json b/src/main/resources/data/skills/axe_swinger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/axe_swinger.json
rename to src/main/resources/data/skills/axe_swinger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/axe_use.json b/src/main/resources/data/skills/axe_use.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/axe_use.json
rename to src/main/resources/data/skills/axe_use.json
diff --git a/src/main/resources/data/dwarfcraft/skills/baker.json b/src/main/resources/data/skills/baker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/baker.json
rename to src/main/resources/data/skills/baker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/bookmaker.json b/src/main/resources/data/skills/bookmaker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/bookmaker.json
rename to src/main/resources/data/skills/bookmaker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/brickmaker.json b/src/main/resources/data/skills/brickmaker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/brickmaker.json
rename to src/main/resources/data/skills/brickmaker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/butcher.json b/src/main/resources/data/skills/butcher.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/butcher.json
rename to src/main/resources/data/skills/butcher.json
diff --git a/src/main/resources/data/dwarfcraft/skills/carpenter.json b/src/main/resources/data/skills/carpenter.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/carpenter.json
rename to src/main/resources/data/skills/carpenter.json
diff --git a/src/main/resources/data/dwarfcraft/skills/climber.json b/src/main/resources/data/skills/climber.json
similarity index 87%
rename from src/main/resources/data/dwarfcraft/skills/climber.json
rename to src/main/resources/data/skills/climber.json
index 4804a127..f6fcf9b4 100644
--- a/src/main/resources/data/dwarfcraft/skills/climber.json
+++ b/src/main/resources/data/skills/climber.json
@@ -13,7 +13,7 @@
"effects": [
{
"type": "FALLDAMAGE",
- "description": "&6You take % &6damage from falling",
+ "description": "You take % damage from falling",
"origin_material": "AIR",
"output_material": "AIR",
"base": 1.5,
diff --git a/src/main/resources/data/dwarfcraft/skills/demolitionist.json b/src/main/resources/data/skills/demolitionist.json
similarity index 87%
rename from src/main/resources/data/dwarfcraft/skills/demolitionist.json
rename to src/main/resources/data/skills/demolitionist.json
index 2c30c161..4c544a8a 100644
--- a/src/main/resources/data/dwarfcraft/skills/demolitionist.json
+++ b/src/main/resources/data/skills/demolitionist.json
@@ -31,7 +31,7 @@
},
{
"type": "EXPLOSIONDAMAGE",
- "description": "&6You take % &6damage from explosions",
+ "description": "You take % damage from explosions",
"origin_material": "AIR",
"output_material": "AIR",
"base": 1.25,
diff --git a/src/main/resources/data/dwarfcraft/skills/diamond_forger.json b/src/main/resources/data/skills/diamond_forger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/diamond_forger.json
rename to src/main/resources/data/skills/diamond_forger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/dirt_digger.json b/src/main/resources/data/skills/dirt_digger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/dirt_digger.json
rename to src/main/resources/data/skills/dirt_digger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/dungeon_delver.json b/src/main/resources/data/skills/dungeon_delver.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/dungeon_delver.json
rename to src/main/resources/data/skills/dungeon_delver.json
diff --git a/src/main/resources/data/dwarfcraft/skills/excavator.json b/src/main/resources/data/skills/excavator.json
similarity index 91%
rename from src/main/resources/data/dwarfcraft/skills/excavator.json
rename to src/main/resources/data/skills/excavator.json
index 4bf39b32..98a157b4 100644
--- a/src/main/resources/data/dwarfcraft/skills/excavator.json
+++ b/src/main/resources/data/skills/excavator.json
@@ -56,6 +56,7 @@
},
{
"type": "DIGTIME",
+ "description": "% of the time break instantly",
"origin_material": "DEEPSLATE",
"output_material": "AIR",
"base": 0.0,
@@ -76,6 +77,7 @@
},
{
"type": "DIGTIME",
+ "description": "% of the time break instantly",
"origin_material": "COBBLED_DEEPSLATE",
"output_material": "AIR",
"base": 0.0,
diff --git a/src/main/resources/data/dwarfcraft/skills/exotic_armour.json b/src/main/resources/data/skills/exotic_armour.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/exotic_armour.json
rename to src/main/resources/data/skills/exotic_armour.json
diff --git a/src/main/resources/data/dwarfcraft/skills/exotic_farmer.json b/src/main/resources/data/skills/exotic_farmer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/exotic_farmer.json
rename to src/main/resources/data/skills/exotic_farmer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/exotic_miner.json b/src/main/resources/data/skills/exotic_miner.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/exotic_miner.json
rename to src/main/resources/data/skills/exotic_miner.json
diff --git a/src/main/resources/data/dwarfcraft/skills/fire_starter.json b/src/main/resources/data/skills/fire_starter.json
similarity index 88%
rename from src/main/resources/data/dwarfcraft/skills/fire_starter.json
rename to src/main/resources/data/skills/fire_starter.json
index b295cefe..075c3faa 100644
--- a/src/main/resources/data/dwarfcraft/skills/fire_starter.json
+++ b/src/main/resources/data/skills/fire_starter.json
@@ -29,7 +29,7 @@
},
{
"type": "FIREDAMAGE",
- "description": "&6You take % &6damage from fire",
+ "description": "You take % damage from fire",
"origin_material": "AIR",
"output_material": "AIR",
"base": 1.25,
diff --git a/src/main/resources/data/dwarfcraft/skills/fishing.json b/src/main/resources/data/skills/fishing.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/fishing.json
rename to src/main/resources/data/skills/fishing.json
diff --git a/src/main/resources/data/dwarfcraft/skills/fletcher.json b/src/main/resources/data/skills/fletcher.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/fletcher.json
rename to src/main/resources/data/skills/fletcher.json
diff --git a/src/main/resources/data/dwarfcraft/skills/florist.json b/src/main/resources/data/skills/florist.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/florist.json
rename to src/main/resources/data/skills/florist.json
diff --git a/src/main/resources/data/dwarfcraft/skills/glass_worker.json b/src/main/resources/data/skills/glass_worker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/glass_worker.json
rename to src/main/resources/data/skills/glass_worker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/gold_forger.json b/src/main/resources/data/skills/gold_forger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/gold_forger.json
rename to src/main/resources/data/skills/gold_forger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/gravel_digger.json b/src/main/resources/data/skills/gravel_digger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/gravel_digger.json
rename to src/main/resources/data/skills/gravel_digger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/huntsman.json b/src/main/resources/data/skills/huntsman.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/huntsman.json
rename to src/main/resources/data/skills/huntsman.json
diff --git a/src/main/resources/data/dwarfcraft/skills/iron_forger.json b/src/main/resources/data/skills/iron_forger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/iron_forger.json
rename to src/main/resources/data/skills/iron_forger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/lumberjack.json b/src/main/resources/data/skills/lumberjack.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/lumberjack.json
rename to src/main/resources/data/skills/lumberjack.json
diff --git a/src/main/resources/data/dwarfcraft/skills/mason.json b/src/main/resources/data/skills/mason.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/mason.json
rename to src/main/resources/data/skills/mason.json
diff --git a/src/main/resources/data/dwarfcraft/skills/melon_farmer.json b/src/main/resources/data/skills/melon_farmer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/melon_farmer.json
rename to src/main/resources/data/skills/melon_farmer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/monster_hunter.json b/src/main/resources/data/skills/monster_hunter.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/monster_hunter.json
rename to src/main/resources/data/skills/monster_hunter.json
diff --git a/src/main/resources/data/dwarfcraft/skills/nether_hunter.json b/src/main/resources/data/skills/nether_hunter.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/nether_hunter.json
rename to src/main/resources/data/skills/nether_hunter.json
diff --git a/src/main/resources/data/dwarfcraft/skills/nether_miner.json b/src/main/resources/data/skills/nether_miner.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/nether_miner.json
rename to src/main/resources/data/skills/nether_miner.json
diff --git a/src/main/resources/data/dwarfcraft/skills/noble.json b/src/main/resources/data/skills/noble.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/noble.json
rename to src/main/resources/data/skills/noble.json
diff --git a/src/main/resources/data/dwarfcraft/skills/ore_miner.json b/src/main/resources/data/skills/ore_miner.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/ore_miner.json
rename to src/main/resources/data/skills/ore_miner.json
diff --git a/src/main/resources/data/dwarfcraft/skills/pickaxe_use.json b/src/main/resources/data/skills/pickaxe_use.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/pickaxe_use.json
rename to src/main/resources/data/skills/pickaxe_use.json
diff --git a/src/main/resources/data/dwarfcraft/skills/quarry_worker.json b/src/main/resources/data/skills/quarry_worker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/quarry_worker.json
rename to src/main/resources/data/skills/quarry_worker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/railworker.json b/src/main/resources/data/skills/railworker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/railworker.json
rename to src/main/resources/data/skills/railworker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/sailor.json b/src/main/resources/data/skills/sailor.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/sailor.json
rename to src/main/resources/data/skills/sailor.json
diff --git a/src/main/resources/data/dwarfcraft/skills/sand_digger.json b/src/main/resources/data/skills/sand_digger.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/sand_digger.json
rename to src/main/resources/data/skills/sand_digger.json
diff --git a/src/main/resources/data/dwarfcraft/skills/scout.json b/src/main/resources/data/skills/scout.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/scout.json
rename to src/main/resources/data/skills/scout.json
diff --git a/src/main/resources/data/dwarfcraft/skills/seed_gatherer.json b/src/main/resources/data/skills/seed_gatherer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/seed_gatherer.json
rename to src/main/resources/data/skills/seed_gatherer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/shearer.json b/src/main/resources/data/skills/shearer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/shearer.json
rename to src/main/resources/data/skills/shearer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/shovel_use.json b/src/main/resources/data/skills/shovel_use.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/shovel_use.json
rename to src/main/resources/data/skills/shovel_use.json
diff --git a/src/main/resources/data/dwarfcraft/skills/sign_maker.json b/src/main/resources/data/skills/sign_maker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/sign_maker.json
rename to src/main/resources/data/skills/sign_maker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/smelter.json b/src/main/resources/data/skills/smelter.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/smelter.json
rename to src/main/resources/data/skills/smelter.json
diff --git a/src/main/resources/data/dwarfcraft/skills/soldier.json b/src/main/resources/data/skills/soldier.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/soldier.json
rename to src/main/resources/data/skills/soldier.json
diff --git a/src/main/resources/data/dwarfcraft/skills/stone_shaper.json b/src/main/resources/data/skills/stone_shaper.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/stone_shaper.json
rename to src/main/resources/data/skills/stone_shaper.json
diff --git a/src/main/resources/data/dwarfcraft/skills/survivalist.json b/src/main/resources/data/skills/survivalist.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/survivalist.json
rename to src/main/resources/data/skills/survivalist.json
diff --git a/src/main/resources/data/dwarfcraft/skills/swordsman.json b/src/main/resources/data/skills/swordsman.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/swordsman.json
rename to src/main/resources/data/skills/swordsman.json
diff --git a/src/main/resources/data/dwarfcraft/skills/torch_maker.json b/src/main/resources/data/skills/torch_maker.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/torch_maker.json
rename to src/main/resources/data/skills/torch_maker.json
diff --git a/src/main/resources/data/dwarfcraft/skills/vegetable_farmer.json b/src/main/resources/data/skills/vegetable_farmer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/vegetable_farmer.json
rename to src/main/resources/data/skills/vegetable_farmer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/wheat_farmer.json b/src/main/resources/data/skills/wheat_farmer.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/wheat_farmer.json
rename to src/main/resources/data/skills/wheat_farmer.json
diff --git a/src/main/resources/data/dwarfcraft/skills/wood_carver.json b/src/main/resources/data/skills/wood_carver.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/wood_carver.json
rename to src/main/resources/data/skills/wood_carver.json
diff --git a/src/main/resources/data/dwarfcraft/skills/wood_crafter.json b/src/main/resources/data/skills/wood_crafter.json
similarity index 100%
rename from src/main/resources/data/dwarfcraft/skills/wood_crafter.json
rename to src/main/resources/data/skills/wood_crafter.json
diff --git a/src/main/resources/default_files/dwarfcraft.db b/src/main/resources/default_files/dwarfcraft.db
deleted file mode 100644
index e69de29b..00000000