diff --git a/README.md b/README.md index f2279f9..54e5206 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,19 @@ It will suggest pronouns that are configured by the server admins, along with th ### Configuration The mod should work out of the box without any configuration, however if you want player's pronouns to be visible, you probably want to use the placeholder somewhere. +#### Reloading the config +You can reload the config file using the command `/pronouns reload-config`. This requires either OP level 4 or the permission `playerpronouns.reload_config`. + #### Adding custom pronouns (eg. neo-pronouns) To add custom pronoun sets, you can use the `single` and `pairs` options in the config file. `single` is for singular options such as `any` or `ask` while `pairs` is for pronouns that come in pairs and are used in the form `a/b`, for example `they` and `them`. +#### Setting the default placeholder +You can configure the default text returned by the placeholder when a player does not have pronouns set by changing the `default_placeholder` config value. You can also override the default in particular cases by passing an argument to the placeholder like this: `%playerpronouns:pronouns/ask%` (or `%playerpronouns:raw_pronouns/ask%`) where `ask` is the default text. + #### Displaying pronouns +You can display the pronouns in any [TextPlaceholderAPI](https://github.com/Patbox/TextPlaceholderAPI) compatible mods using the following placeholders: +* `playerpronouns:pronouns`: Returns a player's pronouns with any styling that is configured. +* `playerpronouns:raw_pronouns`: Returns a player's pronouns without any styling even if configured. ##### In chat with Styled Chat [Styled Chat](https://modrinth.com/mod/styled-chat) allows you to customise the formatting of chat messages. diff --git a/src/main/java/io/github/ashisbored/playerpronouns/Config.java b/src/main/java/io/github/ashisbored/playerpronouns/Config.java index b037352..7faea63 100644 --- a/src/main/java/io/github/ashisbored/playerpronouns/Config.java +++ b/src/main/java/io/github/ashisbored/playerpronouns/Config.java @@ -22,21 +22,24 @@ public class Config { private static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Codec.BOOL.fieldOf("allow_custom").forGetter(config -> config.allowCustom), Pronoun.CODEC.listOf().fieldOf("single").forGetter(config -> config.single), - Pronoun.CODEC.listOf().fieldOf("pairs").forGetter(config -> config.pairs) + Pronoun.CODEC.listOf().fieldOf("pairs").forGetter(config -> config.pairs), + Codec.STRING.optionalFieldOf("default_placeholder", "Unknown").forGetter(config -> config.defaultPlaceholder) ).apply(instance, Config::new)); private final boolean allowCustom; private final List single; private final List pairs; + private final String defaultPlaceholder; - private Config(boolean allowCustom, List single, List pairs) { + private Config(boolean allowCustom, List single, List pairs, String defaultPlaceholder) { this.allowCustom = allowCustom; this.single = single; this.pairs = pairs; + this.defaultPlaceholder = defaultPlaceholder; } private Config() { - this(true, Collections.emptyList(), Collections.emptyList()); + this(true, Collections.emptyList(), Collections.emptyList(), "Unknown"); } public boolean allowCustom() { @@ -51,6 +54,10 @@ public class Config { return pairs; } + public String getDefaultPlaceholder() { + return defaultPlaceholder; + } + public static Config load() { Path path = FabricLoader.getInstance().getConfigDir().resolve("player-pronouns.json"); if (!Files.exists(path)) { diff --git a/src/main/java/io/github/ashisbored/playerpronouns/PlayerPronouns.java b/src/main/java/io/github/ashisbored/playerpronouns/PlayerPronouns.java index 983e838..b1d500f 100644 --- a/src/main/java/io/github/ashisbored/playerpronouns/PlayerPronouns.java +++ b/src/main/java/io/github/ashisbored/playerpronouns/PlayerPronouns.java @@ -66,13 +66,14 @@ public class PlayerPronouns implements ModInitializer { if (!ctx.hasPlayer()) { return PlaceholderResult.invalid("missing player"); } + String defaultMessage = ctx.hasArgument() ? ctx.getArgument() : config.getDefaultPlaceholder(); ServerPlayerEntity player = ctx.getPlayer(); if (pronounDatabase == null) { - return PlaceholderResult.value("Unknown"); + return PlaceholderResult.value(defaultMessage); } Pronouns pronouns = pronounDatabase.get(player.getUuid()); if (pronouns == null) { - return PlaceholderResult.value("Unknown"); + return PlaceholderResult.value(defaultMessage); } return PlaceholderResult.value(pronouns.formatted()); }); @@ -81,13 +82,14 @@ public class PlayerPronouns implements ModInitializer { if (!ctx.hasPlayer()) { return PlaceholderResult.invalid("missing player"); } + String defaultMessage = ctx.hasArgument() ? ctx.getArgument() : config.getDefaultPlaceholder(); ServerPlayerEntity player = ctx.getPlayer(); if (pronounDatabase == null) { - return PlaceholderResult.value("Unknown"); + return PlaceholderResult.value(defaultMessage); } Pronouns pronouns = pronounDatabase.get(player.getUuid()); if (pronouns == null) { - return PlaceholderResult.value("Unknown"); + return PlaceholderResult.value(defaultMessage); } return PlaceholderResult.value(pronouns.raw()); });