arch-tutor
  • 前言
    • 缘由和启发
    • 初识 Architectury
  • Architectury Plugin
    • 一切的开始
    • ExpectPlatform
    • ArchitecturyTarget
    • PlatformOnly
    • Environment & OnlyIn
  • Architectury API
    • 再次开始
    • 添加物品和功能
    • 网络通信和热键
  • 后记
    • 在这之后的事情
    • 鸣谢
由 GitBook 提供支持
在本页
  • ExpectPlatform
  • IDEA的Architectury插件
  1. Architectury Plugin

ExpectPlatform

ExpectPlatform

读者应该已经对ExpectPlatform有了一个基本的认识, ExpectPlatform是Architectury Plugin的一个重要注解, 它可以根据平台的不同将一个方法映射到不同的实现上去.

Architectury对ExpectPlatform修饰的方法有一些规范和要求:

  • 被修饰的方法必须是公开且静态的

  • 方法的实现, 命名必须是原方法名+Impl

  • 方法的实现, 应该存放到forge模块, 相同包下名为forge的包中

  • 方法的实现, 应该存放到fabric模块, 相同包下名为fabric的包中

在common模块中创建类Storyteller, 并创建一个公开静态方法, 添加ExpectPlatform注解

位于common: trou/arch/Storyteller.java
@ExpectPlatform
public static void tellStory() {
    // 方法体为空, Architectury会根据不同的模组加载器自动填充
}

在fabric和forge模块中相同位置创建类StorytellerImpl, 为它添加实现

位于fabric: trou/arch/fabric/StorytellerImpl.java
public class StorytellerImpl {
    public static void tellStory() {
        System.out.println("I'm fabric, your new friend.");
    }
}
位于forge: trou/arch/forge/StorytellerImpl.java
public class StorytellerImpl {
    public static void tellStory() {
        System.out.println("I'm forge, your old friend.");
    }
}

在common包中, 我们就可以按需调用tellStory方法, 编译时Architectury会根据平台的不同补齐方法

位于common: trou/arch/Arch.java
public static void init() {
    System.out.println("Hello Architectury!");
    Storyteller.tellStory();
}

此时分别运行Forge和Fabric客户端, 输出的信息应该有所不同.

我们的文件结构应该是这样的:

ExpectPlatform方法: common\src\main\java\trou\arch\Storyteller.java

Forge平台的实现: forge\src\main\java\trou\arch\forge\StorytellerImpl.java

Fabric平台的实现: fabric\src\main\java\trou\arch\fabric\StorytellerImpl.java

IDEA的Architectury插件

Architectury提供了IDEA的插件来帮助我们补全ExpectPlatform的实现

创建ExpectPlatform方法后, 可以自动在正确的位置创建forge和fabric的实现

上一页一切的开始下一页ArchitecturyTarget

最后更新于3年前

Forge Side
Fabric Side
Code Hint
Architectury - IntelliJ IDEs Plugin | MarketplaceJetBrains Marketplace
Jetbrins Marketplace
Logo