Files
Minions/src/main/java/io/github/skippyall/minions/minion/MinionProfileUtils.java
T
2025-04-24 22:09:38 +02:00

71 lines
2.4 KiB
Java

package io.github.skippyall.minions.minion;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.ProfileLookupCallback;
import com.mojang.authlib.properties.PropertyMap;
import com.mojang.authlib.yggdrasil.ProfileResult;
import com.mojang.brigadier.StringReader;
import io.github.skippyall.minions.input.Result;
import net.minecraft.block.entity.SkullBlockEntity;
import net.minecraft.server.MinecraftServer;
import net.minecraft.text.Text;
import net.minecraft.util.StringHelper;
import org.jetbrains.annotations.Nullable;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ForkJoinPool;
import static io.github.skippyall.minions.Minions.LOGGER;
public class MinionProfileUtils {
public static final String PREFIX = "+";
public static GameProfile makeNewMinionProfile(UUID uuidMinion, String username, PropertyMap skin) {
if(uuidMinion == null) {
uuidMinion = UUID.randomUUID();
}
GameProfile newProfile = new GameProfile(uuidMinion, username);
if (skin != null) {
newProfile.getProperties().putAll(skin);
}
LOGGER.info("Minion Profile: {}", newProfile);
return newProfile;
}
public static Result<String, Text> checkMinionNameWithoutPrefix(String name) {
for(char c : name.toCharArray()) {
if(!StringReader.isAllowedInUnquotedString(c)) {
return new Result.Error<>(Text.translatable("minions.generic.name.invalid_char"));
}
}
if((PREFIX + name).length() > 16) {
return new Result.Error<>(Text.translatable("minions.generic.name.too_long"));
}
if(!StringHelper.isValidPlayerName(PREFIX + name)) {
return new Result.Error<>(Text.translatable("minions.generic.name.invalid"));
}
if(MinionPersistentState.INSTANCE.isMinionNameTaken(PREFIX + name)) {
return new Result.Error<>(Text.translatable("minions.generic.name.taken"));
}
return new Result.Success<>(name);
}
public static String newDefaultMinionName() {
int i = 0;
while (MinionPersistentState.INSTANCE.isMinionNameTaken("+Minion" + i)) {
i++;
}
return "+Minion" + i;
}
public static boolean isMinion(UUID uuid) {
return MinionPersistentState.INSTANCE.isMinion(uuid);
}
}