diff --git a/src/main/java/ch/njol/skript/doc/HTMLGenerator.java b/src/main/java/ch/njol/skript/doc/HTMLGenerator.java index 63dbb2900a4..a2ef14fce7e 100644 --- a/src/main/java/ch/njol/skript/doc/HTMLGenerator.java +++ b/src/main/java/ch/njol/skript/doc/HTMLGenerator.java @@ -29,12 +29,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; +import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -387,21 +382,30 @@ private static String minifyHtml(String page) { return sb.toString(); } - private static String handleIf(String desc, String start, boolean value) { + /** + * Handles an optional part in an HTML description. + * @param desc The existing description. + * @param condition The condition string to check. + * @param value Whether + * @return The modified description. + */ + private static String handleIf(String desc, String condition, boolean value) { assert desc != null; - int ifStart = desc.indexOf(start); + int ifStart = desc.indexOf(condition); + while (ifStart != -1) { int ifEnd = desc.indexOf("${end}", ifStart); - String data = desc.substring(ifStart + start.length() + 1, ifEnd); + String data = desc.substring(ifStart + condition.length() + 1, ifEnd); String before = desc.substring(0, ifStart); String after = desc.substring(ifEnd + 6); + if (value) - desc = before + data + after; + desc = before + data + after; // include if condition is met else - desc = before + after; + desc = before + after; // skip if condition is not met - ifStart = desc.indexOf(start, ifEnd); + ifStart = desc.indexOf(condition, ifEnd); } return desc; @@ -605,10 +609,14 @@ private String generateEvent(String descTemp, SkriptEventInfo info, @Nullable } desc = desc.replace("${element.events-safe}", events == null ? "" : Joiner.on(", ").join((events != null ? events.value() : null))); - // Required Plugins - String[] requiredPlugins = info.getRequiredPlugins(); - desc = handleIf(desc, "${if required-plugins}", requiredPlugins != null); - desc = desc.replace("${element.required-plugins}", Joiner.on(", ").join(requiredPlugins == null ? new String[0] : requiredPlugins)); + // RequiredPlugins + String[] plugins = info.getRequiredPlugins(); + desc = handleIf(desc, "${if required-plugins}", plugins != null && plugins.length > 0); + if (plugins == null) { + desc = desc.replace("${element.required-plugins}", ""); + } else { + desc = desc.replace("${element.required-plugins}", Joiner.on(", ").join(plugins)); + } // New Elements desc = handleIf(desc, "${if new-element}", NEW_TAG_PATTERN.matcher(since).find()); diff --git a/src/main/java/ch/njol/skript/lang/SkriptEventInfo.java b/src/main/java/ch/njol/skript/lang/SkriptEventInfo.java index 71bd8e661e9..06713eed888 100644 --- a/src/main/java/ch/njol/skript/lang/SkriptEventInfo.java +++ b/src/main/java/ch/njol/skript/lang/SkriptEventInfo.java @@ -27,8 +27,14 @@ public sealed class SkriptEventInfo extends StructureInfo public final String name; private ListeningBehavior listeningBehavior; - private String @Nullable [] description, examples, keywords, requiredPlugins; - private @Nullable String since, documentationID; + + private String @Nullable [] description = null; + private String @Nullable [] examples = null; + private String @Nullable [] keywords = null; + private String @Nullable [] requiredPlugins = null; + + private @Nullable String since = null; + private @Nullable String documentationID = null; private final String id;