Merge remote-tracking branch 'remotes/DarkArk/feature/pretty-chat' into pretty-chat

This commit is contained in:
Brokkonaut
2019-06-23 21:47:14 +02:00
10 changed files with 290 additions and 114 deletions

View File

@@ -1,10 +1,21 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import de.diddiz.LogBlock.blockstate.BlockStateCodecs; import static de.diddiz.util.ActionColor.CREATE;
import de.diddiz.LogBlock.config.Config; import static de.diddiz.util.ActionColor.DESTROY;
import de.diddiz.util.BukkitUtils; import static de.diddiz.util.ActionColor.INTERACT;
import de.diddiz.util.Utils; import static de.diddiz.util.MessagingUtil.brackets;
import static de.diddiz.util.MessagingUtil.prettyDate;
import static de.diddiz.util.MessagingUtil.prettyLocation;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
import static de.diddiz.util.MessagingUtil.prettyState;
import de.diddiz.LogBlock.blockstate.BlockStateCodecs;
import de.diddiz.util.BukkitUtils;
import de.diddiz.util.MessagingUtil.BracketType;
import de.diddiz.util.Utils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Note; import org.bukkit.Note;
@@ -21,10 +32,6 @@ import org.bukkit.block.data.type.Switch;
import org.bukkit.block.data.type.WallSign; import org.bukkit.block.data.type.WallSign;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
public class BlockChange implements LookupCacheElement { public class BlockChange implements LookupCacheElement {
public final long id, date; public final long id, date;
public final Location loc; public final Location loc;
@@ -71,11 +78,29 @@ public class BlockChange implements LookupCacheElement {
ca = catemp; ca = catemp;
} }
private String getTypeDetails(BlockData type, byte[] typeState) {
String typeDetails = null;
if (BlockStateCodecs.hasCodec(type.getMaterial())) {
try {
typeDetails = BlockStateCodecs.toString(type.getMaterial(), Utils.deserializeYamlConfiguration(typeState));
} catch (Exception e) {
LogBlock.getInstance().getLogger().log(Level.SEVERE, "Could not parse BlockState for " + type.getMaterial(), e);
}
}
if (typeDetails == null) {
return "";
} else {
return " " + typeDetails;
}
}
@Override @Override
public String toString() { public String toString() {
final StringBuilder msg = new StringBuilder(); final StringBuilder msg = new StringBuilder();
if (date > 0) { if (date > 0) {
msg.append(Config.formatter.format(date)).append(" "); msg.append(brackets(prettyDate(date), BracketType.STANDARD)).append(' ');
} }
if (actor != null) { if (actor != null) {
msg.append(actor.getName()).append(" "); msg.append(actor.getName()).append(" ");
@@ -86,83 +111,62 @@ public class BlockChange implements LookupCacheElement {
msg.append("did an unknown block modification"); msg.append("did an unknown block modification");
return msg.toString(); return msg.toString();
} }
String typeDetails = null;
if (BlockStateCodecs.hasCodec(type.getMaterial())) { // Process type details once for later use.
try { String typeDetails = getTypeDetails(type, typeState);
typeDetails = BlockStateCodecs.toString(type.getMaterial(), Utils.deserializeYamlConfiguration(typeState)); String replacedDetails = getTypeDetails(replaced, replacedState);
} catch (Exception e) {
LogBlock.getInstance().getLogger().log(Level.SEVERE, "Could not parse BlockState for " + type.getMaterial(), e);
}
}
if (typeDetails == null) {
typeDetails = "";
} else {
typeDetails = " " + typeDetails;
}
String replacedDetails = null;
if (BlockStateCodecs.hasCodec(replaced.getMaterial())) {
try {
replacedDetails = BlockStateCodecs.toString(replaced.getMaterial(), Utils.deserializeYamlConfiguration(replacedState));
} catch (Exception e) {
LogBlock.getInstance().getLogger().log(Level.SEVERE, "Could not parse BlockState for " + replaced.getMaterial(), e);
}
}
if (replacedDetails == null) {
replacedDetails = "";
} else {
replacedDetails = " " + replacedDetails;
}
if (type.getMaterial().equals(replaced.getMaterial())) { if (type.getMaterial().equals(replaced.getMaterial())) {
if (BukkitUtils.isEmpty(type.getMaterial())) { if (BukkitUtils.isEmpty(type.getMaterial())) {
msg.append("did an unspecified action"); msg.append(INTERACT).append("did an unspecified action");
} else if (ca != null) { } else if (ca != null) {
if (ca.itemStack == null) { if (ca.itemStack == null) {
msg.append("looked inside ").append(type.getMaterial().name()); msg.append(INTERACT).append("looked inside ").append(prettyMaterial(type.getMaterial()));
} else if (ca.remove) { } else if (ca.remove) {
msg.append("took ").append(BukkitUtils.toString(ca.itemStack)).append(" from ").append(type.getMaterial().name()); msg.append(DESTROY).append("took ").append(BukkitUtils.toString(ca.itemStack)).append(" from ").append(prettyMaterial(type.getMaterial()));
} else { } else {
msg.append("put ").append(BukkitUtils.toString(ca.itemStack)).append(" into ").append(type.getMaterial().name()); msg.append(CREATE).append("put ").append(BukkitUtils.toString(ca.itemStack)).append(" into ").append(prettyMaterial(type.getMaterial()));
} }
} else if (BukkitUtils.getContainerBlocks().contains(type.getMaterial())) { } else if (BukkitUtils.getContainerBlocks().contains(type.getMaterial())) {
msg.append("opened ").append(type.getMaterial().name()); msg.append(INTERACT).append("opened ").append(prettyMaterial(type.getMaterial()));
} else if (type instanceof Openable) { } else if (type instanceof Openable) {
// Door, Trapdoor, Fence gate // Door, Trapdoor, Fence gate
msg.append(((Openable) type).isOpen() ? "opened" : "closed").append(" ").append(type.getMaterial().name()); msg.append(INTERACT).append(((Openable) type).isOpen() ? "opened" : "closed").append(" ").append(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.LEVER) { } else if (type.getMaterial() == Material.LEVER) {
msg.append("switched ").append(type.getMaterial().name()).append(" ").append(((Switch) type).isPowered() ? "on" : "off"); msg.append(INTERACT).append("switched ").append(prettyMaterial(type.getMaterial())).append(" ").append(prettyState(((Switch) type).isPowered() ? "on" : "off"));
} else if (type instanceof Switch) { } else if (type instanceof Switch) {
msg.append("pressed ").append(type.getMaterial().name()); msg.append(INTERACT).append("pressed ").append(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.CAKE) { } else if (type.getMaterial() == Material.CAKE) {
msg.append("ate a piece of ").append(type.getMaterial().name()); msg.append(DESTROY).append("ate a piece of ").append(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.NOTE_BLOCK) { } else if (type.getMaterial() == Material.NOTE_BLOCK) {
Note note = ((NoteBlock) type).getNote(); Note note = ((NoteBlock) type).getNote();
msg.append("set ").append(type.getMaterial().name()).append(" to ").append(note.getTone().name()).append(note.isSharped() ? "#" : ""); msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(note.getTone().name() + (note.isSharped() ? "#" : "")));
} else if (type.getMaterial() == Material.REPEATER) { } else if (type.getMaterial() == Material.REPEATER) {
msg.append("set ").append(type.getMaterial().name()).append(" to ").append(((Repeater) type).getDelay()).append(" ticks delay"); msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((Repeater) type).getDelay())).append(" ticks delay");
} else if (type.getMaterial() == Material.COMPARATOR) { } else if (type.getMaterial() == Material.COMPARATOR) {
msg.append("set ").append(type.getMaterial().name()).append(" to ").append(((Comparator) type).getMode()); msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((Comparator) type).getMode()));
} else if (type.getMaterial() == Material.DAYLIGHT_DETECTOR) { } else if (type.getMaterial() == Material.DAYLIGHT_DETECTOR) {
msg.append("set ").append(type.getMaterial().name()).append(" to ").append(((DaylightDetector) type).isInverted() ? "inverted" : "normal"); msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((DaylightDetector) type).isInverted() ? "inverted" : "normal"));
} else if (type instanceof Lectern) { } else if (type instanceof Lectern) {
msg.append("changed the book on a ").append(type.getMaterial().name()).append(" to").append(typeDetails.length() == 0 ? " empty" : typeDetails); msg.append(INTERACT).append("changed the book on a ").append(prettyMaterial(type.getMaterial())).append(" to").append(prettyState(typeDetails.length() == 0 ? " empty" : typeDetails));
} else if (type instanceof Powerable) { } else if (type instanceof Powerable) {
msg.append("stepped on ").append(type.getMaterial().name()); msg.append(INTERACT).append("stepped on ").append(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.TRIPWIRE) { } else if (type.getMaterial() == Material.TRIPWIRE) {
msg.append("ran into ").append(type.getMaterial().name()); msg.append(INTERACT).append("ran into ").append(prettyMaterial(type.getMaterial()));
} else if (type instanceof Sign || type instanceof WallSign) { } else if (type instanceof Sign || type instanceof WallSign) {
msg.append("edited a ").append(type.getMaterial().name()).append(" to ").append(typeDetails); msg.append(DESTROY).append("edited a ").append(prettyMaterial(type.getMaterial())).append(CREATE).append(" to ").append(prettyState(typeDetails));
} else { } else {
msg.append("replaced ").append(replaced.getMaterial().name()).append(replacedDetails).append(" with ").append(type.getMaterial().name()).append(typeDetails); msg.append(DESTROY).append("replaced ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails)).append(CREATE).append(" with ").append(prettyMaterial(type.getMaterial())).append(prettyState(typeDetails));
} }
} else if (BukkitUtils.isEmpty(type.getMaterial())) { } else if (BukkitUtils.isEmpty(type.getMaterial())) {
msg.append("destroyed ").append(replaced.getMaterial().name()).append(replacedDetails); msg.append(DESTROY).append("destroyed ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails));
} else if (BukkitUtils.isEmpty(replaced.getMaterial())) { } else if (BukkitUtils.isEmpty(replaced.getMaterial())) {
msg.append("created ").append(type.getMaterial().name()).append(typeDetails); msg.append(CREATE).append("created ").append(prettyMaterial(type.getMaterial())).append(prettyState(typeDetails));
} else { } else {
msg.append("replaced ").append(replaced.getMaterial().name()).append(replacedDetails).append(" with ").append(type.getMaterial().name()).append(typeDetails); msg.append(DESTROY).append("replaced ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails)).append(CREATE).append(" with ").append(type.getMaterial().name()).append(typeDetails);
} }
if (loc != null) { if (loc != null) {
msg.append(" at ").append(loc.getBlockX()).append(":").append(loc.getBlockY()).append(":").append(loc.getBlockZ()); msg.append(" at: ").append(prettyLocation(loc));
} }
return msg.toString(); return msg.toString();
} }

View File

@@ -1,11 +1,14 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import org.bukkit.Location; import static de.diddiz.util.ActionColor.CREATE;
import static de.diddiz.util.LoggingUtil.checkText;
import static de.diddiz.util.MessagingUtil.brackets;
import de.diddiz.util.MessagingUtil.BracketType;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import org.bukkit.ChatColor;
import static de.diddiz.util.LoggingUtil.checkText; import org.bukkit.Location;
public class ChatMessage implements LookupCacheElement { public class ChatMessage implements LookupCacheElement {
final long id, date; final long id, date;
@@ -35,6 +38,6 @@ public class ChatMessage implements LookupCacheElement {
@Override @Override
public String getMessage() { public String getMessage() {
return (player != null ? "<" + player.getName() + "> " : "") + (message != null ? message : ""); return (playerName != null ? brackets(ChatColor.WHITE + playerName, BracketType.ANGLE) + ' ' : "") + (message != null ? CREATE + message : "");
} }
} }

View File

@@ -1,22 +1,33 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import static de.diddiz.LogBlock.Session.getSession;
import static de.diddiz.LogBlock.config.Config.askClearLogAfterRollback;
import static de.diddiz.LogBlock.config.Config.askClearLogs;
import static de.diddiz.LogBlock.config.Config.askRedos;
import static de.diddiz.LogBlock.config.Config.askRollbacks;
import static de.diddiz.LogBlock.config.Config.defaultTime;
import static de.diddiz.LogBlock.config.Config.dumpDeletedLog;
import static de.diddiz.LogBlock.config.Config.getWorldConfig;
import static de.diddiz.LogBlock.config.Config.linesLimit;
import static de.diddiz.LogBlock.config.Config.linesPerPage;
import static de.diddiz.LogBlock.config.Config.rollbackMaxArea;
import static de.diddiz.LogBlock.config.Config.rollbackMaxTime;
import static de.diddiz.LogBlock.config.Config.toolsByName;
import static de.diddiz.LogBlock.config.Config.toolsByType;
import static de.diddiz.util.BukkitUtils.giveTool;
import static de.diddiz.util.BukkitUtils.saveSpawnHeight;
import static de.diddiz.util.TypeColor.DEFAULT;
import static de.diddiz.util.TypeColor.ERROR;
import static de.diddiz.util.TypeColor.HEADER;
import static de.diddiz.util.Utils.isInt;
import static de.diddiz.util.Utils.listing;
import de.diddiz.LogBlock.QueryParams.BlockChangeType; import de.diddiz.LogBlock.QueryParams.BlockChangeType;
import de.diddiz.LogBlock.QueryParams.Order; import de.diddiz.LogBlock.QueryParams.Order;
import de.diddiz.LogBlock.QueryParams.SummarizationMode; import de.diddiz.LogBlock.QueryParams.SummarizationMode;
import de.diddiz.LogBlock.config.Config; import de.diddiz.LogBlock.config.Config;
import de.diddiz.LogBlock.config.WorldConfig; import de.diddiz.LogBlock.config.WorldConfig;
import de.diddiz.util.Utils; import de.diddiz.util.Utils;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitScheduler;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
@@ -32,13 +43,15 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.ChatColor;
import static de.diddiz.LogBlock.Session.getSession; import org.bukkit.Location;
import static de.diddiz.LogBlock.config.Config.*; import org.bukkit.World;
import static de.diddiz.util.BukkitUtils.giveTool; import org.bukkit.command.Command;
import static de.diddiz.util.BukkitUtils.saveSpawnHeight; import org.bukkit.command.CommandExecutor;
import static de.diddiz.util.Utils.isInt; import org.bukkit.command.CommandSender;
import static de.diddiz.util.Utils.listing; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitScheduler;
public class CommandsHandler implements CommandExecutor { public class CommandsHandler implements CommandExecutor {
private final LogBlock logblock; private final LogBlock logblock;
@@ -382,19 +395,19 @@ public class CommandsHandler implements CommandExecutor {
final int stoppos = startpos + linesPerPage >= lookupElements.length ? lookupElements.length - 1 : startpos + linesPerPage - 1; final int stoppos = startpos + linesPerPage >= lookupElements.length ? lookupElements.length - 1 : startpos + linesPerPage - 1;
final int numberOfPages = (int) Math.ceil(lookupElements.length / (double) linesPerPage); final int numberOfPages = (int) Math.ceil(lookupElements.length / (double) linesPerPage);
if (numberOfPages != 1) { if (numberOfPages != 1) {
sender.sendMessage(ChatColor.DARK_AQUA + "Page " + page + "/" + numberOfPages); sender.sendMessage(HEADER + "Page " + page + "/" + numberOfPages);
} }
for (int i = startpos; i <= stoppos; i++) { for (int i = startpos; i <= stoppos; i++) {
sender.sendMessage(ChatColor.GOLD + (lookupElements[i].getLocation() != null ? "(" + (i + 1) + ") " : "") + lookupElements[i].getMessage()); sender.sendMessage(DEFAULT + (lookupElements[i].getLocation() != null ? "(" + (i + 1) + ") " : "") + lookupElements[i].getMessage());
} }
if (setSessionPage) { if (setSessionPage) {
getSession(sender).page = page; getSession(sender).page = page;
} }
} else { } else {
sender.sendMessage(ChatColor.RED + "There isn't a page '" + page + "'"); sender.sendMessage(ERROR + "There isn't a page '" + page + "'");
} }
} else { } else {
sender.sendMessage(ChatColor.RED + "No blocks in lookup cache"); sender.sendMessage(ERROR + "No blocks in lookup cache");
} }
} }

View File

@@ -1,13 +1,18 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import de.diddiz.LogBlock.config.Config; import static de.diddiz.util.ActionColor.DESTROY;
import static de.diddiz.util.MessagingUtil.brackets;
import static de.diddiz.util.MessagingUtil.prettyDate;
import static de.diddiz.util.MessagingUtil.prettyLocation;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
import static de.diddiz.util.TypeColor.DEFAULT;
import de.diddiz.util.BukkitUtils; import de.diddiz.util.BukkitUtils;
import de.diddiz.util.MessagingUtil.BracketType;
import org.bukkit.Location;
import org.bukkit.Material;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import org.bukkit.Location;
import org.bukkit.Material;
public class Kill implements LookupCacheElement { public class Kill implements LookupCacheElement {
final long id, date; final long id, date;
@@ -37,15 +42,15 @@ public class Kill implements LookupCacheElement {
public String toString() { public String toString() {
final StringBuilder msg = new StringBuilder(); final StringBuilder msg = new StringBuilder();
if (date > 0) { if (date > 0) {
msg.append(Config.formatter.format(date)).append(" "); msg.append(brackets(prettyDate(date), BracketType.STANDARD)).append(' ');
} }
msg.append(killerName).append(" killed ").append(victimName); msg.append(killerName).append(DESTROY).append(" killed ").append(DEFAULT).append(victimName);
if (loc != null) { if (loc != null) {
msg.append(" at ").append(loc.getBlockX()).append(":").append(loc.getBlockY()).append(":").append(loc.getBlockZ()); msg.append(" at ").append(prettyLocation(loc));
} }
if (weapon != 0) { if (weapon != 0) {
String weaponName = prettyItemName(MaterialConverter.getMaterial(weapon)); String weaponName = prettyItemName(MaterialConverter.getMaterial(weapon));
msg.append(" with " + weaponName); // + ("aeiou".contains(weaponName.substring(0, 1)) ? "an " : "a " ) msg.append(" with ").append(weaponName); // + ("aeiou".contains(weaponName.substring(0, 1)) ? "an " : "a " )
} }
return msg.toString(); return msg.toString();
} }
@@ -62,8 +67,8 @@ public class Kill implements LookupCacheElement {
public String prettyItemName(Material t) { public String prettyItemName(Material t) {
if (t == null || BukkitUtils.isEmpty(t)) { if (t == null || BukkitUtils.isEmpty(t)) {
return "fist"; return prettyMaterial("fist");
} }
return t.toString().replace('_', ' ').toLowerCase(); return prettyMaterial(t.toString().replace('_', ' '));
} }
} }

View File

@@ -1,13 +1,16 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import de.diddiz.LogBlock.QueryParams.SummarizationMode; import static de.diddiz.util.ActionColor.CREATE;
import org.bukkit.Location; import static de.diddiz.util.ActionColor.DESTROY;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
import static de.diddiz.util.TypeColor.DEFAULT;
import static de.diddiz.util.Utils.spaces;
import de.diddiz.LogBlock.QueryParams.SummarizationMode;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Objects; import java.util.Objects;
import org.bukkit.Location;
import static de.diddiz.util.Utils.spaces;
public class SummedBlockChanges implements LookupCacheElement { public class SummedBlockChanges implements LookupCacheElement {
private final int type; private final int type;
@@ -31,6 +34,10 @@ public class SummedBlockChanges implements LookupCacheElement {
@Override @Override
public String getMessage() { public String getMessage() {
return created + spaces((int) ((10 - String.valueOf(created).length()) / spaceFactor)) + destroyed + spaces((int) ((10 - String.valueOf(destroyed).length()) / spaceFactor)) + (actor != null ? actor.getName() : Objects.toString(MaterialConverter.getMaterial(type))); StringBuilder builder = new StringBuilder();
builder.append(CREATE).append(created).append(spaces((int) ((10 - String.valueOf(created).length()) / spaceFactor)));
builder.append(DESTROY).append(destroyed).append(spaces((int) ((10 - String.valueOf(destroyed).length()) / spaceFactor)));
builder.append(actor != null ? DEFAULT + actor.getName() : prettyMaterial(Objects.toString(MaterialConverter.getMaterial(type))));
return builder.toString();
} }
} }

View File

@@ -1,11 +1,13 @@
package de.diddiz.LogBlock; package de.diddiz.LogBlock;
import org.bukkit.Location; import static de.diddiz.util.ActionColor.CREATE;
import static de.diddiz.util.ActionColor.DESTROY;
import static de.diddiz.util.TypeColor.DEFAULT;
import static de.diddiz.util.Utils.spaces;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import org.bukkit.Location;
import static de.diddiz.util.Utils.spaces;
public class SummedKills implements LookupCacheElement { public class SummedKills implements LookupCacheElement {
private final Actor player; private final Actor player;
@@ -26,6 +28,11 @@ public class SummedKills implements LookupCacheElement {
@Override @Override
public String getMessage() { public String getMessage() {
return kills + spaces((int) ((6 - String.valueOf(kills).length()) / spaceFactor)) + killed + spaces((int) ((7 - String.valueOf(killed).length()) / spaceFactor)) + player.getName(); StringBuilder builder = new StringBuilder();
builder.append(CREATE).append(kills).append(spaces((int) ((6 - String.valueOf(kills).length()) / spaceFactor)));
builder.append(DESTROY).append(killed).append(spaces((int) ((7 - String.valueOf(killed).length()) / spaceFactor)));
builder.append(DEFAULT).append(player.getName());
return builder.toString();
} }
} }

View File

@@ -0,0 +1,24 @@
package de.diddiz.util;
import org.bukkit.ChatColor;
public enum ActionColor {
DESTROY(ChatColor.RED),
CREATE(ChatColor.DARK_GREEN),
INTERACT(ChatColor.GRAY);
private final ChatColor color;
ActionColor(ChatColor color) {
this.color = color;
}
public ChatColor getColor() {
return color;
}
@Override
public String toString() {
return color.toString();
}
}

View File

@@ -1,6 +1,27 @@
package de.diddiz.util; package de.diddiz.util;
import org.bukkit.*; import static de.diddiz.util.MessagingUtil.prettyMaterial;
import static de.diddiz.util.TypeColor.DEFAULT;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
@@ -24,10 +45,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.io.File;
import java.util.*;
import java.util.Map.Entry;
public class BukkitUtils { public class BukkitUtils {
private static final Set<Set<Integer>> blockEquivalents; private static final Set<Set<Integer>> blockEquivalents;
private static final Set<Material> relativeBreakable; private static final Set<Material> relativeBreakable;
@@ -673,10 +690,11 @@ public class BukkitUtils {
public static String toString(ItemStack stack) { public static String toString(ItemStack stack) {
if (stack == null || stack.getAmount() == 0 || isEmpty(stack.getType())) { if (stack == null || stack.getAmount() == 0 || isEmpty(stack.getType())) {
return "nothing"; return prettyMaterial("nothing");
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append(stack.getAmount()).append("x ").append(stack.getType().name()); sb.append(stack.getAmount()).append("x ").append(prettyMaterial(stack.getType()));
sb.append(TypeColor.STATE);
ItemMeta meta = stack.getItemMeta(); ItemMeta meta = stack.getItemMeta();
boolean metaStarted = false; boolean metaStarted = false;
if (meta.hasEnchants()) { if (meta.hasEnchants()) {
@@ -690,8 +708,8 @@ public class BukkitUtils {
sb.append(", "); sb.append(", ");
} }
sb.append(formatMinecraftKey(e.getKey().getKey().getKey())); sb.append(formatMinecraftKey(e.getKey().getKey().getKey()));
if (e.getValue().intValue() > 1) { if (e.getValue() > 1) {
sb.append(" ").append(maybeToRoman(e.getValue().intValue() - 1)); sb.append(" ").append(maybeToRoman(e.getValue() - 1));
} }
} }
} }
@@ -709,8 +727,8 @@ public class BukkitUtils {
sb.append(", "); sb.append(", ");
} }
sb.append(formatMinecraftKey(e.getKey().getKey().getKey())); sb.append(formatMinecraftKey(e.getKey().getKey().getKey()));
if (e.getValue().intValue() > 1) { if (e.getValue() > 1) {
sb.append(" ").append(maybeToRoman(e.getValue().intValue() - 1)); sb.append(" ").append(maybeToRoman(e.getValue() - 1));
} }
} }
} }
@@ -719,6 +737,7 @@ public class BukkitUtils {
if (metaStarted) { if (metaStarted) {
sb.append("]"); sb.append("]");
} }
sb.append(DEFAULT);
return sb.toString(); return sb.toString();
} }

View File

@@ -0,0 +1,65 @@
package de.diddiz.util;
import static de.diddiz.util.TypeColor.DEFAULT;
import de.diddiz.LogBlock.config.Config;
import org.bukkit.Location;
import org.bukkit.Material;
public class MessagingUtil {
public static String brackets(String string, BracketType type) {
return TypeColor.BRACKETS + String.valueOf(type.getStarting()) + string + TypeColor.BRACKETS + type.getEnding() + DEFAULT;
}
public static String prettyDate(long date) {
return TypeColor.DATE + Config.formatter.format(date) + DEFAULT;
}
public static String prettyState(String stateName) {
return TypeColor.STATE + stateName.toUpperCase() + DEFAULT;
}
public static String prettyState(int stateValue) {
return prettyState(Integer.toString(stateValue));
}
public static <E extends Enum<E>> String prettyState(E enumerator) {
return prettyState(enumerator.toString());
}
public static String prettyMaterial(String materialName) {
return TypeColor.MATERIAL + materialName.toUpperCase() + DEFAULT;
}
public static String prettyMaterial(Material material) {
return prettyMaterial(material.name());
}
public static String prettyLocation(Location loc) {
return prettyLocation(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
}
public static String prettyLocation(Number x, Number y, Number z) {
return DEFAULT + "X: " + TypeColor.COORDINATE + x.intValue() + DEFAULT + ", Y: " + TypeColor.COORDINATE + y.intValue() + DEFAULT + ", Z: " + TypeColor.COORDINATE + z.intValue() + DEFAULT;
}
public enum BracketType {
STANDARD('[', ']'),
ANGLE('<', '>');
private char starting, ending;
BracketType(char starting, char ending) {
this.starting = starting;
this.ending = ending;
}
public char getStarting() {
return starting;
}
public char getEnding() {
return ending;
}
}
}

View File

@@ -0,0 +1,29 @@
package de.diddiz.util;
import org.bukkit.ChatColor;
public enum TypeColor {
DEFAULT(ChatColor.YELLOW),
MATERIAL(ChatColor.BLUE),
STATE(ChatColor.BLUE),
DATE(ChatColor.DARK_AQUA),
BRACKETS(ChatColor.DARK_GRAY),
COORDINATE(ChatColor.WHITE),
HEADER(ChatColor.GOLD),
ERROR(ChatColor.RED);
private final ChatColor color;
TypeColor(ChatColor color) {
this.color = color;
}
public ChatColor getColor() {
return color;
}
@Override
public String toString() {
return color.toString();
}
}