Search in sources :

Example 1 with SkillTreeLevel

use of de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel in project MyPet by xXKeyleXx.

the class LevelUpListener method on.

@EventHandler
public void on(MyPetLevelUpEvent event) {
    MyPet myPet = event.getPet();
    int lvl = event.getLevel();
    int lastLvl = event.getLastLevel();
    if (!event.isQuiet()) {
        int maxlevel = myPet.getSkilltree() != null ? myPet.getSkilltree().getMaxLevel() : 0;
        if (maxlevel != 0 && lvl >= maxlevel) {
            myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.LevelSystem.ReachedMaxLevel", event.getOwner().getLanguage()), myPet.getPetName(), maxlevel));
        } else {
            myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.LevelSystem.LevelUp", event.getOwner().getLanguage()), myPet.getPetName(), event.getLevel()));
        }
    }
    SkillTree skillTree = myPet.getSkilltree();
    if (skillTree != null) {
        if (skillTree.getLastLevelWithSkills() < lvl) {
            lvl = skillTree.getLastLevelWithSkills();
        }
        for (int i = lastLvl + 1; i <= lvl; i++) {
            if (skillTree.hasLevel(i)) {
                SkillTreeLevel level = skillTree.getLevel(i);
                if (!event.isQuiet()) {
                    if (level.hasLevelupMessage()) {
                        myPet.getOwner().sendMessage(Colorizer.setColors(level.getLevelupMessage()));
                    }
                }
                List<SkillInfo> skillList = level.getSkills();
                for (SkillInfo skill : skillList) {
                    myPet.getSkills().getSkill(skill.getName()).upgrade(skill, event.isQuiet());
                }
            }
        }
    }
    if (myPet.getStatus() == MyPet.PetState.Here) {
        MyPetBukkitEntity entity = myPet.getEntity().get();
        entity.getHandle().updateNameTag();
        if (!event.isQuiet()) {
            myPet.setHealth(myPet.getMaxHealth());
            myPet.setSaturation(100);
            final boolean version17 = MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.8") < 0;
            new SpiralAnimation(1, entity.getEyeHeight() + 0.5, new EntityLocationHolder(entity)) {

                @Override
                protected void playParticleEffect(Location location) {
                    if (version17) {
                        MyPetApi.getPlatformHelper().playParticleEffect(location, "magicCrit", 0, 0, 0, 0, 1, 32);
                    } else {
                        MyPetApi.getPlatformHelper().playParticleEffect(location, "CRIT_MAGIC", 0, 0, 0, 0, 1, 32);
                    }
                // MyPetApi.getPlatformHelper().playParticleEffect(location, "flame", 0, 0, 0, 0, 1, 32);
                }
            }.loop(2);
            if (MyPetApi.getCompatUtil().compareWithMinecraftVersion("1.9") >= 0) {
                entity.getWorld().playSound(entity.getLocation(), "entity.player.levelup", 1F, 0.7F);
            } else {
                entity.getWorld().playSound(entity.getLocation(), Sound.valueOf("LEVEL_UP"), 1F, 0.7F);
            }
        }
    }
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) MyPet(de.Keyle.MyPet.api.entity.MyPet) SpiralAnimation(de.Keyle.MyPet.api.util.animation.particle.SpiralAnimation) EntityLocationHolder(de.Keyle.MyPet.api.util.location.EntityLocationHolder) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree) MyPetBukkitEntity(de.Keyle.MyPet.api.entity.MyPetBukkitEntity) Location(org.bukkit.Location) EventHandler(org.bukkit.event.EventHandler)

Example 2 with SkillTreeLevel

use of de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel in project MyPet by xXKeyleXx.

the class LevelCreator method setSkillTree.

public void setSkillTree(SkillTree skillTree, SkillTreeMobType skillTreeMobType) {
    this.skillTree = skillTree;
    this.skillTreeMobType = skillTreeMobType;
    highestLevel = 0;
    if (skillTree.hasDisplayName()) {
        displayNameTextField.setEnabled(true);
        displayNameCheckbox.setSelected(true);
    } else {
        displayNameTextField.setEnabled(false);
        displayNameCheckbox.setSelected(false);
    }
    displayNameTextField.setText(skillTree.getDisplayName());
    if (skillTree.hasCustomPermissions()) {
        permissionTextField.setEnabled(true);
        permissionCheckbox.setSelected(true);
    } else {
        permissionTextField.setEnabled(false);
        permissionCheckbox.setSelected(false);
    }
    permissionTextField.setText(skillTree.getPermission());
    permissionDisplayTextField.setText("MyPet.skilltree." + skillTree.getPermission());
    if (skillTree.getMaxLevel() > 0) {
        maxLevelCheckBox.setSelected(true);
        maxLevelTextField.setEnabled(true);
        maxLevelTextField.setText("" + skillTree.getMaxLevel());
    } else {
        maxLevelCheckBox.setSelected(false);
        maxLevelTextField.setEnabled(false);
        maxLevelTextField.setText("");
    }
    if (skillTree.getRequiredLevel() > 1) {
        requiredLevelCheckBox.setSelected(true);
        requiredLevelTextField.setEnabled(true);
        requiredLevelTextField.setText("" + skillTree.getRequiredLevel());
    } else {
        requiredLevelCheckBox.setSelected(false);
        requiredLevelTextField.setEnabled(false);
        requiredLevelTextField.setText("");
    }
    this.inheritanceComboBoxModel.removeAllElements();
    inheritanceCheckBox.setSelected(false);
    inheritanceCheckBox.setEnabled(false);
    if (skillTreeMobType.getSkillTreeNames().size() > 1 || (skillTreeMobType != SkillTreeMobType.DEFAULT && SkillTreeMobType.DEFAULT.getSkillTreeNames().size() > 0)) {
        inheritanceCheckBox.setEnabled(true);
        ArrayList<String> skilltreeNames = new ArrayList<>();
        for (String skillTreeName : skillTreeMobType.getSkillTreeNames()) {
            if (!skillTreeName.equals(skillTree.getName()) && !skilltreeNames.contains(skillTreeName)) {
                skilltreeNames.add(skillTreeName);
                inheritanceComboBoxModel.addElement(skillTreeName);
            }
        }
        for (String skillTreeName : SkillTreeMobType.DEFAULT.getSkillTreeNames()) {
            if (!skillTreeName.equals(skillTree.getName()) && !skilltreeNames.contains(skillTreeName)) {
                skilltreeNames.add(skillTreeName);
                inheritanceComboBoxModel.addElement(skillTreeName);
            }
        }
        if (skillTree.getInheritance() != null) {
            if (skillTreeMobType.getSkillTreeNames().contains(skillTree.getInheritance())) {
                inheritanceCheckBox.setSelected(true);
                inheritanceComboBox.setEnabled(true);
                this.inheritanceComboBoxModel.setSelectedItem(skillTree.getInheritance());
            }
            if (SkillTreeMobType.DEFAULT.hasSkillTree(skillTree.getInheritance())) {
                inheritanceCheckBox.setSelected(true);
                inheritanceComboBox.setEnabled(true);
                this.inheritanceComboBoxModel.setSelectedItem(skillTree.getInheritance());
            }
        } else {
            inheritanceComboBox.setEnabled(false);
        }
    }
    skillTreeNameLabel.setText("Skilltree: " + skillTree.getName());
    SortedDefaultMutableTreeNode rootNode = new SortedDefaultMutableTreeNode(skillTree.getName());
    skillTreeTreeModel.setRoot(rootNode);
    int skillcount = 0;
    for (SkillTreeLevel level : skillTree.getLevelList()) {
        highestLevel = Math.max(highestLevel, level.getLevel());
        DefaultMutableTreeNode levelNode = new DefaultMutableTreeNode(level.getLevel());
        rootNode.add(levelNode);
        for (SkillInfo skill : level.getSkills()) {
            SkillTreeSkillNode skillNode = new SkillTreeSkillNode(skill);
            levelNode.add(skillNode);
            skillcount++;
        }
    }
    if (skillcount <= 15) {
        for (int i = 0; i < skillTreeTree.getRowCount(); i++) {
            skillTreeTree.expandRow(i);
        }
    } else {
        skillTreeTree.expandRow(0);
    }
    skillTreeTree.updateUI();
    skillTreeTree.setSelectionPath(new TreePath(rootNode));
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreePath(javax.swing.tree.TreePath)

Example 3 with SkillTreeLevel

use of de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel in project MyPet by xXKeyleXx.

the class CommandShowSkillTree method onCommand.

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (sender instanceof ConsoleCommandSender) {
        SkillTreeMobType mobType;
        if (args.length >= 1) {
            if (args[0].equalsIgnoreCase("default")) {
                mobType = SkillTreeMobType.DEFAULT;
            } else {
                MyPetType type = MyPetType.byName(args[0]);
                if (type != null) {
                    mobType = SkillTreeMobType.byPetType(type);
                } else {
                    MyPetApi.getLogger().info("There is " + ChatColor.RED + "no" + ChatColor.RESET + " mobtype with the name: " + ChatColor.AQUA + args[0]);
                    return true;
                }
            }
            if (args.length >= 2) {
                if (mobType.hasSkillTree(args[1])) {
                    SkillTree skillTree = mobType.getSkillTree(args[1]);
                    MyPetApi.getLogger().info("----- MyPet Skilltree: " + ChatColor.AQUA + skillTree.getName() + ChatColor.RESET + " - Inherits: " + (skillTree.getInheritance() != null ? ChatColor.AQUA + skillTree.getInheritance() + ChatColor.RESET : ChatColor.DARK_GRAY + "none" + ChatColor.RESET) + " -----");
                    for (SkillTreeLevel lvl : skillTree.getLevelList()) {
                        MyPetApi.getLogger().info(ChatColor.YELLOW + " " + lvl.getLevel() + ChatColor.RESET + ": (" + (lvl.hasLevelupMessage() ? Colorizer.setColors(lvl.getLevelupMessage()) + ChatColor.RESET : "-") + ")");
                        for (SkillInfo skill : lvl.getSkills()) {
                            if (skill.isAddedByInheritance()) {
                                MyPetApi.getLogger().info("   " + ChatColor.DARK_GRAY + skill.getName());
                            } else {
                                MyPetApi.getLogger().info("   " + skill.getName());
                            }
                        }
                    }
                    MyPetApi.getLogger().info("----- MyPet Skilltree " + ChatColor.AQUA + skillTree.getName() + ChatColor.RESET + " end -----");
                } else {
                    MyPetApi.getLogger().info("There is " + ChatColor.RED + "no" + ChatColor.RESET + " skilltree with the name: " + ChatColor.AQUA + args[1]);
                }
            } else {
                MyPetApi.getLogger().info("----- MyPet Skilltrees for: " + ChatColor.GREEN + args[0]);
                for (String skillTreeName : mobType.getSkillTreeNames()) {
                    MyPetApi.getLogger().info("   " + skillTreeName);
                }
            }
        } else {
            return false;
        }
    } else {
        sender.sendMessage("Can only be used in server console");
    }
    return true;
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) SkillTreeMobType(de.Keyle.MyPet.api.skill.skilltree.SkillTreeMobType) MyPetType(de.Keyle.MyPet.api.entity.MyPetType) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree)

Example 4 with SkillTreeLevel

use of de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel in project MyPet by xXKeyleXx.

the class SkillTreeLoader method addDefault.

public static void addDefault(SkillTreeMobType skillTreeMobType) {
    SkillTreeMobType defaultSkillTreeMobType = SkillTreeMobType.DEFAULT;
    for (String skillTreeName : defaultSkillTreeMobType.getSkillTreeNames()) {
        if (!skillTreeMobType.hasSkillTree(skillTreeName) && defaultSkillTreeMobType.hasSkillTree(skillTreeName)) {
            SkillTree newSkillTree = defaultSkillTreeMobType.getSkillTree(skillTreeName).clone();
            for (SkillTreeLevel level : newSkillTree.getLevelList()) {
                for (SkillInfo skill : level.getSkills()) {
                    skill.setIsInherited(true);
                }
            }
            skillTreeMobType.addSkillTree(newSkillTree);
        }
    }
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) SkillTreeMobType(de.Keyle.MyPet.api.skill.skilltree.SkillTreeMobType) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree)

Example 5 with SkillTreeLevel

use of de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel in project MyPet by xXKeyleXx.

the class SkillTreeLoader method manageInheritance.

protected static void manageInheritance(SkillTreeMobType skillTreeMobType, SkillTree startSkillTree, SkillTree skillTree, Map<SkillTree, SkillTree> clones, int depth) {
    if (skillTree.hasInheritance() && depth < 20) {
        if (skillTreeMobType.hasSkillTree(skillTree.getInheritance())) {
            SkillTree skillTreeInherit = skillTreeMobType.getSkillTree(skillTree.getInheritance());
            if (!alreadyLoadedInheritance.contains(skillTreeInherit)) {
                if (skillTreeInherit.hasInheritance() && Configuration.Skilltree.INHERIT_ALREADY_INHERITED_SKILLS) {
                    alreadyLoadedInheritance.add(skillTreeInherit);
                    manageInheritance(skillTreeMobType, startSkillTree, skillTreeInherit, clones, depth + 1);
                } else {
                    alreadyLoadedInheritance.add(skillTreeInherit);
                }
                SkillTree skillTreeClone = clones.get(skillTreeInherit);
                for (SkillTreeLevel level : skillTreeClone.getLevelList()) {
                    for (SkillInfo skill : level.getSkills()) {
                        SkillInfo skillClone = skill.cloneSkill();
                        if (skillClone != null) {
                            skillClone.setIsInherited(true);
                            startSkillTree.addSkillToLevel(level.getLevel(), skillClone, true);
                        }
                    }
                }
            }
        }
    }
}
Also used : SkillTreeLevel(de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel) SkillInfo(de.Keyle.MyPet.api.skill.SkillInfo) SkillTree(de.Keyle.MyPet.api.skill.skilltree.SkillTree)

Aggregations

SkillInfo (de.Keyle.MyPet.api.skill.SkillInfo)7 SkillTreeLevel (de.Keyle.MyPet.api.skill.skilltree.SkillTreeLevel)7 SkillTree (de.Keyle.MyPet.api.skill.skilltree.SkillTree)6 SkillTreeMobType (de.Keyle.MyPet.api.skill.skilltree.SkillTreeMobType)3 MyPet (de.Keyle.MyPet.api.entity.MyPet)1 MyPetBukkitEntity (de.Keyle.MyPet.api.entity.MyPetBukkitEntity)1 MyPetType (de.Keyle.MyPet.api.entity.MyPetType)1 SpiralAnimation (de.Keyle.MyPet.api.util.animation.particle.SpiralAnimation)1 EntityLocationHolder (de.Keyle.MyPet.api.util.location.EntityLocationHolder)1 ArrayList (java.util.ArrayList)1 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)1 TreePath (javax.swing.tree.TreePath)1 Location (org.bukkit.Location)1 EventHandler (org.bukkit.event.EventHandler)1