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 PUZZLE_MATCHED = EventFactory.createArrayBacked(RoomMatched.class, callbacks -> room -> { for (RoomMatched callback : callbacks) { callback.onRoomMatched(room); } }); public static final Event 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); } }