forked from stefatorus/LagAssist
Deliable
3 years ago
1 changed files with 144 additions and 145 deletions
@ -1,145 +1,144 @@ |
|||||
package com.entryrise.lagassist.chunks; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.Collections; |
|
||||
import java.util.HashMap; |
|
||||
import java.util.LinkedHashMap; |
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
import java.util.Set; |
|
||||
import java.util.stream.Collectors; |
|
||||
import java.util.stream.Stream; |
|
||||
|
|
||||
import org.bukkit.Bukkit; |
|
||||
import org.bukkit.Chunk; |
|
||||
import org.bukkit.Location; |
|
||||
import org.bukkit.World; |
|
||||
import org.bukkit.block.BlockState; |
|
||||
import org.bukkit.command.CommandSender; |
|
||||
import org.bukkit.entity.Entity; |
|
||||
import org.bukkit.entity.Player; |
|
||||
|
|
||||
import com.entryrise.lagassist.Main; |
|
||||
|
|
||||
public class ChkAnalyse { |
|
||||
|
|
||||
protected static int ammoshow = Main.config.getInt("chunkanalyse.ammount"); |
|
||||
protected static Map<String, Integer> values = new HashMap<String, Integer>(); |
|
||||
private static List<ChkStats> scores = new ArrayList<ChkStats>(); |
|
||||
|
|
||||
public static void Enabler() { |
|
||||
Bukkit.getLogger().info(" §e[§a✔§e] §fChunk Analyser."); |
|
||||
|
|
||||
Set<String> slist = Main.config.getConfigurationSection("chunkanalyse.values").getKeys(false); |
|
||||
|
|
||||
for (String s : slist) { |
|
||||
int value = Main.config.getInt("chunkanalyse.values." + s); |
|
||||
values.put(s.toLowerCase(), value); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
public static void analyseChunks(Player p) { |
|
||||
scores.clear(); |
|
||||
for (World w : Bukkit.getWorlds()) { |
|
||||
for (Chunk ch : w.getLoadedChunks()) { |
|
||||
scores.add(new ChkStats(ch, false)); |
|
||||
} |
|
||||
} |
|
||||
Bukkit.getScheduler().runTaskAsynchronously(Main.p, new Runnable() { |
|
||||
@Override |
|
||||
public void run() { |
|
||||
|
|
||||
for (ChkStats ch : scores) { |
|
||||
ch.genScores(); |
|
||||
} |
|
||||
Collections.sort(scores); |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER §2§l⬛⬛⬛⬛⬛⬛"); |
|
||||
p.sendMessage(""); |
|
||||
|
|
||||
for (int i = 0; i < ammoshow; i++) { |
|
||||
ChkStats cs = scores.get(i); |
|
||||
p.spigot().sendMessage(cs.genText()); |
|
||||
} |
|
||||
|
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
|
||||
} |
|
||||
}); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public static void analyseChunks(CommandSender p) { |
|
||||
Map<Chunk, Integer> chunkscore = new HashMap<Chunk, Integer>(); |
|
||||
for (World w : Bukkit.getWorlds()) { |
|
||||
for (Chunk ch : w.getLoadedChunks()) { |
|
||||
if (!chunkscore.containsKey(ch)) { |
|
||||
chunkscore.put(ch, 0); |
|
||||
} |
|
||||
BlockState[] tiles = ch.getTileEntities(); |
|
||||
for (BlockState blkst : tiles) { |
|
||||
String m = blkst.getType().toString().toLowerCase(); |
|
||||
if (values.containsKey(m)) { |
|
||||
chunkscore.put(ch, chunkscore.get(ch) + values.get(m)); |
|
||||
} |
|
||||
} |
|
||||
Entity[] ents = ch.getEntities(); |
|
||||
for (Entity e : ents) { |
|
||||
String et = e.getType().toString().toLowerCase(); |
|
||||
if (values.containsKey(et)) { |
|
||||
chunkscore.put(ch, chunkscore.get(ch) + values.get(et)); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage("⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER ⬛⬛⬛⬛⬛⬛"); |
|
||||
p.sendMessage(""); |
|
||||
|
|
||||
Stream<Map.Entry<Chunk, Integer>> sorted = chunkscore.entrySet().stream() |
|
||||
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue())); |
|
||||
|
|
||||
Map<Chunk, Integer> topTen = sorted.limit(ammoshow) |
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); |
|
||||
|
|
||||
for (Chunk ch : topTen.keySet()) { |
|
||||
int score = chunkscore.get(ch); |
|
||||
p.sendMessage(" ✸ Chunk (" + String.valueOf(ch.getX()) + " " + String.valueOf(ch.getZ()) + ") - Score " |
|
||||
+ String.valueOf(score)); |
|
||||
} |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage("⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
public static void analyseCurrentChunk(CommandSender s) { |
|
||||
if (!(s instanceof Player)) { |
|
||||
s.sendMessage(Main.PREFIX + "You cannot analyse the current chunk from console."); |
|
||||
return; |
|
||||
} |
|
||||
Player p = (Player) s; |
|
||||
Location l = p.getLocation(); |
|
||||
ChkStats stats = new ChkStats(l.getChunk(), true); |
|
||||
|
|
||||
int coords[] = stats.getCoords(); |
|
||||
|
|
||||
String crds = String.valueOf(coords[0]) + " " + String.valueOf(coords[1]); |
|
||||
|
|
||||
String cmd = "lagassist tpchunk " + p.getWorld().getName() + " " + String.valueOf(coords[0]) + " " |
|
||||
+ String.valueOf(coords[1]); |
|
||||
|
|
||||
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNK STATS §2§l⬛⬛⬛⬛⬛⬛"); |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage(" §2✸ §fChunk coordonates: §7" + crds); |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage(" §2✸ §fEntity Amount: §7" + stats.getEnts().length); |
|
||||
p.sendMessage(" §2✸ §fTiles Amount: §7" + stats.getTiles().length); |
|
||||
p.sendMessage(""); |
|
||||
p.spigot().sendMessage(stats.genMobCount(" §2✸ §fDetailed Info §7(HOVER)", cmd)); |
|
||||
p.sendMessage(""); |
|
||||
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
package com.entryrise.lagassist.chunks; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Collections; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.LinkedHashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
import java.util.Set; |
||||
|
import java.util.stream.Collectors; |
||||
|
import java.util.stream.Stream; |
||||
|
|
||||
|
import org.bukkit.Bukkit; |
||||
|
import org.bukkit.Chunk; |
||||
|
import org.bukkit.Location; |
||||
|
import org.bukkit.World; |
||||
|
import org.bukkit.block.BlockState; |
||||
|
import org.bukkit.command.CommandSender; |
||||
|
import org.bukkit.entity.Entity; |
||||
|
import org.bukkit.entity.Player; |
||||
|
|
||||
|
import com.entryrise.lagassist.Main; |
||||
|
|
||||
|
public class ChkAnalyse { |
||||
|
|
||||
|
protected static int ammoshow = Main.config.getInt("chunkanalyse.amount"); |
||||
|
protected static Map<String, Integer> values = new HashMap<String, Integer>(); |
||||
|
private static List<ChkStats> scores = new ArrayList<ChkStats>(); |
||||
|
|
||||
|
public static void Enabler() { |
||||
|
Bukkit.getLogger().info(" §e[§a✔§e] §fChunk Analyser."); |
||||
|
|
||||
|
Set<String> slist = Main.config.getConfigurationSection("chunkanalyse.values").getKeys(false); |
||||
|
|
||||
|
for (String s : slist) { |
||||
|
int value = Main.config.getInt("chunkanalyse.values." + s); |
||||
|
values.put(s.toLowerCase(), value); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static void analyseChunks(Player p) { |
||||
|
scores.clear(); |
||||
|
for (World w : Bukkit.getWorlds()) { |
||||
|
for (Chunk ch : w.getLoadedChunks()) { |
||||
|
scores.add(new ChkStats(ch, false)); |
||||
|
} |
||||
|
} |
||||
|
Bukkit.getScheduler().runTaskAsynchronously(Main.p, new Runnable() { |
||||
|
@Override |
||||
|
public void run() { |
||||
|
|
||||
|
for (ChkStats ch : scores) { |
||||
|
ch.genScores(); |
||||
|
} |
||||
|
Collections.sort(scores); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER §2§l⬛⬛⬛⬛⬛⬛"); |
||||
|
p.sendMessage(""); |
||||
|
|
||||
|
for (int i = 0; i < ammoshow; i++) { |
||||
|
ChkStats cs = scores.get(i); |
||||
|
p.spigot().sendMessage(cs.genText()); |
||||
|
} |
||||
|
|
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public static void analyseChunks(CommandSender p) { |
||||
|
Map<Chunk, Integer> chunkscore = new HashMap<Chunk, Integer>(); |
||||
|
for (World w : Bukkit.getWorlds()) { |
||||
|
for (Chunk ch : w.getLoadedChunks()) { |
||||
|
if (!chunkscore.containsKey(ch)) { |
||||
|
chunkscore.put(ch, 0); |
||||
|
} |
||||
|
BlockState[] tiles = ch.getTileEntities(); |
||||
|
for (BlockState blkst : tiles) { |
||||
|
String m = blkst.getType().toString().toLowerCase(); |
||||
|
if (values.containsKey(m)) { |
||||
|
chunkscore.put(ch, chunkscore.get(ch) + values.get(m)); |
||||
|
} |
||||
|
} |
||||
|
Entity[] ents = ch.getEntities(); |
||||
|
for (Entity e : ents) { |
||||
|
String et = e.getType().toString().toLowerCase(); |
||||
|
if (values.containsKey(et)) { |
||||
|
chunkscore.put(ch, chunkscore.get(ch) + values.get(et)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
Stream<Map.Entry<Chunk, Integer>> sorted = chunkscore.entrySet().stream() |
||||
|
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue())); |
||||
|
|
||||
|
Map<Chunk, Integer> topTen = sorted.limit(ammoshow) |
||||
|
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new)); |
||||
|
|
||||
|
for (Chunk ch : topTen.keySet()) { |
||||
|
int score = chunkscore.get(ch); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage("⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER ⬛⬛⬛⬛⬛⬛"); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage("⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
||||
|
for (String str : Main.lang.getStringList("chunkanalyse.result")) { |
||||
|
p.sendMessage(str.replace("$1", String.valueOf(ch.getX()) + " " + String.valueOf(ch.getZ())).replace("$2", String.valueOf(score))) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static void analyseCurrentChunk(CommandSender s) { |
||||
|
if (!(s instanceof Player)) { |
||||
|
s.sendMessage(Main.PREFIX + "You cannot analyse the current chunk from console."); |
||||
|
return; |
||||
|
} |
||||
|
Player p = (Player) s; |
||||
|
Location l = p.getLocation(); |
||||
|
ChkStats stats = new ChkStats(l.getChunk(), true); |
||||
|
|
||||
|
int coords[] = stats.getCoords(); |
||||
|
|
||||
|
String crds = String.valueOf(coords[0]) + " " + String.valueOf(coords[1]); |
||||
|
|
||||
|
String cmd = "lagassist tpchunk " + p.getWorld().getName() + " " + String.valueOf(coords[0]) + " " |
||||
|
+ String.valueOf(coords[1]); |
||||
|
|
||||
|
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNK STATS §2§l⬛⬛⬛⬛⬛⬛"); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage(" §2✸ §fChunk coordonates: §7" + crds); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage(" §2✸ §fEntity Amount: §7" + stats.getEnts().length); |
||||
|
p.sendMessage(" §2✸ §fTiles Amount: §7" + stats.getTiles().length); |
||||
|
p.sendMessage(""); |
||||
|
p.spigot().sendMessage(stats.genMobCount(" §2✸ §fDetailed Info §7(HOVER)", cmd)); |
||||
|
p.sendMessage(""); |
||||
|
p.sendMessage("§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛"); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
Loading…
Reference in new issue