Dieser Commit ist enthalten in:
Silent 2022-03-04 23:31:30 +01:00
Ursprung 9cb2fb0fd2
Commit 47afd36dd7
7 geänderte Dateien mit 45 neuen und 22 gelöschten Zeilen

Datei anzeigen

@ -6,7 +6,7 @@
<groupId>tsp.headdb</groupId> <groupId>tsp.headdb</groupId>
<artifactId>HeadDB</artifactId> <artifactId>HeadDB</artifactId>
<version>4.0.0</version> <version>4.1.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>HeadDB</name> <name>HeadDB</name>

Datei anzeigen

@ -5,6 +5,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import tsp.headdb.api.HeadAPI; import tsp.headdb.api.HeadAPI;
import tsp.headdb.command.HeadDBCommand; import tsp.headdb.command.HeadDBCommand;
import tsp.headdb.economy.TreasuryProvider; import tsp.headdb.economy.TreasuryProvider;
import tsp.headdb.implementation.DataSaveTask;
import tsp.headdb.implementation.DatabaseUpdateTask; import tsp.headdb.implementation.DatabaseUpdateTask;
import tsp.headdb.economy.BasicEconomyProvider; import tsp.headdb.economy.BasicEconomyProvider;
import tsp.headdb.economy.VaultProvider; import tsp.headdb.economy.VaultProvider;
@ -14,7 +15,6 @@ import tsp.headdb.listener.PagedPaneListener;
import tsp.headdb.storage.PlayerDataFile; import tsp.headdb.storage.PlayerDataFile;
import tsp.headdb.util.Localization; import tsp.headdb.util.Localization;
import tsp.headdb.util.Log; import tsp.headdb.util.Log;
import tsp.headdb.util.Metrics;
import tsp.headdb.util.Utils; import tsp.headdb.util.Utils;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -53,9 +53,9 @@ public class HeadDB extends JavaPlugin {
} }
long refresh = getConfig().getLong("refresh") * 20; long refresh = getConfig().getLong("refresh") * 20;
HeadAPI.getDatabase().update(heads -> Log.info("Fetched " + HeadAPI.getHeads().size() + " heads!")); // Update database on startup
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new DatabaseUpdateTask(), refresh, refresh); // Update database on set interval (also saves data)
HeadAPI.getDatabase().setRefresh(refresh); HeadAPI.getDatabase().setRefresh(refresh);
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new DatabaseUpdateTask(), 0, refresh);
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new DataSaveTask(), refresh, refresh);
new JoinListener(this); new JoinListener(this);
new MenuListener(this); new MenuListener(this);
@ -64,7 +64,7 @@ public class HeadDB extends JavaPlugin {
getCommand("headdb").setExecutor(new HeadDBCommand()); getCommand("headdb").setExecutor(new HeadDBCommand());
Log.debug("Starting metrics..."); Log.debug("Starting metrics...");
new Metrics(this, 9152); initMetrics();
Utils.isLatestVersion(this, 84967, latest -> { Utils.isLatestVersion(this, 84967, latest -> {
if (!latest) { if (!latest) {
@ -78,6 +78,7 @@ public class HeadDB extends JavaPlugin {
@Override @Override
public void onDisable() { public void onDisable() {
Bukkit.getScheduler().cancelTasks(this);
this.playerData.save(); this.playerData.save();
} }
@ -109,5 +110,21 @@ public class HeadDB extends JavaPlugin {
this.localization.load(); this.localization.load();
} }
private void initMetrics() {
Metrics metrics = new Metrics(this, 9152);
if (!metrics.isEnabled()) {
Log.debug("Metrics are disabled.");
return;
}
metrics.addCustomChart(new Metrics.SimplePie("economy_provider", () -> {
if (this.getEconomyProvider() != null) {
return this.getConfig().getString("economy.provider");
}
return "None";
}));
}
} }

Datei anzeigen

@ -1,4 +1,4 @@
package tsp.headdb.util; package tsp.headdb;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -28,7 +28,7 @@ import java.util.zip.GZIPOutputStream;
* Check out https://bStats.org/ to learn more about bStats! * Check out https://bStats.org/ to learn more about bStats!
*/ */
@SuppressWarnings({"WeakerAccess", "unused"}) @SuppressWarnings({"WeakerAccess", "unused"})
public class Metrics { class Metrics {
static { static {
// You can use the property to disable the check in your test environment // You can use the property to disable the check in your test environment

Datei anzeigen

@ -0,0 +1,11 @@
package tsp.headdb.implementation;
import tsp.headdb.HeadDB;
public class DataSaveTask implements Runnable {
@Override
public void run() {
HeadDB.getInstance().getPlayerData().save();
}
}

Datei anzeigen

@ -1,6 +1,5 @@
package tsp.headdb.implementation; package tsp.headdb.implementation;
import tsp.headdb.HeadDB;
import tsp.headdb.api.HeadAPI; import tsp.headdb.api.HeadAPI;
import tsp.headdb.util.Log; import tsp.headdb.util.Log;
@ -11,7 +10,6 @@ public class DatabaseUpdateTask implements Runnable {
@Override @Override
public void run() { public void run() {
HeadDB.getInstance().getPlayerData().save();
HeadAPI.getDatabase().update(heads -> Log.info("Fetched " + HeadAPI.getHeads().size() + " heads!")); HeadAPI.getDatabase().update(heads -> Log.info("Fetched " + HeadAPI.getHeads().size() + " heads!"));
} }

Datei anzeigen

@ -25,6 +25,7 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
/** /**
@ -116,8 +117,9 @@ public class HeadDatabase {
return result; return result;
} }
@Nonnull
public List<Head> getHeads(Category category) { public List<Head> getHeads(Category category) {
return Collections.unmodifiableList(HEADS.get(category)); return HEADS.get(category) != null ? Collections.unmodifiableList(HEADS.get(category)) : new ArrayList<>();
} }
/** /**
@ -127,20 +129,9 @@ public class HeadDatabase {
*/ */
@Nonnull @Nonnull
public List<Head> getHeads() { public List<Head> getHeads() {
if (HEADS.isEmpty() || isLastUpdateOld()) {
// Technically this should never be reached due to the update task in the main class.
update(result -> {
if (result != null) {
for (Category category : result.keySet()) {
HEADS.put(category, result.get(category));
}
}
});
}
List<Head> heads = new ArrayList<>(); List<Head> heads = new ArrayList<>();
for (Category category : HEADS.keySet()) { for (Category category : HEADS.keySet()) {
heads.addAll(HEADS.get(category)); heads.addAll(getHeads(category));
} }
return heads; return heads;
} }

Datei anzeigen

@ -122,11 +122,17 @@ public class PlayerDataFile {
} }
public void save() { public void save() {
if (main == null) {
Log.debug("No data to save! Skipping...");
return;
}
FileWriter writer; FileWriter writer;
try { try {
writer = new FileWriter(file); writer = new FileWriter(file);
writer.write(main.toString()); writer.write(main.toString());
writer.close(); writer.close();
Log.debug("Saved data to " + file.getName());
} catch (IOException e) { } catch (IOException e) {
Log.error("Failed to save player_data.json contents!"); Log.error("Failed to save player_data.json contents!");
Log.error(e); Log.error(e);