package org.shininet.bukkit.itemrenamer; import javax.annotation.Nonnull; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import org.shininet.bukkit.itemrenamer.api.RenamerAPI; import org.shininet.bukkit.itemrenamer.api.ItemsListener; import org.shininet.bukkit.itemrenamer.api.RenamerPriority; import org.shininet.bukkit.itemrenamer.configuration.ItemRenamerConfiguration; import org.shininet.bukkit.itemrenamer.configuration.RenameConfiguration; import org.shininet.bukkit.itemrenamer.configuration.RenameRule; import com.google.common.base.Preconditions; /** * Simplified API. * @author Kristian */ class ItemRenamerAPI extends RenamerAPI { private ItemRenamerConfiguration config; private RenameProcessor processor; public ItemRenamerAPI(ItemRenamerConfiguration config, RenameProcessor processor) { this.config = config; this.processor = processor; } @Override @Nonnull public ItemRenamerConfiguration getGlobalConfiguration() { return config; } @Override @Nonnull public RenameConfiguration getRenameConfiguration() { return config.getRenameConfig(); } @Override public String getRenamePack(@Nonnull Player player) { Preconditions.checkNotNull(player, "player cannot be NULL."); return processor.getPack(player); } @Override public String getRenamePack(@Nonnull World world) { Preconditions.checkNotNull(world, "world cannot be NULL."); return config.getWorldPack(world.getName()); } @Override public String getDefaultPack() { return config.getDefaultPack(); } @Override public RenameRule getRule(@Nonnull String pack, @Nonnull ItemStack stack) { Preconditions.checkNotNull(pack, "pack cannot be NULL."); Preconditions.checkNotNull(stack, "stack cannot be NULL."); return processor.getRule(pack, stack); } @Override @Nonnull public ItemStack process(@Nonnull ItemStack stack, RenameRule rule) { if (!RenameRule.isIdentity(rule)) { stack = stack.clone(); return processor.processRule(stack, rule); } return stack; } @Override @Nonnull public ItemStack process(@Nonnull ItemStack stack, @Nonnull Player player) { return process(stack, getRule(getRenamePack(player), stack)); } @Override public void addListener(@Nonnull Plugin owner, @Nonnull RenamerPriority priority, @Nonnull ItemsListener listener) { processor.getListenerMananger().addListener(owner, priority, listener); } @Override public boolean removeListener(@Nonnull ItemsListener listener) { return processor.getListenerMananger().removeListener(listener); } @Override public boolean removeListeners(@Nonnull Plugin plugin) { return processor.getListenerMananger().removeListeners(plugin); } }