MoreItems API
MoreItems is in it's beta stage! All information on this page may change in the future! This page will be updated if any major changes occur.
MoreItems will change a lot in the future. The beta stage just has all background work!
Creating Powers
To create a power you create your class and make it extend power from the package me.khave.moreitems.Powers. From here you make a constructor. Inside the constructor you use the keyword super. So far we have this:
public class ExamplePower extends Power { public ExamplePower(){ // This is the description for the args. This is not used at the moment, but may be implemented in the future, so do it for now. super("SomeFirstArg", "SomeSecondArg", "SomeThirdArgs"); } }
After this we'll create the description that occurs in the lore of an item. We do this by overriding the method called description like so:
@Override public String getDescription(PowerArray powerArray) { return MoreItems.getMoreItems().getLanguageManager().getExactDescription("examplepower").replaceAll("%firstArg%", powerArray.getArray()[0]); }
The String array is the different arguements of the power you have. The first array is always the power (like potioneffect) and the second String in the array is always the event type (like hold).
Now we'll create the command. We do this by overriding the method called powerCommand like so:
@Override public void onCommand(CommandSender sender, MoreItemsItem moreItemsItem, EventType eventType, String[] args) { if(args.length == 0){ displayUsage(sender); return; } int someArg; try { someArg= Integer.parseInt(args[0]); } catch (NumberFormatException e) { sender.sendMessage(org.bukkit.ChatColor.RED + "That is not a number!"); return; } if(args.length == 1) { moreItemsItem.addPower(this, eventType, "" + someArg); sender.sendMessage(ChatColor.GREEN + "Added power with " + someArg + " someArg to item!"); moreItemsItem.update(); return; } int cooldown; try { cooldown = Integer.parseInt(args[1]); } catch (NumberFormatException e) { sender.sendMessage(org.bukkit.ChatColor.RED + "That is not a number!"); return; } moreItemsItem.addPower(this, eventType, cooldown, "" + velocity); sender.sendMessage(ChatColor.GREEN + "Added power with " + someArg + " someArg and " + cooldown + " cooldown to item!"); moreItemsItem.update(); }
You also need to override the getName function which is the name of your power typed out:
@Override public String getName() { return "examplepower"; }
This is also where we can add the power with a cooldown like seen.
After this we can create the effects of the power by overriding any of the following methods:
- powerEffectInteract(Player player, PlayerInteractEvent event, String[] array) - When the player either right clicks or left clicks. You do not need to check for this yourself.
- powerEffectDamage(Player player, LivingEntity target, String[] array) - When the player is damaged or deals damage
- powerEffectShift(Player player, String[] array) - When the player toggles sneak
- powerEffectHold(Player player, String[] array) - When the player is holding an item or has an item equipped.
All this can be accomplished like so:
public void displaySomeArg(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray){ if(hasCooldown(player, moreItemsItem, this, powerArray.getArray(), 1)) return; player.sendMessage(powerArray.getArray()[0]); } @Override public void powerEffectDamage(Player player, LivingEntity target, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectConsume(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectClick(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectDamaged(Player damaged, LivingEntity damager, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(damaged, moreItemsItem, powerArray); } @Override public void powerEffectSneak(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectHold(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectKilled(Player player, MoreItemsItem moreItemsItem, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectBlockBreak(Player player, MoreItemsItem moreItemsItem, Block block, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); } @Override public void powerEffectArrowLand(Player player, MoreItemsItem moreItemsItem, Location location, PowerArray powerArray) { displaySomeArg(player, moreItemsItem, powerArray); }
After this is done you register your power by going in the onEnable method and calling the registerPower(Power power) inside the PowerManager class like so:
MoreItems.getMoreItems().getPowerManager().registerPower(new ExamplePower());
You are thus done creating your custom power!
Creating & Getting Items
To get a MoreItems item you just need to do this:
MoreItemsItem moreItemsItem = MoreItems.getMoreItems().getItemManager().getItem("SomeItem");
Comments