use of de.Keyle.MyPet.api.skill.skilltree.SkilltreeIcon in project MyPet by xXKeyleXx.
the class PetShop method load.
public void load(ConfigurationSection section) {
tryToLoad("Name", () -> displayName = section.getString("Name", name));
tryToLoad("Default", () -> defaultShop = section.getBoolean("Default", false));
tryToLoad("Position", () -> position = section.getInt("Position", -1));
tryToLoad("Icon", () -> {
if (section.contains("Icon")) {
ConfigurationSection iconSection = section.getConfigurationSection("Icon");
SkilltreeIcon icon = new SkilltreeIcon();
tryToLoad("Icon.Material", () -> {
if (iconSection.contains("Material")) {
icon.setMaterial(iconSection.getString("Material", "chest"));
}
});
tryToLoad("Icon.Glowing", () -> {
if (iconSection.contains("Glowing")) {
icon.setGlowing(iconSection.getBoolean("Glowing", false));
}
});
this.icon = icon;
}
});
tryToLoad("Balance.Type", () -> {
wallet = WalletType.getByName(section.getString("Balance.Type", ""));
if (wallet == null) {
wallet = WalletType.None;
}
switch(wallet) {
case Bank:
case Player:
tryToLoad("Display Name", () -> {
walletOwner = section.getString("Balance.Owner", null);
});
}
});
tryToLoad("Pets", () -> {
ConfigurationSection pets = section.getConfigurationSection("Pets");
if (pets == null) {
MyPetApi.getLogger().warning(displayName + " shop failed to load! Please check your shop config.");
return;
}
Queue<ShopMyPet> filler = new ArrayDeque<>();
for (String name : pets.getKeys(false)) {
tryToLoad("Pets." + name, () -> {
ShopMyPet pet = new ShopMyPet(name);
try {
pet.load(pets.getConfigurationSection(name));
List<RepositoryMyPetConverterService> converters = MyPetApi.getServiceManager().getServices(RepositoryMyPetConverterService.class);
for (RepositoryMyPetConverterService converter : converters) {
converter.convert(pet);
}
if (Util.isBetween(0, 53, pet.getPosition())) {
this.pets.put(pet.getPosition(), pet);
} else {
filler.add(pet);
}
} catch (MyPetTypeNotFoundException ignored) {
}
});
}
int slot = 0;
while (!filler.isEmpty() && slot < 54) {
if (this.pets.containsKey(slot)) {
slot++;
continue;
}
ShopMyPet pet = filler.poll();
this.pets.put(slot, pet);
}
});
}
use of de.Keyle.MyPet.api.skill.skilltree.SkilltreeIcon in project MyPet by xXKeyleXx.
the class CommandChooseSkilltree method onCommand.
public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("You can't use this command from server console!");
return true;
}
Player player = (Player) sender;
if (WorldGroup.getGroupByWorld(player.getWorld()).isDisabled()) {
player.sendMessage(Translation.getString("Message.No.AllowedHere", player));
return true;
}
if (MyPetApi.getMyPetManager().hasActiveMyPet(player)) {
final MyPet myPet = MyPetApi.getMyPetManager().getMyPet(player);
final MyPetPlayer myPetOwner = myPet.getOwner();
if (Configuration.Skilltree.AUTOMATIC_SKILLTREE_ASSIGNMENT && !myPet.getOwner().isMyPetAdmin()) {
myPet.autoAssignSkilltree();
sender.sendMessage(Translation.getString("Message.Command.ChooseSkilltree.AutomaticSkilltreeAssignment", myPet.getOwner()));
} else {
if (args.length >= 1) {
if (Configuration.Skilltree.AUTOMATIC_SKILLTREE_ASSIGNMENT && !myPet.getOwner().isMyPetAdmin()) {
myPet.autoAssignSkilltree();
sender.sendMessage(Translation.getString("Message.Command.ChooseSkilltree.AutomaticSkilltreeAssignment", myPet.getOwner()));
} else if (myPet.getSkilltree() != null && Configuration.Skilltree.CHOOSE_SKILLTREE_ONLY_ONCE && !myPet.getOwner().isMyPetAdmin()) {
sender.sendMessage(Util.formatText(Translation.getString("Message.Command.ChooseSkilltree.OnlyOnce", myPet.getOwner()), myPet.getPetName()));
} else {
String skilltreeName = "";
for (String arg : args) {
skilltreeName += arg + " ";
}
skilltreeName = skilltreeName.substring(0, skilltreeName.length() - 1);
if (MyPetApi.getSkilltreeManager().hasSkilltree(skilltreeName)) {
Skilltree skilltree = MyPetApi.getSkilltreeManager().getSkilltree(skilltreeName);
if (skilltree.getMobTypes().contains(myPet.getPetType()) && skilltree.checkRequirements(myPet)) {
int requiredLevel = skilltree.getRequiredLevel();
if (requiredLevel > 1 && myPet.getExperience().getLevel() < requiredLevel) {
myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.Skilltree.RequiresLevel.Message", player), myPet.getPetName(), requiredLevel));
} else if (myPet.setSkilltree(skilltree, MyPetSelectSkilltreeEvent.Source.PlayerCommand)) {
sender.sendMessage(Util.formatText(Translation.getString("Message.Skilltree.SwitchedTo", player), Colorizer.setColors(skilltree.getDisplayName())));
if (!myPet.getOwner().isMyPetAdmin() || Configuration.Skilltree.SWITCH_FEE_ADMIN) {
double switchPenalty = Configuration.Skilltree.SWITCH_FEE_FIXED;
switchPenalty += myPet.getExperience().getExp() * Configuration.Skilltree.SWITCH_FEE_PERCENT / 100.;
if (requiredLevel > 1) {
double minExp = myPet.getExperience().getExpByLevel(requiredLevel);
switchPenalty = myPet.getExp() - switchPenalty < minExp ? myPet.getExp() - minExp : switchPenalty;
}
if (Configuration.LevelSystem.Experience.ALLOW_LEVEL_DOWNGRADE) {
myPet.getExperience().removeExp(switchPenalty);
} else {
myPet.getExperience().removeCurrentExp(switchPenalty);
}
}
} else {
sender.sendMessage(Translation.getString("Message.Skilltree.NotSwitched", player));
}
} else {
sender.sendMessage(Util.formatText(Translation.getString("Message.Command.Skilltree.CantFindSkilltree", player), skilltreeName));
}
} else {
sender.sendMessage(Util.formatText(Translation.getString("Message.Command.Skilltree.CantFindSkilltree", player), skilltreeName));
}
}
} else {
List<Skilltree> availableSkilltrees = new ArrayList<>();
for (Skilltree skilltree : MyPetApi.getSkilltreeManager().getOrderedSkilltrees()) {
if (skilltree.getMobTypes().contains(myPet.getPetType()) && skilltree.checkRequirements(myPet)) {
availableSkilltrees.add(skilltree);
}
}
if (availableSkilltrees.size() == 0) {
sender.sendMessage(Util.formatText(Translation.getString("Message.Command.ChooseSkilltree.NoneAvailable", player), myPet.getPetName()));
return true;
}
final Map<Integer, Skilltree> skilltreeSlotMap = new HashMap<>();
IconMenu menu = new IconMenu(Util.cutString(Util.formatText(Translation.getString("Message.Skilltree.Available", myPetOwner), myPet.getPetName()), 32), event -> {
if (myPet != myPetOwner.getMyPet()) {
event.setWillClose(true);
event.setWillDestroy(true);
return;
}
if (myPet.getSkilltree() != null && Configuration.Skilltree.CHOOSE_SKILLTREE_ONLY_ONCE && !myPet.getOwner().isMyPetAdmin()) {
sender.sendMessage(Util.formatText(Translation.getString("Message.Command.ChooseSkilltree.OnlyOnce", myPet.getOwner()), myPet.getPetName()));
} else if (skilltreeSlotMap.containsKey(event.getPosition())) {
Skilltree selecedSkilltree = skilltreeSlotMap.get(event.getPosition());
if (selecedSkilltree != null) {
int requiredLevel = selecedSkilltree.getRequiredLevel();
if (requiredLevel > 1 && myPet.getExperience().getLevel() < requiredLevel) {
myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.Skilltree.RequiresLevel.Message", myPetOwner), myPet.getPetName(), requiredLevel));
} else if (myPet.setSkilltree(selecedSkilltree, MyPetSelectSkilltreeEvent.Source.PlayerCommand)) {
myPet.getOwner().sendMessage(Util.formatText(Translation.getString("Message.Skilltree.SwitchedTo", myPetOwner), Colorizer.setColors(selecedSkilltree.getDisplayName())));
if (!myPet.getOwner().isMyPetAdmin() || Configuration.Skilltree.SWITCH_FEE_ADMIN) {
double switchPenalty = Configuration.Skilltree.SWITCH_FEE_FIXED;
switchPenalty += myPet.getExperience().getExp() * Configuration.Skilltree.SWITCH_FEE_PERCENT / 100.;
if (requiredLevel > 1) {
double minExp = myPet.getExperience().getExpByLevel(requiredLevel);
switchPenalty = myPet.getExp() - switchPenalty < minExp ? myPet.getExp() - minExp : switchPenalty;
}
if (Configuration.LevelSystem.Experience.ALLOW_LEVEL_DOWNGRADE) {
myPet.getExperience().removeExp(switchPenalty);
} else {
myPet.getExperience().removeCurrentExp(switchPenalty);
}
}
} else {
myPet.getOwner().sendMessage(Translation.getString("Message.Skilltree.NotSwitched", myPetOwner));
}
}
}
event.setWillClose(true);
event.setWillDestroy(true);
}, MyPetApi.getPlugin());
ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
for (int i = 0; i < availableSkilltrees.size(); i++) {
Skilltree addedSkilltree = availableSkilltrees.get(i);
SkilltreeIcon icon = addedSkilltree.getIcon();
MaterialHolder material = itemDatabase.getByID(icon.getMaterial());
if (material == null) {
material = itemDatabase.getByID("oak_sapling");
}
IconMenuItem option = new IconMenuItem().setMaterial(material.getMaterial()).setGlowing(icon.isGlowing()).setTitle(ChatColor.RESET + "❱❱❱ " + ChatColor.DARK_GREEN + Colorizer.setColors(addedSkilltree.getDisplayName()) + ChatColor.RESET + " ❰❰❰");
if (material.isLegacy()) {
option.setData(material.getLegacyId().getData());
}
boolean selectable = false;
int requiredLevel = addedSkilltree.getRequiredLevel();
if (requiredLevel > 1) {
selectable = myPet.getExperience().getLevel() >= addedSkilltree.getRequiredLevel();
}
List<String> description = new ArrayList<>();
if (requiredLevel > 1) {
String reqLevelMessage = ChatColor.RESET + "▶▶▶ ";
if (selectable) {
reqLevelMessage += ChatColor.GREEN;
} else {
reqLevelMessage += ChatColor.DARK_RED;
}
reqLevelMessage += Util.formatText(Translation.getString("Message.Skilltree.RequiresLevel.Item", myPetOwner), requiredLevel) + ChatColor.RESET + " ◀◀◀";
description.add(reqLevelMessage);
}
for (String line : addedSkilltree.getDescription()) {
description.add(ChatColor.RESET + Colorizer.setColors(line));
}
option.addLore(description);
menu.setOption(i, option);
skilltreeSlotMap.put(i, addedSkilltree);
}
menu.open(player);
}
}
} else {
sender.sendMessage(Translation.getString("Message.No.HasPet", player));
}
return true;
}
use of de.Keyle.MyPet.api.skill.skilltree.SkilltreeIcon in project MyPet by xXKeyleXx.
the class CommandShop method onCommand.
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!MyPetApi.getHookHelper().isEconomyEnabled()) {
sender.sendMessage(Translation.getString("Message.No.Economy", sender));
return true;
}
Player player = null;
if (sender instanceof ConsoleCommandSender && args.length < 2) {
sender.sendMessage("You can't use this command from server console!");
return true;
}
if (sender instanceof Player) {
if (WorldGroup.getGroupByWorld(((Player) sender).getWorld()).isDisabled()) {
sender.sendMessage(Translation.getString("Message.No.AllowedHere", sender));
return true;
}
}
if (args.length > 1) {
if (!(sender instanceof Player) || Permissions.has((Player) sender, "MyPet.admin")) {
player = Bukkit.getPlayer(args[1]);
if (player == null || !player.isOnline()) {
sender.sendMessage("[" + ChatColor.AQUA + "MyPet" + ChatColor.RESET + "] " + Translation.getString("Message.No.PlayerOnline", sender));
return true;
}
}
}
if (player == null) {
if (!(sender instanceof Player)) {
sender.sendMessage("You can't use this command from server console!");
return true;
}
player = (Player) sender;
}
final Optional<ShopManager> shopManager = MyPetApi.getServiceManager().getService(ShopManager.class);
if (shopManager.isPresent()) {
if (args.length > 0) {
String shop = args[0];
if (Permissions.has(player, "MyPet.shop.access." + shop) || Permissions.has(player, "MyPet.admin")) {
shopManager.get().open(shop, player);
} else {
player.sendMessage(Translation.getString("Message.No.Allowed", player));
}
} else {
String shop = shopManager.get().getDefaultShopName();
if (shop != null) {
if (Permissions.has(player, "MyPet.shop.access." + shop) || Permissions.has(player, "MyPet.admin")) {
shopManager.get().open(player);
return true;
}
} else {
final List<String> availableShops = getAvailablePetShops(player);
if (availableShops != null && availableShops.size() > 0) {
final Player finalPlayer = player;
Map<Integer, String> shops = new HashMap<>();
IconMenu menu = new IconMenu(Translation.getString("Message.Shop.Available", player), event -> {
String shopname = shops.get(event.getPosition());
if (shopname != null) {
final String finalShopname = shopname;
new BukkitRunnable() {
@Override
public void run() {
shopManager.get().open(finalShopname, finalPlayer);
}
}.runTaskLater(MyPetApi.getPlugin(), 5L);
event.setWillClose(true);
event.setWillDestroy(true);
}
}, MyPetApi.getPlugin());
ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
for (String shopname : availableShops) {
PetShop s = shopManager.get().getShop(shopname);
IconMenuItem icon = new IconMenuItem();
icon.setTitle(RESET + Colorizer.setColors(s.getDisplayName()));
SkilltreeIcon si = s.getIcon();
MaterialHolder material = itemDatabase.getByID(si.getMaterial());
if (material == null) {
material = itemDatabase.getByID("chest");
}
icon.setMaterial(material.getMaterial()).setGlowing(si.isGlowing());
if (material.isLegacy()) {
icon.setData(material.getLegacyId().getData());
}
if (Util.isBetween(0, 53, s.getPosition())) {
menu.setOption(s.getPosition(), icon);
shops.put(s.getPosition(), s.getName());
} else {
shops.put(menu.addOption(icon), s.getName());
}
}
menu.open(player);
return true;
}
}
player.sendMessage(Translation.getString("Message.No.Allowed", player));
}
}
return true;
}
Aggregations