diff --git a/api/src/main/java/net/md_5/bungee/api/chat/BaseComponent.java b/api/src/main/java/net/md_5/bungee/api/chat/BaseComponent.java index 8651071e..53eae97d 100644 --- a/api/src/main/java/net/md_5/bungee/api/chat/BaseComponent.java +++ b/api/src/main/java/net/md_5/bungee/api/chat/BaseComponent.java @@ -7,13 +7,13 @@ import lombok.Setter; import net.md_5.bungee.api.ChatColor; import java.util.ArrayList; -import java.util.Collections; import java.util.List; @Getter @Setter @NoArgsConstructor -public abstract class BaseComponent { +public abstract class BaseComponent +{ @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) @@ -40,27 +40,32 @@ public abstract class BaseComponent { private ClickEvent clickEvent; private HoverEvent hoverEvent; - public BaseComponent(BaseComponent old) { - setColor(old.getColorRaw()); - setBold(old.isBoldRaw()); - setItalic(old.isItalicRaw()); - setUnderlined(old.isUnderlined()); - setStrikethrough(old.isStrikethroughRaw()); - setObfuscated(old.isObfuscatedRaw()); + public BaseComponent(BaseComponent old) + { + setColor( old.getColorRaw() ); + setBold( old.isBoldRaw() ); + setItalic( old.isItalicRaw() ); + setUnderlined( old.isUnderlined() ); + setStrikethrough( old.isStrikethroughRaw() ); + setObfuscated( old.isObfuscatedRaw() ); } - public static String toLegacyText(BaseComponent[] components) { + public static String toLegacyText(BaseComponent[] components) + { StringBuilder builder = new StringBuilder(); - for (BaseComponent msg : components) { - builder.append(msg.toLegacyText()); + for (BaseComponent msg : components) + { + builder.append( msg.toLegacyText() ); } return builder.toString(); } - public static String toPlainText(BaseComponent[] components) { + public static String toPlainText(BaseComponent[] components) + { StringBuilder builder = new StringBuilder(); - for (BaseComponent msg : components) { - builder.append(msg.toPlainText()); + for (BaseComponent msg : components) + { + builder.append( msg.toPlainText() ); } return builder.toString(); } @@ -70,11 +75,15 @@ public abstract class BaseComponent { * Returns the color of this component. This uses the parent's color * if this component doesn't have one. {@link net.md_5.bungee.api.ChatColor#WHITE} * is returned if no color is found. + * * @return the color of this component */ - public ChatColor getColor() { - if (color == null) { - if (parent == null) { + public ChatColor getColor() + { + if (color == null) + { + if (parent == null) + { return ChatColor.WHITE; } return parent.getColor(); @@ -85,9 +94,11 @@ public abstract class BaseComponent { /** * Returns the color of this component without checking the parents * color. May return null + * * @return the color of this component */ - public ChatColor getColorRaw() { + public ChatColor getColorRaw() + { return color; } @@ -95,10 +106,13 @@ public abstract class BaseComponent { * Returns whether this component is bold. This uses the parent's * setting if this component hasn't been set. false is returned * if none of the parent chain has been set. + * * @return whether the component is bold */ - public boolean isBold() { - if (bold == null) { + public boolean isBold() + { + if (bold == null) + { return parent != null && parent.isBold(); } return bold; @@ -107,9 +121,11 @@ public abstract class BaseComponent { /** * Returns whether this component is bold without checking * the parents setting. May return null + * * @return whether the component is bold */ - public Boolean isBoldRaw() { + public Boolean isBoldRaw() + { return bold; } @@ -117,10 +133,13 @@ public abstract class BaseComponent { * Returns whether this component is italic. This uses the parent's * setting if this component hasn't been set. false is returned * if none of the parent chain has been set. + * * @return whether the component is italic */ - public boolean isItalic() { - if (italic == null) { + public boolean isItalic() + { + if (italic == null) + { return parent != null && parent.isItalic(); } return italic; @@ -129,9 +148,11 @@ public abstract class BaseComponent { /** * Returns whether this component is italic without checking * the parents setting. May return null + * * @return whether the component is italic */ - public Boolean isItalicRaw() { + public Boolean isItalicRaw() + { return italic; } @@ -139,10 +160,13 @@ public abstract class BaseComponent { * Returns whether this component is underlined. This uses the parent's * setting if this component hasn't been set. false is returned * if none of the parent chain has been set. + * * @return whether the component is underlined */ - public boolean isUnderlined() { - if (underlined == null) { + public boolean isUnderlined() + { + if (underlined == null) + { return parent != null && parent.isUnderlined(); } return underlined; @@ -151,9 +175,11 @@ public abstract class BaseComponent { /** * Returns whether this component is underlined without checking * the parents setting. May return null + * * @return whether the component is underlined */ - public Boolean isUnderlinedRaw() { + public Boolean isUnderlinedRaw() + { return underlined; } @@ -161,10 +187,13 @@ public abstract class BaseComponent { * Returns whether this component is strikethrough. This uses the parent's * setting if this component hasn't been set. false is returned * if none of the parent chain has been set. + * * @return whether the component is strikethrough */ - public boolean isStrikethrough() { - if (strikethrough == null) { + public boolean isStrikethrough() + { + if (strikethrough == null) + { return parent != null && parent.isStrikethrough(); } return strikethrough; @@ -173,9 +202,11 @@ public abstract class BaseComponent { /** * Returns whether this component is strikethrough without checking * the parents setting. May return null + * * @return whether the component is strikethrough */ - public Boolean isStrikethroughRaw() { + public Boolean isStrikethroughRaw() + { return strikethrough; } @@ -183,10 +214,13 @@ public abstract class BaseComponent { * Returns whether this component is obfuscated. This uses the parent's * setting if this component hasn't been set. false is returned * if none of the parent chain has been set. + * * @return whether the component is obfuscated */ - public boolean isObfuscated() { - if (obfuscated == null) { + public boolean isObfuscated() + { + if (obfuscated == null) + { return parent != null && parent.isObfuscated(); } return obfuscated; @@ -195,14 +229,18 @@ public abstract class BaseComponent { /** * Returns whether this component is obfuscated without checking * the parents setting. May return null + * * @return whether the component is obfuscated */ - public Boolean isObfuscatedRaw() { + public Boolean isObfuscatedRaw() + { return obfuscated; } - public void setExtra(List components) { - for (BaseComponent component : components) { + public void setExtra(List components) + { + for (BaseComponent component : components) + { component.parent = this; } extra = components; @@ -211,62 +249,77 @@ public abstract class BaseComponent { /** * Appends a text element to the component. The text will * inherit this component's formatting + * * @param text the text to append */ - public void addExtra(String text) { - addExtra(new TextComponent(text)); + public void addExtra(String text) + { + addExtra( new TextComponent( text ) ); } /** * Appends a component to the component. The text will * inherit this component's formatting + * * @param component the component to append */ - public void addExtra(BaseComponent component) { - if (extra == null) { + public void addExtra(BaseComponent component) + { + if (extra == null) + { extra = new ArrayList<>(); } component.parent = this; - extra.add(component); + extra.add( component ); } - public boolean hasFormatting() { + public boolean hasFormatting() + { return color != null || bold != null || italic != null || underlined != null || strikethrough != null || obfuscated != null; } - public String toPlainText() { + public String toPlainText() + { StringBuilder builder = new StringBuilder(); - toPlainText(builder); + toPlainText( builder ); return builder.toString(); } - protected void toPlainText(StringBuilder builder) { - if (extra != null) { - for (BaseComponent e : extra) { - e.toPlainText(builder); + protected void toPlainText(StringBuilder builder) + { + if (extra != null) + { + for (BaseComponent e : extra) + { + e.toPlainText( builder ); } } } - public String toLegacyText() { + public String toLegacyText() + { StringBuilder builder = new StringBuilder(); - toLegacyText(builder); + toLegacyText( builder ); return builder.toString(); } - protected void toLegacyText(StringBuilder builder) { - if (extra != null) { - for (BaseComponent e : extra) { - e.toLegacyText(builder); + protected void toLegacyText(StringBuilder builder) + { + if (extra != null) + { + for (BaseComponent e : extra) + { + e.toLegacyText( builder ); } } } @Override - public String toString() { - return String.format("BaseComponent{color=%s, bold=%b, italic=%b, underlined=%b, strikethrough=%b, obfuscated=%b}", getColor().getName(), isBold(), isItalic(), isUnderlined(), isStrikethrough(), isObfuscated()); + public String toString() + { + return String.format( "BaseComponent{color=%s, bold=%b, italic=%b, underlined=%b, strikethrough=%b, obfuscated=%b}", getColor().getName(), isBold(), isItalic(), isUnderlined(), isStrikethrough(), isObfuscated() ); } } diff --git a/api/src/main/java/net/md_5/bungee/api/chat/ClickEvent.java b/api/src/main/java/net/md_5/bungee/api/chat/ClickEvent.java index 05ccf63a..3d0dd90b 100644 --- a/api/src/main/java/net/md_5/bungee/api/chat/ClickEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/chat/ClickEvent.java @@ -10,11 +10,13 @@ import lombok.Setter; @Setter @AllArgsConstructor @NoArgsConstructor -public class ClickEvent { +public class ClickEvent +{ private Action action; private String value; - public enum Action { + public enum Action + { OPEN_URL, OPEN_FILE, RUN_COMMAND, diff --git a/api/src/main/java/net/md_5/bungee/api/chat/HoverEvent.java b/api/src/main/java/net/md_5/bungee/api/chat/HoverEvent.java index 00283e35..8252a954 100644 --- a/api/src/main/java/net/md_5/bungee/api/chat/HoverEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/chat/HoverEvent.java @@ -5,7 +5,8 @@ import lombok.NoArgsConstructor; import lombok.Setter; @NoArgsConstructor -public class HoverEvent { +public class HoverEvent +{ @Getter @Setter private Action action; @@ -13,25 +14,30 @@ public class HoverEvent { @Getter private Object value; - public HoverEvent(Action action, String value) { - setAction(action); - setValue(value); + public HoverEvent(Action action, String value) + { + setAction( action ); + setValue( value ); } - public HoverEvent(Action action, BaseComponent value) { - setAction(action); - setValue(value); + public HoverEvent(Action action, BaseComponent value) + { + setAction( action ); + setValue( value ); } - public void setValue(String value) { + public void setValue(String value) + { this.value = value; } - public void setValue(BaseComponent value) { + public void setValue(BaseComponent value) + { this.value = value; } - public enum Action { + public enum Action + { SHOW_TEXT, SHOW_ACHIEVEMENT, SHOW_ITEM diff --git a/api/src/main/java/net/md_5/bungee/api/chat/TextComponent.java b/api/src/main/java/net/md_5/bungee/api/chat/TextComponent.java index d398f7b3..723183f2 100644 --- a/api/src/main/java/net/md_5/bungee/api/chat/TextComponent.java +++ b/api/src/main/java/net/md_5/bungee/api/chat/TextComponent.java @@ -14,123 +14,139 @@ import java.util.regex.Pattern; @Setter @AllArgsConstructor @NoArgsConstructor -public class TextComponent extends BaseComponent { +public class TextComponent extends BaseComponent +{ - private static final Pattern url = Pattern.compile("^(?:(https?)://)?([-\\w_\\.]{2,}\\.[a-z]{2,4})(/\\S*)?$"); + private static final Pattern url = Pattern.compile( "^(?:(https?)://)?([-\\w_\\.]{2,}\\.[a-z]{2,4})(/\\S*)?$" ); - public static BaseComponent[] fromLegacyText(String message) { + public static BaseComponent[] fromLegacyText(String message) + { ArrayList components = new ArrayList<>(); StringBuilder builder = new StringBuilder(); TextComponent component = new TextComponent(); - Matcher matcher = url.matcher(message); + Matcher matcher = url.matcher( message ); - for ( int i = 0; i < message.length(); i++ ) { - char c = message.charAt(i); - if (c == ChatColor.COLOR_CHAR) { + for (int i = 0; i < message.length(); i++) + { + char c = message.charAt( i ); + if (c == ChatColor.COLOR_CHAR) + { i++; - c = message.charAt(i); - if (c >= 'A' && c <= 'Z') { + c = message.charAt( i ); + if (c >= 'A' && c <= 'Z') + { c += 32; } - if (builder.length() > 0) { + if (builder.length() > 0) + { TextComponent old = component; - component = new TextComponent(old); - old.setText(builder.toString()); + component = new TextComponent( old ); + old.setText( builder.toString() ); builder = new StringBuilder(); - components.add(old); + components.add( old ); } - ChatColor format = ChatColor.getByChar(c); - switch (format) { + ChatColor format = ChatColor.getByChar( c ); + switch (format) + { case BOLD: - component.setBold(true); + component.setBold( true ); break; case ITALIC: - component.setItalic(true); + component.setItalic( true ); break; case UNDERLINE: - component.setUnderlined(true); + component.setUnderlined( true ); break; case STRIKETHROUGH: - component.setStrikethrough(true); + component.setStrikethrough( true ); break; case MAGIC: - component.setObfuscated(true); + component.setObfuscated( true ); break; case RESET: format = ChatColor.WHITE; default: component = new TextComponent(); - component.setColor(format); + component.setColor( format ); break; } continue; } - int pos = message.indexOf(' ', i); + int pos = message.indexOf( ' ', i ); if (pos == -1) pos = message.length(); - if (matcher.region(i, pos).find()) { //Web link handling + if (matcher.region( i, pos ).find()) + { //Web link handling - if (builder.length() > 0) { + if (builder.length() > 0) + { TextComponent old = component; - component = new TextComponent(old); - old.setText(builder.toString()); + component = new TextComponent( old ); + old.setText( builder.toString() ); builder = new StringBuilder(); - components.add(old); + components.add( old ); } TextComponent old = component; - component = new TextComponent(old); + component = new TextComponent( old ); ClickEvent clickEvent = new ClickEvent(); - clickEvent.setAction(ClickEvent.Action.OPEN_URL); - String urlString = message.substring(i, pos); - if (urlString.startsWith("http")) { - component.setText(urlString); - clickEvent.setValue(urlString); - } else { - component.setText(urlString); - clickEvent.setValue("http://" + urlString); + clickEvent.setAction( ClickEvent.Action.OPEN_URL ); + String urlString = message.substring( i, pos ); + if (urlString.startsWith( "http" )) + { + component.setText( urlString ); + clickEvent.setValue( urlString ); + } else + { + component.setText( urlString ); + clickEvent.setValue( "http://" + urlString ); } - component.setClickEvent(clickEvent); - components.add(component); + component.setClickEvent( clickEvent ); + components.add( component ); i += pos - i - 1; component = old; continue; } - builder.append(c); + builder.append( c ); } - if (builder.length() > 0) { - component.setText(builder.toString()); - components.add(component); + if (builder.length() > 0) + { + component.setText( builder.toString() ); + components.add( component ); } - return components.toArray(new BaseComponent[components.size()]); + return components.toArray( new BaseComponent[components.size()] ); } private String text; - public TextComponent(TextComponent old) { - super(old); - setText(old.getText()); + public TextComponent(TextComponent old) + { + super( old ); + setText( old.getText() ); } @Override - protected void toPlainText(StringBuilder builder) { - builder.append(text); - super.toPlainText(builder); + protected void toPlainText(StringBuilder builder) + { + builder.append( text ); + super.toPlainText( builder ); } @Override - protected void toLegacyText(StringBuilder builder) { - builder.append(getColor()); - if (isBold()) builder.append(ChatColor.BOLD); - if (isItalic()) builder.append(ChatColor.ITALIC); - if (isUnderlined()) builder.append(ChatColor.UNDERLINE); - if (isStrikethrough()) builder.append(ChatColor.STRIKETHROUGH); - if (isObfuscated()) builder.append(ChatColor.MAGIC); - builder.append(text); - super.toLegacyText(builder); + protected void toLegacyText(StringBuilder builder) + { + builder.append( getColor() ); + if (isBold()) builder.append( ChatColor.BOLD ); + if (isItalic()) builder.append( ChatColor.ITALIC ); + if (isUnderlined()) builder.append( ChatColor.UNDERLINE ); + if (isStrikethrough()) builder.append( ChatColor.STRIKETHROUGH ); + if (isObfuscated()) builder.append( ChatColor.MAGIC ); + builder.append( text ); + super.toLegacyText( builder ); } @Override - public String toString() { - return String.format("TextComponent{text=%s, %s}", text, super.toString()); + public String toString() + { + return String.format( "TextComponent{text=%s, %s}", text, super.toString() ); } } diff --git a/api/src/main/java/net/md_5/bungee/api/chat/TranslatableComponent.java b/api/src/main/java/net/md_5/bungee/api/chat/TranslatableComponent.java index bdad73aa..51695adb 100644 --- a/api/src/main/java/net/md_5/bungee/api/chat/TranslatableComponent.java +++ b/api/src/main/java/net/md_5/bungee/api/chat/TranslatableComponent.java @@ -10,44 +10,54 @@ import java.util.List; @Getter @Setter @NoArgsConstructor -public class TranslatableComponent extends BaseComponent { +public class TranslatableComponent extends BaseComponent +{ private String translate; private List with; - public TranslatableComponent(String translate, Object ...with) { - setTranslate(translate); + public TranslatableComponent(String translate, Object... with) + { + setTranslate( translate ); this.with = new ArrayList<>(); - for (Object w : with) { - if (w instanceof String) { - this.with.add(new TextComponent((String) w)); - } else { - this.with.add((BaseComponent) w); + for (Object w : with) + { + if (w instanceof String) + { + this.with.add( new TextComponent( (String) w ) ); + } else + { + this.with.add( (BaseComponent) w ); } } } - public void setWith(List components) { - for (BaseComponent component : components) { + public void setWith(List components) + { + for (BaseComponent component : components) + { component.parent = this; } with = components; } @Override - protected void toPlainText(StringBuilder builder) { + protected void toPlainText(StringBuilder builder) + { //TODO - super.toPlainText(builder); + super.toPlainText( builder ); } @Override - protected void toLegacyText(StringBuilder builder) { + protected void toLegacyText(StringBuilder builder) + { //TODO - super.toLegacyText(builder); + super.toLegacyText( builder ); } @Override - public String toString() { - return String.format("TranslatableComponent{translate=%s, with=%s, %s}", translate, with, super.toString()); + public String toString() + { + return String.format( "TranslatableComponent{translate=%s, with=%s, %s}", translate, with, super.toString() ); } } diff --git a/api/src/main/java/net/md_5/bungee/api/event/ServerKickEvent.java b/api/src/main/java/net/md_5/bungee/api/event/ServerKickEvent.java index 7df8d969..2208b414 100644 --- a/api/src/main/java/net/md_5/bungee/api/event/ServerKickEvent.java +++ b/api/src/main/java/net/md_5/bungee/api/event/ServerKickEvent.java @@ -61,11 +61,11 @@ public class ServerKickEvent extends Event implements Cancellable @Deprecated public String getKickReason() { - return BaseComponent.toLegacyText(kickReasonComponent); + return BaseComponent.toLegacyText( kickReasonComponent ); } @Deprecated public void setKickReason(String reason) { - kickReasonComponent = TextComponent.fromLegacyText(reason); + kickReasonComponent = TextComponent.fromLegacyText( reason ); } } diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index 80ca6ee9..0f7da4bc 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -490,19 +490,21 @@ public class BungeeCord extends ProxyServer public void broadcast(String message) { getConsole().sendMessage( message ); - broadcast(TextComponent.fromLegacyText(message)); + broadcast( TextComponent.fromLegacyText( message ) ); } @Override - public void broadcast(BaseComponent[] message) { - getConsole().sendMessage(BaseComponent.toLegacyText(message)); - broadcast(new Chat(ComponentSerializer.toString(message))); + public void broadcast(BaseComponent[] message) + { + getConsole().sendMessage( BaseComponent.toLegacyText( message ) ); + broadcast( new Chat( ComponentSerializer.toString( message ) ) ); } @Override - public void broadcast(BaseComponent message) { + public void broadcast(BaseComponent message) + { getConsole().sendMessage( message.toLegacyText() ); - broadcast( new Chat(ComponentSerializer.toString(message)) ); + broadcast( new Chat( ComponentSerializer.toString( message ) ) ); } public void addConnection(UserConnection con) diff --git a/proxy/src/main/java/net/md_5/bungee/ServerConnection.java b/proxy/src/main/java/net/md_5/bungee/ServerConnection.java index f1490c64..75f6ca40 100644 --- a/proxy/src/main/java/net/md_5/bungee/ServerConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/ServerConnection.java @@ -43,15 +43,16 @@ public class ServerConnection implements Server @Override public synchronized void disconnect(String reason) { - disconnect( TextComponent.fromLegacyText(reason) ); + disconnect( TextComponent.fromLegacyText( reason ) ); } @Override - public void disconnect(BaseComponent[] reason) { - if ( !ch.isClosed() ) + public void disconnect(BaseComponent[] reason) + { + if (!ch.isClosed()) { // TODO: Can we just use a future here? - unsafe().sendPacket( new Kick(ComponentSerializer.toString(reason) ) ); + unsafe().sendPacket( new Kick( ComponentSerializer.toString( reason ) ) ); ch.getHandle().eventLoop().schedule( new Runnable() { @Override @@ -65,8 +66,9 @@ public class ServerConnection implements Server } @Override - public void disconnect(BaseComponent reason) { - disconnect(new BaseComponent[]{reason}); + public void disconnect(BaseComponent reason) + { + disconnect( new BaseComponent[]{reason} ); } @Override diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 85d3adb1..f7f0e5fa 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -259,27 +259,29 @@ public final class UserConnection implements ProxiedPlayer @Override public synchronized void disconnect(String reason) { - disconnect0( TextComponent.fromLegacyText(reason) ); + disconnect0( TextComponent.fromLegacyText( reason ) ); } @Override - public void disconnect(BaseComponent[] reason) { + public void disconnect(BaseComponent[] reason) + { disconnect0( reason ); } @Override - public void disconnect(BaseComponent reason) { - disconnect0(new BaseComponent[]{reason}); + public void disconnect(BaseComponent reason) + { + disconnect0( new BaseComponent[]{reason} ); } public synchronized void disconnect0(BaseComponent[] reason) { - if ( ch.getHandle().isActive() ) + if (ch.getHandle().isActive()) { - bungee.getLogger().log( Level.INFO, "[" + getName() + "] disconnected with: " + BaseComponent.toLegacyText(reason) ); - unsafe().sendPacket( new Kick( ComponentSerializer.toString(reason) ) ); + bungee.getLogger().log( Level.INFO, "[" + getName() + "] disconnected with: " + BaseComponent.toLegacyText( reason ) ); + unsafe().sendPacket( new Kick( ComponentSerializer.toString( reason ) ) ); ch.close(); - if ( server != null ) + if (server != null) { server.disconnect( "Quitting" ); } @@ -296,25 +298,27 @@ public final class UserConnection implements ProxiedPlayer @Override public void sendMessage(String message) { - sendMessage(TextComponent.fromLegacyText(message)); + sendMessage( TextComponent.fromLegacyText( message ) ); } @Override public void sendMessages(String... messages) { - for ( String message : messages ) + for (String message : messages) { sendMessage( message ); } } @Override - public void sendMessage(BaseComponent[] message) { + public void sendMessage(BaseComponent[] message) + { unsafe().sendPacket( new Chat( ComponentSerializer.toString( message ) ) ); } @Override - public void sendMessage(BaseComponent message) { + public void sendMessage(BaseComponent message) + { unsafe().sendPacket( new Chat( ComponentSerializer.toString( message ) ) ); } diff --git a/proxy/src/main/java/net/md_5/bungee/chat/BaseComponentSerializer.java b/proxy/src/main/java/net/md_5/bungee/chat/BaseComponentSerializer.java index 60e9049a..ffcfc2fa 100644 --- a/proxy/src/main/java/net/md_5/bungee/chat/BaseComponentSerializer.java +++ b/proxy/src/main/java/net/md_5/bungee/chat/BaseComponentSerializer.java @@ -10,86 +10,109 @@ import net.md_5.bungee.api.chat.HoverEvent; import java.util.Arrays; -public class BaseComponentSerializer { +public class BaseComponentSerializer +{ - protected void deserialize(JsonObject object, BaseComponent component, JsonDeserializationContext context) { - if (object.has("color")) { - component.setColor(ChatColor.valueOf(object.get("color").getAsString().toUpperCase())); + protected void deserialize(JsonObject object, BaseComponent component, JsonDeserializationContext context) + { + if (object.has( "color" )) + { + component.setColor( ChatColor.valueOf( object.get( "color" ).getAsString().toUpperCase() ) ); } - if (object.has("bold")) { - component.setBold(object.get("bold").getAsBoolean()); + if (object.has( "bold" )) + { + component.setBold( object.get( "bold" ).getAsBoolean() ); } - if (object.has("italic")) { - component.setItalic(object.get("italic").getAsBoolean()); + if (object.has( "italic" )) + { + component.setItalic( object.get( "italic" ).getAsBoolean() ); } - if (object.has("underlined")) { - component.setUnderlined(object.get("underlined").getAsBoolean()); + if (object.has( "underlined" )) + { + component.setUnderlined( object.get( "underlined" ).getAsBoolean() ); } - if (object.has("strikethrough")) { - component.setUnderlined(object.get("strikethrough").getAsBoolean()); + if (object.has( "strikethrough" )) + { + component.setUnderlined( object.get( "strikethrough" ).getAsBoolean() ); } - if (object.has("obfuscated")) { - component.setUnderlined(object.get("obfuscated").getAsBoolean()); + if (object.has( "obfuscated" )) + { + component.setUnderlined( object.get( "obfuscated" ).getAsBoolean() ); } - if (object.has("extra")) { - component.setExtra(Arrays.asList((BaseComponent[])context.deserialize(object.get("extra"), BaseComponent[].class))); + if (object.has( "extra" )) + { + component.setExtra( Arrays.asList( (BaseComponent[]) context.deserialize( object.get( "extra" ), BaseComponent[].class ) ) ); } //Events - if (object.has("clickEvent")) { - JsonObject event = object.getAsJsonObject("clickEvent"); - component.setClickEvent(new ClickEvent( - ClickEvent.Action.valueOf(event.get("action").getAsString().toUpperCase()), - event.get("value").getAsString())); + if (object.has( "clickEvent" )) + { + JsonObject event = object.getAsJsonObject( "clickEvent" ); + component.setClickEvent( new ClickEvent( + ClickEvent.Action.valueOf( event.get( "action" ).getAsString().toUpperCase() ), + event.get( "value" ).getAsString() ) ); } - if (object.has("hoverEvent")) { - JsonObject event = object.getAsJsonObject("hoverEvent"); + if (object.has( "hoverEvent" )) + { + JsonObject event = object.getAsJsonObject( "hoverEvent" ); HoverEvent hoverEvent = new HoverEvent(); - hoverEvent.setAction(HoverEvent.Action.valueOf(event.get("action").getAsString().toUpperCase())); - Object res = context.deserialize(event.get("value"), BaseComponent.class); - if (res instanceof String) { - hoverEvent.setValue((String) res); - } else { - hoverEvent.setValue((BaseComponent) res); + hoverEvent.setAction( HoverEvent.Action.valueOf( event.get( "action" ).getAsString().toUpperCase() ) ); + Object res = context.deserialize( event.get( "value" ), BaseComponent.class ); + if (res instanceof String) + { + hoverEvent.setValue( (String) res ); + } else + { + hoverEvent.setValue( (BaseComponent) res ); } - component.setHoverEvent(hoverEvent); + component.setHoverEvent( hoverEvent ); } } - protected void serialize(JsonObject object, BaseComponent component, JsonSerializationContext context) { - if (component.getColorRaw() != null) { - object.addProperty("color", component.getColorRaw().getName()); + protected void serialize(JsonObject object, BaseComponent component, JsonSerializationContext context) + { + if (component.getColorRaw() != null) + { + object.addProperty( "color", component.getColorRaw().getName() ); } - if (component.isBoldRaw() != null) { - object.addProperty("bold", component.isBoldRaw()); + if (component.isBoldRaw() != null) + { + object.addProperty( "bold", component.isBoldRaw() ); } - if (component.isItalicRaw() != null) { - object.addProperty("italic", component.isItalicRaw()); + if (component.isItalicRaw() != null) + { + object.addProperty( "italic", component.isItalicRaw() ); } - if (component.isUnderlinedRaw() != null) { - object.addProperty("underlined", component.isUnderlinedRaw()); + if (component.isUnderlinedRaw() != null) + { + object.addProperty( "underlined", component.isUnderlinedRaw() ); } - if (component.isStrikethroughRaw() != null) { - object.addProperty("strikethrough", component.isStrikethroughRaw()); + if (component.isStrikethroughRaw() != null) + { + object.addProperty( "strikethrough", component.isStrikethroughRaw() ); } - if (component.isObfuscatedRaw() != null) { - object.addProperty("obfuscated", component.isObfuscatedRaw()); + if (component.isObfuscatedRaw() != null) + { + object.addProperty( "obfuscated", component.isObfuscatedRaw() ); } - if (component.getExtra() != null) { - object.add("extra", context.serialize(component.getExtra())); + if (component.getExtra() != null) + { + object.add( "extra", context.serialize( component.getExtra() ) ); } //Events - if (component.getClickEvent() != null) { + if (component.getClickEvent() != null) + { JsonObject clickEvent = new JsonObject(); - clickEvent.addProperty("action", component.getClickEvent().getAction().toString().toLowerCase()); - clickEvent.addProperty("value", component.getClickEvent().getValue()); + clickEvent.addProperty( "action", component.getClickEvent().getAction().toString().toLowerCase() ); + clickEvent.addProperty( "value", component.getClickEvent().getValue() ); } - if (component.getHoverEvent() != null) { + if (component.getHoverEvent() != null) + { JsonObject clickEvent = new JsonObject(); - clickEvent.addProperty("action", component.getHoverEvent().getAction().toString().toLowerCase()); - clickEvent.add("value", context.serialize(component.getHoverEvent().getValue())); + clickEvent.addProperty( "action", component.getHoverEvent().getAction().toString().toLowerCase() ); + clickEvent.add( "value", context.serialize( component.getHoverEvent().getValue() ) ); } } } diff --git a/proxy/src/main/java/net/md_5/bungee/chat/ComponentSerializer.java b/proxy/src/main/java/net/md_5/bungee/chat/ComponentSerializer.java index 3dc4fe79..e853d270 100644 --- a/proxy/src/main/java/net/md_5/bungee/chat/ComponentSerializer.java +++ b/proxy/src/main/java/net/md_5/bungee/chat/ComponentSerializer.java @@ -1,59 +1,66 @@ package net.md_5.bungee.chat; -import com.google.gson.*; -import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import net.md_5.bungee.api.ChatColor; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TranslatableComponent; -import javax.xml.soap.Text; -import java.io.IOException; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -public class ComponentSerializer implements JsonSerializer, JsonDeserializer { +public class ComponentSerializer implements JsonSerializer, JsonDeserializer +{ private final static Gson gson = new GsonBuilder(). - registerTypeAdapter(BaseComponent.class, new ComponentSerializer()). - registerTypeAdapter(TextComponent.class, new TextComponentSerializer()). - registerTypeAdapter(TranslatableComponent.class, new TranslatableComponentSerializer()). + registerTypeAdapter( BaseComponent.class, new ComponentSerializer() ). + registerTypeAdapter( TextComponent.class, new TextComponentSerializer() ). + registerTypeAdapter( TranslatableComponent.class, new TranslatableComponentSerializer() ). create(); - public static BaseComponent[] parse(String json) { - if (json.startsWith("[")) { //Array - return gson.fromJson(json, BaseComponent[].class); + public static BaseComponent[] parse(String json) + { + if (json.startsWith( "[" )) + { //Array + return gson.fromJson( json, BaseComponent[].class ); } - return new BaseComponent[]{gson.fromJson(json, BaseComponent.class)}; + return new BaseComponent[]{gson.fromJson( json, BaseComponent.class )}; } - public static String toString(BaseComponent component) { - return gson.toJson(component); + public static String toString(BaseComponent component) + { + return gson.toJson( component ); } - public static String toString(BaseComponent[] components) { - return gson.toJson(components); + public static String toString(BaseComponent[] components) + { + return gson.toJson( components ); } @Override - public BaseComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - if (json.isJsonPrimitive()) { - return new TextComponent(json.getAsString()); + public BaseComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException + { + if (json.isJsonPrimitive()) + { + return new TextComponent( json.getAsString() ); } JsonObject object = json.getAsJsonObject(); - if (object.has("translate")) { - return context.deserialize(json, TranslatableComponent.class); + if (object.has( "translate" )) + { + return context.deserialize( json, TranslatableComponent.class ); } - return context.deserialize(json, TextComponent.class); + return context.deserialize( json, TextComponent.class ); } @Override - public JsonElement serialize(BaseComponent src, Type typeOfSrc, JsonSerializationContext context) { - return context.serialize(src, src.getClass()); + public JsonElement serialize(BaseComponent src, Type typeOfSrc, JsonSerializationContext context) + { + return context.serialize( src, src.getClass() ); } } diff --git a/proxy/src/main/java/net/md_5/bungee/chat/TextComponentSerializer.java b/proxy/src/main/java/net/md_5/bungee/chat/TextComponentSerializer.java index a8d758e3..246b47b8 100644 --- a/proxy/src/main/java/net/md_5/bungee/chat/TextComponentSerializer.java +++ b/proxy/src/main/java/net/md_5/bungee/chat/TextComponentSerializer.java @@ -1,28 +1,39 @@ package net.md_5.bungee.chat; -import com.google.gson.*; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import net.md_5.bungee.api.chat.TextComponent; import java.lang.reflect.Type; -public class TextComponentSerializer extends BaseComponentSerializer implements JsonSerializer , JsonDeserializer{ +public class TextComponentSerializer extends BaseComponentSerializer implements JsonSerializer, JsonDeserializer +{ @Override - public TextComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + public TextComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException + { TextComponent component = new TextComponent(); JsonObject object = json.getAsJsonObject(); - deserialize(object, component, context); - component.setText(object.get("text").getAsString()); + deserialize( object, component, context ); + component.setText( object.get( "text" ).getAsString() ); return component; } @Override - public JsonElement serialize(TextComponent src, Type typeOfSrc, JsonSerializationContext context) { - if (!src.hasFormatting()) { - return new JsonPrimitive(src.getText()); + public JsonElement serialize(TextComponent src, Type typeOfSrc, JsonSerializationContext context) + { + if (!src.hasFormatting()) + { + return new JsonPrimitive( src.getText() ); } JsonObject object = new JsonObject(); - serialize(object, src, context); - object.addProperty("text", src.getText()); + serialize( object, src, context ); + object.addProperty( "text", src.getText() ); return object; } } diff --git a/proxy/src/main/java/net/md_5/bungee/chat/TranslatableComponentSerializer.java b/proxy/src/main/java/net/md_5/bungee/chat/TranslatableComponentSerializer.java index 364c286c..97e1a02c 100644 --- a/proxy/src/main/java/net/md_5/bungee/chat/TranslatableComponentSerializer.java +++ b/proxy/src/main/java/net/md_5/bungee/chat/TranslatableComponentSerializer.java @@ -1,34 +1,43 @@ package net.md_5.bungee.chat; -import com.google.gson.*; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TranslatableComponent; import java.lang.reflect.Type; -import java.util.ArrayList; import java.util.Arrays; -public class TranslatableComponentSerializer extends BaseComponentSerializer implements JsonSerializer , JsonDeserializer{ +public class TranslatableComponentSerializer extends BaseComponentSerializer implements JsonSerializer, JsonDeserializer +{ @Override - public TranslatableComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + public TranslatableComponent deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException + { TranslatableComponent component = new TranslatableComponent(); JsonObject object = json.getAsJsonObject(); - deserialize(object, component, context); - component.setTranslate(object.get("translate").getAsString()); - if (object.has("with")) { - component.setWith(Arrays.asList((BaseComponent[])context.deserialize(object.get("with"), BaseComponent[].class))); + deserialize( object, component, context ); + component.setTranslate( object.get( "translate" ).getAsString() ); + if (object.has( "with" )) + { + component.setWith( Arrays.asList( (BaseComponent[]) context.deserialize( object.get( "with" ), BaseComponent[].class ) ) ); } return component; } @Override - public JsonElement serialize(TranslatableComponent src, Type typeOfSrc, JsonSerializationContext context) { + public JsonElement serialize(TranslatableComponent src, Type typeOfSrc, JsonSerializationContext context) + { JsonObject object = new JsonObject(); - serialize(object, src, context); - object.addProperty("translate", src.getTranslate()); - if (src.getWith() != null) { - object.add("with", context.serialize(src.getWith())); + serialize( object, src, context ); + object.addProperty( "translate", src.getTranslate() ); + if (src.getWith() != null) + { + object.add( "with", context.serialize( src.getWith() ) ); } return object; } diff --git a/proxy/src/main/java/net/md_5/bungee/command/ConsoleCommandSender.java b/proxy/src/main/java/net/md_5/bungee/command/ConsoleCommandSender.java index 42a11eb3..3e29efbb 100644 --- a/proxy/src/main/java/net/md_5/bungee/command/ConsoleCommandSender.java +++ b/proxy/src/main/java/net/md_5/bungee/command/ConsoleCommandSender.java @@ -29,19 +29,21 @@ public class ConsoleCommandSender implements CommandSender @Override public void sendMessages(String... messages) { - for ( String message : messages ) + for (String message : messages) { sendMessage( message ); } } @Override - public void sendMessage(BaseComponent[] message) { - sendMessage(BaseComponent.toLegacyText(message)); + public void sendMessage(BaseComponent[] message) + { + sendMessage( BaseComponent.toLegacyText( message ) ); } @Override - public void sendMessage(BaseComponent message) { + public void sendMessage(BaseComponent message) + { sendMessage( message.toLegacyText() ); } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java index 52179ea5..04ba907d 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java @@ -398,25 +398,27 @@ public class InitialHandler extends PacketHandler implements PendingConnection @Override public synchronized void disconnect(String reason) { - if ( !ch.isClosed() ) + if (!ch.isClosed()) { - unsafe().sendPacket( new Kick( ComponentSerializer.toString(TextComponent.fromLegacyText(reason)) ) ); + unsafe().sendPacket( new Kick( ComponentSerializer.toString( TextComponent.fromLegacyText( reason ) ) ) ); ch.close(); } } @Override - public void disconnect(BaseComponent[] reason) { - if ( !ch.isClosed() ) + public void disconnect(BaseComponent[] reason) + { + if (!ch.isClosed()) { - unsafe().sendPacket( new Kick( ComponentSerializer.toString(reason) ) ); + unsafe().sendPacket( new Kick( ComponentSerializer.toString( reason ) ) ); ch.close(); } } @Override - public void disconnect(BaseComponent reason) { - disconnect(new BaseComponent[]{reason}); + public void disconnect(BaseComponent reason) + { + disconnect( new BaseComponent[]{reason} ); } @Override