Enabled loading/saving points data
This commit is contained in:
parent
6046fdb15a
commit
7960cece04
|
|
@ -9,7 +9,9 @@ import com.alttd.fishingevent.fish_generator.WaterFishGenerator;
|
|||
import com.alttd.fishingevent.gui.GUIListener;
|
||||
import com.alttd.fishingevent.listeners.CatchFish;
|
||||
import com.alttd.fishingevent.npc.NPCManager;
|
||||
import com.alttd.fishingevent.points.LoadTask;
|
||||
import com.alttd.fishingevent.points.PointsManagement;
|
||||
import com.alttd.fishingevent.points.SaveTask;
|
||||
import com.alttd.fishingevent.util.Logger;
|
||||
import dev.sergiferry.playernpc.api.NPCLib;
|
||||
import org.bukkit.Bukkit;
|
||||
|
|
@ -17,6 +19,8 @@ import org.bukkit.plugin.PluginManager;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public final class FishingEvent extends JavaPlugin {
|
||||
|
||||
private Logger logger;
|
||||
|
|
@ -31,6 +35,11 @@ public final class FishingEvent extends JavaPlugin {
|
|||
}
|
||||
registerEvents(getServer().getPluginManager());
|
||||
//add a way to stop and start the fishing event and a way to stop all fishing (so 3 modes normal, active, disabled)
|
||||
if (new LoadTask(PointsManagement.getInstance(), this, logger).loadOldPointsData())
|
||||
logger.info("Loaded old points data");
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new SaveTask(PointsManagement.getInstance(), this, logger),
|
||||
TimeUnit.MINUTES.toSeconds(5) * 20,
|
||||
TimeUnit.MINUTES.toSeconds(5) * 20);
|
||||
reloadFishConfigs();
|
||||
registerCommands();
|
||||
NPCManager.spawnNPCs(this, logger);
|
||||
|
|
|
|||
|
|
@ -1,28 +1,48 @@
|
|||
package com.alttd.fishingevent.points;
|
||||
|
||||
import com.alttd.fishingevent.FishingEvent;
|
||||
import com.alttd.fishingevent.util.Logger;
|
||||
import it.unimi.dsi.fastutil.io.BinIO;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||
|
||||
public class LoadTask implements Runnable {
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class LoadTask {
|
||||
|
||||
private final PointsManagement pointsManagement;
|
||||
private final FishingEvent fishingEvent;
|
||||
private final Logger logger;
|
||||
|
||||
public LoadTask(PointsManagement pointsManagement, FishingEvent fishingEvent) {
|
||||
public LoadTask(PointsManagement pointsManagement, FishingEvent fishingEvent, Logger logger) {
|
||||
this.pointsManagement = pointsManagement;
|
||||
this.fishingEvent = fishingEvent;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
// File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
||||
// Object2IntOpenHashMap<UUID> loadedMap;
|
||||
// try {
|
||||
// //noinspection unchecked
|
||||
// loadedMap = (Object2IntOpenHashMap<UUID>) BinIO.loadObject(file);
|
||||
// } catch (IOException | ClassNotFoundException e) {
|
||||
// e.printStackTrace();
|
||||
// return;
|
||||
// }
|
||||
// pointsManagement.setMap(loadedMap);
|
||||
public boolean loadOldPointsData() {
|
||||
File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
||||
if (!file.exists())
|
||||
return false;
|
||||
Object2IntOpenHashMap<UUID> loadedMap;
|
||||
try {
|
||||
Object o = BinIO.loadObject(file);
|
||||
if (!(o instanceof Object2IntOpenHashMap<?> object2IntOpenHashMap)) {
|
||||
logger.warning("Points file had invalid data");
|
||||
return false;
|
||||
}
|
||||
loadedMap = castToObject2IntOpenHashMap(object2IntOpenHashMap);
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
logger.warning("Points file had invalid data");
|
||||
return false;
|
||||
}
|
||||
pointsManagement.setMap(loadedMap);
|
||||
return true;
|
||||
}
|
||||
|
||||
private <T> Object2IntOpenHashMap<T> castToObject2IntOpenHashMap(Object2IntOpenHashMap<?> object2IntOpenHashMap) {
|
||||
return (Object2IntOpenHashMap<T>) object2IntOpenHashMap;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.alttd.fishingevent.points;
|
||||
|
||||
import com.alttd.fishingevent.FishingEvent;
|
||||
import com.alttd.fishingevent.util.Logger;
|
||||
import it.unimi.dsi.fastutil.io.BinIO;
|
||||
|
||||
import java.io.File;
|
||||
|
|
@ -10,10 +11,11 @@ public class SaveTask implements Runnable {
|
|||
|
||||
private final PointsManagement pointsManagement;
|
||||
private final FishingEvent fishingEvent;
|
||||
|
||||
public SaveTask(PointsManagement pointsManagement, FishingEvent fishingEvent) {
|
||||
private final Logger logger;
|
||||
public SaveTask(PointsManagement pointsManagement, FishingEvent fishingEvent, Logger logger) {
|
||||
this.pointsManagement = pointsManagement;
|
||||
this.fishingEvent = fishingEvent;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -21,7 +23,7 @@ public class SaveTask implements Runnable {
|
|||
File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
||||
try {
|
||||
BinIO.storeObject(pointsManagement.getPointsMap(), file);
|
||||
System.out.println("Object2IntOpenHashMap saved to map.bin");
|
||||
logger.info("Object2IntOpenHashMap saved to map.bin");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user