Language implementation #9
Open
Deliable
wants to merge 5 commits from Deliable/LagAssist:master
into master
4 changed files with 346 additions and 295 deletions
@ -0,0 +1,56 @@ |
|||
# _ _ _ |
|||
# | | /\ (_) | | |
|||
# | | __ _ __ _ / \ ___ ___ _ ___| |_ |
|||
# | | / _` |/ _` | / /\ \ / __/ __| / __| __| |
|||
# | |___| (_| | (_| |/ ____ \\__ \__ \ \__ \ |_ |
|||
# |______\__,_|\__, /_/ \_\___/___/_|___/\__| |
|||
# __/ | |
|||
# |___/ By EntryRise |
|||
# |
|||
# This is the default language configuration. You can edit any text you want. |
|||
# If you need help configuring it, please visit our dedicated Discord Server. |
|||
# DISCORD: https://discord.gg/4aWWPcb |
|||
|
|||
# What should LagAssist write in the beginning of most of the sentences? |
|||
prefix: "§2§lLag§f§lAssist §e» §f" |
|||
|
|||
errors: |
|||
chunkanalyse: |
|||
console-execution: "You cannot analyse the current chunk from console." |
|||
|
|||
debug: |
|||
ping: |
|||
#What should LagAssist debug if it receives a MOTD ping from anyone? |
|||
received: "Received ping from $1" |
|||
response: "API ping response to $1" |
|||
|
|||
chunkanalyse: |
|||
result1: |
|||
- "" |
|||
- "§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER §2§l⬛⬛⬛⬛⬛⬛" |
|||
- "" |
|||
- "$1" |
|||
- "" |
|||
- "⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛" |
|||
result2: |
|||
- "" |
|||
- "⬛⬛⬛⬛⬛⬛ §f§lCHUNKANALYSER ⬛⬛⬛⬛⬛⬛" |
|||
- "" |
|||
- " ✸ Chunk ($1) - Score $2" |
|||
- "" |
|||
- "§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛" |
|||
result3: |
|||
- "§2§l⬛⬛⬛⬛⬛⬛ §f§lCHUNK STATS §2§l⬛⬛⬛⬛⬛⬛" |
|||
- "" |
|||
- " §2✸ §fChunk coordonates: §7$1" |
|||
- "" |
|||
- " §2✸ §fEntity Amount: §7$2" |
|||
- " §2✸ §fTiles Amount: §7$3" |
|||
- "" |
|||
# CAUTION: Do not delete the "HOVERTEXT" text which is at the end of the sentence. The LagAssist will take care of it, "HOVERTEXT" text makes the string hoverable. |
|||
- " §2✸ §fDetailed Info §7(HOVER) HOVERTEXT" |
|||
- "" |
|||
- "§2§l⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛" |
|||
|
|||
# This allows the system to update the config if the plugin is updated. |
|||
version: 1 |
@ -1,148 +1,153 @@ |
|||
package com.entryrise.lagassist; |
|||
|
|||
import java.io.File; |
|||
|
|||
import org.bukkit.Bukkit; |
|||
import org.bukkit.command.CommandSender; |
|||
import org.bukkit.configuration.file.FileConfiguration; |
|||
import org.bukkit.configuration.file.YamlConfiguration; |
|||
import org.bukkit.entity.Player; |
|||
import org.bukkit.event.Listener; |
|||
import org.bukkit.plugin.java.JavaPlugin; |
|||
|
|||
import com.entryrise.lagassist.api.APIManager; |
|||
import com.entryrise.lagassist.chunks.ChkAnalyse; |
|||
import com.entryrise.lagassist.chunks.ChkLimiter; |
|||
import com.entryrise.lagassist.chunks.DynViewer; |
|||
import com.entryrise.lagassist.client.ClientMain; |
|||
import com.entryrise.lagassist.cmd.CommandListener; |
|||
import com.entryrise.lagassist.cmd.CommandTabListener; |
|||
import com.entryrise.lagassist.cmd.StatsAnalyse; |
|||
import com.entryrise.lagassist.economy.EconomyManager; |
|||
import com.entryrise.lagassist.gui.DataGUI; |
|||
import com.entryrise.lagassist.hoppers.HopperManager; |
|||
import com.entryrise.lagassist.logpurger.PurgerMain; |
|||
import com.entryrise.lagassist.metrics.MetricsManager; |
|||
import com.entryrise.lagassist.microfeatures.MicroManager; |
|||
import com.entryrise.lagassist.mobs.SmartMob; |
|||
import com.entryrise.lagassist.mobs.SpawnerMgr; |
|||
import com.entryrise.lagassist.packets.PacketInjector; |
|||
import com.entryrise.lagassist.packets.PacketMain; |
|||
import com.entryrise.lagassist.packets.Reflection; |
|||
import com.entryrise.lagassist.safety.SafetyManager; |
|||
import com.entryrise.lagassist.stacker.StackManager; |
|||
import com.entryrise.lagassist.updater.SmartUpdater; |
|||
import com.entryrise.lagassist.utils.Others; |
|||
import com.entryrise.lagassist.utils.VersionMgr; |
|||
import com.entryrise.lagassist.utils.WorldMgr; |
|||
|
|||
public class Main extends JavaPlugin implements Listener { |
|||
|
|||
public static String USER = "%%__USER__%%"; |
|||
|
|||
public static final String PREFIX = "§2§lLag§f§lAssist §e» §f"; |
|||
|
|||
public static JavaPlugin p; |
|||
public static boolean paper = false; |
|||
|
|||
// Debug mode means people will get verbose info.
|
|||
public static int debug = 0; |
|||
|
|||
private static File file; |
|||
public static FileConfiguration config = new YamlConfiguration(); |
|||
|
|||
@Override |
|||
public void onEnable() { |
|||
p = this; |
|||
|
|||
file = new File(getDataFolder(), "server.yml"); |
|||
config = Others.getConfig(file, 32); |
|||
|
|||
paper = VersionMgr.isPaper(); |
|||
|
|||
// Start Smart updater to check for updates.
|
|||
SmartUpdater.Enabler(); |
|||
|
|||
Bukkit.getLogger().info(Main.PREFIX + "Enabling Systems:"); |
|||
EnableClasses(false); |
|||
|
|||
getServer().getPluginManager().registerEvents(this, this); |
|||
getCommand("lagassist").setExecutor(new CommandListener()); |
|||
getCommand("lagassist").setTabCompleter(new CommandTabListener()); |
|||
} |
|||
|
|||
private static void EnableClasses(boolean reload) { |
|||
|
|||
EconomyManager.Enabler(reload); |
|||
|
|||
SafetyManager.Enabler(reload); |
|||
Reflection.Enabler(); |
|||
Data.Enabler(); |
|||
SmartMob.Enabler(reload); |
|||
MicroManager.Enabler(reload); |
|||
HopperManager.Enabler(reload); |
|||
StackManager.Enabler(reload); |
|||
Redstone.Enabler(reload); |
|||
Physics.Enabler(reload); |
|||
Monitor.Enabler(reload); |
|||
MonTools.Enabler(reload); |
|||
WorldMgr.Enabler(); |
|||
ChkAnalyse.Enabler(); |
|||
ChkLimiter.Enabler(reload); |
|||
StatsAnalyse.Enabler(reload); |
|||
PurgerMain.Enabler(); |
|||
|
|||
SpawnerMgr.Enabler(reload); |
|||
DynViewer.Enabler(reload); |
|||
ClientMain.Enabler(); |
|||
DataGUI.Enabler(reload); |
|||
|
|||
MetricsManager.Enabler(reload); |
|||
|
|||
PacketMain.Enabler(reload); |
|||
|
|||
// API ICON
|
|||
APIManager.Enabler(reload); |
|||
} |
|||
|
|||
public static void ReloadPlugin(CommandSender s) { |
|||
config = Others.getConfig(file, 32); |
|||
|
|||
Bukkit.getLogger().info(Main.PREFIX + "Reloading Systems:"); |
|||
EnableClasses(true); |
|||
|
|||
s.sendMessage(Main.PREFIX + "Reloaded the config successfully."); |
|||
} |
|||
|
|||
@Override |
|||
public void onDisable() { |
|||
if (PacketMain.isPacketEnabled()) { |
|||
PacketInjector.Disabler(); |
|||
} |
|||
StackManager.Disabler(); |
|||
} |
|||
|
|||
public static void sendDebug(String msg, int mindebug) { |
|||
if (mindebug > debug) { |
|||
return; |
|||
} |
|||
|
|||
for (Player p : Bukkit.getOnlinePlayers()) { |
|||
if (!p.hasPermission("lagassist.debug")) { |
|||
continue; |
|||
} |
|||
|
|||
p.sendMessage(msg + "(MINDEBUG: " + mindebug + ")"); |
|||
} |
|||
|
|||
if (debug == 3) { |
|||
try { |
|||
throw new Exception(msg); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return; |
|||
} |
|||
} |
|||
|
|||
} |
|||
package com.entryrise.lagassist; |
|||
|
|||
import java.io.File; |
|||
|
|||
import org.bukkit.Bukkit; |
|||
import org.bukkit.command.CommandSender; |
|||
import org.bukkit.configuration.file.FileConfiguration; |
|||
import org.bukkit.configuration.file.YamlConfiguration; |
|||
import org.bukkit.entity.Player; |
|||
import org.bukkit.event.Listener; |
|||
import org.bukkit.plugin.java.JavaPlugin; |
|||
|
|||
import com.entryrise.lagassist.api.APIManager; |
|||
import com.entryrise.lagassist.chunks.ChkAnalyse; |
|||
import com.entryrise.lagassist.chunks.ChkLimiter; |
|||
import com.entryrise.lagassist.chunks.DynViewer; |
|||
import com.entryrise.lagassist.client.ClientMain; |
|||
import com.entryrise.lagassist.cmd.CommandListener; |
|||
import com.entryrise.lagassist.cmd.CommandTabListener; |
|||
import com.entryrise.lagassist.cmd.StatsAnalyse; |
|||
import com.entryrise.lagassist.economy.EconomyManager; |
|||
import com.entryrise.lagassist.gui.DataGUI; |
|||
import com.entryrise.lagassist.hoppers.HopperManager; |
|||
import com.entryrise.lagassist.logpurger.PurgerMain; |
|||
import com.entryrise.lagassist.metrics.MetricsManager; |
|||
import com.entryrise.lagassist.microfeatures.MicroManager; |
|||
import com.entryrise.lagassist.mobs.SmartMob; |
|||
import com.entryrise.lagassist.mobs.SpawnerMgr; |
|||
import com.entryrise.lagassist.packets.PacketInjector; |
|||
import com.entryrise.lagassist.packets.PacketMain; |
|||
import com.entryrise.lagassist.packets.Reflection; |
|||
import com.entryrise.lagassist.safety.SafetyManager; |
|||
import com.entryrise.lagassist.stacker.StackManager; |
|||
import com.entryrise.lagassist.updater.SmartUpdater; |
|||
import com.entryrise.lagassist.utils.Others; |
|||
import com.entryrise.lagassist.utils.VersionMgr; |
|||
import com.entryrise.lagassist.utils.WorldMgr; |
|||
|
|||
public class Main extends JavaPlugin implements Listener { |
|||
|
|||
public static String USER = "%%__USER__%%"; |
|||
|
|||
public static JavaPlugin p; |
|||
public static boolean paper = false; |
|||
|
|||
// Debug mode means people will get verbose info.
|
|||
public static int debug = 0; |
|||
|
|||
private static File file; |
|||
public static FileConfiguration config = new YamlConfiguration(); |
|||
|
|||
private static File langfile = new File(getDataFolder(), "lang.yml"); |
|||
public static YamlConfiguration lang = new YamlConfiguration(); |
|||
|
|||
public static final String PREFIX = "§2§lLag§f§lAssist §e» §f"; |
|||
|
|||
@Override |
|||
public void onEnable() { |
|||
p = this; |
|||
|
|||
file = new File(getDataFolder(), "server.yml"); |
|||
|
|||
config = Others.getConfig(file, 32); |
|||
lang = Others.getConfig(langfile, 1); |
|||
|
|||
paper = VersionMgr.isPaper(); |
|||
|
|||
// Start Smart updater to check for updates.
|
|||
SmartUpdater.Enabler(); |
|||
|
|||
Bukkit.getLogger().info(Main.PREFIX + "Enabling Systems:"); |
|||
EnableClasses(false); |
|||
|
|||
getServer().getPluginManager().registerEvents(this, this); |
|||
getCommand("lagassist").setExecutor(new CommandListener()); |
|||
getCommand("lagassist").setTabCompleter(new CommandTabListener()); |
|||
} |
|||
|
|||
private static void EnableClasses(boolean reload) { |
|||
|
|||
EconomyManager.Enabler(reload); |
|||
|
|||
SafetyManager.Enabler(reload); |
|||
Reflection.Enabler(); |
|||
Data.Enabler(); |
|||
SmartMob.Enabler(reload); |
|||
MicroManager.Enabler(reload); |
|||
HopperManager.Enabler(reload); |
|||
StackManager.Enabler(reload); |
|||
Redstone.Enabler(reload); |
|||
Physics.Enabler(reload); |
|||
Monitor.Enabler(reload); |
|||
MonTools.Enabler(reload); |
|||
WorldMgr.Enabler(); |
|||
ChkAnalyse.Enabler(); |
|||
ChkLimiter.Enabler(reload); |
|||
StatsAnalyse.Enabler(reload); |
|||
PurgerMain.Enabler(); |
|||
|
|||
SpawnerMgr.Enabler(reload); |
|||
DynViewer.Enabler(reload); |
|||
ClientMain.Enabler(); |
|||
DataGUI.Enabler(reload); |
|||
|
|||
MetricsManager.Enabler(reload); |
|||
|
|||
PacketMain.Enabler(reload); |
|||
|
|||
// API ICON
|
|||
APIManager.Enabler(reload); |
|||
} |
|||
|
|||
public static void ReloadPlugin(CommandSender s) { |
|||
config = Others.getConfig(file, 32); |
|||
|
|||
Bukkit.getLogger().info(Main.PREFIX + "Reloading Systems:"); |
|||
EnableClasses(true); |
|||
|
|||
s.sendMessage(Main.PREFIX + "Reloaded the config successfully."); |
|||
} |
|||
|
|||
@Override |
|||
public void onDisable() { |
|||
if (PacketMain.isPacketEnabled()) { |
|||
PacketInjector.Disabler(); |
|||
} |
|||
StackManager.Disabler(); |
|||
} |
|||
|
|||
public static void sendDebug(String msg, int mindebug) { |
|||
if (mindebug > debug) { |
|||
return; |
|||
} |
|||
|
|||
for (Player p : Bukkit.getOnlinePlayers()) { |
|||
if (!p.hasPermission("lagassist.debug")) { |
|||
continue; |
|||
} |
|||
|
|||
p.sendMessage(msg + "(MINDEBUG: " + mindebug + ")"); |
|||
} |
|||
|
|||
if (debug == 3) { |
|||
try { |
|||
throw new Exception(msg); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
@ -1,145 +1,135 @@ |
|||
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); |
|||
|
|||
for (int i = 0; i < ammoshow; i++) { |
|||
ChkStats cs = scores.get(i); |
|||
for (String str : Main.lang.getStringList("chunkanalyse.result1")) { |
|||
if (str.contains("$1")) { |
|||
p.spigot().sendMessage(cs.genText()) |
|||
} else { |
|||
p.sendMessage(str.replace("$1", cs.genText())) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}); |
|||
|
|||
} |
|||
|
|||
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); |
|||
for (String str : Main.lang.getStringList("chunkanalyse.result2")) { |
|||
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 + Main.lang.getString("errors.chunkanalyse.console-execution")); |
|||
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]); |
|||
|
|||
for (String str : Main.lang.getStringList("chunkanalyse.result3")) { |
|||
if (str.endsWith("HOVERTEXT")) { |
|||
p.spigot().sendMessage(stats.genMobCount(str, cmd).replaceAll("HOVERTEXT", "")) |
|||
} else { |
|||
p.sendMessage(str.replace("$1", crds).replace("$2", stats.getEnts().length).replace("$3", stats.getTiles().length)) |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
Loading…
Reference in new issue