From be8203a832b298a7e57120f00bfc8341ca501000 Mon Sep 17 00:00:00 2001 From: ChargedCreeper Date: Sun, 13 Nov 2016 16:12:56 +0100 Subject: [PATCH] Added /unloadchunks. Resolves #1779 (#674) --- .../command/Command_unloadchunks.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_unloadchunks.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unloadchunks.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unloadchunks.java new file mode 100644 index 00000000..4826f16a --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unloadchunks.java @@ -0,0 +1,43 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.Chunk; +import org.bukkit.World; +import org.bukkit.entity.Player; + +@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) +@CommandParameters(description = "Unloads chunks not currently in use", usage = "/", aliases = "rc") +public class Command_unloadchunks extends FreedomCommand { + + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + FUtil.adminAction(sender.getName(), "Unloading unused chunks", false); + + int numChunks = 0; + + for (World world : server.getWorlds()) { + numChunks += unloadUnusedChunks(world); + } + + FUtil.playerMsg(sender, numChunks + " chunks unloaded."); + return true; + } + + private int unloadUnusedChunks(World world) { + int numChunks = 0; + + for (Chunk loadedChunk : world.getLoadedChunks()) { + if (!world.isChunkInUse(loadedChunk.getX(), loadedChunk.getZ())) { + if (world.unloadChunk(loadedChunk)) { + numChunks++; + } + } + } + + return numChunks; + } +}