use of com.elmakers.mine.bukkit.api.wand.Wand in project MagicPlugin by elBukkit.
the class WandCommandExecutor method onWandCreate.
public boolean onWandCreate(CommandSender sender, Player player) {
Mage mage = controller.getMage(player);
ItemStack heldItem = player.getInventory().getItemInMainHand();
if (heldItem == null || heldItem.getType() == Material.AIR) {
mage.sendMessage(api.getMessages().get("wand.no_item"));
if (sender != player) {
sender.sendMessage(api.getMessages().getParameterized("wand.player_no_item", "$name", player.getName()));
}
return false;
}
if (api.isWand(heldItem) || api.isSpell(heldItem) || api.isBrush(heldItem)) {
sender.sendMessage(api.getMessages().getParameterized("wand.already_enchanted", "$item", MaterialAndData.getMaterialName(heldItem)));
return false;
}
Wand wand = api.createWand(heldItem);
player.getInventory().setItemInMainHand(wand.getItem());
mage.checkWand();
mage.sendMessage(api.getMessages().getParameterized("wand.enchanted", "$item", MaterialAndData.getMaterialName(heldItem)));
if (sender != player) {
sender.sendMessage(api.getMessages().getParameterized("wand.player_enchanted", "$item", MaterialAndData.getMaterialName(heldItem), "$name", player.getName()));
}
return true;
}
use of com.elmakers.mine.bukkit.api.wand.Wand in project MagicPlugin by elBukkit.
the class WandCommandExecutor method onWandUnlock.
public boolean onWandUnlock(CommandSender sender, Player player) {
Wand wand = checkWand(sender, player, true, true, false);
if (wand == null) {
return true;
}
Mage mage = controller.getMage(player);
wand.unlock();
wand.saveState();
mage.sendMessage(api.getMessages().get("wand.unlocked"));
if (sender != player) {
sender.sendMessage(api.getMessages().getParameterized("wand.player_unlocked", "$name", player.getName()));
}
return true;
}
use of com.elmakers.mine.bukkit.api.wand.Wand in project MagicPlugin by elBukkit.
the class WandCommandExecutor method onWandFill.
public boolean onWandFill(CommandSender sender, Player player, int maxLevel) {
Wand wand = checkWand(sender, player);
if (wand == null) {
return true;
}
Mage mage = controller.getMage(player);
wand.fill(player, maxLevel);
mage.sendMessage(api.getMessages().get("wand.filled").replace("$wand", wand.getName()));
if (sender != player) {
sender.sendMessage(api.getMessages().getParameterized("wand.player_filled", "$name", player.getName()));
}
return true;
}
use of com.elmakers.mine.bukkit.api.wand.Wand in project MagicPlugin by elBukkit.
the class WandCommandExecutor method onWandSave.
public boolean onWandSave(CommandSender sender, Player player, String[] parameters) {
if (parameters.length < 1) {
sender.sendMessage("Use: /wand save <filename>");
return true;
}
Wand wand = checkWand(sender, player);
if (wand == null) {
return true;
}
MageController controller = api.getController();
String template = parameters[0];
WandTemplate existing = controller.getWandTemplate(template);
if (existing != null && !player.hasPermission("Magic.wand.overwrite")) {
String creatorId = existing.getCreatorId();
boolean isCreator = creatorId != null && creatorId.equalsIgnoreCase(player.getUniqueId().toString());
if (!player.hasPermission("Magic.wand.overwrite_own") || !isCreator) {
sender.sendMessage(ChatColor.RED + "The " + template + " wand already exists and you don't have permission to overwrite it.");
return true;
}
}
String inheritTemplate = wand.getTemplateKey();
YamlConfiguration wandConfig = new YamlConfiguration();
ConfigurationSection wandSection = wandConfig.createSection(template);
wand.save(wandSection, true);
wandSection.set("creator_id", player.getUniqueId().toString());
wandSection.set("creator", player.getName());
// inheriting from itself.
if (inheritTemplate != null && inheritTemplate.equals(template)) {
String oldTemplate = null;
if (existing != null) {
// This gives us the collapsed configuration, including inherited values.
// We just want the ones changed by the template we are replacing, though.
ConfigurationSection templateConfig = existing.getConfiguration();
WandTemplate parent = existing.getParent();
if (parent != null) {
oldTemplate = parent.getKey();
ConfigurationSection parentConfig = parent.getConfiguration();
templateConfig = ConfigurationUtils.subtractConfiguration(templateConfig, parentConfig);
}
ConfigurationUtils.addConfigurations(wandSection, templateConfig, false);
}
wandSection.set("inherit", oldTemplate);
}
File wandFolder = new File(controller.getConfigFolder(), "wands");
File wandFile = new File(wandFolder, template + ".yml");
wandFolder.mkdirs();
try {
wandConfig.save(wandFile);
} catch (IOException ex) {
ex.printStackTrace();
sender.sendMessage(ChatColor.RED + "Can't write to file " + wandFile.getName());
return true;
}
String inherit = wandSection.getString("inherit", "");
if (!inherit.isEmpty()) {
WandTemplate inheritConfiguration = controller.getWandTemplate(inherit);
ConfigurationUtils.addConfigurations(wandSection, inheritConfiguration.getConfiguration(), false);
}
controller.loadWandTemplate(template, wandSection);
String message = "Wand saved as " + template;
if (existing != null) {
message = message + ChatColor.GOLD + " (Replaced Existing)";
}
sender.sendMessage(message);
return true;
}
use of com.elmakers.mine.bukkit.api.wand.Wand in project MagicPlugin by elBukkit.
the class WandCommandExecutor method onWandDescribe.
public boolean onWandDescribe(CommandSender sender, Player player, String[] parameters) {
// Force-save wand data so it is up to date
Mage mage = controller.getMage(player);
Wand activeWand = mage.getActiveWand();
if (activeWand != null) {
activeWand.saveState();
}
ItemStack itemInHand = player.getInventory().getItemInMainHand();
if (itemInHand == null) {
if (sender != player) {
sender.sendMessage(api.getMessages().getParameterized("wand.player_no_item", "$name", player.getName()));
} else {
player.sendMessage(api.getMessages().get("wand.no_item"));
}
return true;
}
if (api.isSpell(itemInHand)) {
String spellKey = api.getSpell(itemInHand);
sender.sendMessage(ChatColor.GOLD + "Spell: " + spellKey);
SpellTemplate spell = api.getSpellTemplate(spellKey);
if (spell != null) {
sender.sendMessage(" " + ChatColor.GOLD + spell.getName());
} else {
sender.sendMessage(ChatColor.RED + " (Unknown Spell)");
}
} else if (api.isBrush(itemInHand)) {
String brushKey = api.getBrush(itemInHand);
sender.sendMessage(ChatColor.GRAY + "Brush: " + brushKey);
MaterialAndData brush = new MaterialAndData(brushKey);
sender.sendMessage(" " + ChatColor.GRAY + brush.getName());
} else if (api.isWand(itemInHand) || api.isUpgrade(itemInHand)) {
Wand wand = api.getWand(itemInHand);
if (parameters.length == 0) {
sender.sendMessage(ChatColor.BLUE + "Use " + ChatColor.AQUA + "/wand describe <property>" + ChatColor.BLUE + " for specific properties");
wand.describe(sender, BaseMagicProperties.HIDDEN_PROPERTY_KEYS);
} else {
Object property = wand.getProperty(parameters[0]);
if (property == null) {
sender.sendMessage(ChatColor.DARK_AQUA + parameters[0] + ChatColor.GRAY + ": " + ChatColor.RED + "(Not Set)");
} else {
sender.sendMessage(ChatColor.DARK_AQUA + parameters[0] + ChatColor.GRAY + ": " + ChatColor.WHITE + InventoryUtils.describeProperty(property));
}
}
} else {
sender.sendMessage(ChatColor.RED + "That is not a magic item");
}
return true;
}
Aggregations