- UID
- 102568
- 阅读权限
- 100
- 注册时间
- 2016-8-1
- 最后登录
- 1970-1-1
- 在线时间
- 小时
- 人气
- 点
- MC币
- 个
- 贡献
- 点
TA的每日心情 | 慵懒 2019-2-10 10:44 |
---|
签到天数: 56 天 [LV.5]常住居民I
|
本帖最后由 lss233 于 2017-3-26 10:42 编辑
VaultAPI Vault是一个集权限、聊天、经济系统为一体的API。通过它,你可以不用纠结于与每个涉及到插件的接口对接,加快你的开发速度和插件质量。提示:本帖给出的教程背景为Eclipse,如果你使用的是其他开发环境,请自行变通。
添加依赖
A.通过Maven
如果你是通过Maven来构建自己插件的,那么把Vault添加到依赖中十分简单。
打开pom.xml,在<repositories>....</repositories>代码段中加入以下内容:
- <repository>
- <id>vault-repo</id>
- <url>http://nexus.hc.to/content/repositories/pub_releases</url>
- </repository>
复制代码 然后,在<dependencies>....</dependencies>代码段中加入以下内容:
- <dependency>
- <groupId>net.milkbowl.vault</groupId>
- <artifactId>VaultAPI</artifactId>
- <version>1.6</version>
- <scope>provided</scope>
- </dependency>
复制代码 保存文件,你的Eclipse会在后台自动为你下载依赖。 | B.通过常规方法
这里的常规方法指的是通过直接创建默认的Java项目来开发插件的,我认为这是一种很不好的开发习惯。
其实这些步骤就和你当初导入服务端核心是一样的。
| 在plugin.yml中声明依赖
打开plugin.yml,在里面添加下面这行代码:
这很重要! |
使用Vault
Vault的使用非常简便,下面这段代码简单演示了Vault的使用方法,相信你看完就能明白了。
- package cc.darksky.example;
- import net.milkbowl.vault.chat.Chat;
- import net.milkbowl.vault.economy.Economy;
- import net.milkbowl.vault.economy.EconomyResponse;
- import net.milkbowl.vault.permission.Permission;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.RegisteredServiceProvider;
- import org.bukkit.plugin.java.JavaPlugin;
- public class ExamplePlugin extends JavaPlugin {
- public static Economy econ = null;
- public static Permission perms = null;
- public static Chat chat = null;
- @Override
- public void onEnable() {
- if (getServer().getPluginManager().getPlugin("Vault") == null) {
- getLogger().info("没有发现Vault,插件无法继续使用!");
- //禁用插件
- getServer().getPluginManager().disablePlugin(this);
- return;
- }
- // 初始化经济服务
- setupEconomy());
- //初始化权限服务
- setupPermissions();
- //初始化聊天服务
- setupChat();
- }
- private void setupEconomy() {
- RegisteredServiceProvider < Economy > rsp = getServer().getServicesManager().getRegistration(Economy.class);
- econ = rsp.getProvider();
- }
- private void setupChat() {
- RegisteredServiceProvider < Chat > rsp = getServer().getServicesManager().getRegistration(Chat.class);
- chat = rsp.getProvider();
- }
- private void setupPermissions() {
- RegisteredServiceProvider < Permission > rsp = getServer().getServicesManager().getRegistration(Permission.class);
- perms = rsp.getProvider();
- }
- public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
- if (!(sender instanceof Player)) {
- getLogger().info("只有玩家才能这么做");
- return true;
- }
- Player player = (Player) sender;
- if (command.getLabel().equals("test-economy")) { //输入指令 /test-economy
- // 给一名玩家1.05元,有些经济插件可能会出现舍入的情况。
- sender.sendMessage(String.format("你现在只有 %s 元", econ.format(econ.getBalance(player.getName()))));
- EconomyResponse r = econ.depositPlayer(player, 1.05);
- if(r.transactionSuccess()) {
- sender.sendMessage(String.format("你刚刚得到了 %s 元,现在总共有 %s 元", econ.format(r.amount), econ.format(r.balance)));
- } else {
- sender.sendMessage(String.format("遇到了一个问题: %s", r.errorMessage));
- }
- return true;
- } else if(command.getLabel().equals("test-permission")) {
- // 判断玩家是否拥有某个权限
- if(perms.has(player, "example.baka")) {
- sender.sendMessage("您拥有这个权限!");
- } else {
- sender.sendMessage("您没有权限执行这个指令!");
- }
- return true;
- } else {
- return false;
- }
- }
- }
复制代码 后话
如果你在使用过程中遇到了问题,下面这些链接说不定能帮助到你:
如果你还有什么疑问,也可以在这个帖子下提出。
如果本帖有什么错误,还请各位批评指正!
|
|
评分
-
查看全部评分
|