forked from Upstream/mmocore
Skill Tree.
This commit is contained in:
parent
5a75156411
commit
fbba7ff034
@ -283,7 +283,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
|
|||||||
if (skillTree.isNode(coordinates)) {
|
if (skillTree.isNode(coordinates)) {
|
||||||
SkillTreeNode node = skillTree.getNode(coordinates);
|
SkillTreeNode node = skillTree.getNode(coordinates);
|
||||||
if (nodeStates.get(node) == null) {
|
if (nodeStates.get(node) == null) {
|
||||||
skillTree.getNodes().forEach(nodee -> Bukkit.broadcastMessage(nodee.getId() + " " + nodeStates.get(nodee)));
|
skillTree.getNodes().forEach(nodee -> Bukkit.broadcastMessage(nodee.getFullId() + " " + nodeStates.get(nodee)));
|
||||||
}
|
}
|
||||||
DisplayInfo displayInfo = new DisplayInfo(nodeStates.get(node), node.getSize());
|
DisplayInfo displayInfo = new DisplayInfo(nodeStates.get(node), node.getSize());
|
||||||
return skillTree.getIcon(displayInfo);
|
return skillTree.getIcon(displayInfo);
|
||||||
|
@ -49,6 +49,24 @@ public class MySQLDataProvider extends MMODataSource implements DataProvider {
|
|||||||
exception.printStackTrace();
|
exception.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// Add 'skill_tree_realloc_points' if it doesn't exist
|
||||||
|
getResultAsync("SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'mmocore_playerdata' AND COLUMN_NAME = 'skill_tree_realloc_points'", result -> {
|
||||||
|
try {
|
||||||
|
if (!result.next())
|
||||||
|
executeUpdate("ALTER TABLE mmocore_playerdata ADD COLUMN is_saved TINYINT");
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Add 'skill_tree_points' if it doesn't exist
|
||||||
|
getResultAsync("SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'mmocore_playerdata' AND COLUMN_NAME = 'skill_tree_points'", result -> {
|
||||||
|
try {
|
||||||
|
if (!result.next())
|
||||||
|
executeUpdate("ALTER TABLE mmocore_playerdata ADD COLUMN is_saved TINYINT");
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,6 +9,7 @@ import net.Indyuce.mmocore.api.player.profess.SavedClassInformation;
|
|||||||
import net.Indyuce.mmocore.guild.provided.Guild;
|
import net.Indyuce.mmocore.guild.provided.Guild;
|
||||||
import net.Indyuce.mmocore.manager.data.DataProvider;
|
import net.Indyuce.mmocore.manager.data.DataProvider;
|
||||||
import net.Indyuce.mmocore.manager.data.PlayerDataManager;
|
import net.Indyuce.mmocore.manager.data.PlayerDataManager;
|
||||||
|
import net.Indyuce.mmocore.tree.SkillTreeNode;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -72,6 +73,14 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
|
|||||||
}
|
}
|
||||||
data.setSkillTreePoints("global", config.getInt("skill-tree-points.global", 0));
|
data.setSkillTreePoints("global", config.getInt("skill-tree-points.global", 0));
|
||||||
|
|
||||||
|
for (SkillTreeNode node : MMOCore.plugin.skillTreeManager.getAllNodes()) {
|
||||||
|
data.setNodeLevel(node, config.getInt("skill-tree-level." + node.getFullId(), 0));
|
||||||
|
}
|
||||||
|
data.setupNodeState();
|
||||||
|
|
||||||
|
for (SkillTreeNode node : MMOCore.plugin.skillTreeManager.getAllNodes()) {
|
||||||
|
MMOCore.log(node.getFullId()+" " +data.getNodeState(node)+"");
|
||||||
|
}
|
||||||
|
|
||||||
if (config.contains("times-claimed"))
|
if (config.contains("times-claimed"))
|
||||||
for (String key : config.getConfigurationSection("times-claimed").getKeys(true))
|
for (String key : config.getConfigurationSection("times-claimed").getKeys(true))
|
||||||
@ -112,6 +121,8 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
|
|||||||
data.getSkillTreePoints().forEach((key1, value) -> config.set("skill-tree-points." + key1, value));
|
data.getSkillTreePoints().forEach((key1, value) -> config.set("skill-tree-points." + key1, value));
|
||||||
config.set("skill-tree-reallocation-points", data.getSkillTreeReallocationPoints());
|
config.set("skill-tree-reallocation-points", data.getSkillTreeReallocationPoints());
|
||||||
config.set("skill", null);
|
config.set("skill", null);
|
||||||
|
//Saves the nodes levels
|
||||||
|
MMOCore.plugin.skillTreeManager.getAllNodes().forEach(node -> config.set("skill-tree-level." + node.getFullId(), data.getNodeLevel(node)));
|
||||||
data.mapSkillLevels().forEach((key1, value) -> config.set("skill." + key1, value));
|
data.mapSkillLevels().forEach((key1, value) -> config.set("skill." + key1, value));
|
||||||
data.getItemClaims().forEach((key, times) -> config.set("times-claimed." + key, times));
|
data.getItemClaims().forEach((key, times) -> config.set("times-claimed." + key, times));
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public class AutomaticSkillTree extends SkillTree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//We find the root of the tree wich is
|
//We find the root of the tree which is
|
||||||
for (SkillTreeNode node : nodes.values()) {
|
for (SkillTreeNode node : nodes.values()) {
|
||||||
if (node.getSoftParents().size() == 0 && node.getStrongParents().size() == 0) {
|
if (node.getSoftParents().size() == 0 && node.getStrongParents().size() == 0) {
|
||||||
Validate.isTrue(roots.size() == 0, "You can't have 2 roots on one automatic skill tree. You have " + (roots.size() != 0 ? roots.get(0).getName() : "") + " and " + node.getName() + ".");
|
Validate.isTrue(roots.size() == 0, "You can't have 2 roots on one automatic skill tree. You have " + (roots.size() != 0 ? roots.get(0).getName() : "") + " and " + node.getName() + ".");
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
package net.Indyuce.mmocore.tree.skilltree;
|
package net.Indyuce.mmocore.tree.skilltree;
|
||||||
|
|
||||||
|
import net.Indyuce.mmocore.MMOCore;
|
||||||
import net.Indyuce.mmocore.tree.ParentType;
|
import net.Indyuce.mmocore.tree.ParentType;
|
||||||
import net.Indyuce.mmocore.tree.SkillTreeNode;
|
import net.Indyuce.mmocore.tree.SkillTreeNode;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
public class CustomSkillTree extends SkillTree{
|
public class CustomSkillTree extends SkillTree{
|
||||||
public CustomSkillTree(ConfigurationSection config) {
|
public CustomSkillTree(ConfigurationSection config) {
|
||||||
super(config);
|
super(config);
|
||||||
@ -36,6 +40,17 @@ public class CustomSkillTree extends SkillTree{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//We find the roots of the tree which don't have any parents
|
||||||
|
for (SkillTreeNode node : nodes.values()) {
|
||||||
|
if (node.getSoftParents().size() == 0 && node.getStrongParents().size() == 0) {
|
||||||
|
Validate.isTrue(roots.size() == 0, "You can't have 2 roots on one automatic skill tree. You have " + (roots.size() != 0 ? roots.get(0).getName() : "") + " and " + node.getName() + ".");
|
||||||
|
//We mark the node as a root also
|
||||||
|
roots.add(node);
|
||||||
|
node.setIsRoot();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MMOCore.plugin.getLogger().log(Level.SEVERE,roots.size()+" ROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooT");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
String string = config.getString("type");
|
String string = config.getString("type");
|
||||||
|
Validate.notNull(string, "You must precise a type for the skill tree.");
|
||||||
Validate.isTrue(string.equals("automatic") || string.equals("linked") || string.equals("custom"), "You must precise the type of the skill tree in the yml!" +
|
Validate.isTrue(string.equals("automatic") || string.equals("linked") || string.equals("custom"), "You must precise the type of the skill tree in the yml!" +
|
||||||
"\nAllowed values: 'automatic','linked','custom'");
|
"\nAllowed values: 'automatic','linked','custom'");
|
||||||
if (string.equals("automatic")) {
|
if (string.equals("automatic")) {
|
||||||
@ -168,7 +168,7 @@ public abstract class SkillTree extends PostLoadObject implements RegisteredObje
|
|||||||
skillTree.postLoad();
|
skillTree.postLoad();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
MMOCore.plugin.getLogger().log(Level.SEVERE, "Couldn't load skill tree " + config.getName() + ": " + e.getMessage());
|
MMOCore.log("Couldn't load skill tree " + config.getString("id") + ": " + e.getMessage());
|
||||||
}
|
}
|
||||||
return skillTree;
|
return skillTree;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user