aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyeyoung <cyong06@naver.com>2021-08-10 23:35:14 +0900
committersyeyoung <cyong06@naver.com>2021-08-10 23:35:14 +0900
commita48cb5c96e16fae589cb7d4f09146a17b3787924 (patch)
treef96af8b3c438357dad8ea6e0b223ce5351e82212
parent3f2a8ec601bdc43bbb2a48ef61e372e4c907ce8d (diff)
downloadSkyblock-Dungeons-Guide-a48cb5c96e16fae589cb7d4f09146a17b3787924.tar.gz
Skyblock-Dungeons-Guide-a48cb5c96e16fae589cb7d4f09146a17b3787924.tar.bz2
Skyblock-Dungeons-Guide-a48cb5c96e16fae589cb7d4f09146a17b3787924.zip
Better Rich Presence
-rw-r--r--out/discord_game_sdk.h237
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java9
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java196
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java21
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java24
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/events/DiscordUserJoinRequestEvent.java30
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/events/DiscordUserUpdateEvent.java30
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java8
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/inviteViewer/ImageTexture.java120
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/inviteViewer/PartyInviteViewer.java (renamed from src/main/java/kr/syeyoung/dungeonsguide/party/PartyInviteViewer.java)123
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/inviteViewer/PartyJoinRequest.java (renamed from src/main/java/kr/syeyoung/dungeonsguide/party/PartyJoinRequest.java)26
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/discord/onlinealarm/PlayingDGAlarm.java171
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/listener/DiscordUserJoinRequestListener.java26
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/listener/DiscordUserUpdateListener.java25
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/datastruct/DiscordCreateParams.java25
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/gamesdk/jna/interfacestruct/IDiscordRelationshipManager.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/party/LoadedImage.java40
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java3
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/rpc/JDiscordActivity.java72
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/rpc/JDiscordRelation.java42
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/rpc/JDiscordUser.java40
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/rpc/RichPresenceManager.java250
22 files changed, 942 insertions, 578 deletions
diff --git a/out/discord_game_sdk.h b/out/discord_game_sdk.h
deleted file mode 100644
index 779be2e2..00000000
--- a/out/discord_game_sdk.h
+++ /dev/null
@@ -1,237 +0,0 @@
-struct IDiscordLobbyTransaction {
- enum EDiscordResult (*set_type)(struct IDiscordLobbyTransaction* lobby_transaction, enum EDiscordLobbyType type);
- enum EDiscordResult (*set_owner)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordUserId owner_id);
- enum EDiscordResult (*set_capacity)(struct IDiscordLobbyTransaction* lobby_transaction, uint32_t capacity);
- enum EDiscordResult (*set_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key, DiscordMetadataValue value);
- enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyTransaction* lobby_transaction, DiscordMetadataKey key);
- enum EDiscordResult (*set_locked)(struct IDiscordLobbyTransaction* lobby_transaction, bool locked);
-};
-
-struct IDiscordLobbyMemberTransaction {
- enum EDiscordResult (*set_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key, DiscordMetadataValue value);
- enum EDiscordResult (*delete_metadata)(struct IDiscordLobbyMemberTransaction* lobby_member_transaction, DiscordMetadataKey key);
-};
-
-struct IDiscordLobbySearchQuery {
- enum EDiscordResult (*filter)(struct IDiscordLobbySearchQuery* lobby_search_query, DiscordMetadataKey key, enum EDiscordLobbySearchComparison comparison, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value);
- enum EDiscordResult (*sort)(struct IDiscordLobbySearchQuery* lobby_search_query, DiscordMetadataKey key, enum EDiscordLobbySearchCast cast, DiscordMetadataValue value);
- enum EDiscordResult (*limit)(struct IDiscordLobbySearchQuery* lobby_search_query, uint32_t limit);
- enum EDiscordResult (*distance)(struct IDiscordLobbySearchQuery* lobby_search_query, enum EDiscordLobbySearchDistance distance);
-};
-
-typedef void* IDiscordApplicationEvents;
-
-struct IDiscordApplicationManager {
- void (*validate_or_exit)(struct IDiscordApplicationManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*get_current_locale)(struct IDiscordApplicationManager* manager, DiscordLocale* locale);
- void (*get_current_branch)(struct IDiscordApplicationManager* manager, DiscordBranch* branch);
- void (*get_oauth2_token)(struct IDiscordApplicationManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordOAuth2Token* oauth2_token));
- void (*get_ticket)(struct IDiscordApplicationManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, const char* data));
-};
-
-struct IDiscordUserEvents {
- void (*on_current_user_update)(void* event_data);
-};
-
-struct IDiscordUserManager {
- enum EDiscordResult (*get_current_user)(struct IDiscordUserManager* manager, struct DiscordUser* current_user);
- void (*get_user)(struct IDiscordUserManager* manager, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordUser* user));
- enum EDiscordResult (*get_current_user_premium_type)(struct IDiscordUserManager* manager, enum EDiscordPremiumType* premium_type);
- enum EDiscordResult (*current_user_has_flag)(struct IDiscordUserManager* manager, enum EDiscordUserFlag flag, bool* has_flag);
-};
-
-typedef void* IDiscordImageEvents;
-
-struct IDiscordImageManager {
- void (*fetch)(struct IDiscordImageManager* manager, struct DiscordImageHandle handle, bool refresh, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordImageHandle handle_result));
- enum EDiscordResult (*get_dimensions)(struct IDiscordImageManager* manager, struct DiscordImageHandle handle, struct DiscordImageDimensions* dimensions);
- enum EDiscordResult (*get_data)(struct IDiscordImageManager* manager, struct DiscordImageHandle handle, uint8_t* data, uint32_t data_length);
-};
-
-struct IDiscordActivityEvents {
- void (*on_activity_join)(void* event_data, const char* secret);
- void (*on_activity_spectate)(void* event_data, const char* secret);
- void (*on_activity_join_request)(void* event_data, struct DiscordUser* user);
- void (*on_activity_invite)(void* event_data, enum EDiscordActivityActionType type, struct DiscordUser* user, struct DiscordActivity* activity);
-};
-
-struct IDiscordActivityManager {
- enum EDiscordResult (*register_command)(struct IDiscordActivityManager* manager, const char* command);
- enum EDiscordResult (*register_steam)(struct IDiscordActivityManager* manager, uint32_t steam_id);
- void (*update_activity)(struct IDiscordActivityManager* manager, struct DiscordActivity* activity, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*clear_activity)(struct IDiscordActivityManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*send_request_reply)(struct IDiscordActivityManager* manager, DiscordUserId user_id, enum EDiscordActivityJoinRequestReply reply, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*send_invite)(struct IDiscordActivityManager* manager, DiscordUserId user_id, enum EDiscordActivityActionType type, const char* content, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*accept_invite)(struct IDiscordActivityManager* manager, DiscordUserId user_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
-};
-
-struct IDiscordRelationshipEvents {
- void (*on_refresh)(void* event_data);
- void (*on_relationship_update)(void* event_data, struct DiscordRelationship* relationship);
-};
-
-struct IDiscordRelationshipManager {
- void (*filter)(struct IDiscordRelationshipManager* manager, void* filter_data, bool (*filter)(void* filter_data, struct DiscordRelationship* relationship));
- enum EDiscordResult (*count)(struct IDiscordRelationshipManager* manager, int32_t* count);
- enum EDiscordResult (*get)(struct IDiscordRelationshipManager* manager, DiscordUserId user_id, struct DiscordRelationship* relationship);
- enum EDiscordResult (*get_at)(struct IDiscordRelationshipManager* manager, uint32_t index, struct DiscordRelationship* relationship);
-};
-
-struct IDiscordLobbyEvents {
- void (*on_lobby_update)(void* event_data, int64_t lobby_id);
- void (*on_lobby_delete)(void* event_data, int64_t lobby_id, uint32_t reason);
- void (*on_member_connect)(void* event_data, int64_t lobby_id, int64_t user_id);
- void (*on_member_update)(void* event_data, int64_t lobby_id, int64_t user_id);
- void (*on_member_disconnect)(void* event_data, int64_t lobby_id, int64_t user_id);
- void (*on_lobby_message)(void* event_data, int64_t lobby_id, int64_t user_id, uint8_t* data, uint32_t data_length);
- void (*on_speaking)(void* event_data, int64_t lobby_id, int64_t user_id, bool speaking);
- void (*on_network_message)(void* event_data, int64_t lobby_id, int64_t user_id, uint8_t channel_id, uint8_t* data, uint32_t data_length);
-};
-
-struct IDiscordLobbyManager {
- enum EDiscordResult (*get_lobby_create_transaction)(struct IDiscordLobbyManager* manager, struct IDiscordLobbyTransaction** transaction);
- enum EDiscordResult (*get_lobby_update_transaction)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction** transaction);
- enum EDiscordResult (*get_member_update_transaction)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction** transaction);
- void (*create_lobby)(struct IDiscordLobbyManager* manager, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby));
- void (*update_lobby)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, struct IDiscordLobbyTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*delete_lobby)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*connect_lobby)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordLobbySecret secret, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby));
- void (*connect_lobby_with_activity_secret)(struct IDiscordLobbyManager* manager, DiscordLobbySecret activity_secret, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, struct DiscordLobby* lobby));
- void (*disconnect_lobby)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- enum EDiscordResult (*get_lobby)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, struct DiscordLobby* lobby);
- enum EDiscordResult (*get_lobby_activity_secret)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordLobbySecret* secret);
- enum EDiscordResult (*get_lobby_metadata_value)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordMetadataKey key, DiscordMetadataValue* value);
- enum EDiscordResult (*get_lobby_metadata_key)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, int32_t index, DiscordMetadataKey* key);
- enum EDiscordResult (*lobby_metadata_count)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, int32_t* count);
- enum EDiscordResult (*member_count)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, int32_t* count);
- enum EDiscordResult (*get_member_user_id)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, int32_t index, DiscordUserId* user_id);
- enum EDiscordResult (*get_member_user)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, struct DiscordUser* user);
- enum EDiscordResult (*get_member_metadata_value)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, DiscordMetadataKey key, DiscordMetadataValue* value);
- enum EDiscordResult (*get_member_metadata_key)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, int32_t index, DiscordMetadataKey* key);
- enum EDiscordResult (*member_metadata_count)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, int32_t* count);
- void (*update_member)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, struct IDiscordLobbyMemberTransaction* transaction, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*send_lobby_message)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, uint8_t* data, uint32_t data_length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- enum EDiscordResult (*get_search_query)(struct IDiscordLobbyManager* manager, struct IDiscordLobbySearchQuery** query);
- void (*search)(struct IDiscordLobbyManager* manager, struct IDiscordLobbySearchQuery* query, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*lobby_count)(struct IDiscordLobbyManager* manager, int32_t* count);
- enum EDiscordResult (*get_lobby_id)(struct IDiscordLobbyManager* manager, int32_t index, DiscordLobbyId* lobby_id);
- void (*connect_voice)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*disconnect_voice)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- enum EDiscordResult (*connect_network)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id);
- enum EDiscordResult (*disconnect_network)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id);
- enum EDiscordResult (*flush_network)(struct IDiscordLobbyManager* manager);
- enum EDiscordResult (*open_network_channel)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, uint8_t channel_id, bool reliable);
- enum EDiscordResult (*send_network_message)(struct IDiscordLobbyManager* manager, DiscordLobbyId lobby_id, DiscordUserId user_id, uint8_t channel_id, uint8_t* data, uint32_t data_length);
-};
-
-struct IDiscordNetworkEvents {
- void (*on_message)(void* event_data, DiscordNetworkPeerId peer_id, DiscordNetworkChannelId channel_id, uint8_t* data, uint32_t data_length);
- void (*on_route_update)(void* event_data, const char* route_data);
-};
-
-struct IDiscordNetworkManager {
- void (*get_peer_id)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId* peer_id);
- enum EDiscordResult (*flush)(struct IDiscordNetworkManager* manager);
- enum EDiscordResult (*open_peer)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id, const char* route_data);
- enum EDiscordResult (*update_peer)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id, const char* route_data);
- enum EDiscordResult (*close_peer)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id);
- enum EDiscordResult (*open_channel)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id, DiscordNetworkChannelId channel_id, bool reliable);
- enum EDiscordResult (*close_channel)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id, DiscordNetworkChannelId channel_id);
- enum EDiscordResult (*send_message)(struct IDiscordNetworkManager* manager, DiscordNetworkPeerId peer_id, DiscordNetworkChannelId channel_id, uint8_t* data, uint32_t data_length);
-};
-
-struct IDiscordOverlayEvents {
- void (*on_toggle)(void* event_data, bool locked);
-};
-
-struct IDiscordOverlayManager {
- void (*is_enabled)(struct IDiscordOverlayManager* manager, bool* enabled);
- void (*is_locked)(struct IDiscordOverlayManager* manager, bool* locked);
- void (*set_locked)(struct IDiscordOverlayManager* manager, bool locked, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*open_activity_invite)(struct IDiscordOverlayManager* manager, enum EDiscordActivityActionType type, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*open_guild_invite)(struct IDiscordOverlayManager* manager, const char* code, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*open_voice_settings)(struct IDiscordOverlayManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
-};
-
-typedef void* IDiscordStorageEvents;
-
-struct IDiscordStorageManager {
- enum EDiscordResult (*read)(struct IDiscordStorageManager* manager, const char* name, uint8_t* data, uint32_t data_length, uint32_t* read);
- void (*read_async)(struct IDiscordStorageManager* manager, const char* name, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, uint8_t* data, uint32_t data_length));
- void (*read_async_partial)(struct IDiscordStorageManager* manager, const char* name, uint64_t offset, uint64_t length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result, uint8_t* data, uint32_t data_length));
- enum EDiscordResult (*write)(struct IDiscordStorageManager* manager, const char* name, uint8_t* data, uint32_t data_length);
- void (*write_async)(struct IDiscordStorageManager* manager, const char* name, uint8_t* data, uint32_t data_length, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- enum EDiscordResult (*delete_)(struct IDiscordStorageManager* manager, const char* name);
- enum EDiscordResult (*exists)(struct IDiscordStorageManager* manager, const char* name, bool* exists);
- void (*count)(struct IDiscordStorageManager* manager, int32_t* count);
- enum EDiscordResult (*stat)(struct IDiscordStorageManager* manager, const char* name, struct DiscordFileStat* stat);
- enum EDiscordResult (*stat_at)(struct IDiscordStorageManager* manager, int32_t index, struct DiscordFileStat* stat);
- enum EDiscordResult (*get_path)(struct IDiscordStorageManager* manager, DiscordPath* path);
-};
-
-struct IDiscordStoreEvents {
- void (*on_entitlement_create)(void* event_data, struct DiscordEntitlement* entitlement);
- void (*on_entitlement_delete)(void* event_data, struct DiscordEntitlement* entitlement);
-};
-
-struct IDiscordStoreManager {
- void (*fetch_skus)(struct IDiscordStoreManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*count_skus)(struct IDiscordStoreManager* manager, int32_t* count);
- enum EDiscordResult (*get_sku)(struct IDiscordStoreManager* manager, DiscordSnowflake sku_id, struct DiscordSku* sku);
- enum EDiscordResult (*get_sku_at)(struct IDiscordStoreManager* manager, int32_t index, struct DiscordSku* sku);
- void (*fetch_entitlements)(struct IDiscordStoreManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*count_entitlements)(struct IDiscordStoreManager* manager, int32_t* count);
- enum EDiscordResult (*get_entitlement)(struct IDiscordStoreManager* manager, DiscordSnowflake entitlement_id, struct DiscordEntitlement* entitlement);
- enum EDiscordResult (*get_entitlement_at)(struct IDiscordStoreManager* manager, int32_t index, struct DiscordEntitlement* entitlement);
- enum EDiscordResult (*has_sku_entitlement)(struct IDiscordStoreManager* manager, DiscordSnowflake sku_id, bool* has_entitlement);
- void (*start_purchase)(struct IDiscordStoreManager* manager, DiscordSnowflake sku_id, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
-};
-
-struct IDiscordVoiceEvents {
- void (*on_settings_update)(void* event_data);
-};
-
-struct IDiscordVoiceManager {
- enum EDiscordResult (*get_input_mode)(struct IDiscordVoiceManager* manager, struct DiscordInputMode* input_mode);
- void (*set_input_mode)(struct IDiscordVoiceManager* manager, struct DiscordInputMode input_mode, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- enum EDiscordResult (*is_self_mute)(struct IDiscordVoiceManager* manager, bool* mute);
- enum EDiscordResult (*set_self_mute)(struct IDiscordVoiceManager* manager, bool mute);
- enum EDiscordResult (*is_self_deaf)(struct IDiscordVoiceManager* manager, bool* deaf);
- enum EDiscordResult (*set_self_deaf)(struct IDiscordVoiceManager* manager, bool deaf);
- enum EDiscordResult (*is_local_mute)(struct IDiscordVoiceManager* manager, DiscordSnowflake user_id, bool* mute);
- enum EDiscordResult (*set_local_mute)(struct IDiscordVoiceManager* manager, DiscordSnowflake user_id, bool mute);
- enum EDiscordResult (*get_local_volume)(struct IDiscordVoiceManager* manager, DiscordSnowflake user_id, uint8_t* volume);
- enum EDiscordResult (*set_local_volume)(struct IDiscordVoiceManager* manager, DiscordSnowflake user_id, uint8_t volume);
-};
-
-struct IDiscordAchievementEvents {
- void (*on_user_achievement_update)(void* event_data, struct DiscordUserAchievement* user_achievement);
-};
-
-struct IDiscordAchievementManager {
- void (*set_user_achievement)(struct IDiscordAchievementManager* manager, DiscordSnowflake achievement_id, uint8_t percent_complete, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*fetch_user_achievements)(struct IDiscordAchievementManager* manager, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult result));
- void (*count_user_achievements)(struct IDiscordAchievementManager* manager, int32_t* count);
- enum EDiscordResult (*get_user_achievement)(struct IDiscordAchievementManager* manager, DiscordSnowflake user_achievement_id, struct DiscordUserAchievement* user_achievement);
- enum EDiscordResult (*get_user_achievement_at)(struct IDiscordAchievementManager* manager, int32_t index, struct DiscordUserAchievement* user_achievement);
-};
-
-typedef void* IDiscordCoreEvents;
-
-struct IDiscordCore {
- void (*destroy)(struct IDiscordCore* core);
- enum EDiscordResult (*run_callbacks)(struct IDiscordCore* core);
- void (*set_log_hook)(struct IDiscordCore* core, enum EDiscordLogLevel min_level, void* hook_data, void (*hook)(void* hook_data, enum EDiscordLogLevel level, const char* message));
- struct IDiscordApplicationManager* (*get_application_manager)(struct IDiscordCore* core);
- struct IDiscordUserManager* (*get_user_manager)(struct IDiscordCore* core);
- struct IDiscordImageManager* (*get_image_manager)(struct IDiscordCore* core);
- struct IDiscordActivityManager* (*get_activity_manager)(struct IDiscordCore* core);
- struct IDiscordRelationshipManager* (*get_relationship_manager)(struct IDiscordCore* core);
- struct IDiscordLobbyManager* (*get_lobby_manager)(struct IDiscordCore* core);
- struct IDiscordNetworkManager* (*get_network_manager)(struct IDiscordCore* core);
- struct IDiscordOverlayManager* (*get_overlay_manager)(struct IDiscordCore* core);
- struct IDiscordStorageManager* (*get_storage_manager)(struct IDiscordCore* core);
- struct IDiscordStoreManager* (*get_store_manager)(struct IDiscordCore* core);
- struct IDiscordVoiceManager* (*get_voice_manager)(struct IDiscordCore* core);
- struct IDiscordAchievementManager* (*get_achievement_manager)(struct IDiscordCore* core);
-}; \ No newline at end of file
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java
index 48c392e0..c8c96940 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java
@@ -28,14 +28,14 @@ import kr.syeyoung.dungeonsguide.eventlistener.FeatureListener;
import kr.syeyoung.dungeonsguide.eventlistener.PacketListener;
import kr.syeyoung.dungeonsguide.events.StompConnectedEvent;
import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.party.PartyInviteViewer;
+import kr.syeyoung.dungeonsguide.features.impl.discord.inviteViewer.PartyInviteViewer;
import kr.syeyoung.dungeonsguide.party.PartyManager;
import kr.syeyoung.dungeonsguide.resources.DGTexturePack;
+import kr.syeyoung.dungeonsguide.rpc.RichPresenceManager;
import kr.syeyoung.dungeonsguide.stomp.CloseListener;
import kr.syeyoung.dungeonsguide.stomp.StompClient;
import kr.syeyoung.dungeonsguide.stomp.StompInterface;
import kr.syeyoung.dungeonsguide.utils.AhUtils;
-import kr.syeyoung.dungeonsguide.utils.cursor.GLCursors;
import kr.syeyoung.dungeonsguide.wsresource.StaticResourceCache;
import lombok.Getter;
import net.minecraft.client.Minecraft;
@@ -44,12 +44,10 @@ import net.minecraft.launchwrapper.LaunchClassLoader;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.ProgressManager;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.relauncher.ReflectionHelper;
-import org.apache.commons.io.IOUtils;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
@@ -124,11 +122,10 @@ public class DungeonsGuide implements DGInterface, CloseListener {
MinecraftForge.EVENT_BUS.register(new PacketListener());
MinecraftForge.EVENT_BUS.register(new Keybinds());
- RichPresenceManager.INSTANCE.setup();
+ RichPresenceManager.INSTANCE.getLastSetupCode();
MinecraftForge.EVENT_BUS.register(RichPresenceManager.INSTANCE);
MinecraftForge.EVENT_BUS.register(PartyManager.INSTANCE);
MinecraftForge.EVENT_BUS.register(StaticResourceCache.INSTANCE);
- MinecraftForge.EVENT_BUS.register(PartyInviteViewer.INSTANCE);
AhUtils.registerTimer();
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java b/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java
deleted file mode 100644
index 7f02d69a..00000000
--- a/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod
- * Copyright (C) 2021 cyoung06
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-package kr.syeyoung.dungeonsguide;
-
-import com.sun.jna.Pointer;
-import com.sun.jna.ptr.PointerByReference;
-import kr.syeyoung.dungeonsguide.dungeon.DungeonContext;
-import kr.syeyoung.dungeonsguide.events.SkyblockJoinedEvent;
-import kr.syeyoung.dungeonsguide.events.SkyblockLeftEvent;
-import kr.syeyoung.dungeonsguide.features.FeatureRegistry;
-import kr.syeyoung.dungeonsguide.gamesdk.GameSDK;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.NativeGameSDK;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.datastruct.*;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordActivityActionType;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordActivityJoinRequestReply;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordLogLevel;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.enumuration.EDiscordResult;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.IDiscordActivityEvents;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.IDiscordActivityManager;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.interfacestruct.IDiscordCore;
-import kr.syeyoung.dungeonsguide.gamesdk.jna.typedef.*;
-import kr.syeyoung.dungeonsguide.party.PartyInviteViewer;
-import kr.syeyoung.dungeonsguide.party.PartyJoinRequest;
-import kr.syeyoung.dungeonsguide.party.PartyManager;
-import kr.syeyoung.dungeonsguide.stomp.StompHeader;
-import kr.syeyoung.dungeonsguide.stomp.StompPayload;
-import lombok.Getter;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-import org.json.JSONObject;
-
-public class RichPresenceManager implements Runnable {
- public static RichPresenceManager INSTANCE = new RichPresenceManager();
- private Thread t = new Thread(this);
-
- public RichPresenceManager() {
- t.start();
- }
- @Getter
- private NativeGameSDK nativeGameSDK;
- @Getter
- private IDiscordCore iDiscordCore;
- private IDiscordActivityManager activityManager;
- private IDiscordActivityEvents.ByReference callbacks;
-
- @Getter
- private boolean setupSuccessful = false;
- public boolean setup() {
- nativeGameSDK = GameSDK.getNativeGameSDK();
- if (nativeGameSDK == null) return false;
- DiscordCreateParams discordCreateParams = new DiscordCreateParams();
- discordCreateParams.client_id = new DiscordClientID(816298079732498473L);
-
- callbacks = new IDiscordActivityEvents.ByReference();
- callbacks.OnActivityInvite = (eventData, type, user, activity) -> {
- PartyJoinRequest partyJoinRequest = new PartyJoinRequest();
- partyJoinRequest.setDiscordUser(user);
- partyJoinRequest.setExpire(System.currentTimeMillis() + 30000);
- partyJoinRequest.setInvite(true);
-
- PartyInviteViewer.INSTANCE.joinRequests.add(partyJoinRequest);
- System.out.println("Received Join Request from "+user.id.longValue()+" ("+partyJoinRequest.getUsername()+"#"+partyJoinRequest.getDiscriminator()+")");
- };
- callbacks.OnActivityJoin = (eventData, secret) -> {DungeonsGuide.getDungeonsGuide().getStompConnection().send(new StompPayload().method(StompHeader.SEND)
- .header("destination", "/app/party.askedtojoin")
- .payload(new JSONObject().put("token", secret).toString()));
- System.out.println("Trying to join with token "+secret);
- };
- callbacks.OnActivityJoinRequest = (eventData, user) -> {
- PartyJoinRequest partyJoinRequest = new PartyJoinRequest();
- partyJoinRequest.setDiscordUser(user);
- partyJoinRequest.setExpire(System.currentTimeMillis() + 30000);
-
- PartyInviteViewer.INSTANCE.joinRequests.add(partyJoinRequest);
- System.out.println("Received Join Request from "+user.id.longValue()+" ("+partyJoinRequest.getUsername()+"#"+partyJoinRequest.getDiscriminator()+")");
- };
- callbacks.OnActivitySpectate = (eventData, secret) -> {
-
- };
- callbacks.write();
- discordCreateParams.activity_events = callbacks;
-
- PointerByReference pointerByReference = new PointerByReference();
- nativeGameSDK.DiscordCreate(new DiscordVersion(NativeGameSDK.DISCORD_VERSION), discordCreateParams, pointerByReference);
- if (pointerByReference.getValue() == Pointer.NULL) return false;
- iDiscordCore = new IDiscordCore(pointerByReference.getValue());
-
- iDiscordCore.SetLogHook.setLogHook(iDiscordCore, EDiscordLogLevel.DiscordLogLevel_Debug, Pointer.NULL, new IDiscordCore.LogHook() {
- @Override
- public void hook(Pointer hookData, EDiscordLogLevel level, String message) {
- System.out.println(message+" - "+level+" - "+hookData);
- }
- });
-
- activityManager = iDiscordCore.GetActivityManager.getActivityManager(iDiscordCore);
- latestDiscordActivity = new DiscordActivity();
- latestDiscordActivity.assets = new DiscordActivityAssets();
- latestDiscordActivity.secrets = new DiscordActivitySecrets();
- latestDiscordActivity.party = new DiscordActivityParty();
- latestDiscordActivity.party.discordActivityParty = new DiscordPartySize();
- latestDiscordActivity.timestamps = new DiscordActivityTimestamps();
- GameSDK.writeString(latestDiscordActivity.assets.large_image, "mort");
- GameSDK.writeString(latestDiscordActivity.assets.large_text, "mort");
-
- return true;
- }
-
- private final SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus();
-
- private DiscordActivity latestDiscordActivity;
-
- public void respond(DiscordSnowflake userID, EDiscordActivityJoinRequestReply reply) {
- activityManager.SendRequestReply.sendRequestReply(activityManager, userID, reply, Pointer.NULL, (callbackData, result) -> {
- System.out.println("Discord Returned "+result+" For Replying "+reply+" To "+userID.longValue()+"L");
- });
- }
-
- public void accept(DiscordSnowflake userID) {
- activityManager.AcceptInvite.acceptInvite(activityManager, userID, Pointer.NULL, (callbackData, result) -> {
- System.out.println("Discord Returned "+result+" For Accepting invite from "+userID.longValue()+"L");
- });
- }
- public void updatePresence() {
- if (!skyblockStatus.isOnHypixel() || !FeatureRegistry.ADVANCED_RICHPRESENCE.isEnabled() || (!skyblockStatus.isOnSkyblock() && FeatureRegistry.ADVANCED_RICHPRESENCE.<Boolean>getParameter("disablenotskyblock").getValue())) {
- activityManager.ClearActivity.clearActivity(activityManager, Pointer.NULL, new NativeGameSDK.DiscordCallback() {
- @Override
- public void callback(Pointer callbackData, EDiscordResult result) {
- }
- });
- } else {
- String name = skyblockStatus.getDungeonName();
- if (name.trim().equals("Your Island")) name = "Private Island";
-
- GameSDK.writeString(latestDiscordActivity.state, name);
-
-
- GameSDK.writeString(latestDiscordActivity.party.id, PartyManager.INSTANCE.getPartyID() == null ? "" : PartyManager.INSTANCE.getPartyID());
- latestDiscordActivity.party.discordActivityParty.current_size = new Int32(PartyManager.INSTANCE.getMemberCount());
- latestDiscordActivity.party.discordActivityParty.max_size = new Int32(PartyManager.INSTANCE.getMaxParty());
-
- if (skyblockStatus.getContext() != null) {
- DungeonContext dungeonContext = skyblockStatus.getContext();
- long init = dungeonContext.getInit();
- latestDiscordActivity.timestamps.start = new DiscordTimestamp(init);
-
- if (dungeonContext.getBossfightProcessor() != null) {
- GameSDK.writeString(latestDiscordActivity.details, "Fighting "+dungeonContext.getBossfightProcessor().getBossName()+": "+dungeonContext.getBossfightProcessor().getCurrentPhase());
- } else {
- GameSDK.writeString(latestDiscordActivity.details, "Clearing Rooms");
- }
- } else {
- latestDiscordActivity.timestamps.start = new DiscordTimestamp(0);
- GameSDK.writeString(latestDiscordActivity.details, "Dungeons Guide");
- }
- if (PartyManager.INSTANCE.isAllowAskToJoin()) {
- GameSDK.writeString(latestDiscordActivity.secrets.join, PartyManager.INSTANCE.getAskToJoinSecret());
- } else {
- GameSDK.writeString(latestDiscordActivity.secrets.join, "");
- }
- activityManager.UpdateActivity.updateActivity(activityManager, latestDiscordActivity, Pointer.NULL, new NativeGameSDK.DiscordCallback() {
- @Override
- public void callback(Pointer callbackData, EDiscordResult result) {
- }
- });
- }
- }
-
- @Override
- public void run() {
- setupSuccessful = setup();
- if (!setupSuccessful) return;
- while(!Thread.interrupted()) {
- try {
- iDiscordCore.RunCallbacks.runCallbacks(iDiscordCore);
- updatePresence();
- Thread.sleep(300L);
- } catch (Exception e) {e.printStackTrace();}
- }
- }
-}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java
index d2960b2a..d7759f92 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/com