Merge branch 'master' into fix/watchplugin
# Conflicts: # Common/src/main/java/net/frankheijden/serverutils/common/tasks/PluginWatcherTask.java
This commit is contained in:
commit
b5a2fd33ab
4 changed files with 29 additions and 10 deletions
|
|
@ -78,7 +78,7 @@ public class PluginWatcherTask extends AbstractTask {
|
||||||
String previousHash = hash;
|
String previousHash = hash;
|
||||||
long previousHashTimestamp = hashTimestamp;
|
long previousHashTimestamp = hashTimestamp;
|
||||||
|
|
||||||
hash = FileUtils.getHash(file);
|
hash = FileUtils.getHash(file.toPath());
|
||||||
hashTimestamp = System.currentTimeMillis();
|
hashTimestamp = System.currentTimeMillis();
|
||||||
task = ServerUtilsApp.getPlugin().getTaskManager().runTaskLater(() -> {
|
task = ServerUtilsApp.getPlugin().getTaskManager().runTaskLater(() -> {
|
||||||
if (hash.equals(previousHash) || previousHashTimestamp < hashTimestamp - 1000L) {
|
if (hash.equals(previousHash) || previousHashTimestamp < hashTimestamp - 1000L) {
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,16 @@ package net.frankheijden.serverutils.common.utils;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
public class FileUtils {
|
public class FileUtils {
|
||||||
|
|
||||||
|
|
@ -36,17 +37,18 @@ public class FileUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Hash of a file.
|
* Get the Hash of a file at given path.
|
||||||
*
|
*
|
||||||
* @param file The file
|
* @param path The path
|
||||||
* @return The file's hash
|
* @return The file's hash
|
||||||
*/
|
*/
|
||||||
public static String getHash(File file) {
|
public static String getHash(Path path) {
|
||||||
|
byte[] digest;
|
||||||
try {
|
try {
|
||||||
return DigestUtils.md5Hex(new FileInputStream(file));
|
digest = MessageDigest.getInstance("MD5").digest(Files.readAllBytes(path));
|
||||||
} catch (IOException e) {
|
} catch (IOException | NoSuchAlgorithmException ex) {
|
||||||
// Shouldn't happen
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return StringUtils.bytesToHex(digest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package net.frankheijden.serverutils.common.utils;
|
package net.frankheijden.serverutils.common.utils;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class StringUtils {
|
public class StringUtils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -44,4 +46,20 @@ public class StringUtils {
|
||||||
}
|
}
|
||||||
return sb.substring(1);
|
return sb.substring(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final byte[] HEX_ARRAY = "0123456789abcdef".getBytes(StandardCharsets.US_ASCII);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a bytes array to hex.
|
||||||
|
* via https://stackoverflow.com/a/9855338/11239174
|
||||||
|
*/
|
||||||
|
public static String bytesToHex(byte[] bytes) {
|
||||||
|
byte[] hexChars = new byte[bytes.length * 2];
|
||||||
|
for (int j = 0; j < bytes.length; j++) {
|
||||||
|
int v = bytes[j] & 0xFF;
|
||||||
|
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
|
||||||
|
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
|
||||||
|
}
|
||||||
|
return new String(hexChars, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ subprojects {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'commons-codec:commons-codec:1.15'
|
|
||||||
implementation 'com.github.FrankHeijden:MinecraftReflection:1.0.0'
|
implementation 'com.github.FrankHeijden:MinecraftReflection:1.0.0'
|
||||||
|
|
||||||
testCompile 'org.assertj:assertj-core:3.18.1'
|
testCompile 'org.assertj:assertj-core:3.18.1'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue