From c4a22a5d3c0d662616373ad997ff32e6add550c8 Mon Sep 17 00:00:00 2001 From: bensku Date: Tue, 11 Apr 2017 15:47:38 +0300 Subject: [PATCH] Fix sending only one variable to chat (#483) --- gradle.properties | 2 +- .../ch/njol/skript/lang/VariableString.java | 35 +++++++++++++------ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/gradle.properties b/gradle.properties index 261dba895e0..e5cbb211377 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ groupid=ch.njol name=skript -version=2.2-dev26c \ No newline at end of file +version=2.2-dev26d \ No newline at end of file diff --git a/src/main/java/ch/njol/skript/lang/VariableString.java b/src/main/java/ch/njol/skript/lang/VariableString.java index 0c236f0ad43..26da9880b59 100644 --- a/src/main/java/ch/njol/skript/lang/VariableString.java +++ b/src/main/java/ch/njol/skript/lang/VariableString.java @@ -453,7 +453,9 @@ public MessageComponent[] getMessageComponents(final Event e) { final Object o = string[i]; if (o instanceof VariableString) { final MessageComponent[] c2 = ((VariableString) o).getMessageComponents(e); - ChatMessages.copyStyles(componentList.get(componentList.size() - 1), c2[0]); // Copy styles + + if (!componentList.isEmpty()) + ChatMessages.copyStyles(componentList.get(componentList.size() - 1), c2[0]); // Copy styles componentList.addAll(Arrays.asList(c2)); } else if (o instanceof ExpressionInfo) { assert mode == StringMode.MESSAGE; @@ -468,24 +470,37 @@ public MessageComponent[] getMessageComponents(final Event e) { // } else { if (info.expr instanceof VariableString) { final MessageComponent[] c2 = ((VariableString) o).getMessageComponents(e); - ChatMessages.copyStyles(componentList.get(componentList.size() - 1), c2[0]); // Copy styles + + if (!componentList.isEmpty()) + ChatMessages.copyStyles(componentList.get(componentList.size() - 1), c2[0]); // Copy styles + componentList.addAll(Arrays.asList(c2)); } else { final String str = Classes.toString(info.expr.getArray(e), flags, null); - MessageComponent last = componentList.get(componentList.size() - 1); - if (last != null) - last.text += str; - else + + if (!componentList.isEmpty()) { + MessageComponent last = componentList.get(componentList.size() - 1); + if (last != null) + last.text += str; + else + componentList.add(ChatMessages.plainText(str)); + } else { componentList.add(ChatMessages.plainText(str)); + } } } else if (o instanceof Expression) { assert mode != StringMode.MESSAGE; final String str = Classes.toString(((Expression) o).getArray(e), true, mode); - MessageComponent last = componentList.get(componentList.size() - 1); - if (last != null) - last.text += str; - else + + if (!componentList.isEmpty()) { + MessageComponent last = componentList.get(componentList.size() - 1); + if (last != null) + last.text += str; + else + componentList.add(ChatMessages.plainText(str)); + } else { componentList.add(ChatMessages.plainText(str)); + } } } else { // String part, parsed already // However, there might be variable URLs etc.