mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Even more annotations
This commit is contained in:
parent
71322d95a8
commit
8a6e00a402
@ -5,6 +5,8 @@ import java.util.Iterator;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@ -34,7 +36,7 @@ public class AutoSavingService {
|
|||||||
* @param interval
|
* @param interval
|
||||||
* The interval in which to run this task
|
* The interval in which to run this task
|
||||||
*/
|
*/
|
||||||
public void start(SlimefunPlugin plugin, int interval) {
|
public void start(@Nonnull SlimefunPlugin plugin, int interval) {
|
||||||
this.interval = interval;
|
this.interval = interval;
|
||||||
|
|
||||||
plugin.getServer().getScheduler().runTaskTimer(plugin, this::saveAllPlayers, 2000L, interval * 60L * 20L);
|
plugin.getServer().getScheduler().runTaskTimer(plugin, this::saveAllPlayers, 2000L, interval * 60L * 20L);
|
||||||
|
@ -15,6 +15,10 @@ import java.util.logging.Level;
|
|||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin;
|
import io.github.thebusybiscuit.slimefun4.implementation.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
@ -65,7 +69,8 @@ public class BackupService implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createBackup(ZipOutputStream output) throws IOException {
|
private void createBackup(@Nonnull ZipOutputStream output) throws IOException {
|
||||||
|
Validate.notNull(output, "The Output Stream cannot be null!");
|
||||||
|
|
||||||
for (File folder : new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
for (File folder : new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
||||||
addDirectory(output, folder, "stored-blocks/" + folder.getName());
|
addDirectory(output, folder, "stored-blocks/" + folder.getName());
|
||||||
@ -93,7 +98,7 @@ public class BackupService implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDirectory(ZipOutputStream output, File directory, String zipPath) throws IOException {
|
private void addDirectory(@Nonnull ZipOutputStream output, @Nonnull File directory, @Nonnull String zipPath) throws IOException {
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
|
|
||||||
for (File file : directory.listFiles()) {
|
for (File file : directory.listFiles()) {
|
||||||
@ -121,7 +126,7 @@ public class BackupService implements Runnable {
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
* An {@link IOException} is thrown if a {@link File} could not be deleted
|
* An {@link IOException} is thrown if a {@link File} could not be deleted
|
||||||
*/
|
*/
|
||||||
private void purgeBackups(List<File> backups) throws IOException {
|
private void purgeBackups(@Nonnull List<File> backups) throws IOException {
|
||||||
Collections.sort(backups, (a, b) -> {
|
Collections.sort(backups, (a, b) -> {
|
||||||
LocalDateTime time1 = LocalDateTime.parse(a.getName().substring(0, a.getName().length() - 4), format);
|
LocalDateTime time1 = LocalDateTime.parse(a.getName().substring(0, a.getName().length() - 4), format);
|
||||||
LocalDateTime time2 = LocalDateTime.parse(b.getName().substring(0, b.getName().length() - 4), format);
|
LocalDateTime time2 = LocalDateTime.parse(b.getName().substring(0, b.getName().length() - 4), format);
|
||||||
|
@ -2,6 +2,9 @@ package io.github.thebusybiscuit.slimefun4.core.services;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
@ -27,7 +30,7 @@ public class CustomTextureService {
|
|||||||
private String version = null;
|
private String version = null;
|
||||||
private boolean modified = false;
|
private boolean modified = false;
|
||||||
|
|
||||||
public CustomTextureService(Config config) {
|
public CustomTextureService(@Nonnull Config config) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
config.getConfiguration().options().header("This file is used to assign items from Slimefun or any of its addons\n" + "the 'CustomModelData' NBT tag. This can be used in conjunction with a custom resource pack\n" + "to give items custom textures.\n0 means there is no data assigned to that item.\n\n" + "There is no official Slimefun resource pack at the moment.");
|
config.getConfiguration().options().header("This file is used to assign items from Slimefun or any of its addons\n" + "the 'CustomModelData' NBT tag. This can be used in conjunction with a custom resource pack\n" + "to give items custom textures.\n0 means there is no data assigned to that item.\n\n" + "There is no official Slimefun resource pack at the moment.");
|
||||||
config.getConfiguration().options().copyHeader(true);
|
config.getConfiguration().options().copyHeader(true);
|
||||||
@ -42,7 +45,7 @@ public class CustomTextureService {
|
|||||||
* @param save
|
* @param save
|
||||||
* Whether to save this file
|
* Whether to save this file
|
||||||
*/
|
*/
|
||||||
public void register(Collection<SlimefunItem> items, boolean save) {
|
public void register(@Nonnull Collection<SlimefunItem> items, boolean save) {
|
||||||
Validate.notEmpty(items, "items must neither be null or empty.");
|
Validate.notEmpty(items, "items must neither be null or empty.");
|
||||||
|
|
||||||
config.setDefaultValue("SLIMEFUN_GUIDE", 0);
|
config.setDefaultValue("SLIMEFUN_GUIDE", 0);
|
||||||
@ -74,6 +77,7 @@ public class CustomTextureService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public String getVersion() {
|
public String getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
@ -82,18 +86,18 @@ public class CustomTextureService {
|
|||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getModelData(String id) {
|
public int getModelData(@Nonnull String id) {
|
||||||
Validate.notNull(id, "Cannot get the ModelData for 'null'");
|
Validate.notNull(id, "Cannot get the ModelData for 'null'");
|
||||||
return config.getInt(id);
|
return config.getInt(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTexture(ItemStack item, String id) {
|
public void setTexture(@Nonnull ItemStack item, @Nonnull String id) {
|
||||||
ItemMeta im = item.getItemMeta();
|
ItemMeta im = item.getItemMeta();
|
||||||
setTexture(im, id);
|
setTexture(im, id);
|
||||||
item.setItemMeta(im);
|
item.setItemMeta(im);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTexture(ItemMeta im, String id) {
|
public void setTexture(@Nonnull ItemMeta im, @Nonnull String id) {
|
||||||
int data = getModelData(id);
|
int data = getModelData(id);
|
||||||
|
|
||||||
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
if (SlimefunPlugin.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_14)) {
|
||||||
|
@ -6,6 +6,9 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.inventory.FurnaceRecipe;
|
import org.bukkit.inventory.FurnaceRecipe;
|
||||||
@ -45,7 +48,7 @@ public class MinecraftRecipeService {
|
|||||||
* @param plugin
|
* @param plugin
|
||||||
* The {@link Plugin} that requests this Service
|
* The {@link Plugin} that requests this Service
|
||||||
*/
|
*/
|
||||||
public MinecraftRecipeService(Plugin plugin) {
|
public MinecraftRecipeService(@Nonnull Plugin plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +71,7 @@ public class MinecraftRecipeService {
|
|||||||
* @param subscription
|
* @param subscription
|
||||||
* A callback to run when the {@link RecipeSnapshot} has been created.
|
* A callback to run when the {@link RecipeSnapshot} has been created.
|
||||||
*/
|
*/
|
||||||
public void subscribe(Consumer<RecipeSnapshot> subscription) {
|
public void subscribe(@Nonnull Consumer<RecipeSnapshot> subscription) {
|
||||||
Validate.notNull(subscription, "Callback must not be null!");
|
Validate.notNull(subscription, "Callback must not be null!");
|
||||||
subscriptions.add(subscription);
|
subscriptions.add(subscription);
|
||||||
}
|
}
|
||||||
@ -82,7 +85,8 @@ public class MinecraftRecipeService {
|
|||||||
*
|
*
|
||||||
* @return An {@link Optional} describing the furnace output of the given {@link ItemStack}
|
* @return An {@link Optional} describing the furnace output of the given {@link ItemStack}
|
||||||
*/
|
*/
|
||||||
public Optional<ItemStack> getFurnaceOutput(ItemStack input) {
|
@Nonnull
|
||||||
|
public Optional<ItemStack> getFurnaceOutput(@Nullable ItemStack input) {
|
||||||
if (snapshot == null || input == null) {
|
if (snapshot == null || input == null) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
@ -98,7 +102,7 @@ public class MinecraftRecipeService {
|
|||||||
*
|
*
|
||||||
* @return Whether this item can be smelted
|
* @return Whether this item can be smelted
|
||||||
*/
|
*/
|
||||||
public boolean isSmeltable(ItemStack input) {
|
public boolean isSmeltable(@Nullable ItemStack input) {
|
||||||
return getFurnaceOutput(input).isPresent();
|
return getFurnaceOutput(input).isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +117,8 @@ public class MinecraftRecipeService {
|
|||||||
* The {@link Recipe} to get the shape from
|
* The {@link Recipe} to get the shape from
|
||||||
* @return An Array of {@link RecipeChoice} representing the shape of this {@link Recipe}
|
* @return An Array of {@link RecipeChoice} representing the shape of this {@link Recipe}
|
||||||
*/
|
*/
|
||||||
public RecipeChoice[] getRecipeShape(Recipe recipe) {
|
@Nonnull
|
||||||
|
public RecipeChoice[] getRecipeShape(@Nonnull Recipe recipe) {
|
||||||
Validate.notNull(recipe, "Recipe must not be null!");
|
Validate.notNull(recipe, "Recipe must not be null!");
|
||||||
|
|
||||||
if (recipe instanceof ShapedRecipe) {
|
if (recipe instanceof ShapedRecipe) {
|
||||||
@ -147,7 +152,8 @@ public class MinecraftRecipeService {
|
|||||||
* The {@link ItemStack} for which to get the recipes
|
* The {@link ItemStack} for which to get the recipes
|
||||||
* @return An array of {@link Recipe Recipes} to craft the given {@link ItemStack}
|
* @return An array of {@link Recipe Recipes} to craft the given {@link ItemStack}
|
||||||
*/
|
*/
|
||||||
public Recipe[] getRecipesFor(ItemStack item) {
|
@Nonnull
|
||||||
|
public Recipe[] getRecipesFor(@Nullable ItemStack item) {
|
||||||
if (snapshot == null || item == null) {
|
if (snapshot == null || item == null) {
|
||||||
return new Recipe[0];
|
return new Recipe[0];
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,9 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.permissions.Permissible;
|
import org.bukkit.permissions.Permissible;
|
||||||
import org.bukkit.permissions.Permission;
|
import org.bukkit.permissions.Permission;
|
||||||
@ -29,13 +32,13 @@ public class PermissionsService {
|
|||||||
private final Map<String, String> permissions = new HashMap<>();
|
private final Map<String, String> permissions = new HashMap<>();
|
||||||
private final Config config;
|
private final Config config;
|
||||||
|
|
||||||
public PermissionsService(SlimefunPlugin plugin) {
|
public PermissionsService(@Nonnull SlimefunPlugin plugin) {
|
||||||
config = new Config(plugin, "permissions.yml");
|
config = new Config(plugin, "permissions.yml");
|
||||||
config.getConfiguration().options().header("This file is used to assign permission nodes to items from Slimefun or any of its addons.\nTo assign an item a certain permission node you simply have to set the 'permission' attribute\nto your desired permission node. You can also customize the text that is displayed when a Player does not have that permission.");
|
config.getConfiguration().options().header("This file is used to assign permission nodes to items from Slimefun or any of its addons.\nTo assign an item a certain permission node you simply have to set the 'permission' attribute\nto your desired permission node. You can also customize the text that is displayed when a Player does not have that permission.");
|
||||||
config.getConfiguration().options().copyHeader(true);
|
config.getConfiguration().options().copyHeader(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(Iterable<SlimefunItem> items, boolean save) {
|
public void register(@Nonnull Iterable<SlimefunItem> items, boolean save) {
|
||||||
for (SlimefunItem item : items) {
|
for (SlimefunItem item : items) {
|
||||||
if (item != null && item.getID() != null) {
|
if (item != null && item.getID() != null) {
|
||||||
String path = item.getID() + ".permission";
|
String path = item.getID() + ".permission";
|
||||||
@ -83,7 +86,9 @@ public class PermissionsService {
|
|||||||
*
|
*
|
||||||
* @return An {@link Optional} holding the {@link Permission} as a {@link String} or an empty {@link Optional}
|
* @return An {@link Optional} holding the {@link Permission} as a {@link String} or an empty {@link Optional}
|
||||||
*/
|
*/
|
||||||
public Optional<String> getPermission(SlimefunItem item) {
|
@Nonnull
|
||||||
|
public Optional<String> getPermission(@Nonnull SlimefunItem item) {
|
||||||
|
Validate.notNull(item, "Cannot get permissions for null");
|
||||||
String permission = permissions.get(item.getID());
|
String permission = permissions.get(item.getID());
|
||||||
|
|
||||||
if (permission == null || permission.equals("none")) {
|
if (permission == null || permission.equals("none")) {
|
||||||
@ -102,7 +107,7 @@ public class PermissionsService {
|
|||||||
* @param permission
|
* @param permission
|
||||||
* The {@link Permission} to set
|
* The {@link Permission} to set
|
||||||
*/
|
*/
|
||||||
public void setPermission(SlimefunItem item, String permission) {
|
public void setPermission(@Nonnull SlimefunItem item, @Nullable String permission) {
|
||||||
Validate.notNull(item, "You cannot set the permission for null");
|
Validate.notNull(item, "You cannot set the permission for null");
|
||||||
permissions.put(item.getID(), permission != null ? permission : "none");
|
permissions.put(item.getID(), permission != null ? permission : "none");
|
||||||
}
|
}
|
||||||
@ -118,7 +123,8 @@ public class PermissionsService {
|
|||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getLore(SlimefunItem item) {
|
@Nonnull
|
||||||
|
public List<String> getLore(@Nonnull SlimefunItem item) {
|
||||||
List<String> lore = config.getStringList(item.getID() + ".lore");
|
List<String> lore = config.getStringList(item.getID() + ".lore");
|
||||||
return lore == null ? Arrays.asList("LORE NOT FOUND") : lore;
|
return lore == null ? Arrays.asList("LORE NOT FOUND") : lore;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package io.github.thebusybiscuit.slimefun4.core.services;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
import io.github.thebusybiscuit.cscorelib2.config.Config;
|
||||||
@ -37,7 +39,7 @@ public class UpdaterService {
|
|||||||
* @param file
|
* @param file
|
||||||
* The {@link File} of this {@link Plugin}
|
* The {@link File} of this {@link Plugin}
|
||||||
*/
|
*/
|
||||||
public UpdaterService(SlimefunPlugin plugin, String version, File file) {
|
public UpdaterService(@Nonnull SlimefunPlugin plugin, @Nonnull String version, @Nonnull File file) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
Updater autoUpdater = null;
|
Updater autoUpdater = null;
|
||||||
|
|
||||||
@ -82,6 +84,7 @@ public class UpdaterService {
|
|||||||
*
|
*
|
||||||
* @return The branch this build of Slimefun is on.
|
* @return The branch this build of Slimefun is on.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
public SlimefunBranch getBranch() {
|
public SlimefunBranch getBranch() {
|
||||||
return branch;
|
return branch;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,10 @@ package io.github.thebusybiscuit.slimefun4.core.services.profiler;
|
|||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -30,13 +34,14 @@ public enum PerformanceRating implements Predicate<Float> {
|
|||||||
private final ChatColor color;
|
private final ChatColor color;
|
||||||
private final float threshold;
|
private final float threshold;
|
||||||
|
|
||||||
PerformanceRating(ChatColor color, float threshold) {
|
PerformanceRating(@Nonnull ChatColor color, float threshold) {
|
||||||
|
Validate.notNull(color, "Color cannot be null");
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.threshold = threshold;
|
this.threshold = threshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean test(Float value) {
|
public boolean test(@Nullable Float value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
// null will only test true for UNKNOWN
|
// null will only test true for UNKNOWN
|
||||||
return threshold < 0;
|
return threshold < 0;
|
||||||
@ -45,6 +50,7 @@ public enum PerformanceRating implements Predicate<Float> {
|
|||||||
return value <= threshold;
|
return value <= threshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
public ChatColor getColor() {
|
public ChatColor getColor() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import java.util.function.Function;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -38,7 +40,7 @@ class PerformanceSummary {
|
|||||||
private final Map<String, Long> plugins;
|
private final Map<String, Long> plugins;
|
||||||
private final Map<String, Long> items;
|
private final Map<String, Long> items;
|
||||||
|
|
||||||
PerformanceSummary(SlimefunProfiler profiler, long totalElapsedTime, int totalTickedBlocks) {
|
PerformanceSummary(@Nonnull SlimefunProfiler profiler, long totalElapsedTime, int totalTickedBlocks) {
|
||||||
this.profiler = profiler;
|
this.profiler = profiler;
|
||||||
this.rating = profiler.getPerformance();
|
this.rating = profiler.getPerformance();
|
||||||
this.percentage = profiler.getPercentageOfTick();
|
this.percentage = profiler.getPercentageOfTick();
|
||||||
@ -51,7 +53,7 @@ class PerformanceSummary {
|
|||||||
items = profiler.getByItem();
|
items = profiler.getByItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(CommandSender sender) {
|
public void send(@Nonnull CommandSender sender) {
|
||||||
sender.sendMessage("");
|
sender.sendMessage("");
|
||||||
sender.sendMessage(ChatColor.GREEN + "===== Slimefun Lag Profiler =====");
|
sender.sendMessage(ChatColor.GREEN + "===== Slimefun Lag Profiler =====");
|
||||||
sender.sendMessage(ChatColor.GOLD + "Total time: " + ChatColor.YELLOW + NumberUtils.getAsMillis(totalElapsedTime));
|
sender.sendMessage(ChatColor.GOLD + "Total time: " + ChatColor.YELLOW + NumberUtils.getAsMillis(totalElapsedTime));
|
||||||
@ -112,21 +114,21 @@ class PerformanceSummary {
|
|||||||
hoverComponent.setColor(ChatColor.GRAY);
|
hoverComponent.setColor(ChatColor.GRAY);
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|
||||||
int displayed = 0;
|
int shownEntries = 0;
|
||||||
int hidden = 0;
|
int hiddenEntries = 0;
|
||||||
|
|
||||||
for (Map.Entry<String, Long> entry : results) {
|
for (Map.Entry<String, Long> entry : results) {
|
||||||
if (displayed < MAX_ITEMS && (displayed < MIN_ITEMS || entry.getValue() > VISIBILITY_THRESHOLD)) {
|
if (shownEntries < MAX_ITEMS && (shownEntries < MIN_ITEMS || entry.getValue() > VISIBILITY_THRESHOLD)) {
|
||||||
builder.append("\n").append(ChatColor.YELLOW).append(formatter.apply(entry));
|
builder.append("\n").append(ChatColor.YELLOW).append(formatter.apply(entry));
|
||||||
displayed++;
|
shownEntries++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
hidden++;
|
hiddenEntries++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hidden > 0) {
|
if (hiddenEntries > 0) {
|
||||||
builder.append("\n\n&c+ &6").append(hidden).append(" more");
|
builder.append("\n\n&c+ &6").append(hiddenEntries).append(" more");
|
||||||
}
|
}
|
||||||
|
|
||||||
Content content = new Text(TextComponent.fromLegacyText(ChatColors.color(builder.toString())));
|
Content content = new Text(TextComponent.fromLegacyText(ChatColors.color(builder.toString())));
|
||||||
@ -139,31 +141,28 @@ class PerformanceSummary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String summarizeAsString(int count, String prefix, List<Entry<String, Long>> results, Function<Entry<String, Long>, String> formatter) {
|
private String summarizeAsString(int count, String prefix, List<Entry<String, Long>> results, Function<Entry<String, Long>, String> formatter) {
|
||||||
int displayed = 0;
|
int shownEntries = 0;
|
||||||
int hidden = 0;
|
int hiddenEntries = 0;
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append(ChatColor.GOLD);
|
builder.append(ChatColor.GOLD).append(prefix);
|
||||||
builder.append(prefix);
|
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
builder.append(ChatColor.YELLOW);
|
builder.append(ChatColor.YELLOW);
|
||||||
|
|
||||||
for (Map.Entry<String, Long> entry : results) {
|
for (Map.Entry<String, Long> entry : results) {
|
||||||
if (displayed < MAX_ITEMS && (displayed < MIN_ITEMS || entry.getValue() > VISIBILITY_THRESHOLD)) {
|
if (shownEntries < MAX_ITEMS && (shownEntries < MIN_ITEMS || entry.getValue() > VISIBILITY_THRESHOLD)) {
|
||||||
builder.append("\n ");
|
builder.append("\n ");
|
||||||
builder.append(ChatColor.stripColor(formatter.apply(entry)));
|
builder.append(ChatColor.stripColor(formatter.apply(entry)));
|
||||||
displayed++;
|
shownEntries++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
hidden++;
|
hiddenEntries++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hidden > 0) {
|
if (hiddenEntries > 0) {
|
||||||
builder.append("\n+ ");
|
builder.append("\n+ ").append(hiddenEntries).append(" more...");
|
||||||
builder.append(hidden);
|
|
||||||
builder.append(" more...");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package io.github.thebusybiscuit.slimefun4.core.services.profiler;
|
package io.github.thebusybiscuit.slimefun4.core.services.profiler;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
@ -7,23 +9,36 @@ import io.github.thebusybiscuit.cscorelib2.blocks.BlockPosition;
|
|||||||
import io.github.thebusybiscuit.slimefun4.api.SlimefunAddon;
|
import io.github.thebusybiscuit.slimefun4.api.SlimefunAddon;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This represents an entry in our {@link SlimefunProfiler}.
|
||||||
|
*
|
||||||
|
* @author TheBusyBiscuit
|
||||||
|
*
|
||||||
|
*/
|
||||||
class ProfiledBlock {
|
class ProfiledBlock {
|
||||||
|
|
||||||
private final BlockPosition position;
|
private final BlockPosition position;
|
||||||
private final SlimefunItem item;
|
private final SlimefunItem item;
|
||||||
|
|
||||||
ProfiledBlock(Location l, SlimefunItem item) {
|
ProfiledBlock(@Nonnull Location l, @Nonnull SlimefunItem item) {
|
||||||
this.position = new BlockPosition(l);
|
this.position = new BlockPosition(l);
|
||||||
this.item = item;
|
this.item = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfiledBlock(BlockPosition position, SlimefunItem item) {
|
ProfiledBlock(@Nonnull BlockPosition position, @Nonnull SlimefunItem item) {
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.item = item;
|
this.item = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfiledBlock(Block b) {
|
/**
|
||||||
this(new BlockPosition(b), null);
|
* This is just a <strong>dummy</strong> constructor.
|
||||||
|
*
|
||||||
|
* @param b
|
||||||
|
* A {@link Block}
|
||||||
|
*/
|
||||||
|
ProfiledBlock(@Nonnull Block b) {
|
||||||
|
this.position = new BlockPosition(b);
|
||||||
|
this.item = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockPosition getPosition() {
|
public BlockPosition getPosition() {
|
||||||
|
@ -12,6 +12,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
@ -105,7 +107,7 @@ public class SlimefunProfiler {
|
|||||||
*
|
*
|
||||||
* @return The total timings of this entry
|
* @return The total timings of this entry
|
||||||
*/
|
*/
|
||||||
public long closeEntry(Location l, SlimefunItem item, long timestamp) {
|
public long closeEntry(@Nonnull Location l, @Nonnull SlimefunItem item, long timestamp) {
|
||||||
Validate.notNull(l, "Location must not be null!");
|
Validate.notNull(l, "Location must not be null!");
|
||||||
Validate.notNull(item, "You need to specify a SlimefunItem!");
|
Validate.notNull(item, "You need to specify a SlimefunItem!");
|
||||||
|
|
||||||
@ -194,12 +196,13 @@ public class SlimefunProfiler {
|
|||||||
* @param sender
|
* @param sender
|
||||||
* The {@link CommandSender} who shall receive this summary.
|
* The {@link CommandSender} who shall receive this summary.
|
||||||
*/
|
*/
|
||||||
public void requestSummary(CommandSender sender) {
|
public void requestSummary(@Nonnull CommandSender sender) {
|
||||||
Validate.notNull(sender, "Cannot request a summary for null");
|
Validate.notNull(sender, "Cannot request a summary for null");
|
||||||
|
|
||||||
requests.add(sender);
|
requests.add(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
protected Map<String, Long> getByItem() {
|
protected Map<String, Long> getByItem() {
|
||||||
Map<String, Long> map = new HashMap<>();
|
Map<String, Long> map = new HashMap<>();
|
||||||
|
|
||||||
@ -210,6 +213,7 @@ public class SlimefunProfiler {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
protected Map<String, Long> getByPlugin() {
|
protected Map<String, Long> getByPlugin() {
|
||||||
Map<String, Long> map = new HashMap<>();
|
Map<String, Long> map = new HashMap<>();
|
||||||
|
|
||||||
@ -220,6 +224,7 @@ public class SlimefunProfiler {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
protected Map<String, Long> getByChunk() {
|
protected Map<String, Long> getByChunk() {
|
||||||
Map<String, Long> map = new HashMap<>();
|
Map<String, Long> map = new HashMap<>();
|
||||||
|
|
||||||
@ -234,7 +239,8 @@ public class SlimefunProfiler {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getBlocksInChunk(String chunk) {
|
protected int getBlocksInChunk(@Nonnull String chunk) {
|
||||||
|
Validate.notNull(chunk, "The chunk cannot be null!");
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
|
|
||||||
for (ProfiledBlock block : timings.keySet()) {
|
for (ProfiledBlock block : timings.keySet()) {
|
||||||
@ -250,7 +256,8 @@ public class SlimefunProfiler {
|
|||||||
return blocks;
|
return blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getBlocksOfId(String id) {
|
protected int getBlocksOfId(@Nonnull String id) {
|
||||||
|
Validate.notNull(id, "The id cannot be null!");
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
|
|
||||||
for (ProfiledBlock block : timings.keySet()) {
|
for (ProfiledBlock block : timings.keySet()) {
|
||||||
@ -262,11 +269,12 @@ public class SlimefunProfiler {
|
|||||||
return blocks;
|
return blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getBlocksFromPlugin(String id) {
|
protected int getBlocksFromPlugin(@Nonnull String pluginName) {
|
||||||
|
Validate.notNull(pluginName, "The Plugin name cannot be null!");
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
|
|
||||||
for (ProfiledBlock block : timings.keySet()) {
|
for (ProfiledBlock block : timings.keySet()) {
|
||||||
if (block.getAddon().getName().equals(id)) {
|
if (block.getAddon().getName().equals(pluginName)) {
|
||||||
blocks++;
|
blocks++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -285,6 +293,7 @@ public class SlimefunProfiler {
|
|||||||
*
|
*
|
||||||
* @return The current performance grade
|
* @return The current performance grade
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
public PerformanceRating getPerformance() {
|
public PerformanceRating getPerformance() {
|
||||||
float percentage = getPercentageOfTick();
|
float percentage = getPercentageOfTick();
|
||||||
|
|
||||||
@ -314,26 +323,26 @@ public class SlimefunProfiler {
|
|||||||
*
|
*
|
||||||
* @return Whether timings of this {@link Block} have been collected
|
* @return Whether timings of this {@link Block} have been collected
|
||||||
*/
|
*/
|
||||||
public boolean hasTimings(Block b) {
|
public boolean hasTimings(@Nonnull Block b) {
|
||||||
Validate.notNull("Cannot get timings for a null Block");
|
Validate.notNull("Cannot get timings for a null Block");
|
||||||
return timings.containsKey(new ProfiledBlock(b));
|
return timings.containsKey(new ProfiledBlock(b));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTime(Block b) {
|
public String getTime(@Nonnull Block b) {
|
||||||
Validate.notNull("Cannot get timings for a null Block");
|
Validate.notNull("Cannot get timings for a null Block");
|
||||||
|
|
||||||
long time = timings.getOrDefault(new ProfiledBlock(b), 0L);
|
long time = timings.getOrDefault(new ProfiledBlock(b), 0L);
|
||||||
return NumberUtils.getAsMillis(time);
|
return NumberUtils.getAsMillis(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTime(Chunk chunk) {
|
public String getTime(@Nonnull Chunk chunk) {
|
||||||
Validate.notNull("Cannot get timings for a null Chunk");
|
Validate.notNull("Cannot get timings for a null Chunk");
|
||||||
|
|
||||||
long time = getByChunk().getOrDefault(chunk.getWorld().getName() + " (" + chunk.getX() + ',' + chunk.getZ() + ')', 0L);
|
long time = getByChunk().getOrDefault(chunk.getWorld().getName() + " (" + chunk.getX() + ',' + chunk.getZ() + ')', 0L);
|
||||||
return NumberUtils.getAsMillis(time);
|
return NumberUtils.getAsMillis(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTime(SlimefunItem item) {
|
public String getTime(@Nonnull SlimefunItem item) {
|
||||||
Validate.notNull("Cannot get timings for a null SlimefunItem");
|
Validate.notNull("Cannot get timings for a null SlimefunItem");
|
||||||
|
|
||||||
long time = getByItem().getOrDefault(item.getID(), 0L);
|
long time = getByItem().getOrDefault(item.getID(), 0L);
|
||||||
|
Loading…
Reference in New Issue
Block a user