Sueta

QuestEngine

20260808

A simple yet optimized quest plugin

·Plugin
  1. 20260808latestCURSOR AI CREATEDAug 8, 2026
    1. Server Quest YAML (Luminous) Symptom: Kill count for skill unlock quests does not increase Fix Details Event name typo MYTHICMOBS_KILL → MYTHICMOBS_ENTITY_KILL (approx. 265) Skills/Some Daily Changed to ENTITY_KILL + '*' to bypass the Mythic Killer bug (processed via Vanilla EntityDeathEvent) required_quests only prevents starting and does not affect the progress of quests already accepted (this was not a bug). 2. QuestEngine Source (v81.0) — Critical # Fixes 1 Always returned because killer could not be found when killing Mythic Added interpretation for MythicMobDeathEvent.getKiller() (EventContextMapper + EventDispatcher) 2 Citizens/Mythic/Default interact bridge not registered Register soft-depend via reflection in onEnable 3 ENTITY_INTERACT no matcher → behaves like * Dedicated matcher + bridge owns interact (prevents duplicate execution) 3. High — Behavior/Compatibility # Fixes 4 Documentation MYTHICMOBS_KILL vs Code MYTHICMOBS_ENTITY_KILL Normalized with EventAliases 5 BLOCK_FERTILizing typo case (never triggered) BLOCK_FERTILIZING / FARMING registered correctly 6 Condition cache key only uuid|expr → Context condition contamination Context expression includes fingerprint 7 repeat quest prerequisite not unlocked because completed=false hasSatisfiedRequirement (OK if cleared at least once) 8 reload does not re-hook dynamic events unregisterAll + registerAll re-register 9 Sample YAML CITIZENS_1 vs CITIZENS:1 Target normalization + sample modification Other aliases: CHUNK_LOAD→WORLD_CHUNK_LOAD, MOBKILLING/ENTITY_DEATH→ENTITY_KILL, BREEDNG→BREEDING, ITEM_SELECT→ITEM_HELD, BLOCK_ITEM_DROPPING→ITEM_DROP 4. Medium — Accuracy/Safety Issue fixed Target contains matching (SKELETON ⊂ WITHER_SKELETON) Only prefix globs like exact + ZOMBIE* Hard dependency on Mythic Soft-depend via MethodHandle/Reflection Missing soft-depend in plugin.yml MythicMobs / Add Citizens Execute sendMessage, etc. in async on the main thread as pending 5. Performance Conditional caching TTL + context fingerprint Event class/player getter caching Mythic MethodHandle static caching Event array/matcher index reuse dedup window prune Custom matching list lazy allocation Worker/pool tuning 1. 서버 퀘스트 YAML (루미너스) 증상: 스킬 해금 퀘스트 처치 카운트가 안 오름 수정 내용 이벤트 이름 오타 MYTHICMOBS_KILL → MYTHICMOBS_ENTITY_KILL (약 265개) 스킬/일부 일일 Mythic 킬러 버그 우회용으로 ENTITY_KILL + '*'로 변경 (바닐라 EntityDeathEvent로 진행) required_quests는 시작만 막고, 이미 수락한 퀘스트 진행에는 영향 없음 (버그가 아니었음). 2. QuestEngine 소스 (v81.0) — Critical # 문제 수정 1 Mythic 처치 시 킬러를 못 찾아 항상 return MythicMobDeathEvent.getKiller() 해석 추가 (EventContextMapper + EventDispatcher) 2 Citizens/Mythic/Default interact 브리지 미등록 onEnable에서 리플렉션으로 soft-depend 등록 3 ENTITY_INTERACT 매처 없음 → *처럼 동작 전용 매처 + 브리지가 interact 소유 (중복 진행 방지) 3. High — 동작/호환 # 문제 수정 4 문서 MYTHICMOBS_KILL vs 코드 MYTHICMOBS_ENTITY_KILL EventAliases로 정규화 5 BLOCK_FERTILizing 오타 case (절대 안 탐) BLOCK_FERTILIZING / FARMING 정상 등록 6 조건 캐시 키가 uuid|expr만 → 문맥 조건 오염 문맥 표현식은 fingerprint 포함 7 repeat 퀘스트 completed=false라 선행이 안 풀림 hasSatisfiedRequirement (한 번이라도 클리어면 OK) 8 reload가 dynamic 이벤트 재훅 안 함 unregisterAll + registerAll 재등록 9 샘플 YAML CITIZENS_1 vs CITIZENS:1 타겟 정규화 + 샘플 수정 기타 별칭: CHUNK_LOAD→WORLD_CHUNK_LOAD, MOBKILLING/ENTITY_DEATH→ENTITY_KILL, BREEDNG→BREEDING, ITEM_SELECT→ITEM_HELD, BLOCK_ITEM_DROPPING→ITEM_DROP 4. Medium — 정확도/안전 문제 수정 타겟 contains 매칭 (SKELETON ⊂ WITHER_SKELETON) exact + ZOMBIE* 같은 prefix glob만 Mythic 하드 의존 MethodHandle/리플렉션으로 soft-depend plugin.yml soft-depend 누락 MythicMobs / Citizens 추가 async에서 sendMessage 등 pending으로 메인 스레드 쪽 실행 5. 성능 조건 캐시 TTL + 문맥 fingerprint 이벤트 클래스/플레이어 getter 캐시 Mythic MethodHandle 정적 캐시 이벤트 배열/매처 인덱스 재사용 dedup 윈도우 prune custom 매칭 리스트 lazy 할당 worker/풀 튜닝
    7 downloads
  2. 20260520ENTITY_KILL == MOBKILLINGMay 20, 2026
    ENTITY KILL == MOBKILLING
    19 downloads
  3. 20260517MOBKILLING > ENTITY_KILL, BREEDNG > BREEDING Event Name FixedMay 17, 2026
    EVENT NAME FIXED.
    8 downloads
  4. HOTFIXCTX REMOVEDMay 12, 2026
    CTX REMOVED
    9 downloads
  5. 20260512LANG FILE UPDATEDMay 12, 2026
    LANG FILE UPDATED
    6 downloads
  6. 20260511V4HotKeyManager Event SupportMay 11, 2026
    HotKeyManager Event Support
    7 downloads
  7. 20260511V3GUIManager Event SupportMay 11, 2026
    GUIManager Event Support
    5 downloads
  8. 20260512V2MYTHICDUNGEONS AND CUSTOM EVENT FIXMay 11, 2026
    CUSTOM EVENT FIX AND MYTHICDUNGEONS SUPPORT
    5 downloads
  9. 20260511V2Quest Editor Debug Command AddMay 10, 2026
    questeditor debug command add custom event data capture check
    8 downloads
  10. 20260511Custom Model Data & Item Model MergeMay 10, 2026
    Item Model Support
    5 downloads
  11. 20260510CraftSlotCommands4 Menu Click Event SupportMay 10, 2026
    CraftSlotCommands4 Menu Click Event Support! CRAFTSLOT_CLICK EVENT! targets: - 0 - 1 - 2 - 3 - 4
    5 downloads
  12. 20260507FORGETMSG FILE FIXEDMay 7, 2026
    FORGET MSG FILE FIXED MSG FILE AUTO MERGED
    8 downloads
  13. 20260506API ADDMay 6, 2026
    API ADD Code (Text): package com.gmail.bobason01.questengine.api; import com.gmail.bobason01.questengine.QuestEnginePlugin; import com.gmail.bobason01.questengine.progress.PlayerData; import com.gmail.bobason01.questengine.quest.QuestDef; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.Collection; import java.util.List; import java.util.UUID; public final class QuestEngineAPI { private QuestEngineAPI() {} public static QuestEnginePlugin getPlugin() { return JavaPlugin.getPlugin(QuestEnginePlugin.class); } public static QuestDef getQuest(String id) { if (id == null) return null; return getPlugin().quests().get(id); } public static Collection<QuestDef> getAllQuests() { return getPlugin().quests().all(); } public static PlayerData getPlayerData(UUID uuid, String name) { if (uuid == null) return null; return getPlugin().progress().of(uuid, name); } public static boolean isActive(UUID uuid, String name, String questId) { if (uuid == null || questId == null) return false; return getPlugin().progress().isActive(uuid, name, questId); } public static boolean isCompleted(UUID uuid, String name, String questId) { if (uuid == null || questId == null) return false; return getPlugin().progress().isCompleted(uuid, name, questId); } public static int getQuestProgress(UUID uuid, String name, String questId) { if (uuid == null || questId == null) return 0; return getPlugin().progress().value(uuid, name, questId); } public static List<String> getActiveQuests(UUID uuid, String name) { if (uuid == null) return null; return getPlugin().progress().activeQuestIds(uuid, name); } public static List<String> getCompletedQuests(UUID uuid, String name) { if (uuid == null) return null; return getPlugin().progress().completedQuestIds(uuid, name); } public static void startQuest(Player player, String questId) { if (player == null || questId == null) return; getPlugin().engine().startQuest(player, questId); } public static void cancelQuest(Player player, String questId) { if (player == null || questId == null) return; getPlugin().engine().cancelQuest(player, questId); } public static void forceCompleteQuest(UUID uuid, String name, String questId) { if (uuid == null name == null questId == null) return; getPlugin().engine().forceComplete(uuid, name, questId); } public static void forceCompleteQuest(Player player, String questId) { if (player == null || questId == null) return; QuestDef quest = getQuest(questId); if (quest != null) { getPlugin().engine().forceComplete(player, quest); } } public static void stopQuest(UUID uuid, String name, String questId) { if (uuid == null name == null questId == null) return; getPlugin().engine().stopQuest(uuid, name, questId); } public static int addQuestProgress(UUID uuid, String name, String questId, int amount) { if (uuid == null || questId == null) return 0; return getPlugin().progress().addProgress(uuid, name, questId, amount); } public static void resetQuestProgress(UUID uuid, String name, String questId) { if (uuid == null || questId == null) return; getPlugin().progress().reset(uuid, name, questId); } public static void openQuestListMenu(Player player, int page) { if (player == null) return; getPlugin().gui().openList(player, page); } public static void openPublicQuestMenu(Player player, int page) { if (player == null) return; getPlugin().gui().openPublic(player, page); } }
    7 downloads
  14. 20260413QUEST FILE DELETE COMMAND ADDApr 12, 2026
    QUEST FILE DELETE COMMAND ADD 퀘스트 파일 삭제 명령어 추가
    12 downloads
  15. 20260411V2Event List SimpleApr 11, 2026
    Event List Simple 이벤트 리스트를 심플하게
    7 downloads
  16. 20260411TEMPLETE UPDATEApr 11, 2026
    Templete Example Update 템플릿 예시 업데이트
    7 downloads
  17. 20260403PREFIX MESSAGE FIXEDApr 2, 2026
    minor patch 사소한 패치 prefix message color problem fixed prefix 메세지 색상 문제 수정
    10 downloads
  18. 20260119Add description to ongoing questJan 18, 2026
    Add description to ongoing quest 진행 중인 퀘스트에 설명을 추가합니다
    18 downloads
  19. 20260109DB PROBLEM FIXJan 9, 2026
    DB PROBLEM FIX
    53 downloads
  20. 20260106Required Quest Conditons AddJan 5, 2026
    Required Quest Conditions Add
    10 downloads
  21. 20260101Quest Event List UpdateJan 1, 2026
    CUSTOM_EVENT PLAYER_BARTERING BLOCK_BREAK BLOCK_PLACE BLOCK_FERTILIZING BLOCK_ITEM_DROPPING BLOCK_SHEARING BREEDNG BREWING BUCKET_EMPTY BUCKET_ENTITY BUCKET_FILL COMPOSTING CURING DEAL_DAMAGE DISTANCE_FROM ENCHANTING FARMING FISHING HATCHING ITEM_BREAK ITEM_DAMAGE ITEM_MENDING MILKING MOBKILLING PERMISSIONS_CHECK SHEARING SMELTING SMITHING TAMING TRADING PLAYER_WALK PLAYER_PRE_JOIN PLAYER_LEAVE PLAYER_RESPAWN PLAYER_DEATH PLAYER_COMMAND PLAYER_CHAT PLAYER_EXP_GAIN PLAYER_LEVELUP PLAYER_WORLD_CHANGE PLAYER_ATTACK PLAYER_KILL PLAYER_ARMOR PLAYER_TELEPORT PLAYER_BED_ENTER PLAYER_SWAP_HAND ITEM_INTERACT ITEM_CONSUME ITEM_PICKUP ITEM_MOVE ITEM_CRAFT ITEM_DROP ITEM_SELECT ITEM_ENCHANT ENTITY_INTERACT ENTITY_SPAWN MYTHICMOBS_ENTITY_SPAWN
    12 downloads
  22. 20251215DEFAULT FILE HAS FOLDER NOT CREATEDDec 14, 2025
    기본 quest 폴더 파일이 있다면 더 이상 퀘스트 예제 파일을 만들지 않습니다
    10 downloads
  23. 20251204CANCEL CONFIRM CHAT COLOR PROBLEM FIXDec 4, 2025
    CANCEL CONFIRM CHAT COLOR PROBLEM FIX 취소 확인에서 색상 코드 메세지가 적용 안되는 점 수정
    16 downloads
  24. 20251202Mythicmobs Kill Mob ID CheckDec 1, 2025
    Mythicmobs Kill Mob ID Check add.
    16 downloads
  25. MYTHICBIG UPDATENov 27, 2025
    I rewrote all the code Now it works without any issues, lag, or traffic concerns even on a server with 500 people. 코드 전부 다시 짰습니다 이제 500 명이 있는 서버에서도 문제 없이 렉 없이 트래픽 걱정 없이 작동합니다
    14 downloads
  26. 20251124TRASH MESSAGE DELETEDNov 23, 2025
    TRASH MESSAGE DELETED 쓰레기 메세지 제거
    14 downloads
  27. 20251123V2PAPI CHANGEDNov 23, 2025
    current placeholder removed active placeholder fixed
    12 downloads
  28. 20251123BUG FIXNov 22, 2025
    Quest File PAPI and Color & Support NPC INTERACT IS NOW Mythicmobs: Citizens: Entity: changed. Quest Progress + Rewards Text Message Changed
    6 downloads
  29. 20251121PARTY PROBLEM FIXNov 21, 2025
    PARTY PROBLEM FIX
    10 downloads
  30. Ingame QuestEditorIngame Quest Editor Support!Nov 13, 2025
    Ingame Quest Editor Support! config.yml update please. messages.yml update please. many bug fix. many problem fix. msg{t=} > msg{m=} item{t=} > item{i=}
    11 downloads
  31. 20251113V2CUSTOMIZE + PAPI PROBLEM FIXNov 12, 2025
    Custom GUI Setting + PAPI Problem Fix
    11 downloads
  32. 20251113BUG FIXNov 12, 2025
    NPC INTERACT BUG FIX RELOAD PROBLEM FIX
    8 downloads
  33. 20251112V2Do not display quests that cannot be repeatedNov 12, 2025
    Do not display quests that cannot be repeated
    7 downloads
  34. 20251112BUG FIXNov 12, 2025
    NPC INTERACT BUG FIX
    7 downloads
  35. 20251110V2GUI ITEM BUG FIXNov 9, 2025
    GUI ITEM BUG FIX
    9 downloads
  36. 20251110GUI MORE BETTERNov 9, 2025
    YES YES MORE BETTER GUI UPDATE
    8 downloads
  37. 3.0ENGLISH VERSION + GUI ADDNov 9, 2025
    English Config + English Quest Example Changed User Quest Now GUI Base
    7 downloads
  38. 20251109HOTFIXEXAMPLE QUEST FIXNov 8, 2025
    YES
    10 downloads
  39. 20251109PARTY SUPPORTNov 8, 2025
    PARTY SUPPORT
    8 downloads
  40. 20251108example file addNov 8, 2025
    jar in example add.
    8 downloads
  41. 1.0Nov 8, 2025
    7 downloads

Similar projects

Plugin →