71 lines
2.4 KiB
Java
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);
|
|
}
|
|
}
|