EcoAPI

EcoAPI

EcoAPI 是首个 Hytale 经济 API,它将允许插件在服务器中使用经济系统

图书馆

EcoAPI 🔗

EcoAPI 是 Hytale 经济系统的一个标准化的接口层

处理货币存储或交易本身。相反,它提供了一组抽象方法和接口,允许:

  1. 经济插件(提供者)实现自己的银行逻辑(SQL、JSON 等)。
  2. 游戏玩法插件(消费者)与经济系统交互(商店、工作等),而不依赖于特定的经济插件。

❓ 为什么选择 EcoAPI?

🛠 对于开发者

  • 解耦: 一次编写插件。它将与任何实现了 EcoAPI 的经济插件兼容。
  • 标准化: 使用统一的方法集(getBalanceaddBalanceremoveBalancesetBalance),无论底层系统是什么。
  • 灵活性: 在不破坏依赖插件的情况下,切换底层经济系统。

🎮 对于用户/服主

  • 兼容性: 允许您无缝地同时使用开发者 A 的商店插件和开发者 B 的银行插件。
  • 自由: 您不会受限于单个特定的经济插件。您可以随时更换实现方式。

📥 安装指南(面向用户)

注意: EcoAPI 本身不做任何事情。您需要三个组件来构建一个可运行的系统:

  1. EcoAPI(本插件)。
  2. 一个实现插件(一个实际存储货币并“实现”EcoAPI 的插件)。
  3. 任何消费者插件(商店、礼包、工作等)。

步骤:

  1. Releases 页面下载最新版本。
  2. .jar 文件放入服务器的 plugins 文件夹。
  3. 确保同时安装一个兼容的经济提供者插件。

💻 集成指南(面向开发者)

由于 EcoAPI 尚未托管到 Maven Central,您必须将其安装到您的本地 Maven 仓库中才能将其作为依赖使用。

步骤 1:本地安装

  1. Releases 页面下载最新版本。
  2. 使用以下命令将工件发布到本地缓存(Maven)
mvn install:install-file -Dfile=Path/To/EcoAPI.jar -DgroupId=com.dunystudios.hytale.plugins -DartifactId=EcoAPI -Dversion=1.0-SNAPSHOT -Dpackaging=jar

步骤 2:添加依赖

将 EcoAPI 添加到您的项目中。

<dependencies>
    <dependency>
        <groupId>com.dunystudios.hytale.plugins</groupId>
        <artifactId>EcoAPI</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

步骤 3:使用示例

A. 使用经济系统(消费者) 如果您正在制作商店或工作插件,请使用 API 修改余额:

// 获取经济插件
IEcoAPI economy = IEcoAPI.Service.getInstance();

// 获取玩家的余额
float balance = economy.getBalance(uuid);

// 向玩家增加 10 余额
economy.addBalance(uuid, 10);

// 从玩家移除 10 余额
economy.removeBalance(uuid, 10);

// 将玩家余额设置为 10
economy.setBalance(uuid, 10);

B. 提供经济系统(实现者) 如果您正在制作经济插件,您必须实现接口并注册它。

主类:

public class MyEconomyPlugin extends JavaPlugin {
    private final Economy economy;

    public MyEconomyPlugin() {
        this.economy = new Economy();
    }

    @Override
    protected void setup() {
        IEcoAPI.Service.setInstance(economy);
    }

}

经济类:

public class Economy implements IEcoAPI {

    @Override
    public float getBalance(UUID uuid) {
        // 您的逻辑
        return 0;
    }

    @Override
    public void addBalance(UUID uuid, float v) {
        // 您的逻辑
    }

    @Override
    public void removeBalance(UUID uuid, float v) {
        // 您的逻辑
    }

    @Override
    public void setBalance(UUID uuid, float v) {
        // 您的逻辑
    }
}