use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.
the class PlatformHelper method itemstackToString.
@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
String itemstack = itemDatabase.getByID(itemStack.getType().getKey().getKey()).getId();
if (itemStack.hasItemMeta()) {
itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
}
return itemstack;
}
use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.
the class PlatformHelper method itemstackToString.
@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
String itemstack = itemDatabase.getByLegacyId(itemStack.getTypeId(), itemStack.getData().getData()).getId();
if (itemStack.hasItemMeta()) {
itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
}
return itemstack;
}
use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase in project MyPet by xXKeyleXx.
the class PlatformHelper method itemstackToString.
@Override
public String itemstackToString(org.bukkit.inventory.ItemStack itemStack) {
ItemDatabase itemDatabase = MyPetApi.getServiceManager().getService(ItemDatabase.class).get();
String itemstack = itemDatabase.getByID(itemStack.getType().getKey().getKey()).getId();
if (itemStack.hasItemMeta()) {
itemstack += " " + CraftItemStack.asNMSCopy(itemStack).getTag().toString();
}
return itemstack;
}
use of de.Keyle.MyPet.api.util.inventory.material.ItemDatabase 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.util.inventory.material.ItemDatabase 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