aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/events
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/events')
-rw-r--r--src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/events/DungeonEvents.java30
2 files changed, 30 insertions, 23 deletions
diff --git a/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java b/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java
deleted file mode 100644
index 83ac716f..00000000
--- a/src/main/java/de/hysky/skyblocker/events/ClientPlayerBlockBreakEvent.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package de.hysky.skyblocker.events;
-
-import net.fabricmc.fabric.api.event.Event;
-import net.fabricmc.fabric.api.event.EventFactory;
-import net.minecraft.block.BlockState;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-
-// Fabric API currently doesn't have an event for this
-public class ClientPlayerBlockBreakEvent {
- public static final Event<AfterBlockBreak> AFTER = EventFactory.createArrayBacked(AfterBlockBreak.class,
- (listeners) -> (world, player, pos, state) -> {
- for (AfterBlockBreak listener : listeners) {
- listener.afterBlockBreak(world, player, pos, state);
- }
- });
-
- @FunctionalInterface
- public interface AfterBlockBreak {
- void afterBlockBreak(World world, PlayerEntity player, BlockPos pos, BlockState state);
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/events/DungeonEvents.java b/src/main/java/de/hysky/skyblocker/events/DungeonEvents.java
new file mode 100644
index 00000000..9efa3607
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/events/DungeonEvents.java
@@ -0,0 +1,30 @@
+package de.hysky.skyblocker.events;
+
+import de.hysky.skyblocker.skyblock.dungeon.secrets.Room;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.fabricmc.fabric.api.event.Event;
+import net.fabricmc.fabric.api.event.EventFactory;
+
+public class DungeonEvents {
+ public static final Event<RoomMatched> PUZZLE_MATCHED = EventFactory.createArrayBacked(RoomMatched.class, callbacks -> room -> {
+ for (RoomMatched callback : callbacks) {
+ callback.onRoomMatched(room);
+ }
+ });
+
+ public static final Event<RoomMatched> ROOM_MATCHED = EventFactory.createArrayBacked(RoomMatched.class, callbacks -> room -> {
+ for (RoomMatched callback : callbacks) {
+ callback.onRoomMatched(room);
+ }
+ if (room.getType() == Room.Type.PUZZLE) {
+ PUZZLE_MATCHED.invoker().onRoomMatched(room);
+ }
+ });
+
+ @Environment(EnvType.CLIENT)
+ @FunctionalInterface
+ public interface RoomMatched {
+ void onRoomMatched(Room room);
+ }
+}