mirror of
https://github.com/ashhhleyyy/player-pronouns.git
synced 2024-11-01 07:07:38 +00:00
feat(pronoundb): don't replace user-set pronouns
This commit is contained in:
parent
1e4d041ef4
commit
4dbd0ee8f8
4 changed files with 17 additions and 7 deletions
|
@ -94,6 +94,10 @@ public class PlayerPronouns implements ModInitializer {
|
|||
|
||||
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
|
||||
if(config.enablePronounDBSync()) {
|
||||
// Do not override player-set pronouns
|
||||
var currentPronouns = pronounDatabase.get(handler.getPlayer().getUuid());
|
||||
if (currentPronouns != null && !currentPronouns.remote()) return;
|
||||
|
||||
var pronounDbUrl = "https://pronoundb.org/api/v1/lookup?platform=minecraft&id=%s"
|
||||
.formatted(handler.getPlayer().getUuid());
|
||||
try {
|
||||
|
@ -109,13 +113,17 @@ public class PlayerPronouns implements ModInitializer {
|
|||
client.sendAsync(req, HttpResponse.BodyHandlers.ofString())
|
||||
.thenApply(HttpResponse::body)
|
||||
.thenAcceptAsync(body -> {
|
||||
// Do not override player-set pronouns (repeated to prevent race-condition from network delays)
|
||||
var currentPronouns2 = pronounDatabase.get(handler.getPlayer().getUuid());
|
||||
if (currentPronouns2 != null && !currentPronouns2.remote()) return;
|
||||
|
||||
var json = JsonHelper.deserialize(body);
|
||||
var pronounsResponse = json.get("pronouns").getAsString();
|
||||
if (!"unspecified".equals(pronounsResponse)) {
|
||||
var pronouns = PRONOUNDB_ID_MAP.getOrDefault(pronounsResponse, "ask");
|
||||
setPronouns(handler.getPlayer(), new Pronouns(pronouns, PronounList.get().getCalculatedPronounStrings().get(pronouns)));
|
||||
setPronouns(handler.getPlayer(), new Pronouns(pronouns, PronounList.get().getCalculatedPronounStrings().get(pronouns), true));
|
||||
}
|
||||
}, server).join();
|
||||
}, server);
|
||||
} catch (URISyntaxException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -33,9 +33,9 @@ public class PronounsCommand {
|
|||
|
||||
Pronouns pronouns;
|
||||
if (pronounTexts.containsKey(pronounsString)) {
|
||||
pronouns = new Pronouns(pronounsString, pronounTexts.get(pronounsString));
|
||||
pronouns = new Pronouns(pronounsString, pronounTexts.get(pronounsString), false);
|
||||
} else {
|
||||
pronouns = new Pronouns(pronounsString, Text.literal(pronounsString));
|
||||
pronouns = new Pronouns(pronounsString, Text.literal(pronounsString), false);
|
||||
}
|
||||
|
||||
if (!PlayerPronouns.setPronouns(player, pronouns)) {
|
||||
|
|
|
@ -58,7 +58,7 @@ public class BinaryPronounDatabase {
|
|||
if (pronounStrings.containsKey(entry.getValue())) {
|
||||
formatted = pronounStrings.get(entry.getValue());
|
||||
}
|
||||
pronouns.put(entry.getKey(), new Pronouns(entry.getValue(), formatted));
|
||||
pronouns.put(entry.getKey(), new Pronouns(entry.getValue(), formatted, false));
|
||||
}
|
||||
return new PalettePronounDatabase(pronouns);
|
||||
}
|
||||
|
|
|
@ -7,10 +7,12 @@ import xyz.nucleoid.codecs.MoreCodecs;
|
|||
|
||||
public record Pronouns(
|
||||
String raw,
|
||||
Text formatted
|
||||
Text formatted,
|
||||
boolean remote
|
||||
) {
|
||||
public static final Codec<Pronouns> CODEC = RecordCodecBuilder.create(instance -> instance.group(
|
||||
Codec.STRING.fieldOf("raw").forGetter(Pronouns::raw),
|
||||
MoreCodecs.TEXT.fieldOf("formatted").forGetter(Pronouns::formatted)
|
||||
MoreCodecs.TEXT.fieldOf("formatted").forGetter(Pronouns::formatted),
|
||||
Codec.BOOL.optionalFieldOf("remote", false).forGetter(Pronouns::remote)
|
||||
).apply(instance, Pronouns::new));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue