/**
* bFundamentalsBuild 1.2-SNAPSHOT
* Copyright (C) 2013 CodingBadgers <plugins@mcbadgercraft.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package uk.thecodingbadgers.benchant;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Builder;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Dispenser;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.FireworkMeta;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import org.bukkit.inventory.meta.SkullMeta;
import uk.codingbadgers.bFundamentals.commands.ModuleCommand;
import uk.codingbadgers.bFundamentals.module.Module;
public class bItemEdit extends Module {
@Override
public void onEnable() {
registerCommand(new EnchantCommand());
registerCommand(new ItemEditCommand());
//registerCommand(new ModuleCommand("Firework", "/firework [-ft] <color> <type> [fade]").setDescription("Allows you to edit fireworks properties and effects"));
//registerCommand(new ModuleCommand("fillDispenser", "/fillDispenser").setDescription("Allows you to fill a dispenser"));
this.log(Level.INFO, getName() + " v: " + getDesciption().getVersion() + " has been enabled successfuly");
}
@Override
public void onDisable() {
this.log(Level.INFO, getName() + " v: " + getDesciption().getVersion() + " has been disabled successfuly");
}
/*
@Override
public boolean onCommand(CommandSender sender, String command, String[] args) {
if (command.equalsIgnoreCase("firework")) {
handleFirework(sender, command, args);
return true;
} else if (command.equalsIgnoreCase("fillDispenser")) {
handleFillDispenser(sender, command, args);
return true;
}
return false;
}
private void handleFirework(CommandSender sender, String command, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.DARK_PURPLE + "[bEnchant]" + ChatColor.WHITE + " sorry you have to be a player do do this");
}
Player player = (Player)sender;
if (!hasPermission(player, "bEnchant.edit.firework")) {
sendMessage(getName(), player, "Sorry you do not have permission to do this");
return;
}
if (args.length < 2) {
sendMessage(getName(), player, "/firework [-ft] <color> [type] [fade]");
return;
}
ItemStack item = player.getItemInHand();
if (item == null || !item.getType().equals(Material.FIREWORK)) {
sendMessage(getName(), player, "Sorry you cannot edit that item");
return;
}
Builder builder = FireworkEffect.builder();
List<String> flags = new ArrayList<String>();
int startArg = 0;
if (args[0].startsWith("-")) {
for(int i = 1; i < args[0].length()-1; i++) {
flags.add(args[0].substring(i, i+1));
}
startArg++;
}
boolean flicker = flags.contains("f");
boolean trail = flags.contains("t");
Color color = matchColour(args[startArg]);
Type type = Type.valueOf(args[startArg+1].toUpperCase());
Color fadeTo = null;
if (args.length >= startArg + 3) {
fadeTo = matchColour(args[startArg+2]);
}
int power = 0;
if (args.length == startArg + 4) {
power = Integer.parseInt(args[startArg+3]);
} else {
power = ((FireworkMeta)item.getItemMeta()).getPower();
}
builder.flicker(flicker);
builder.trail(trail);
builder.withColor(color);
if (fadeTo != null) {
builder.withFade(fadeTo);
}
if (type != null) {
builder.with(type);
}
FireworkEffect effect = builder.build();
FireworkMeta meta = (FireworkMeta) item.getItemMeta();
meta.clearEffects();
meta.addEffect(effect);
meta.setPower(power);
item.setItemMeta(meta);
sendMessage(getName(), player, "Added effect to firework");
}
private void handleFillDispenser(CommandSender sender, String command, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.DARK_PURPLE + "[bEnchant]" + ChatColor.WHITE + " sorry you have to be a player do do this");
}
Player player = (Player)sender;
if (!hasPermission(player, "bEnchant.edit.fill")) {
sendMessage(getName(), player, "Sorry you do not have permission to do this");
return;
}
Block block = player.getTargetBlock(null, 100);
if (block.getType() != Material.DISPENSER) {
sendMessage(getName(), player, "Sorry you cannot fill that block");
return;
}
boolean fromPlayer = false;
if (args.length >= 1 && args[0].equalsIgnoreCase("-i")) {
fromPlayer = true;
}
Dispenser dispenser = (Dispenser) block.getState();
Inventory inv = dispenser.getInventory();
ItemStack item = fromPlayer ? player.getItemInHand() : inv.getItem(0);
if (item == null || item.getType() == Material.AIR) {
sendMessage(getName(), player, "You tried to fill the dispenser with air");
return;
}
item.setAmount(64);
for (int i = 0; i < inv.getSize(); i++) {
if (inv.getItem(i) == null) {
inv.setItem(i, item);
} else {
ItemStack stack = inv.getItem(i);
stack.setAmount(64);
inv.setItem(i, stack);
}
}
sendMessage(getName(), player, "Filled that dispenser with " + item.getType().toString().toLowerCase());
}
private boolean isLeatherArmour(ItemStack item) {
return item.getType().equals(Material.LEATHER_BOOTS) ||
item.getType().equals(Material.LEATHER_CHESTPLATE) ||
item.getType().equals(Material.LEATHER_HELMET) ||
item.getType().equals(Material.LEATHER_LEGGINGS);
}*/
}