Use ChatComponent API for log messages

This commit is contained in:
Brokkonaut
2019-12-18 01:33:40 +01:00
parent 60a771224b
commit 169328e159
14 changed files with 270 additions and 157 deletions

View File

@ -3,7 +3,8 @@ package de.diddiz.LogBlock;
import static de.diddiz.util.ActionColor.CREATE;
import static de.diddiz.util.ActionColor.DESTROY;
import static de.diddiz.util.ActionColor.INTERACT;
import static de.diddiz.util.MessagingUtil.brackets;
import static de.diddiz.util.TypeColor.DEFAULT;
import static de.diddiz.util.MessagingUtil.createTextComponentWithColor;
import static de.diddiz.util.MessagingUtil.prettyDate;
import static de.diddiz.util.MessagingUtil.prettyLocation;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
@ -11,11 +12,12 @@ 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 net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Note;
@ -99,18 +101,25 @@ public class BlockChange implements LookupCacheElement {
@Override
public String toString() {
final StringBuilder msg = new StringBuilder();
return BaseComponent.toPlainText(getLogMessage());
}
@Override
public BaseComponent[] getLogMessage() {
TextComponent msg = new TextComponent();
if (date > 0) {
msg.append(brackets(prettyDate(date), BracketType.STANDARD)).append(' ');
msg.addExtra(prettyDate(date));
msg.addExtra(" ");
}
if (actor != null) {
msg.append(actor.getName()).append(" ");
msg.addExtra(actor.getName());
msg.addExtra(" ");
}
BlockData type = getBlockSet();
BlockData replaced = getBlockReplaced();
if (type == null || replaced == null) {
msg.append("did an unknown block modification");
return msg.toString();
msg.addExtra("did an unknown block modification");
return new BaseComponent[] { msg };
}
// Process type details once for later use.
@ -119,63 +128,114 @@ public class BlockChange implements LookupCacheElement {
if (type.getMaterial().equals(replaced.getMaterial())) {
if (BukkitUtils.isEmpty(type.getMaterial())) {
msg.append(INTERACT).append("did an unspecified action");
msg.addExtra(createTextComponentWithColor("did an unspecified action", INTERACT.getColor()));
} else if (ca != null) {
if (ca.itemStack == null) {
msg.append(INTERACT).append("looked inside ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("looked inside ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (ca.remove) {
msg.append(DESTROY).append("took ").append(BukkitUtils.toString(ca.itemStack)).append(" from ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("took ", DESTROY.getColor()));
msg.addExtra(BukkitUtils.toString(ca.itemStack));
msg.addExtra(createTextComponentWithColor(" from ", DESTROY.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else {
msg.append(CREATE).append("put ").append(BukkitUtils.toString(ca.itemStack)).append(" into ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("put ", CREATE.getColor()));
msg.addExtra(BukkitUtils.toString(ca.itemStack));
msg.addExtra(createTextComponentWithColor(" into ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
}
} else if (type instanceof Waterlogged && ((Waterlogged) type).isWaterlogged() != ((Waterlogged) replaced).isWaterlogged()) {
if (((Waterlogged) type).isWaterlogged()) {
msg.append(CREATE).append("waterlogged ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("waterlogged ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else {
msg.append(DESTROY).append("dried ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("dried ", DESTROY.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
}
} else if (BukkitUtils.getContainerBlocks().contains(type.getMaterial())) {
msg.append(INTERACT).append("opened ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("opened ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type instanceof Openable && ((Openable) type).isOpen() != ((Openable) replaced).isOpen()) {
// Door, Trapdoor, Fence gate
msg.append(INTERACT).append(((Openable) type).isOpen() ? "opened" : "closed").append(" ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor(((Openable) type).isOpen() ? "opened " : "closed ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.LEVER && ((Switch) type).isPowered() != ((Switch) replaced).isPowered()) {
msg.append(INTERACT).append("switched ").append(prettyMaterial(type.getMaterial())).append(" ").append(prettyState(((Switch) type).isPowered() ? "on" : "off"));
msg.addExtra(createTextComponentWithColor("switched ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(prettyState(((Switch) type).isPowered() ? " on" : " off"));
} else if (type instanceof Switch && ((Switch) type).isPowered() != ((Switch) replaced).isPowered()) {
msg.append(INTERACT).append("pressed ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("pressed ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.CAKE) {
msg.append(DESTROY).append("ate a piece of ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("ate a piece of ", DESTROY.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.NOTE_BLOCK) {
Note note = ((NoteBlock) type).getNote();
msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(note.getTone().name() + (note.isSharped() ? "#" : "")));
msg.addExtra(createTextComponentWithColor("set ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(" to ");
msg.addExtra(prettyState(note.getTone().name() + (note.isSharped() ? "#" : "")));
} else if (type.getMaterial() == Material.REPEATER) {
msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((Repeater) type).getDelay())).append(" ticks delay");
msg.addExtra(createTextComponentWithColor("set ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(" to ");
msg.addExtra(prettyState(((Repeater) type).getDelay()));
msg.addExtra(createTextComponentWithColor(" ticks delay", DEFAULT.getColor()));
} else if (type.getMaterial() == Material.COMPARATOR) {
msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((Comparator) type).getMode()));
msg.addExtra(createTextComponentWithColor("set ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(" to ");
msg.addExtra(prettyState(((Comparator) type).getMode()));
} else if (type.getMaterial() == Material.DAYLIGHT_DETECTOR) {
msg.append(INTERACT).append("set ").append(prettyMaterial(type.getMaterial())).append(" to ").append(prettyState(((DaylightDetector) type).isInverted() ? "inverted" : "normal"));
msg.addExtra(createTextComponentWithColor("set ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(" to ");
msg.addExtra(prettyState(((DaylightDetector) type).isInverted() ? "inverted" : "normal"));
} else if (type instanceof Lectern) {
msg.append(INTERACT).append("changed the book on a ").append(prettyMaterial(type.getMaterial())).append(" to").append(prettyState(typeDetails.length() == 0 ? " empty" : typeDetails));
msg.addExtra(createTextComponentWithColor("changed the book on a ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(" to");
msg.addExtra(prettyState(typeDetails.length() == 0 ? " empty" : typeDetails));
} else if (type instanceof Powerable) {
msg.append(INTERACT).append("stepped on ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("stepped on ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type.getMaterial() == Material.TRIPWIRE) {
msg.append(INTERACT).append("ran into ").append(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor("ran into ", INTERACT.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
} else if (type instanceof Sign || type instanceof WallSign) {
msg.append(CREATE).append("edited a ").append(prettyMaterial(type.getMaterial())).append(CREATE).append(" to ").append(prettyState(typeDetails));
msg.addExtra(createTextComponentWithColor("edited a ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(createTextComponentWithColor(" to ", CREATE.getColor()));
msg.addExtra(prettyState(typeDetails));
} else {
msg.append(CREATE).append("replaced ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails)).append(CREATE).append(" with ").append(prettyMaterial(type.getMaterial())).append(prettyState(typeDetails));
msg.addExtra(createTextComponentWithColor("replaced ", CREATE.getColor()));
msg.addExtra(prettyMaterial(replaced.getMaterial()));
msg.addExtra(prettyState(replacedDetails));
msg.addExtra(createTextComponentWithColor(" with ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(prettyState(typeDetails));
}
} else if (BukkitUtils.isEmpty(type.getMaterial())) {
msg.append(DESTROY).append("destroyed ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails));
msg.addExtra(createTextComponentWithColor("destroyed ", DESTROY.getColor()));
msg.addExtra(prettyMaterial(replaced.getMaterial()));
msg.addExtra(prettyState(replacedDetails));
} else if (BukkitUtils.isEmpty(replaced.getMaterial())) {
msg.append(CREATE).append("created ").append(prettyMaterial(type.getMaterial())).append(prettyState(typeDetails));
msg.addExtra(createTextComponentWithColor("created ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(prettyState(typeDetails));
} else {
msg.append(CREATE).append("replaced ").append(prettyMaterial(replaced.getMaterial())).append(prettyState(replacedDetails)).append(CREATE).append(" with ").append(type.getMaterial().name()).append(typeDetails);
msg.addExtra(createTextComponentWithColor("replaced ", CREATE.getColor()));
msg.addExtra(prettyMaterial(replaced.getMaterial()));
msg.addExtra(prettyState(replacedDetails));
msg.addExtra(createTextComponentWithColor(" with ", CREATE.getColor()));
msg.addExtra(prettyMaterial(type.getMaterial()));
msg.addExtra(prettyState(typeDetails));
}
if (loc != null) {
msg.append(" at: ").append(prettyLocation(loc));
msg.addExtra(" at ");
msg.addExtra(prettyLocation(loc));
}
return msg.toString();
return new BaseComponent[] { msg };
}
public BlockData getBlockReplaced() {
@ -190,9 +250,4 @@ public class BlockChange implements LookupCacheElement {
public Location getLocation() {
return loc;
}
@Override
public String getMessage() {
return toString();
}
}

View File

@ -1,13 +1,15 @@
package de.diddiz.LogBlock;
import static de.diddiz.util.ActionColor.CREATE;
import static de.diddiz.util.LoggingUtil.checkText;
import static de.diddiz.util.MessagingUtil.brackets;
import static de.diddiz.util.MessagingUtil.prettyDate;
import de.diddiz.util.MessagingUtil;
import de.diddiz.util.MessagingUtil.BracketType;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.bukkit.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
public class ChatMessage implements LookupCacheElement {
@ -37,7 +39,21 @@ public class ChatMessage implements LookupCacheElement {
}
@Override
public String getMessage() {
return (playerName != null ? brackets(ChatColor.WHITE + playerName, BracketType.ANGLE) + ' ' : "") + (message != null ? CREATE + message : "");
public BaseComponent[] getLogMessage() {
TextComponent msg = new TextComponent();
if (date > 0) {
msg.addExtra(prettyDate(date));
msg.addExtra(" ");
}
if (playerName != null) {
msg.addExtra(brackets(BracketType.ANGLE, MessagingUtil.createTextComponentWithColor(playerName, net.md_5.bungee.api.ChatColor.WHITE)));
msg.addExtra(" ");
}
if (message != null) {
for (BaseComponent messageComponent : TextComponent.fromLegacyText(message)) {
msg.addExtra(messageComponent);
}
}
return new BaseComponent[] { msg };
}
}

View File

@ -43,6 +43,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
@ -398,7 +400,15 @@ public class CommandsHandler implements CommandExecutor {
sender.sendMessage(HEADER + "Page " + page + "/" + numberOfPages);
}
for (int i = startpos; i <= stoppos; i++) {
sender.sendMessage(DEFAULT + (lookupElements[i].getLocation() != null ? "(" + (i + 1) + ") " : "") + lookupElements[i].getMessage());
TextComponent message = new TextComponent();
message.setColor(DEFAULT.getColor());
if (lookupElements[i].getLocation() != null) {
message.addExtra(new TextComponent("(" + (i + 1) + ") "));
}
for (BaseComponent component : lookupElements[i].getLogMessage()) {
message.addExtra(component);
}
sender.spigot().sendMessage(message);
}
if (setSessionPage) {
getSession(sender).page = page;
@ -586,7 +596,7 @@ public class CommandsHandler implements CommandExecutor {
}
final LookupCacheElementFactory factory = new LookupCacheElementFactory(params, sender instanceof Player ? 2 / 3f : 1);
while (rs.next()) {
writer.write(factory.getLookupCacheElement(rs).getMessage() + newline);
writer.write(BaseComponent.toPlainText(factory.getLookupCacheElement(rs).getLogMessage()) + newline);
counter++;
}
writer.close();

View File

@ -3,17 +3,18 @@ package de.diddiz.LogBlock;
import static de.diddiz.util.ActionColor.CREATE;
import static de.diddiz.util.ActionColor.DESTROY;
import static de.diddiz.util.ActionColor.INTERACT;
import static de.diddiz.util.MessagingUtil.brackets;
import static de.diddiz.util.MessagingUtil.createTextComponentWithColor;
import static de.diddiz.util.MessagingUtil.prettyDate;
import static de.diddiz.util.MessagingUtil.prettyEntityType;
import static de.diddiz.util.MessagingUtil.prettyLocation;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
import de.diddiz.util.MessagingUtil.BracketType;
import de.diddiz.util.Utils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.ArmorStand;
@ -71,57 +72,64 @@ public class EntityChange implements LookupCacheElement {
@Override
public String toString() {
final StringBuilder msg = new StringBuilder();
return BaseComponent.toPlainText(getLogMessage());
}
@Override
public BaseComponent[] getLogMessage() {
TextComponent msg = new TextComponent();
if (date > 0) {
msg.append(brackets(prettyDate(date), BracketType.STANDARD)).append(' ');
msg.addExtra(prettyDate(date));
msg.addExtra(" ");
}
if (actor != null) {
msg.append(actor.getName()).append(" ");
msg.addExtra(actor.getName());
msg.addExtra(" ");
}
if (changeType == EntityChangeType.CREATE) {
msg.append(CREATE).append("created ");
msg.addExtra(createTextComponentWithColor("created ", CREATE.getColor()));
} else if (changeType == EntityChangeType.KILL) {
boolean living = type != null && LivingEntity.class.isAssignableFrom(type.getEntityClass()) && !ArmorStand.class.isAssignableFrom(type.getDeclaringClass());
msg.append(DESTROY).append(living ? "killed " : "destroyed ");
msg.addExtra(createTextComponentWithColor(living ? "killed " : "destroyed ", DESTROY.getColor()));
} else if (changeType == EntityChangeType.ADDEQUIP) {
YamlConfiguration conf = Utils.deserializeYamlConfiguration(data);
ItemStack stack = conf == null ? null : conf.getItemStack("item");
if (stack == null) {
msg.append(CREATE).append("added an item to ");
msg.addExtra(createTextComponentWithColor("added an item to ", CREATE.getColor()));
} else {
msg.append(CREATE).append("added ").append(prettyMaterial(stack.getType())).append(" to ");
msg.addExtra(createTextComponentWithColor("added ", CREATE.getColor()));
msg.addExtra(prettyMaterial(stack.getType()));
msg.addExtra(" to ");
}
} else if (changeType == EntityChangeType.REMOVEEQUIP) {
YamlConfiguration conf = Utils.deserializeYamlConfiguration(data);
ItemStack stack = conf == null ? null : conf.getItemStack("item");
if (stack == null) {
msg.append(DESTROY).append("removed an item from ");
msg.addExtra(createTextComponentWithColor("removed an item from ", DESTROY.getColor()));
} else {
msg.append(DESTROY).append("removed ").append(prettyMaterial(stack.getType())).append(" from ");
msg.addExtra(createTextComponentWithColor("removed ", DESTROY.getColor()));
msg.addExtra(prettyMaterial(stack.getType()));
msg.addExtra(" from ");
}
} else if (changeType == EntityChangeType.MODIFY) {
msg.append(INTERACT).append("modified ");
msg.addExtra(createTextComponentWithColor("modified ", INTERACT.getColor()));
} else {
msg.append(INTERACT).append("did an unknown action to ");
msg.addExtra(createTextComponentWithColor("did an unknown action to ", INTERACT.getColor()));
}
if (type != null) {
msg.append(prettyEntityType(type));
msg.addExtra(prettyEntityType(type));
} else {
msg.append(prettyMaterial("an unknown entity"));
msg.addExtra(prettyMaterial("an unknown entity"));
}
if (loc != null) {
msg.append(" at: ").append(prettyLocation(loc));
msg.addExtra(" at ");
msg.addExtra(prettyLocation(loc));
}
return msg.toString();
return new BaseComponent[] { msg };
}
@Override
public Location getLocation() {
return loc;
}
@Override
public String getMessage() {
return toString();
}
}

View File

@ -1,16 +1,15 @@
package de.diddiz.LogBlock;
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.MessagingUtil.BracketType;
import de.diddiz.util.MessagingUtil;
import java.sql.ResultSet;
import java.sql.SQLException;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
import org.bukkit.Material;
@ -40,19 +39,7 @@ public class Kill implements LookupCacheElement {
@Override
public String toString() {
final StringBuilder msg = new StringBuilder();
if (date > 0) {
msg.append(brackets(prettyDate(date), BracketType.STANDARD)).append(' ');
}
msg.append(killerName).append(DESTROY).append(" killed ").append(DEFAULT).append(victimName);
if (loc != null) {
msg.append(" at ").append(prettyLocation(loc));
}
if (weapon != 0) {
String weaponName = prettyItemName(MaterialConverter.getMaterial(weapon));
msg.append(" with ").append(weaponName); // + ("aeiou".contains(weaponName.substring(0, 1)) ? "an " : "a " )
}
return msg.toString();
return BaseComponent.toPlainText(getLogMessage());
}
@Override
@ -61,11 +48,26 @@ public class Kill implements LookupCacheElement {
}
@Override
public String getMessage() {
return toString();
public BaseComponent[] getLogMessage() {
TextComponent msg = new TextComponent();
if (date > 0) {
msg.addExtra(prettyDate(date));
msg.addExtra(" ");
}
msg.addExtra(MessagingUtil.createTextComponentWithColor(killerName + " killed ", DESTROY.getColor()));
msg.addExtra(new TextComponent(victimName));
if (loc != null) {
msg.addExtra(" at ");
msg.addExtra(prettyLocation(loc));
}
if (weapon != 0) {
msg.addExtra(" with ");
msg.addExtra(prettyItemName(MaterialConverter.getMaterial(weapon)));
}
return new BaseComponent[] { msg };
}
public String prettyItemName(Material t) {
public TextComponent prettyItemName(Material t) {
if (t == null || BukkitUtils.isEmpty(t)) {
return prettyMaterial("fist");
}

View File

@ -1,9 +1,10 @@
package de.diddiz.LogBlock;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.Location;
public interface LookupCacheElement {
public Location getLocation();
public String getMessage();
public BaseComponent[] getLogMessage();
}

View File

@ -1,15 +1,13 @@
package de.diddiz.LogBlock;
import static de.diddiz.util.ActionColor.CREATE;
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 de.diddiz.util.MessagingUtil;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
public class SummedBlockChanges implements LookupCacheElement {
@ -33,11 +31,7 @@ public class SummedBlockChanges implements LookupCacheElement {
}
@Override
public String getMessage() {
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();
public BaseComponent[] getLogMessage() {
return MessagingUtil.formatSummarizedChanges(created, destroyed, actor != null ? new TextComponent(actor.getName()) : prettyMaterial(Objects.toString(MaterialConverter.getMaterial(type))), 10, 10, spaceFactor);
}
}

View File

@ -1,13 +1,16 @@
package de.diddiz.LogBlock;
import de.diddiz.LogBlock.QueryParams.SummarizationMode;
import de.diddiz.util.MessagingUtil;
import org.bukkit.Location;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import static de.diddiz.util.Utils.spaces;
import static de.diddiz.util.MessagingUtil.prettyMaterial;
public class SummedEntityChanges implements LookupCacheElement {
private final int type;
@ -30,7 +33,7 @@ public class SummedEntityChanges implements LookupCacheElement {
}
@Override
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(EntityTypeConverter.getEntityType(type)));
public BaseComponent[] getLogMessage() {
return MessagingUtil.formatSummarizedChanges(created, destroyed, actor != null ? new TextComponent(actor.getName()) : prettyMaterial(Objects.toString(EntityTypeConverter.getEntityType(type))), 10, 10, spaceFactor);
}
}

View File

@ -1,12 +1,10 @@
package de.diddiz.LogBlock;
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 de.diddiz.util.MessagingUtil;
import java.sql.ResultSet;
import java.sql.SQLException;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
public class SummedKills implements LookupCacheElement {
@ -27,12 +25,7 @@ public class SummedKills implements LookupCacheElement {
}
@Override
public String getMessage() {
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();
public BaseComponent[] getLogMessage() {
return MessagingUtil.formatSummarizedChanges(kills, killed, new TextComponent(player.getName()), 6, 7, spaceFactor);
}
}

View File

@ -43,6 +43,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import static de.diddiz.LogBlock.config.Config.dontRollback;
import static de.diddiz.LogBlock.config.Config.replaceAnyway;
@ -184,7 +186,7 @@ public class WorldEditor implements Runnable {
file.getParentFile().mkdirs();
final PrintWriter writer = new PrintWriter(file);
for (final LookupCacheElement err : errorList) {
writer.println(err.getMessage());
writer.println(BaseComponent.toPlainText(err.getLogMessage()));
}
writer.close();
} catch (final Exception ex) {
@ -472,5 +474,10 @@ public class WorldEditor implements Runnable {
public Location getLocation() {
return loc;
}
@Override
public BaseComponent[] getLogMessage() {
return TextComponent.fromLegacyText(getMessage());
}
}
}

View File

@ -1,6 +1,6 @@
package de.diddiz.util;
import org.bukkit.ChatColor;
import net.md_5.bungee.api.ChatColor;
public enum ActionColor {
DESTROY(ChatColor.RED),

View File

@ -1,8 +1,6 @@
package de.diddiz.util;
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;
@ -15,6 +13,10 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.HoverEvent.Action;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
@ -686,29 +688,26 @@ public class BukkitUtils {
return m == Material.AIR || m == Material.CAVE_AIR || m == Material.VOID_AIR;
}
public static String toString(ItemStack stack) {
public static TextComponent toString(ItemStack stack) {
if (stack == null || stack.getAmount() == 0 || isEmpty(stack.getType())) {
return prettyMaterial("nothing");
}
StringBuilder sb = new StringBuilder();
sb.append(stack.getAmount()).append("x ").append(prettyMaterial(stack.getType()));
sb.append(TypeColor.STATE);
TextComponent msg = MessagingUtil.createTextComponentWithColor(stack.getAmount() + "x ", TypeColor.DEFAULT.getColor());
msg.addExtra(prettyMaterial(stack.getType()));
ItemMeta meta = stack.getItemMeta();
TextComponent hover = MessagingUtil.createTextComponentWithColor("", TypeColor.STATE.getColor());
boolean metaStarted = false;
if (meta.hasEnchants()) {
Map<Enchantment, Integer> enchants = meta.getEnchants();
if (!enchants.isEmpty()) {
for (Entry<Enchantment, Integer> e : enchants.entrySet()) {
if (!metaStarted) {
sb.append(" [");
metaStarted = true;
} else {
sb.append(", ");
}
sb.append(formatMinecraftKey(e.getKey().getKey().getKey()));
if (e.getValue() > 1) {
sb.append(" ").append(maybeToRoman(e.getValue() - 1));
hover.addExtra("\n");
}
hover.addExtra(formatMinecraftKey(e.getKey().getKey().getKey()) + ((e.getKey().getMaxLevel() != 1 || e.getValue() != 1) ? " " + maybeToRoman(e.getValue()) : ""));
}
}
}
@ -719,24 +718,20 @@ public class BukkitUtils {
if (!enchants.isEmpty()) {
for (Entry<Enchantment, Integer> e : enchants.entrySet()) {
if (!metaStarted) {
sb.append(" [");
metaStarted = true;
} else {
sb.append(", ");
}
sb.append(formatMinecraftKey(e.getKey().getKey().getKey()));
if (e.getValue() > 1) {
sb.append(" ").append(maybeToRoman(e.getValue() - 1));
hover.addExtra("\n");
}
hover.addExtra(formatMinecraftKey(e.getKey().getKey().getKey()) + ((e.getKey().getMaxLevel() != 1 || e.getValue() != 1) ? " " + maybeToRoman(e.getValue()) : ""));
}
}
}
}
if (metaStarted) {
sb.append("]");
msg.setHoverEvent(new HoverEvent(Action.SHOW_TEXT, new BaseComponent[] { hover }));
}
sb.append(DEFAULT);
return sb.toString();
return msg;
}
private static final String[] romanNumbers = new String[] { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "XI", "X" };

View File

@ -1,69 +1,98 @@
package de.diddiz.util;
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 de.diddiz.LogBlock.config.Config;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
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 BaseComponent[] formatSummarizedChanges(int created, int destroyed, BaseComponent actor, int createdWidth, int destroyedWidth, float spaceFactor) {
TextComponent textCreated = createTextComponentWithColor(created + spaces((int) ((10 - String.valueOf(created).length()) / spaceFactor)), CREATE.getColor());
TextComponent textDestroyed = createTextComponentWithColor(destroyed + spaces((int) ((10 - String.valueOf(destroyed).length()) / spaceFactor)), DESTROY.getColor());
return new BaseComponent[] { textCreated, textDestroyed, actor };
}
public static String prettyDate(long date) {
return TypeColor.DATE + Config.formatter.format(date) + DEFAULT;
public static TextComponent createTextComponentWithColor(String text, ChatColor color) {
TextComponent tc = new TextComponent(text);
tc.setColor(color);
return tc;
}
public static String prettyState(String stateName) {
return TypeColor.STATE + stateName.toUpperCase() + DEFAULT;
public static TextComponent brackets(BracketType type, BaseComponent... content) {
TextComponent tc = createTextComponentWithColor(type.getStarting(), TypeColor.BRACKETS.getColor());
for (BaseComponent c : content) {
tc.addExtra(c);
}
tc.addExtra(new TextComponent(type.getEnding()));
return tc;
}
public static String prettyState(int stateValue) {
public static TextComponent prettyDate(long date) {
return brackets(BracketType.STANDARD, createTextComponentWithColor(Config.formatter.format(date), TypeColor.DATE.getColor()));
}
public static TextComponent prettyState(String stateName) {
return createTextComponentWithColor(stateName, TypeColor.STATE.getColor());
}
public static TextComponent prettyState(int stateValue) {
return prettyState(Integer.toString(stateValue));
}
public static <E extends Enum<E>> String prettyState(E enumerator) {
public static <E extends Enum<E>> TextComponent prettyState(E enumerator) {
return prettyState(enumerator.toString());
}
public static String prettyMaterial(String materialName) {
return TypeColor.MATERIAL + materialName.toUpperCase() + DEFAULT;
public static TextComponent prettyMaterial(String materialName) {
return createTextComponentWithColor(materialName.toUpperCase(), TypeColor.MATERIAL.getColor());
}
public static String prettyMaterial(Material material) {
public static TextComponent prettyMaterial(Material material) {
return prettyMaterial(material.name());
}
public static String prettyEntityType(EntityType type) {
public static TextComponent prettyEntityType(EntityType type) {
return prettyMaterial(type.name());
}
public static String prettyLocation(Location loc) {
public static TextComponent 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 static TextComponent prettyLocation(Number x, Number y, Number z) {
TextComponent tc = createTextComponentWithColor("X: ", DEFAULT.getColor());
tc.addExtra(createTextComponentWithColor(Integer.toString(x.intValue()), TypeColor.COORDINATE.getColor()));
tc.addExtra(createTextComponentWithColor(", Y: ", DEFAULT.getColor()));
tc.addExtra(createTextComponentWithColor(Integer.toString(y.intValue()), TypeColor.COORDINATE.getColor()));
tc.addExtra(createTextComponentWithColor(", Z: ", DEFAULT.getColor()));
tc.addExtra(createTextComponentWithColor(Integer.toString(z.intValue()), TypeColor.COORDINATE.getColor()));
return tc;
}
public enum BracketType {
STANDARD('[', ']'),
ANGLE('<', '>');
STANDARD("[", "]"),
ANGLE("<", ">");
private char starting, ending;
private String starting, ending;
BracketType(char starting, char ending) {
BracketType(String starting, String ending) {
this.starting = starting;
this.ending = ending;
}
public char getStarting() {
public String getStarting() {
return starting;
}
public char getEnding() {
public String getEnding() {
return ending;
}
}

View File

@ -1,6 +1,6 @@
package de.diddiz.util;
import org.bukkit.ChatColor;
import net.md_5.bungee.api.ChatColor;
public enum TypeColor {
DEFAULT(ChatColor.YELLOW),