|
36 | 36 | import com.google.common.collect.Lists;
|
37 | 37 | import com.google.common.io.Files;
|
38 | 38 | import org.apache.commons.lang.StringUtils;
|
| 39 | +import org.bukkit.event.Cancellable; |
| 40 | +import org.bukkit.event.Event; |
| 41 | +import org.bukkit.event.block.BlockCanBuildEvent; |
39 | 42 | import org.eclipse.jdt.annotation.Nullable;
|
40 | 43 | import org.skriptlang.skript.lang.entry.EntryData;
|
41 | 44 | import org.skriptlang.skript.lang.entry.EntryValidator;
|
@@ -481,6 +484,9 @@ private String generateAnnotated(String descTemp, SyntaxElementInfo<?> info, @Nu
|
481 | 484 | }
|
482 | 485 | desc = desc.replace("${element.id}", ID);
|
483 | 486 |
|
| 487 | + // Cancellable |
| 488 | + desc = handleIf(desc, "${if cancellable}", false); |
| 489 | + |
484 | 490 | // Events
|
485 | 491 | Events events = c.getAnnotation(Events.class);
|
486 | 492 | desc = handleIf(desc, "${if events}", events != null);
|
@@ -603,6 +609,17 @@ private String generateEvent(String descTemp, SkriptEventInfo<?> info, @Nullable
|
603 | 609 | String[] keywords = info.getKeywords();
|
604 | 610 | desc = desc.replace("${element.keywords}", keywords == null ? "" : Joiner.on(", ").join(keywords));
|
605 | 611 |
|
| 612 | + // Cancellable |
| 613 | + boolean cancellable = false; |
| 614 | + for (Class<? extends Event> event : info.events) { |
| 615 | + if (Cancellable.class.isAssignableFrom(event) || BlockCanBuildEvent.class.isAssignableFrom(event)) { |
| 616 | + cancellable = true; // let's assume all are cancellable otherwise EffCancelEvent would do the rest in action |
| 617 | + break; |
| 618 | + } |
| 619 | + } |
| 620 | + desc = handleIf(desc, "${if cancellable}", cancellable); |
| 621 | + desc = desc.replace("${element.cancellable}", cancellable ? "Yes" : ""); // if not cancellable the section is hidden |
| 622 | + |
606 | 623 | // Documentation ID
|
607 | 624 | String ID = info.getDocumentationID() != null ? info.getDocumentationID() : info.getId();
|
608 | 625 | // Fix duplicated IDs
|
@@ -719,6 +736,9 @@ private String generateClass(String descTemp, ClassInfo<?> info, @Nullable Strin
|
719 | 736 | }
|
720 | 737 | desc = desc.replace("${element.id}", ID);
|
721 | 738 |
|
| 739 | + // Cancellable |
| 740 | + desc = handleIf(desc, "${if cancellable}", false); |
| 741 | + |
722 | 742 | // Events
|
723 | 743 | Events events = c.getAnnotation(Events.class);
|
724 | 744 | desc = handleIf(desc, "${if events}", events != null);
|
@@ -821,6 +841,9 @@ private String generateFunction(String descTemp, JavaFunction<?> info) {
|
821 | 841 | // Documentation ID
|
822 | 842 | desc = desc.replace("${element.id}", info.getName());
|
823 | 843 |
|
| 844 | + // Cancellable |
| 845 | + desc = handleIf(desc, "${if cancellable}", false); |
| 846 | + |
824 | 847 | // Events
|
825 | 848 | desc = handleIf(desc, "${if events}", false); // Functions do not require events nor plugins (at time writing this)
|
826 | 849 |
|
|
0 commit comments