mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
throw exception on non-failthrough events registered as failthrough
This commit is contained in:
parent
2175ea849f
commit
2ea16f68a2
@ -2,6 +2,7 @@ package com.dfsek.terra.event;
|
|||||||
|
|
||||||
import com.dfsek.terra.api.addon.TerraAddon;
|
import com.dfsek.terra.api.addon.TerraAddon;
|
||||||
import com.dfsek.terra.api.event.events.Event;
|
import com.dfsek.terra.api.event.events.Event;
|
||||||
|
import com.dfsek.terra.api.event.events.FailThroughEvent;
|
||||||
import com.dfsek.terra.api.event.events.PackEvent;
|
import com.dfsek.terra.api.event.events.PackEvent;
|
||||||
import com.dfsek.terra.api.event.functional.EventContext;
|
import com.dfsek.terra.api.event.functional.EventContext;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -18,14 +19,14 @@ public class EventContextImpl<T extends Event> implements EventContext<T>, Compa
|
|||||||
|
|
||||||
private final TerraAddon addon;
|
private final TerraAddon addon;
|
||||||
|
|
||||||
public EventContextImpl(TerraAddon addon) {
|
private final Class<? extends Event> eventClass;
|
||||||
|
|
||||||
|
public EventContextImpl(TerraAddon addon, Class<? extends Event> eventClass) {
|
||||||
this.addon = addon;
|
this.addon = addon;
|
||||||
|
this.eventClass = eventClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handle(T event) {
|
public void handle(T event) {
|
||||||
if(event instanceof PackEvent) {
|
|
||||||
|
|
||||||
}
|
|
||||||
actions.forEach(action -> action.accept(event));
|
actions.forEach(action -> action.accept(event));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,6 +44,9 @@ public class EventContextImpl<T extends Event> implements EventContext<T>, Compa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EventContext<T> failThrough() {
|
public EventContext<T> failThrough() {
|
||||||
|
if(!FailThroughEvent.class.isAssignableFrom(eventClass)) {
|
||||||
|
throw new IllegalStateException("Cannot fail-through on event which does not implement FailThroughEvent: " + eventClass.getCanonicalName());
|
||||||
|
}
|
||||||
this.failThrough = true;
|
this.failThrough = true;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -52,14 +52,15 @@ public class FunctionalEventHandlerImpl implements FunctionalEventHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T extends Event> EventContext<T> register(TerraAddon addon, Class<T> clazz) {
|
public <T extends Event> EventContext<T> register(TerraAddon addon, Class<T> clazz) {
|
||||||
EventContextImpl<T> eventContext = new EventContextImpl<>(addon);
|
EventContextImpl<T> eventContext = new EventContextImpl<>(addon, clazz);
|
||||||
contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext);
|
contextMap.computeIfAbsent(clazz, c -> new ArrayList<>()).add(eventContext);
|
||||||
return eventContext;
|
return eventContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public <T extends Event> EventContext<T> register(TerraAddon addon, TypeKey<T> clazz) {
|
public <T extends Event> EventContext<T> register(TerraAddon addon, TypeKey<T> clazz) {
|
||||||
EventContextImpl<T> eventContext = new EventContextImpl<>(addon);
|
EventContextImpl<T> eventContext = new EventContextImpl<>(addon, (Class<T>) clazz.getRawType());
|
||||||
contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext);
|
contextMap.computeIfAbsent(clazz.getType(), c -> new ArrayList<>()).add(eventContext);
|
||||||
return eventContext;
|
return eventContext;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user