Skip to content

Commit d5bbc5d

Browse files
committed
wip: Modify CompositeEvent for generation
1 parent 5d71920 commit d5bbc5d

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ tasks {
137137

138138
outputFactory = "org.spongepowered.api.event.SpongeEventFactory"
139139
include("org/spongepowered/api/event/*/**/*")
140+
include("org/spongepowered/api/event/CompositeEvent.java")
140141
exclude("org/spongepowered/api/event/action/InteractEvent.java")
141142
exclude("org/spongepowered/api/event/cause/")
142143
exclude("org/spongepowered/api/event/entity/AffectEntityEvent.java")

src/main/java/org/spongepowered/api/event/CompositeEvent.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package org.spongepowered.api.event;
22

3+
import org.spongepowered.api.event.impl.AbstractCompositeEvent;
4+
import org.spongepowered.api.event.impl.entity.AbstractDamageEntityEvent;
5+
import org.spongepowered.api.util.annotation.eventgen.GenerateFactoryMethod;
6+
import org.spongepowered.api.util.annotation.eventgen.ImplementedBy;
37
import org.spongepowered.api.util.annotation.eventgen.NoFactoryMethod;
8+
import org.spongepowered.api.util.annotation.eventgen.PropertySettings;
49

510
import java.util.List;
611
import java.util.function.Consumer;
@@ -16,7 +21,8 @@
1621
* <p>Using {@link #setCancelled(boolean)} will perform a best effort cancellation
1722
* on each of the children events.
1823
*/
19-
@NoFactoryMethod
24+
@GenerateFactoryMethod
25+
@ImplementedBy(AbstractCompositeEvent.class)
2026
public interface CompositeEvent<E extends Event> extends Event, Cancellable {
2127

2228
E baseEvent();
@@ -46,6 +52,7 @@ default <E extends Event> void applyTo(Class<E> type, Consumer<? super E> consum
4652
*
4753
* @param cancel The new cancelled state
4854
*/
55+
@PropertySettings(generateMethods = false)
4956
@Override
5057
void setCancelled(boolean cancel);
5158
}

src/main/java/org/spongepowered/api/event/block/InteractBlockEvent.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,14 @@
2929
import org.spongepowered.api.block.BlockTypes;
3030
import org.spongepowered.api.entity.living.player.Player;
3131
import org.spongepowered.api.event.Cancellable;
32-
import org.spongepowered.api.event.CompositeEvent;
3332
import org.spongepowered.api.event.action.InteractEvent;
34-
import org.spongepowered.api.event.entity.SpawnEntityEvent;
35-
import org.spongepowered.api.event.item.inventory.ChangeInventoryEvent;
3633
import org.spongepowered.api.item.inventory.ItemStack;
3734
import org.spongepowered.api.util.Direction;
3835
import org.spongepowered.api.util.Tristate;
36+
import org.spongepowered.api.util.annotation.eventgen.GenerateFactoryMethod;
3937
import org.spongepowered.api.world.server.ServerLocation;
4038
import org.spongepowered.math.vector.Vector3d;
4139

42-
import java.util.Optional;
43-
4440
/**
4541
* Base event for all interactions involving a {@link BlockSnapshot} at a
4642
* {@link ServerLocation}.
@@ -106,6 +102,7 @@ interface Finish extends Primary, Cancellable {
106102
*
107103
* <p>This is usually right-click.</p>
108104
*/
105+
@GenerateFactoryMethod
109106
interface Secondary extends InteractBlockEvent {
110107

111108
Tristate originalUseItemResult();
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.spongepowered.api.event.impl;
2+
3+
import org.spongepowered.api.event.Cancellable;
4+
import org.spongepowered.api.event.CompositeEvent;
5+
import org.spongepowered.api.event.Event;
6+
import org.spongepowered.api.util.annotation.eventgen.UseField;
7+
8+
import java.util.Collections;
9+
import java.util.List;
10+
11+
public abstract class AbstractCompositeEvent<E extends Event> extends AbstractEvent implements CompositeEvent<E> {
12+
13+
@UseField(overrideToString = true)
14+
protected List<Event> children;
15+
16+
@UseField
17+
protected boolean cancelled;
18+
19+
public final void postInit() {
20+
this.children = Collections.unmodifiableList(this.children);
21+
}
22+
23+
@Override
24+
public void setCancelled(boolean cancel) {
25+
this.cancelled = cancel;
26+
this.children().forEach(event -> {
27+
if (event instanceof Cancellable cancellable) {
28+
cancellable.setCancelled(cancel);
29+
}
30+
});
31+
}
32+
}

0 commit comments

Comments
 (0)