summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/tilechunks
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/tilechunks
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/tilechunks')
-rw-r--r--src/main/java/com/redstoner/modules/tilechunks/LaggyTileChunk.java21
-rw-r--r--src/main/java/com/redstoner/modules/tilechunks/TileChunks.cmd19
-rw-r--r--src/main/java/com/redstoner/modules/tilechunks/TileChunks.java83
3 files changed, 123 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/tilechunks/LaggyTileChunk.java b/src/main/java/com/redstoner/modules/tilechunks/LaggyTileChunk.java
new file mode 100644
index 0000000..e2456d3
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/tilechunks/LaggyTileChunk.java
@@ -0,0 +1,21 @@
+package com.redstoner.modules.tilechunks;
+
+import org.bukkit.Location;
+import org.bukkit.World;
+
+public class LaggyTileChunk {
+ public final int x, y, z, amount;
+ public final World world;
+
+ public LaggyTileChunk(int x, int y, int z, World world, int amount) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.world = world;
+ this.amount = amount;
+ }
+
+ public Location getLocation() {
+ return new Location(world, x, y, z);
+ }
+}
diff --git a/src/main/java/com/redstoner/modules/tilechunks/TileChunks.cmd b/src/main/java/com/redstoner/modules/tilechunks/TileChunks.cmd
new file mode 100644
index 0000000..c0e0773
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/tilechunks/TileChunks.cmd
@@ -0,0 +1,19 @@
+command lct {
+ perm utils.tilechunks;
+
+ list {
+ run list_cmd;
+ help re-lists already scanned chunks;
+ }
+
+ [int:amount] {
+ run scan_cmd amount;
+ help scans for laggy chunks;
+ }
+
+ tp [int:number] {
+ run tp number;
+ help teleports to the specified chunk;
+ type player;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/redstoner/modules/tilechunks/TileChunks.java b/src/main/java/com/redstoner/modules/tilechunks/TileChunks.java
new file mode 100644
index 0000000..75a3fd2
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/tilechunks/TileChunks.java
@@ -0,0 +1,83 @@
+package com.redstoner.modules.tilechunks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Chunk;
+import org.bukkit.Location;
+import org.bukkit.World;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.nemez.cmdmgr.Command;
+import com.nemez.cmdmgr.Command.AsyncType;
+import com.redstoner.annotations.Commands;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.CommandHolderType;
+import com.redstoner.modules.Module;
+
+@Commands(CommandHolderType.File)
+@Version(major = 4, minor = 1, revision = 0, compatible = 4)
+public class TileChunks implements Module
+{
+ private List<LaggyTileChunk> laggyChunks = new ArrayList<>();
+
+ private void scan(int amount)
+ {
+ laggyChunks.clear();
+ for (World world : Bukkit.getServer().getWorlds())
+ {
+ for (Chunk chunk : world.getLoadedChunks())
+ {
+ int amount2 = chunk.getTileEntities().length;
+ if (amount2 > amount)
+ {
+ Location entLoc = chunk.getTileEntities()[0].getLocation();
+ laggyChunks.add(new LaggyTileChunk(entLoc.getBlockX(), entLoc.getBlockY(), entLoc.getBlockZ(),
+ world, amount2));
+ }
+ }
+ }
+ }
+
+ @Command(hook = "list_cmd")
+ public void list(CommandSender sender)
+ {
+ if (laggyChunks.size() > 0)
+ {
+ ArrayList<String> message = new ArrayList<>();
+ for (LaggyTileChunk lc : laggyChunks)
+ {
+ message.add("§b[§a" + laggyChunks.indexOf(lc) + "§b]: §a" + lc.x + "§7, §a" + lc.y + "§7, §a" + lc.z
+ + " §7(" + lc.world.getName() + ") §a- §b" + lc.amount + " tile entities");
+ }
+ message.add("§2-------------------");
+ getLogger().message(sender, message.toArray(new String[] {}));
+ }
+ else
+ getLogger().message(sender, true, "Couldn't find any chunks with that many tile entities.");
+ }
+
+ @Command(hook = "scan_cmd", async = AsyncType.ALWAYS)
+ public void scan_cmd(CommandSender sender, int amount)
+ {
+ scan(amount);
+ list(sender);
+ }
+
+ @Command(hook = "tp")
+ public void tp(CommandSender sender, int number)
+ {
+ Player player = (Player) sender;
+ if (number < laggyChunks.size())
+ {
+ player.teleport(laggyChunks.get(number).getLocation());
+ getLogger().message(player, "§aTeleported to chunk " + number + "!");
+ }
+ else
+ {
+ getLogger().message(sender, true, "§4Invalid chunk number! Use §e/lc list §4to show laggy chunks!");
+ }
+ }
+}