Skip to content

Commit ddea528

Browse files
committed
(Finally) working event listeners
1 parent 317db7f commit ddea528

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ versions of [Minecraft][minecraft] Java Edition.
1717

1818
## Features
1919

20-
* A simple registry system for creating multiple simple items and blocks
21-
* Basic event listeners
20+
* A simple registry system for creating multiple simple items and blocks.
21+
* Basic event listeners. ~~*We like Mixin, but the less Mixin, the better, right?*~~
2222

2323
## Contributing
2424

src/main/java/dev/intelligentcreations/mudrock/event/MudrockEventHandler.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package dev.intelligentcreations.mudrock.event;
22

3+
import dev.intelligentcreations.mudrock.Mudrock;
34
import dev.intelligentcreations.mudrock.event.listeners.MudrockEventListener;
45

6+
import java.lang.reflect.InvocationTargetException;
57
import java.util.ArrayList;
68
import java.util.List;
79

@@ -20,9 +22,18 @@ public class MudrockEventHandler
2022
* Register a listener.
2123
* The listener must implement one of the interfaces that extends {@link MudrockEventListener}.
2224
*/
23-
public void registerListener(MudrockEventListener listener)
25+
public static <T extends MudrockEventListener> void registerListener(Class<T> listenerClass)
2426
{
25-
listeners.add(listener);
27+
try
28+
{
29+
T listener = listenerClass.getDeclaredConstructor().newInstance();
30+
listeners.add(listener);
31+
Mudrock.LOGGER.info("Registered listener " + listenerClass.getName());
32+
} catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e)
33+
{
34+
e.printStackTrace();
35+
throw new RuntimeException("No valid constructor found for: " + listenerClass.getName());
36+
}
2637
}
2738

2839
/**

0 commit comments

Comments
 (0)