# MiniPlaceholders
[](https://github.com/MiniPlaceholders/MiniPlaceholders/actions)

[](https://discord.gg/5NMMzK5mAn)


MiniMessage 组件化占位符 API,用于 Minecraft 平台
## 兼容性
- Paper 1.21+
- Velocity 3.4.0+
- Fabric 1.21.4+
- Sponge API 12+
[](https://www.bisecthosting.com/4drian3d)
## 用户用法
请查看我们的 [用户用法 Wiki](https://miniplaceholders.github.io/docs/user-guide/User-Getting-Started)
## API
请查看可用的 [Javadocs](https://javadoc.io/doc/io.github.miniplaceholders/miniplaceholders-api)
或者查看 [开发者 Wiki](https://miniplaceholders.github.io/docs/developer-guide/Developer-Getting-Started)
### Java
```java
class Main {
public static void registerExpansion() {
final Expansion expansion = Expansion.builder("my-expansion")
.audiencePlaceholder(Player.class, "name", (player, ctx, queue) -> {
return Tag.selfClosingInserting(player.getName());
})
.globalPlaceholder("tps", (ctx, queue) ->
Tag.selfClosingInserting(Component.text(Bukkit.getTps()[0]))
).build;
expansion.register();
Player player;
final TagResolver playerResolver = MiniPlaceholders.audiencePlaceholders();
player.sendMessage(miniMessage().deserialize("Player Name: ", player, playerResolver));
}
}
```
### Kotlin
```kotlin
fun register() {
val expansion = expansion("my-expansion") {
audience("name") { aud, _, _ -> aud.getName().asClosingTag() }
global("tps") { _, _ -> Component.text(Bukkit.getTps()[0]).asInsertingTag() }
}
expansion.register()
val player: Player
val playerResolver = MiniPlaceholders.audiencePlaceholders()
player.sendMessage(miniMessage().deserialize("Player Name: ", player, playerResolver))
}
```