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.gui.GUIListener;
|
||||||
import com.alttd.fishingevent.listeners.CatchFish;
|
import com.alttd.fishingevent.listeners.CatchFish;
|
||||||
import com.alttd.fishingevent.npc.NPCManager;
|
import com.alttd.fishingevent.npc.NPCManager;
|
||||||
|
import com.alttd.fishingevent.points.LoadTask;
|
||||||
import com.alttd.fishingevent.points.PointsManagement;
|
import com.alttd.fishingevent.points.PointsManagement;
|
||||||
|
import com.alttd.fishingevent.points.SaveTask;
|
||||||
import com.alttd.fishingevent.util.Logger;
|
import com.alttd.fishingevent.util.Logger;
|
||||||
import dev.sergiferry.playernpc.api.NPCLib;
|
import dev.sergiferry.playernpc.api.NPCLib;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
@ -17,6 +19,8 @@ import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public final class FishingEvent extends JavaPlugin {
|
public final class FishingEvent extends JavaPlugin {
|
||||||
|
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
@ -31,6 +35,11 @@ public final class FishingEvent extends JavaPlugin {
|
||||||
}
|
}
|
||||||
registerEvents(getServer().getPluginManager());
|
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)
|
//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();
|
reloadFishConfigs();
|
||||||
registerCommands();
|
registerCommands();
|
||||||
NPCManager.spawnNPCs(this, logger);
|
NPCManager.spawnNPCs(this, logger);
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,48 @@
|
||||||
package com.alttd.fishingevent.points;
|
package com.alttd.fishingevent.points;
|
||||||
|
|
||||||
import com.alttd.fishingevent.FishingEvent;
|
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 PointsManagement pointsManagement;
|
||||||
private final FishingEvent fishingEvent;
|
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.pointsManagement = pointsManagement;
|
||||||
this.fishingEvent = fishingEvent;
|
this.fishingEvent = fishingEvent;
|
||||||
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public boolean loadOldPointsData() {
|
||||||
public void run() {
|
File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
||||||
// File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
if (!file.exists())
|
||||||
// Object2IntOpenHashMap<UUID> loadedMap;
|
return false;
|
||||||
// try {
|
Object2IntOpenHashMap<UUID> loadedMap;
|
||||||
// //noinspection unchecked
|
try {
|
||||||
// loadedMap = (Object2IntOpenHashMap<UUID>) BinIO.loadObject(file);
|
Object o = BinIO.loadObject(file);
|
||||||
// } catch (IOException | ClassNotFoundException e) {
|
if (!(o instanceof Object2IntOpenHashMap<?> object2IntOpenHashMap)) {
|
||||||
// e.printStackTrace();
|
logger.warning("Points file had invalid data");
|
||||||
// return;
|
return false;
|
||||||
// }
|
}
|
||||||
// pointsManagement.setMap(loadedMap);
|
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;
|
package com.alttd.fishingevent.points;
|
||||||
|
|
||||||
import com.alttd.fishingevent.FishingEvent;
|
import com.alttd.fishingevent.FishingEvent;
|
||||||
|
import com.alttd.fishingevent.util.Logger;
|
||||||
import it.unimi.dsi.fastutil.io.BinIO;
|
import it.unimi.dsi.fastutil.io.BinIO;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -10,10 +11,11 @@ public class SaveTask implements Runnable {
|
||||||
|
|
||||||
private final PointsManagement pointsManagement;
|
private final PointsManagement pointsManagement;
|
||||||
private final FishingEvent fishingEvent;
|
private final FishingEvent fishingEvent;
|
||||||
|
private final Logger logger;
|
||||||
public SaveTask(PointsManagement pointsManagement, FishingEvent fishingEvent) {
|
public SaveTask(PointsManagement pointsManagement, FishingEvent fishingEvent, Logger logger) {
|
||||||
this.pointsManagement = pointsManagement;
|
this.pointsManagement = pointsManagement;
|
||||||
this.fishingEvent = fishingEvent;
|
this.fishingEvent = fishingEvent;
|
||||||
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -21,7 +23,7 @@ public class SaveTask implements Runnable {
|
||||||
File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
File file = new File(fishingEvent.getDataFolder(), "map.bin");
|
||||||
try {
|
try {
|
||||||
BinIO.storeObject(pointsManagement.getPointsMap(), file);
|
BinIO.storeObject(pointsManagement.getPointsMap(), file);
|
||||||
System.out.println("Object2IntOpenHashMap saved to map.bin");
|
logger.info("Object2IntOpenHashMap saved to map.bin");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user