Reset de world après un mini-jeu

LEZIKO

Architecte en herbe
2 Novembre 2021
93
2
69
19
Bonjour,

Je fais appel à votre aide aujourd'hui car ça fait quelques jours que je passe mon temps à faire un reset du monde mais sans succès, hors je souhaite qu'à la fin du mini jeu, que le monde revienne comme avant le jeu (sans blocks cassés...) le mieux que j'ai réussi à faire c'est de supprimer le monde et dans charger un nouveau mais ce n'est pas ce que je souhaite faire. Je met en pièce jointe ce que j'ai fait, je vous remercie d'avance pour votre aide :)*

LEZIKO
 

Fichiers joints

  • image_2022-04-10_124319739.png
    image_2022-04-10_124319739.png
    73 KB · Affichages: 71
  • image_2022-04-10_124337480.png
    image_2022-04-10_124337480.png
    43.1 KB · Affichages: 77

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Bonjour,

Si la partie est rapide et que tu te moques de perdre les données en cas d'arrêt du serveur, tu peux simplement désactiver la sauvegarde automatique du monde, puis le décharger sans sauvegarder et recharger le monde pour le remettre à l'état original.

Java:
World world = ...;
world.setAutosave(false);
Bukkit.unloadWorld(world, false /* don't save */);

Attention par contre à avoir une sauvegarde de la map si jamais ton plugin crash avant de désactiver la sauvegarde automatique ou si un autre plugin force la sauvegarde du monde (par ex. décharger un monde avec Multiverse).

Cordialement,
ShE3py
 

LEZIKO

Architecte en herbe
2 Novembre 2021
93
2
69
19
Bonjour,

Si la partie est rapide et que tu te moques de perdre les données en cas d'arrêt du serveur, tu peux simplement désactiver la sauvegarde automatique du monde, puis le décharger sans sauvegarder et recharger le monde pour le remettre à l'état original.

Java:
World world = ...;
world.setAutosave(false);
Bukkit.unloadWorld(world, false /* don't save */);

Attention par contre à avoir une sauvegarde de la map si jamais ton plugin crash avant de désactiver la sauvegarde automatique ou si un autre plugin force la sauvegarde du monde (par ex. décharger un monde avec Multiverse).

Cordialement,
ShE3py
Bonjour, je vous remercie pour cette réponse j'ai mis les 3 lignes dans le onDisable mais sans succès aurais-je mal fait quelque chose ? ou oublié quelque chose ?

Merci d'avance,

LEZIKO
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Il faut que tu désactives la sauvegarde automatique juste après avoir chargé le monde dans ton onEnable() sinon ça sert à rien ._.
L'idée consiste simplement à quitter le monde sans sauvegarder, donc il faut désactiver la sauvegarde automatique avant que les joueurs ne soient téléportés dans le monde.
 

LEZIKO

Architecte en herbe
2 Novembre 2021
93
2
69
19
D'accord merci beaucoup et pour charger le monde j'ai trouvé Bukkit.createworld, est-ce bien ça ?
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Écrit et place ton curseur d'écriture sur la fonction createWorld puis fait CTRL + B, cela devrait t'ouvrir le code source de la fonction, puis en haut à droite dans l'éditeur de texte appuie sur « Download sources », ça téléchargera la documentation.
Donc oui la fonction createWorld charge ou créer un nouveau monde si celui-ci n'existe pas encore.

Et dans que j'y suis j'avais pas vu avant :
Java:
if(!world.equals(null)) {
    // [...]
}

Ça ne marchera pas pour la nullité parce que tu ne peux pas appeler de fonction sur un objet qui n'existe pas, tu dois le faire avec un opérateur de comparaison :
Java:
if(world != null) {
    // [...]
}
 

LEZIKO

Architecte en herbe
2 Novembre 2021
93
2
69
19
Merci de ta réponse, je ne sais pas pourquoi mais ça ne veut pas fonctionner, je met en pièce jointe ce que j'ai mis dans mon onEnable et onDisable et je me disais que peut-être le problème serait que dans multiverse core ça sauvegarde car là je ne sais pas...

Merci beaucoup de l'aide :)
 

Fichiers joints

  • image_2022-04-10_194302292.png
    image_2022-04-10_194302292.png
    67.9 KB · Affichages: 62
  • image_2022-04-10_194313574.png
    image_2022-04-10_194313574.png
    20 KB · Affichages: 63

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Le monde n'est pas censé être nul à cette étape-là, donc c'est un peu de la mauvaise pratique de n'afficher aucun message d'erreur et de continuer à faire ce qui est faisable.
Java:
World world = this.getServer().createWorld(new WorldCreator("sw1"));
if(world == null) {
    this.getLogger().severe("Unable to create the world instance");
    this.setEnabled(false);
   
    return;
}

world.setAutosave(false);

Mais sinon ça reste un peu standard de simplement copier le monde pour en instancier un nouveau, Minecraft ne permet pas vraiment de faire autrement.
 

LEZIKO

Architecte en herbe
2 Novembre 2021
93
2
69
19
Le monde n'est pas censé être nul à cette étape-là, donc c'est un peu de la mauvaise pratique de n'afficher aucun message d'erreur et de continuer à faire ce qui est faisable.
Java:
World world = this.getServer().createWorld(new WorldCreator("sw1"));
if(world == null) {
    this.getLogger().severe("Unable to create the world instance");
    this.setEnabled(false);
  
    return;
}

world.setAutosave(false);

Mais sinon ça reste un peu standard de simplement copier le monde pour en instancier un nouveau, Minecraft ne permet pas vraiment de faire autrement.
j'ai testé mais les blocs restent à leur place rien ne bouge c'est chelou