Merge pull request #4 from samolego/new-uuid-2

Checking for online mode to decide on UUID password storage
This commit is contained in:
samo_lego 2020-05-04 16:58:39 +02:00 committed by GitHub
commit 12ceb906df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 11 deletions

View File

@ -2,7 +2,7 @@
![License](https://img.shields.io/badge/License-MIT-brightgreen)
[![Curseforge downloads](http://cf.way2muchnoise.eu/full_simpleauth_downloads.svg)](https://www.curseforge.com/minecraft/mc-mods/simpleauth)
![Java CI with Gradle](https://github.com/samolego/SimpleAuth/workflows/Java%20CI%20with%20Gradle/badge.svg)
![Gradle Build](https://github.com/samolego/SimpleAuth/workflows/Gradle%20Build/badge.svg)
Requires Fabric API.

View File

@ -21,7 +21,10 @@ import org.samo_lego.simpleauth.storage.PlayerCache;
import org.samo_lego.simpleauth.storage.SimpleAuthDatabase;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
import java.util.Timer;
import java.util.TimerTask;
@ -46,6 +49,10 @@ public class SimpleAuth implements DedicatedServerModInitializer {
// Getting game directory
public static final File gameDirectory = FabricLoader.getInstance().getGameDirectory();
// Server properties
public static Properties serverProp = new Properties();
// Mod config
public static AuthConfig config;
@ -65,6 +72,12 @@ public class SimpleAuth implements DedicatedServerModInitializer {
// Connecting to db
db.openConnection();
try {
serverProp.load(new FileReader(gameDirectory + "/server.properties"));
} catch (IOException e) {
LOGGER.error("[SimpleAuth] Error while reading server properties: " + e.getMessage());
}
// Registering the commands
CommandRegistry.INSTANCE.register(false, dispatcher -> {

View File

@ -2,6 +2,8 @@ package org.samo_lego.simpleauth.utils;
import net.minecraft.entity.player.PlayerEntity;
import static org.samo_lego.simpleauth.SimpleAuth.serverProp;
/**
* Converts player uuid, to ensure player with "nAmE" and "NamE" get same uuid
* Both players are not allowed to play, since mod mimics Mojang behaviour
@ -9,21 +11,22 @@ import net.minecraft.entity.player.PlayerEntity;
*/
public class UuidConverter {
/** Converts player UUID to offline mode style.
*
* @param playername name of the player to get UUID for
* @return converted UUID as string
*/
public static String convertUuid(String playername) {
return PlayerEntity.getOfflinePlayerUuid(playername).toString();
}
private static final boolean isOnline = (boolean) serverProp.getOrDefault("online-mode", false);
/** Converts player UUID to offline mode style.
/** Gets player UUID.
*
* @param player player to get UUID for
* @return converted UUID as string
*/
public static String convertUuid(PlayerEntity player) {
return convertUuid(player.getName().asString().toLowerCase());
// If server is in online mode online-mode UUIDs should be used
if(isOnline)
return player.getUuidAsString();
/* Lower case is used for Player and PlAyEr to get same UUID
Mimicking Mojang behaviour, where players cannot set their name to
ExAmple if example is already taken.*/
String playername = player.getName().asString().toLowerCase();
return PlayerEntity.getOfflinePlayerUuid(playername).toString();
}
}