Bonjour,
je suis en train de faire un plugin, et j'aimerai ajouté une commande pour réparé ma map.
Je sauvegarde déjà toute une zone, qui seront mes blocs originaux, MAIS, j'essaye de comparé les blocs actuels avec les originaux, mais j'ai des problèmes de performances, et de ressources.
Une petite aide pourrait etre le bienvenue ? Merci
Voici déjà quelques méthodes que j'ai crée afin de montré un exemple de mes problèmes de perf
je suis en train de faire un plugin, et j'aimerai ajouté une commande pour réparé ma map.
Je sauvegarde déjà toute une zone, qui seront mes blocs originaux, MAIS, j'essaye de comparé les blocs actuels avec les originaux, mais j'ai des problèmes de performances, et de ressources.
Une petite aide pourrait etre le bienvenue ? Merci

Voici déjà quelques méthodes que j'ai crée afin de montré un exemple de mes problèmes de perf
Java:
private void saveAllOriginalBlocks() {
World world = Bukkit.getWorld("template");
if (world == null) {
return;
}
Location loc1 = LocationTransform.deserializeCoordinate(world.getName(), Config.getString("map.pos1"));
Location loc2 = LocationTransform.deserializeCoordinate(world.getName(), Config.getString("map.pos2"));
Cuboid cuboid = new Cuboid(loc1, loc2);
originalBlocks.addAll(cuboid.getBlocks());
Bukkit.unloadWorld("template", false);
Bukkit.getConsoleSender().sendMessage(Messages.transformColor(Messages.getPrefix() + "&aSauvegarde des blocs originaux effectuée."));
}
public void repairMap(World worldOfPlayer, int percent) {
if (percent < 0 || percent > 100) {
throw new IllegalArgumentException("Le pourcentage doit être compris entre 0 et 100.");
}
int numberToRepair = (percent * originalBlocks.size()) / 100;
Location loc1 = LocationTransform.deserializeCoordinate(worldOfPlayer.getName(), Config.getString("map.pos1"));
Location loc2 = LocationTransform.deserializeCoordinate(worldOfPlayer.getName(), Config.getString("map.pos2"));
Cuboid cuboid = new Cuboid(loc1, loc2);
List<Block> currentMap = cuboid.getBlocks();
int repairedCount = 0;
for (int i = 0; i < currentMap.size() && repairedCount < numberToRepair; i++) {
Block original = originalBlocks.get(i);
Block current = currentMap.get(i);
if (!isSame(original, current)) {
worldOfPlayer.getBlockAt(current.getLocation()).setType(original.getType());
repairedCount++;
}
}
}
public boolean isSame(Block original, Block current) {
return original.getType() == current.getType();
}