Checking for online mode to decide on UUID password storage

This commit is contained in:
samo_lego 2020-05-04 16:46:30 +02:00
parent b726b65e9e
commit 216c7dd45b
3 changed files with 27 additions and 11 deletions

View File

@ -2,7 +2,7 @@
![License](https://img.shields.io/badge/License-MIT-brightgreen) ![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) [![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. Requires Fabric API.

View File

@ -21,7 +21,10 @@ import org.samo_lego.simpleauth.storage.PlayerCache;
import org.samo_lego.simpleauth.storage.SimpleAuthDatabase; import org.samo_lego.simpleauth.storage.SimpleAuthDatabase;
import java.io.File; import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Properties;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
@ -46,6 +49,10 @@ public class SimpleAuth implements DedicatedServerModInitializer {
// Getting game directory // Getting game directory
public static final File gameDirectory = FabricLoader.getInstance().getGameDirectory(); public static final File gameDirectory = FabricLoader.getInstance().getGameDirectory();
// Server properties
public static Properties serverProp = new Properties();
// Mod config // Mod config
public static AuthConfig config; public static AuthConfig config;
@ -65,6 +72,12 @@ public class SimpleAuth implements DedicatedServerModInitializer {
// Connecting to db // Connecting to db
db.openConnection(); 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 // Registering the commands
CommandRegistry.INSTANCE.register(false, dispatcher -> { CommandRegistry.INSTANCE.register(false, dispatcher -> {

View File

@ -2,6 +2,8 @@ package org.samo_lego.simpleauth.utils;
import net.minecraft.entity.player.PlayerEntity; 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 * 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 * 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 { public class UuidConverter {
/** Converts player UUID to offline mode style. private static final boolean isOnline = (boolean) serverProp.getOrDefault("online-mode", false);
*
* @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();
}
/** Converts player UUID to offline mode style. /** Gets player UUID.
* *
* @param player player to get UUID for * @param player player to get UUID for
* @return converted UUID as string * @return converted UUID as string
*/ */
public static String convertUuid(PlayerEntity player) { 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();
} }
} }