fix survival data loss and lifecycle: crafting consumes the grid atomically in the click (no same-tick dupes), photos that do not fit are dropped like /give, failed or aborted renders give the film back (offline via pending.yml, crash recovery on start) and keep a blank placeholder instead of turning into world maps, shutdown finishes every job synchronously without scheduling after disable and tracing stops on interrupt, renderers detached and reattached across /reload, vanilla map renderer really removed, photos stored per primary world uid with migration and no overwrite on a reset map counter, cleanup only deletes photos unseen for the given days and referenced nowhere in loaded state or saved world and player data, async dither fallback, cooldown map cleared on quit, cleanup permission without op bypass
This commit is contained in:
1 parent
a3fbe122e3
commit
4c52bc2dca
14 files changed
+819
-106
No files matched your search
@@ -20,8 +20,10 @@ import eu.mhsl.minecraft.pixelpics.render.tint.BiomeTintProvider;
|
||||
import eu.mhsl.minecraft.pixelpics.survival.CameraListener;
|
||||
import eu.mhsl.minecraft.pixelpics.survival.CraftingListener;
|
||||
import eu.mhsl.minecraft.pixelpics.survival.JoinListener;
|
||||
import eu.mhsl.minecraft.pixelpics.survival.PendingPhotos;
|
||||
import eu.mhsl.minecraft.pixelpics.survival.SurvivalRecipes;
|
||||
import eu.mhsl.minecraft.pixelpics.utils.MapColorPalette;
|
||||
import eu.mhsl.minecraft.pixelpics.utils.MapManager;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
@@ -41,6 +43,7 @@ public final class Main extends JavaPlugin {
|
||||
private ResourcePack resourcePack;
|
||||
private DefaultScreenRenderer screenRenderer;
|
||||
private RenderManager renderManager;
|
||||
private PendingPhotos pendingPhotos;
|
||||
|
||||
// PDC keys: photo picture id (STRING), camera/film markers (BYTE), loaded film on a camera (INTEGER)
|
||||
public final NamespacedKey pictureIdFlag = new NamespacedKey(this, "imageid");
|
||||
@@ -53,6 +56,9 @@ public final class Main extends JavaPlugin {
|
||||
instance = this;
|
||||
|
||||
saveDefaultConfig();
|
||||
MapManager.init(getServer().getWorlds().getFirst().getUID());
|
||||
pendingPhotos = new PendingPhotos(getDataFolder());
|
||||
pendingPhotos.recoverAbandoned();
|
||||
initRenderManager();
|
||||
|
||||
Objects.requireNonNull(getCommand("pixelPic")).setExecutor(new PixelPicsCommand());
|
||||
@@ -61,6 +67,7 @@ public final class Main extends JavaPlugin {
|
||||
Bukkit.getPluginManager().registerEvents(listener, this);
|
||||
}
|
||||
SurvivalRecipes.register();
|
||||
MapManager.reattachAfterReload(OnMapInitialize::attach);
|
||||
|
||||
initRenderer();
|
||||
}
|
||||
@@ -150,9 +157,10 @@ public final class Main extends JavaPlugin {
|
||||
public void onDisable() {
|
||||
SurvivalRecipes.unregister();
|
||||
if (renderManager != null) {
|
||||
renderManager.shutdown();
|
||||
renderManager.shutdown(); // delivers or fails every open job synchronously (film refunds)
|
||||
renderManager = null;
|
||||
}
|
||||
MapManager.detachAll();
|
||||
if (resourcePack != null) {
|
||||
resourcePack.close();
|
||||
resourcePack = null;
|
||||
@@ -164,6 +172,10 @@ public final class Main extends JavaPlugin {
|
||||
return this.screenRenderer;
|
||||
}
|
||||
|
||||
public PendingPhotos getPendingPhotos() {
|
||||
return this.pendingPhotos;
|
||||
}
|
||||
|
||||
public RenderManager getRenderManager() {
|
||||
return this.renderManager;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user