MineLastDaysProxy对接指南

在该页中简单了解常用机制

MineLastDaysProxy的主要职责是进行Mod与Plugin的对接。

其提供Plugin便捷调用Mod内功能的途径,同时协调Mod与Plugin的功能。

对接相关文件位于proxies包中

一,你方作为服务提供商时

你需要向本插件提供服务

位于proxies包下,有两个类负责对接

  • IFunctionProvider。服务提供接口。你需要实现该接口,以提供服务。

  • ProviderManager。服务对接器。在该类中注册你的实现类。

1. 以对接队伍服务为例

通常,若需要对接,插件将会创建一个需求接口。

ITeamInfoProvider.java
//需求接口,包含需要对接的内容。
public interface ITeamInfoProvider extends IFunctionProvider {
  
  /**
  *  判断两玩家是否是队友
  */
  boolean isTeammate(UUID playrUUID1, UUID playerUUID2);
  
  /**
  *  获取某玩家的队友
  */
  ArrayList<UUID> getTeammates(UUID playerUUID);
}

你方需要对该接口进行实现,以提供功能。

TeamInfoProviderImpl.java
//为需求接口写入你的实现方法
public class TeamInfoProviderImpl implements ITeamInfoProvider{

    /**
    *  判断两玩家是否是队友
    */
    public boolean isTeammate(UUID playrUUID1, UUID playerUUID2){
        boolean result = false;
        //TODO 你的逻辑代码
        return result;
    }
    
    //其他部分同理...
    
}

至此,你已经完成对接口的实现。

接下来,你需要在服务对接器注册你的实现类。我们通常在插件开启时进行。

YourPlugin.java
public class YourPlugin extends JavaPlugin{

    @Override
    public void onEnable(){
        //注册你的实现类
        ProviderManager.register(new TeamInfoProviderImpl());
    }

}

自此,你已完成对接。

二,本插件提供功能时

该插件作为提供方,即你方作为服务消费者

当该插件提供功能时,通常会提供以Manager结尾的类,以提供相应的静态方法。

1. 以怪物对接为例

当你需要获取怪物类型时,调用方法。

//获得怪物类型
MobManager.getMobType(theEntity);

其他同理,可在功能提供分类下了解详细。

三,本插件作为对接枢纽时

在某些情况下,该插件作为一个对接枢纽,如图所示。

作为对接枢纽时,插件A作为服务提供商,插件B作为服务消费方

1. 当你方作为服务提供商时

你只需实现需求接口,并注册即可。

2. 当你方作为服务消费者时

由上文可知,当它方插件作为服务提供商时,需要在ProviderManager中注册其服务,该服务是允许第三方获得的。

如下所示,你可以得到目标服务接口的实现类。

//获取服务
//若返回为NULL,则代表该接口未被实现。
ITeamInfoProvider iTeamInfoProvider = ProviderManager.getProvider(ITeamInfoProvider.class);

//TODO 你的使用代码

至此,你完成了服务的调用。

Last updated

Was this helpful?