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

Posts Quoted:
Reply
Clear All Quotes