[Plug]Plume Config
模组属性评比

距离显示结果还剩4票~

路过的这位少侠,你觉得这款Mod怎么样,可否愿意来评一评它呢?登录并评比
更新日志
  • 暂无日志..

历史编辑记录更多
    管理组

      暂无管理组..

    编辑组

      暂无编辑组..

    开发组申请
    停更
    开源
    [Plug]

    Plume Config

    0.0

    无人问津

    昨日指数: 1
    昨日平均指数: 83.872

    2299

    总浏览

    --

    资料填充率


    如何下载?
    • [Plug]Plume Config-第1张图片

      Plume Config / 基于 TOML

      Plume Config是一个为Minecraft模组制作中的配置文件处理而准备的轻量化Api库,使用了Tom's Obvious Minimal Language(TOML)格式作为文件规范。

      部署

      可能的版本

      build.gradle


      repositories {
          maven {
              url = "https://api.modrinth.com/maven"
          }
      }
      dependencies {
          modApi include("maven.modrinth:plumeconfig:4uCYxiEc")
          modLocalRuntime("org.tomlj:tomlj:1.1.0")
      }


      具体内容

      Plume Config使用了Modrinth Maven代理仓库,要在你的项目中部署Plume Config,请在build.gradle文件中添加以下内容:


      一、添加Modrinth Maven仓库


      repositories {
          maven {
              url = "https://api.modrinth.com/maven"
          }
      }


      Modrinth推荐的方式

      repositories {
          exclusiveContent {
              forRepository {
                  maven {
                      name = "Modrinth"
                      url = "https://api.modrinth.com/maven"
                  }
              }
              filter {
                  includeGroup "maven.modrinth"
              }
          }
      }


      二、部署Plume Config的最新版本

      dependencies {
          modApi include("maven.modrinth:plumeconfig:4uCYxiEc")
      }


      在重新构建你的项目之前,请注意以下几点:

      1. 请使用modApi指令部署,且不要将Plume Config作为你的前置模组。

      2. 低于v3.2.0的版本已经不再受支持,请尽量使用最新的版本。

      3. 请使用版本代码(如4uCYxiEc)而不是版本号(如v3.2.1)从Maven仓库中拉取文件,你可以在Modrinth版本列表中查看版本代码。

      4. 因为Gradle的某些问题,仅仅导入Plume Config会让你的模组在开发调试环境崩溃,而可执行文件却可以运行。如要避免类似情况的发生,请在调试环境中单独引入Tomlj依赖:在dependencies中加入语句“modLocalRuntime("org.tomlj:tomlj:1.1.0")”。你可以在可能的版本章节中查看可运行的Gradle代码。

      演示

      example.toml

      # This is a comment
      # at the top of the file
      # An integer
      integer = 1 # Int
      # A boolean
      bool = false
      [abc]
      # Multi-line
      # comment
      s = "string" # String | A String Comment
      d = 1.0
      [def]
      # A color
      # Which is under supported
      color = 0xff000000


      使用

      这里有一个示范类:Example.java

      当你部署完毕后, 多亏了简明灵活的注解和极少量需要调用的方法,随时上手使用也不是什么难事。

      首先,定义一个ConfigFile类


      public class MyModInitializer {
          public static final ConfigFile CONFIG = new ConfigFile("my_modid", "my_config.toml"); // 还有其它的构造器可以使用,详见Javadoc
      }


      然后,设计属于你的配置文件:


      public class MyConfig {
          // 继续读...
      }


      @Option注解

      在这个特殊的类里,每当你想定义一个选项,只需使用@Option注解:


      @Option // 你可以在字段前注解,或者...
      public String s = "string";
      private static @Option int integer = 1; // ...把注解写在修饰词后
      // 被@Option注解的类无论被public还是private修饰都可以,但不能被protected修饰
      // 这个选项同样可以被final修饰,但是不推荐,因为无法从文件读取这类选项的值


      s = "string"
      integer = 1


      每个选项的默认键即是字段的名称,但在文档的剩下内容中,你会知道如何单独更改选项的键。


      @Option注解同样可以用来为选项添加额外信息,比如更改选项的键:


      @Option(key = "different_key")
      public String s = "string";
      different_key = "string"


      你不可以在同一个文件中使用重复的键。Plume Config不会检查这类行为,但不代表这不会造成混乱。


      你可以用同样的方式为选项添加名称和注释:


      @Option(name = "字符串", comment = "这是一串字符")
      public String s = "string";
      @Option(key = "integer", name = "整型")
      private static int i = 1;
      s = "string" # 字符串 | 这是一串字符
      integer = 1 # 整型

      对于较特殊的情况,Plume Config也支持多行字符串:


      @Option
      public String s = "多-\n行\\\n字符串!"


      s = """
      多-
      行\
      字符串!"""


      @Comment注解

      除了@Option注解以外,还有一个注解@Comment可以为字段添加单独成行的注释。


      @Comment("一条")
      @Comment("两行的注释")
      public @Option String s = "字符串";

      @Comment(value = "另一条注释", newLine = LineBreak.BEFORE)
      private @Option static int i = 12345;


      s = "字符串"
      # 一条
      # 两行的注释
      i = 12345

      # 另一条注释


      @Comment注解仅可用于已被@Option注解的字段。

      @Comment注解可以在同一处多次使用,每一条会独占一行。

      @Comment注解中,你可以用LineBreak枚举常量来指定换行行为。


      @Comment注解不仅可以用于字段前,还可以用于类的定义:


      @Comment("这是一条")
      @Comment(value = "在文件顶端的注释", newLine = LineBreak.AFTER)
      public class MyConfig {
      //...
      }


      # 这是一条
      # 在文件顶端的注释


      @Category注解

      TOML的特性之一是可分类的点键,你可以在代码中使用@Category注解实现:


      public @Option String uncat="未分类";

      @Comment("分类注释")
      @Category("abc")
      public @Option String cat="分类";


      uncat = "未分类"

      [abc]
      cat = "分类"
      # 分类注释


      字段的顺序并不重要,Plume Config会帮助分类。


      这就是注解系统的工作原理。让我们实际操作一下:


      import java.awt.*;

      @Comment("这个配置文件控制玩家在游戏中的各项行为", newLine = LineBreak.AFTER)
      public class MyConfig {
      @Option(key = "player_name", name = "玩家名", comment = "在游戏内显示")
      public String playerName = "西格玛";

      @Option(comment = "生命条长度")
      public double health = 1.0;

      @Comment("非调试环境请不要更改此选项")
      @Category("misc")
      @Option(comment = "唯一身份标识")
      public int identity = Color.BLACK;

      @Option(key = "streaming_switch", comment = "开关串流模式")
      public boolean streamingSwitch = false;
      }


      记得在模组启动时加载这个配置实例:


      public class MyModInitializer implements ModInitializer {
          public static final ConfigFile CONFIG = new ConfigFile("my_modid", "my_config.toml");
          public static final MyConfig CONFIG_INSTANCE = new MyConfig();
          
          @Override
          public void onInitialize() {
              // 不要担心文件不存在,Plume Config会创建这些文件
              CONFIG_INSTANCE = CONFIG.load(MyConfig.class); // 填入你的配置类,告诉Plume Config要加载什么
          }
      }


      现在启动模组,你的配置文件run/config/my_modid/my_config.toml看上去应该是这个样子的:


      # 这个配置文件控制玩家在游戏中的各项行为

      player_name = "西格玛" # 玩家名 | 在游戏内显示
      health = 1.0 # 生命条长度
      streaming_switch = false # 开关串流模式

      [misc]
      identity = 0xff000000 # 唯一身份标识
      # 非调试环境请不要更改此选项


      在你的代码中,记得保证每次启动时都会加载一遍配置文件。

      现在,你已经可以正常访问其中的字段了:


      public class MyModInitializer implements ModInitializer {
          public static final ConfigFile CONFIG = new ConfigFile("my_modid", "my_config.toml");
          public static final MyConfig CONFIG_INSTANCE = new MyConfig();
          @Override
          public void onInitialize() {
              CONFIG_INSTANCE = CONFIG.load(MyConfig.class);
              
              // 你可以正常使用它们
              System.out.println(CONFIG_INSTANCE.playerName);
              System.out.println(CONFIG_INSTANCE.health);
              System.out.println(CONFIG_INSTANCE.identity);
              System.out.println(CONFIG_INSTANCE.streaming_switch);
              
              CONFIG_INSTANCE.playerName = "兰布达";
              CONFIG_INSTANCE.color = Color.RED;
              
              // 别忘了保存你更改过的字段!
              CONFIG.save(CONFIG_INSTANCE); // 填入你更改过的配置实例。
          }
      }


      挺酷的吧!Plume Config还不支持TOML的全部特性,但我们一直在努力开发。如果你关心开发进度,可以关注Plume Config的GitHub开源仓库。

      协议

      Plume Config在GPL协议下授权可用。

    短评加载中..