├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md ├── core.iml ├── migrations └── v103-v200 │ ├── 01-event-reward-config.sql │ ├── 02-update-online-users.sql │ ├── 03-allow-freeroam-powerup-tracking.sql │ ├── 04-update-social-relationship-id-type.sql │ ├── 05-update-ban-schema.sql │ ├── 06-add-context-to-login-announcements.sql │ ├── 07-fix-login-announcement-table-name.sql │ ├── 08-add-language-to-login-announcements.sql │ ├── 09-update-news-article-timestamp.sql │ ├── 10-fix-car-foreign-keys.sql │ ├── 11-carslot-to-ownedcar.sql │ ├── 12-drop-eventid-from-eventreward.sql │ ├── 13-foreign-key-improvements.sql │ └── 14-customcar-to-car.sql ├── pom.xml ├── project-defaults.yml ├── src └── main │ ├── java │ └── com │ │ └── soapboxrace │ │ ├── core │ │ ├── api │ │ │ ├── Achievements.java │ │ │ ├── AddFriendRequest.java │ │ │ ├── Badges.java │ │ │ ├── BlockPlayer.java │ │ │ ├── CarClasses.java │ │ │ ├── Catalog.java │ │ │ ├── CreateTicket.java │ │ │ ├── Crypto.java │ │ │ ├── DriverPersona.java │ │ │ ├── Event.java │ │ │ ├── Events.java │ │ │ ├── Generic.java │ │ │ ├── GetBlockedUserList.java │ │ │ ├── GetBlockersByUsers.java │ │ │ ├── GetFreeroamJson.java │ │ │ ├── GetFriendListFromUserId.java │ │ │ ├── GetRebroadcasters.java │ │ │ ├── GetRegionInfo.java │ │ │ ├── GetServerInformation.java │ │ │ ├── GetSocialNetworkInfo.java │ │ │ ├── GetSocialSettings.java │ │ │ ├── GetUserSettings.java │ │ │ ├── Gifts.java │ │ │ ├── HeartBeat.java │ │ │ ├── Logging.java │ │ │ ├── LoginAnnouncements.java │ │ │ ├── MatchMaking.java │ │ │ ├── Modding.java │ │ │ ├── NewsArticles.java │ │ │ ├── Personas.java │ │ │ ├── Powerups.java │ │ │ ├── RecoveryPassword.java │ │ │ ├── ReloadAchievements.java │ │ │ ├── ReloadLoginAnnouncements.java │ │ │ ├── ReloadParameters.java │ │ │ ├── RemoveFriend.java │ │ │ ├── Reporting.java │ │ │ ├── ResolveFriendsRequest.java │ │ │ ├── Security.java │ │ │ ├── SendAnnouncement.java │ │ │ ├── Session.java │ │ │ ├── Social.java │ │ │ ├── SystemInfo.java │ │ │ ├── UnblockPlayer.java │ │ │ ├── User.java │ │ │ └── util │ │ │ │ ├── AuthenticationFilter.java │ │ │ │ ├── BuildInfo.java │ │ │ │ ├── Engine.java │ │ │ │ ├── GitStateInfo.java │ │ │ │ ├── HttpHeaderFilter.java │ │ │ │ ├── LaunchFilter.java │ │ │ │ ├── LauncherChecks.java │ │ │ │ ├── MarshallerInterceptor.java │ │ │ │ ├── MiscUtils.java │ │ │ │ ├── Secured.java │ │ │ │ └── UUIDGen.java │ │ ├── bo │ │ │ ├── AchievementBO.java │ │ │ ├── AchievementTransaction.java │ │ │ ├── AdminBO.java │ │ │ ├── AuthenticationBO.java │ │ │ ├── BanBO.java │ │ │ ├── BasketBO.java │ │ │ ├── CarDamageBO.java │ │ │ ├── CarSlotBO.java │ │ │ ├── CommerceBO.java │ │ │ ├── DNFTimerBO.java │ │ │ ├── DriverPersonaBO.java │ │ │ ├── DropBO.java │ │ │ ├── ErrorReportingBO.java │ │ │ ├── EventBO.java │ │ │ ├── EventResultBO.java │ │ │ ├── EventResultDragBO.java │ │ │ ├── EventResultPursuitBO.java │ │ │ ├── EventResultRouteBO.java │ │ │ ├── EventResultTeamEscapeBO.java │ │ │ ├── EventsBO.java │ │ │ ├── GetServerInformationBO.java │ │ │ ├── HardwareInfoBO.java │ │ │ ├── InventoryBO.java │ │ │ ├── InviteTicketBO.java │ │ │ ├── ItemRewardBO.java │ │ │ ├── LegitRaceBO.java │ │ │ ├── LobbyBO.java │ │ │ ├── LobbyCountdownBO.java │ │ │ ├── LobbyMessagingBO.java │ │ │ ├── LoginAnnouncementBO.java │ │ │ ├── MatchmakingBO.java │ │ │ ├── ModdingBO.java │ │ │ ├── NewsArticleBO.java │ │ │ ├── OnlineUsersBO.java │ │ │ ├── ParameterBO.java │ │ │ ├── PerformanceBO.java │ │ │ ├── PersonaBO.java │ │ │ ├── PowerupTrackingBO.java │ │ │ ├── PresenceBO.java │ │ │ ├── ProductBO.java │ │ │ ├── RecoveryPasswordBO.java │ │ │ ├── RedisBO.java │ │ │ ├── RequestSessionInfo.java │ │ │ ├── RewardBO.java │ │ │ ├── RewardDragBO.java │ │ │ ├── RewardEventBO.java │ │ │ ├── RewardPursuitBO.java │ │ │ ├── RewardRouteBO.java │ │ │ ├── RewardTeamEscapeBO.java │ │ │ ├── SceneryUtil.java │ │ │ ├── ScriptingBO.java │ │ │ ├── SessionBO.java │ │ │ ├── SocialBO.java │ │ │ ├── SocialRelationshipBO.java │ │ │ ├── StartupBO.java │ │ │ ├── TokenSessionBO.java │ │ │ ├── UserBO.java │ │ │ └── util │ │ │ │ ├── AchievementCommerceContext.java │ │ │ │ ├── AchievementCustomizationContext.java │ │ │ │ ├── AchievementEventContext.java │ │ │ │ ├── AchievementInventoryContext.java │ │ │ │ ├── AchievementProgressionContext.java │ │ │ │ ├── AchievementUpdateInfo.java │ │ │ │ ├── CardDecks.java │ │ │ │ ├── ItemRewardBase.java │ │ │ │ ├── ItemRewardCash.java │ │ │ │ ├── ItemRewardMulti.java │ │ │ │ ├── ItemRewardProduct.java │ │ │ │ ├── ItemRewardQuantityProduct.java │ │ │ │ ├── ListDifferences.java │ │ │ │ ├── LoggerProducer.java │ │ │ │ ├── MiniProfilingTimer.java │ │ │ │ ├── OwnedCarConverter.java │ │ │ │ ├── RewardVO.java │ │ │ │ ├── ServerInformationVO.java │ │ │ │ └── TimeConverter.java │ │ ├── dao │ │ │ ├── AchievementDAO.java │ │ │ ├── AchievementRankDAO.java │ │ │ ├── AchievementRewardDAO.java │ │ │ ├── AmplifierDAO.java │ │ │ ├── BadgeDefinitionDAO.java │ │ │ ├── BanDAO.java │ │ │ ├── BasketDefinitionDAO.java │ │ │ ├── CarClassesDAO.java │ │ │ ├── CarDAO.java │ │ │ ├── CardPackDAO.java │ │ │ ├── CategoryDAO.java │ │ │ ├── ChatRoomDAO.java │ │ │ ├── EventDAO.java │ │ │ ├── EventDataDAO.java │ │ │ ├── EventSessionDAO.java │ │ │ ├── HardwareInfoDAO.java │ │ │ ├── InventoryDAO.java │ │ │ ├── InventoryItemDAO.java │ │ │ ├── InviteTicketDAO.java │ │ │ ├── LevelRepDAO.java │ │ │ ├── LobbyDAO.java │ │ │ ├── LobbyEntrantDAO.java │ │ │ ├── LoginAnnouncementDAO.java │ │ │ ├── NewsArticleDAO.java │ │ │ ├── OnlineUsersDAO.java │ │ │ ├── ParameterDAO.java │ │ │ ├── PersonaAchievementDAO.java │ │ │ ├── PersonaAchievementRankDAO.java │ │ │ ├── PersonaBadgeDAO.java │ │ │ ├── PersonaDAO.java │ │ │ ├── ProductDAO.java │ │ │ ├── RecoveryPasswordDAO.java │ │ │ ├── ReportDAO.java │ │ │ ├── RewardTableDAO.java │ │ │ ├── SocialRelationshipDAO.java │ │ │ ├── TreasureHuntConfigDAO.java │ │ │ ├── TreasureHuntDAO.java │ │ │ ├── UsedPowerupDAO.java │ │ │ ├── UserDAO.java │ │ │ ├── VinylProductDAO.java │ │ │ └── util │ │ │ │ ├── BaseDAO.java │ │ │ │ ├── LongKeyedDAO.java │ │ │ │ └── StringKeyedDAO.java │ │ ├── engine │ │ │ ├── EngineException.java │ │ │ ├── EngineExceptionCode.java │ │ │ ├── EngineExceptionHandler.java │ │ │ ├── EngineExceptionTrans.java │ │ │ └── EngineInnerExceptionTrans.java │ │ ├── events │ │ │ └── PersonaPresenceUpdated.java │ │ ├── jpa │ │ │ ├── AchievementEntity.java │ │ │ ├── AchievementRankEntity.java │ │ │ ├── AchievementRewardEntity.java │ │ │ ├── AmplifierEntity.java │ │ │ ├── BadgeDefinitionEntity.java │ │ │ ├── BanEntity.java │ │ │ ├── BasketDefinitionEntity.java │ │ │ ├── CarClassesEntity.java │ │ │ ├── CarEntity.java │ │ │ ├── CardPackEntity.java │ │ │ ├── CardPackItemEntity.java │ │ │ ├── CategoryEntity.java │ │ │ ├── ChatRoomEntity.java │ │ │ ├── EventDataEntity.java │ │ │ ├── EventEntity.java │ │ │ ├── EventMode.java │ │ │ ├── EventRewardEntity.java │ │ │ ├── EventSessionEntity.java │ │ │ ├── HardwareInfoEntity.java │ │ │ ├── InventoryEntity.java │ │ │ ├── InventoryItemEntity.java │ │ │ ├── InviteTicketEntity.java │ │ │ ├── LevelRepEntity.java │ │ │ ├── LobbyEntity.java │ │ │ ├── LobbyEntrantEntity.java │ │ │ ├── LoginAnnouncementEntity.java │ │ │ ├── NewsArticleEntity.java │ │ │ ├── OnlineUsersEntity.java │ │ │ ├── PaintEntity.java │ │ │ ├── ParameterEntity.java │ │ │ ├── PerformancePartEntity.java │ │ │ ├── PersonaAchievementEntity.java │ │ │ ├── PersonaAchievementRankEntity.java │ │ │ ├── PersonaBadgeEntity.java │ │ │ ├── PersonaEntity.java │ │ │ ├── ProductEntity.java │ │ │ ├── RecoveryPasswordEntity.java │ │ │ ├── ReportEntity.java │ │ │ ├── RewardTableEntity.java │ │ │ ├── RewardTableItemEntity.java │ │ │ ├── SkillModPartEntity.java │ │ │ ├── SkillModRewardType.java │ │ │ ├── SocialRelationshipEntity.java │ │ │ ├── TokenSessionEntity.java │ │ │ ├── TreasureHuntConfigEntity.java │ │ │ ├── TreasureHuntEntity.java │ │ │ ├── UsedPowerupEntity.java │ │ │ ├── UserEntity.java │ │ │ ├── VinylEntity.java │ │ │ ├── VinylProductEntity.java │ │ │ ├── VisualPartEntity.java │ │ │ ├── convert │ │ │ │ ├── NewsArticleFilterConverter.java │ │ │ │ └── NewsArticleTypeConverter.java │ │ │ └── util │ │ │ │ ├── NewsArticleFilters.java │ │ │ │ └── NewsArticleType.java │ │ ├── vo │ │ │ └── ModInfoVO.java │ │ └── xmpp │ │ │ ├── OccupantEntities.java │ │ │ ├── OccupantEntity.java │ │ │ ├── OpenFireConnector.java │ │ │ ├── OpenFireRestApiCli.java │ │ │ ├── OpenFireSoapBoxCli.java │ │ │ ├── SessionsCount.java │ │ │ ├── XmppChat.java │ │ │ └── XmppEvent.java │ │ └── jaxb │ │ ├── http │ │ ├── Accolades.java │ │ ├── AchievementDefinitionPacket.java │ │ ├── AchievementRankPacket.java │ │ ├── AchievementRewards.java │ │ ├── AchievementState.java │ │ ├── AchievementsPacket.java │ │ ├── ArbitrationPacket.java │ │ ├── ArrayOfAchievementDefinitionPacket.java │ │ ├── ArrayOfAchievementRankPacket.java │ │ ├── ArrayOfBadgeDefinitionPacket.java │ │ ├── ArrayOfBadgePacket.java │ │ ├── ArrayOfBasicBlockPlayerInfo.java │ │ ├── ArrayOfBasketItemTrans.java │ │ ├── ArrayOfCarClass.java │ │ ├── ArrayOfCategoryTrans.java │ │ ├── ArrayOfChatRoom.java │ │ ├── ArrayOfClientConfig.java │ │ ├── ArrayOfCommerceItemTrans.java │ │ ├── ArrayOfCustomPaintTrans.java │ │ ├── ArrayOfCustomVinylTrans.java │ │ ├── ArrayOfDragEntrantResult.java │ │ ├── ArrayOfEntitlementItemTrans.java │ │ ├── ArrayOfEventDefinition.java │ │ ├── ArrayOfFriendPersona.java │ │ ├── ArrayOfInt.java │ │ ├── ArrayOfInvalidBasketItemTrans.java │ │ ├── ArrayOfInventoryItemTrans.java │ │ ├── ArrayOfLevelGiftDefinition.java │ │ ├── ArrayOfLobbyEntrantInfo.java │ │ ├── ArrayOfLoginAnnouncementDefinition.java │ │ ├── ArrayOfLong.java │ │ ├── ArrayOfLuckyDrawBox.java │ │ ├── ArrayOfLuckyDrawItem.java │ │ ├── ArrayOfNewsArticleTrans.java │ │ ├── ArrayOfOwnedCarTrans.java │ │ ├── ArrayOfPerformancePartTrans.java │ │ ├── ArrayOfPersonaBase.java │ │ ├── ArrayOfPersonaCCar.java │ │ ├── ArrayOfProductTrans.java │ │ ├── ArrayOfProfileData.java │ │ ├── ArrayOfRewardPart.java │ │ ├── ArrayOfRouteEntrantResult.java │ │ ├── ArrayOfSkillModPartTrans.java │ │ ├── ArrayOfString.java │ │ ├── ArrayOfTeamEscapeEntrantResult.java │ │ ├── ArrayOfUdpRelayInfo.java │ │ ├── ArrayOfVisualPartTrans.java │ │ ├── ArrayOfWalletTrans.java │ │ ├── BadgeBundle.java │ │ ├── BadgeDefinitionPacket.java │ │ ├── BadgeInput.java │ │ ├── BadgePacket.java │ │ ├── BasicBlockPlayerInfo.java │ │ ├── BasketItemTrans.java │ │ ├── BasketTrans.java │ │ ├── BlockPlayerMsg.java │ │ ├── CarClass.java │ │ ├── CarSlotInfoTrans.java │ │ ├── CategoryTrans.java │ │ ├── ChatRoom.java │ │ ├── ChatServer.java │ │ ├── ClientConfig.java │ │ ├── ClientConfigTrans.java │ │ ├── ClientLog.java │ │ ├── ClientPhysicsMetrics.java │ │ ├── ClientServerCryptoTicket.java │ │ ├── CommerceItemTrans.java │ │ ├── CommerceResultStatus.java │ │ ├── CommerceResultTrans.java │ │ ├── CommerceSessionResultTrans.java │ │ ├── CommerceSessionTrans.java │ │ ├── CustomCarTrans.java │ │ ├── CustomPaintTrans.java │ │ ├── CustomVinylTrans.java │ │ ├── DragArbitrationPacket.java │ │ ├── DragEntrantResult.java │ │ ├── DragEventResult.java │ │ ├── EntitlementItemTrans.java │ │ ├── EntitlementTrans.java │ │ ├── EntrantResult.java │ │ ├── Entrants.java │ │ ├── EnumRewardCategory.java │ │ ├── EnumRewardType.java │ │ ├── EventDefinition.java │ │ ├── EventResult.java │ │ ├── EventsPacket.java │ │ ├── ExitPath.java │ │ ├── FraudConfig.java │ │ ├── FraudDetection.java │ │ ├── FriendPersona.java │ │ ├── FriendResult.java │ │ ├── FriendResultStatus.java │ │ ├── GenericCommerceResult.java │ │ ├── HardwareInfo.java │ │ ├── HeartBeat.java │ │ ├── InvalidBasketItemTrans.java │ │ ├── InvalidBasketTrans.java │ │ ├── InventoryItemTrans.java │ │ ├── InventoryTrans.java │ │ ├── LevelGiftDefinition.java │ │ ├── LobbyCountdown.java │ │ ├── LobbyEntrantAdded.java │ │ ├── LobbyEntrantInfo.java │ │ ├── LobbyEntrantRemoved.java │ │ ├── LobbyEntrantState.java │ │ ├── LobbyInfo.java │ │ ├── LoginAnnouncementContext.java │ │ ├── LoginAnnouncementDefinition.java │ │ ├── LoginAnnouncementType.java │ │ ├── LoginAnnouncementsDefinition.java │ │ ├── LuckyDrawBox.java │ │ ├── LuckyDrawInfo.java │ │ ├── LuckyDrawItem.java │ │ ├── NewsArticleTrans.java │ │ ├── ObjectFactory.java │ │ ├── OwnedCarTrans.java │ │ ├── PerformancePartTrans.java │ │ ├── PersonaBase.java │ │ ├── PersonaCCar.java │ │ ├── PersonaFriendsList.java │ │ ├── PersonaIdArray.java │ │ ├── PersonaMotto.java │ │ ├── PersonaPresence.java │ │ ├── ProductTrans.java │ │ ├── ProfileData.java │ │ ├── PursuitArbitrationPacket.java │ │ ├── PursuitEventResult.java │ │ ├── RegionInfo.java │ │ ├── Reward.java │ │ ├── RewardPart.java │ │ ├── RouteArbitrationPacket.java │ │ ├── RouteEntrantResult.java │ │ ├── RouteEventResult.java │ │ ├── SecurityChallenge.java │ │ ├── SecurityResponse.java │ │ ├── SessionInfo.java │ │ ├── SkillModPartTrans.java │ │ ├── SocialNetworkInfo.java │ │ ├── SocialSettings.java │ │ ├── StatConversion.java │ │ ├── SystemInfo.java │ │ ├── TeamEscapeArbitrationPacket.java │ │ ├── TeamEscapeEntrantResult.java │ │ ├── TeamEscapeEventResult.java │ │ ├── TreasureHuntEventSession.java │ │ ├── UdpRelayCryptoTicket.java │ │ ├── UdpRelayInfo.java │ │ ├── User.java │ │ ├── UserInfo.java │ │ ├── UserSettings.java │ │ ├── Vector3.java │ │ ├── VisualPartTrans.java │ │ └── WalletTrans.java │ │ ├── login │ │ └── LoginStatusVO.java │ │ ├── util │ │ ├── JAXBUtility.java │ │ └── XMLReaderWithoutNamespace.java │ │ └── xmpp │ │ ├── AchievementAwarded.java │ │ ├── AchievementProgress.java │ │ ├── AchievementsAwarded.java │ │ ├── ChallengeType.java │ │ ├── XMPP_CryptoTicketsType.java │ │ ├── XMPP_DragEntrantResultType.java │ │ ├── XMPP_EventSessionType.java │ │ ├── XMPP_EventTimedOutType.java │ │ ├── XMPP_EventTimingOutType.java │ │ ├── XMPP_FriendPersonaType.java │ │ ├── XMPP_LobbyInviteType.java │ │ ├── XMPP_LobbyLaunchedType.java │ │ ├── XMPP_P2PCryptoTicketType.java │ │ ├── XMPP_PowerupActivatedType.java │ │ ├── XMPP_ResponseTypeAchievementsAwarded.java │ │ ├── XMPP_ResponseTypeDragEntrantResult.java │ │ ├── XMPP_ResponseTypeEntrantAdded.java │ │ ├── XMPP_ResponseTypeEntrantRemoved.java │ │ ├── XMPP_ResponseTypeEventTimedOut.java │ │ ├── XMPP_ResponseTypeEventTimingOut.java │ │ ├── XMPP_ResponseTypeLobbyInvite.java │ │ ├── XMPP_ResponseTypeLobbyLaunched.java │ │ ├── XMPP_ResponseTypePersonaBase.java │ │ ├── XMPP_ResponseTypePowerupActivated.java │ │ ├── XMPP_ResponseTypeRouteEntrantResult.java │ │ ├── XMPP_ResponseTypeTeamEscapeEntrantResult.java │ │ ├── XMPP_RouteEntrantResultType.java │ │ └── XMPP_TeamEscapeEntrantResultType.java │ ├── resources │ └── META-INF │ │ └── persistence.xml │ └── webapp │ ├── WEB-INF │ ├── beans.xml │ └── web.xml │ ├── forgotPasswd.jsp │ ├── index.jsp │ ├── password.jsp │ ├── reload-login-announcements.jsp │ ├── reload-parameters.jsp │ ├── send-announcement.jsp │ └── ticket.jsp ├── xsd-final ├── AchievementsPacket.xsd ├── ArbitrationPacket.xsd ├── ArrayOfBadgePacket.xsd ├── ArrayOfBasketItemTrans.xsd ├── ArrayOfCarClass.xsd ├── ArrayOfCategoryTrans.xsd ├── ArrayOfChatRoom.xsd ├── ArrayOfClientConfig.xsd ├── ArrayOfCommerceItemTrans.xsd ├── ArrayOfCustomPaintTrans.xsd ├── ArrayOfCustomVinylTrans.xsd ├── ArrayOfEntitlementItemTrans.xsd ├── ArrayOfFriendPersona.xsd ├── ArrayOfInt.xsd ├── ArrayOfInvalidBasketItemTrans.xsd ├── ArrayOfInventoryItemTrans.xsd ├── ArrayOfLevelGiftDefinition.xsd ├── ArrayOfLong.xsd ├── ArrayOfNewsArticleTrans.xsd ├── ArrayOfOwnedCarTrans.xsd ├── ArrayOfPerformancePartTrans.xsd ├── ArrayOfPersonaBase.xsd ├── ArrayOfPersonaCCar.xsd ├── ArrayOfProductTrans.xsd ├── ArrayOfProfileData.xsd ├── ArrayOfSkillModPartTrans.xsd ├── ArrayOfString.xsd ├── ArrayOfUdpRelayInfo.xsd ├── ArrayOfVisualPartTrans.xsd ├── ArrayOfWalletTrans.xsd ├── BasketItemTrans.xsd ├── BasketTrans.xsd ├── CarClass.xsd ├── CarSlotInfoTrans.xsd ├── CategoryTrans.xsd ├── ChatRoom.xsd ├── ChatServer.xsd ├── ClientConfig.xsd ├── ClientConfigTrans.xsd ├── CommerceItemTrans.xsd ├── CommerceResultStatus.xsd ├── CommerceResultTrans.xsd ├── CommerceSessionResultTrans.xsd ├── CommerceSessionTrans.xsd ├── CustomCarTrans.xsd ├── CustomPaintTrans.xsd ├── CustomVinylTrans.xsd ├── DragArbitrationPacket.xsd ├── DragEntrantResult.xsd ├── DragEventResult.xsd ├── EntitlementItemTrans.xsd ├── EntitlementTrans.xsd ├── EntrantResult.xsd ├── EventDefinition.xsd ├── EventResult.xsd ├── EventsPacket.xsd ├── FraudConfig.xsd ├── FriendPersona.xsd ├── HardwareInfo.xsd ├── HeartBeat.xsd ├── InvalidBasketItemTrans.xsd ├── InvalidBasketTrans.xsd ├── InventoryItemTrans.xsd ├── InventoryTrans.xsd ├── LevelGiftDefinition.xsd ├── LobbyEntrantAdded.xsd ├── LobbyEntrantInfo.xsd ├── LobbyEntrantRemoved.xsd ├── LobbyInfo.xsd ├── LoginAnnouncementsDefinition.xsd ├── Main.xsd ├── NewsArticleTrans.xsd ├── OwnedCarTrans.xsd ├── PerformancePartTrans.xsd ├── PersonaBase.xsd ├── PersonaCCar.xsd ├── PersonaFriendsList.xsd ├── PersonaIdArray.xsd ├── PersonaMotto.xsd ├── PersonaPresence.xsd ├── ProductTrans.xsd ├── ProfileData.xsd ├── PursuitArbitrationPacket.xsd ├── PursuitEventResult.xsd ├── RegionInfo.xsd ├── RouteArbitrationPacket.xsd ├── RouteEntrantResult.xsd ├── RouteEventResult.xsd ├── SessionInfo.xsd ├── SkillModPartTrans.xsd ├── SocialNetworkInfo.xsd ├── SocialSettings.xsd ├── SystemInfo.xsd ├── TeamEscapeArbitrationPacket.xsd ├── TeamEscapeEntrantResult.xsd ├── TeamEscapeEventResult.xsd ├── TreasureHuntEventSession.xsd ├── UdpRelayCryptoTicket.xsd ├── UdpRelayInfo.xsd ├── User.xsd ├── UserInfo.xsd ├── User_Settings.xsd ├── VisualPartTrans.xsd ├── WalletTrans.xsd ├── ZExample.xsd └── xjc.sh └── xsd ├── Victory.Data.Objects.Customization.SkillModEffectAmountConversion.xsd ├── Victory.Data.Objects.Customization.SkillModEffectType.xsd ├── Victory.DataLayer.Serialization.BasketItemTrans.xsd ├── Victory.DataLayer.Serialization.BasketTrans.xsd ├── Victory.DataLayer.Serialization.CarSlotInfoTrans.xsd ├── Victory.DataLayer.Serialization.CategoryTrans.xsd ├── Victory.DataLayer.Serialization.ClientConfig.xsd ├── Victory.DataLayer.Serialization.ClientConfigTrans.xsd ├── Victory.DataLayer.Serialization.ClientLog.xsd ├── Victory.DataLayer.Serialization.ClientServerCryptoTicket.xsd ├── Victory.DataLayer.Serialization.CommerceItemTrans.xsd ├── Victory.DataLayer.Serialization.CommerceResultStatus.xsd ├── Victory.DataLayer.Serialization.CommerceResultTrans.xsd ├── Victory.DataLayer.Serialization.CommerceSessionResultTrans.xsd ├── Victory.DataLayer.Serialization.CommerceSessionTrans.xsd ├── Victory.DataLayer.Serialization.Credentials.xsd ├── Victory.DataLayer.Serialization.CustomCarTrans.xsd ├── Victory.DataLayer.Serialization.CustomPaintTrans.xsd ├── Victory.DataLayer.Serialization.CustomVinylTrans.xsd ├── Victory.DataLayer.Serialization.EntitlementItemTrans.xsd ├── Victory.DataLayer.Serialization.EntitlementTrans.xsd ├── Victory.DataLayer.Serialization.Event.Accolades.xsd ├── Victory.DataLayer.Serialization.Event.DragEntrantResult.xsd ├── Victory.DataLayer.Serialization.Event.DragEventResult.xsd ├── Victory.DataLayer.Serialization.Event.EntrantResult.xsd ├── Victory.DataLayer.Serialization.Event.EventDefinition.xsd ├── Victory.DataLayer.Serialization.Event.EventResult.xsd ├── Victory.DataLayer.Serialization.Event.EventTimedOut.xsd ├── Victory.DataLayer.Serialization.Event.EventTimingOut.xsd ├── Victory.DataLayer.Serialization.Event.EventsPacket.xsd ├── Victory.DataLayer.Serialization.Event.ExitPath.xsd ├── Victory.DataLayer.Serialization.Event.FinishReason.xsd ├── Victory.DataLayer.Serialization.Event.LuckyDrawBox.xsd ├── Victory.DataLayer.Serialization.Event.LuckyDrawInfo.xsd ├── Victory.DataLayer.Serialization.Event.LuckyDrawItem.xsd ├── Victory.DataLayer.Serialization.Event.PursuitEventResult.xsd ├── Victory.DataLayer.Serialization.Event.Reward.xsd ├── Victory.DataLayer.Serialization.Event.RewardPart.xsd ├── Victory.DataLayer.Serialization.Event.RouteEntrantResult.xsd ├── Victory.DataLayer.Serialization.Event.RouteEventResult.xsd ├── Victory.DataLayer.Serialization.Event.TeamEscapeEntrantResult.xsd ├── Victory.DataLayer.Serialization.Event.TeamEscapeEventResult.xsd ├── Victory.DataLayer.Serialization.Event.TreasureHuntEventSession.xsd ├── Victory.DataLayer.Serialization.Event.enumRewardCategory.xsd ├── Victory.DataLayer.Serialization.Event.enumRewardType.xsd ├── Victory.DataLayer.Serialization.FraudConfig.xsd ├── Victory.DataLayer.Serialization.GetPermanentSessionData.xsd ├── Victory.DataLayer.Serialization.Gift.LevelGiftDefinition.xsd ├── Victory.DataLayer.Serialization.HardwareInfo.xsd ├── Victory.DataLayer.Serialization.HeartBeat.xsd ├── Victory.DataLayer.Serialization.InvalidBasketItemTrans.xsd ├── Victory.DataLayer.Serialization.InvalidBasketTrans.xsd ├── Victory.DataLayer.Serialization.InventoryItemTrans.xsd ├── Victory.DataLayer.Serialization.InventoryTrans.xsd ├── Victory.DataLayer.Serialization.LauncherEndTrans.xsd ├── Victory.DataLayer.Serialization.LauncherStartTrans.xsd ├── Victory.DataLayer.Serialization.LoginAnnouncement.LoginAnnouncementDefinition.xsd ├── Victory.DataLayer.Serialization.LoginAnnouncement.LoginAnnouncementsDefinition.xsd ├── Victory.DataLayer.Serialization.LoginAnnouncement.LoginAnnouncementsModifiedMsg.xsd ├── Victory.DataLayer.Serialization.MachineIdentification.xsd ├── Victory.DataLayer.Serialization.MetagameFlags.xsd ├── Victory.DataLayer.Serialization.OwnedCarTrans.xsd ├── Victory.DataLayer.Serialization.PerformancePartTrans.xsd ├── Victory.DataLayer.Serialization.PowerUp.PowerupActivated.xsd ├── Victory.DataLayer.Serialization.ProductTrans.xsd ├── Victory.DataLayer.Serialization.RegionInfo.xsd ├── Victory.DataLayer.Serialization.SkillModPartTrans.xsd ├── Victory.DataLayer.Serialization.Social.BasicBlockPlayerInfo.xsd ├── Victory.DataLayer.Serialization.Social.BlockPlayerMsg.xsd ├── Victory.DataLayer.Serialization.Social.RemoveFriendMsg.xsd ├── Victory.DataLayer.Serialization.Social.SocialNetworkInfo.xsd ├── Victory.DataLayer.Serialization.Social.SocialSettings.xsd ├── Victory.DataLayer.Serialization.Social.UnblockPlayerMsg.xsd ├── Victory.DataLayer.Serialization.Social.UserPersonaMap.xsd ├── Victory.DataLayer.Serialization.Social.UserPersonaMapList.xsd ├── Victory.DataLayer.Serialization.Token.xsd ├── Victory.DataLayer.Serialization.UdpRelayCryptoTicket.xsd ├── Victory.DataLayer.Serialization.UdpRelayInfo.xsd ├── Victory.DataLayer.Serialization.UserSettings.xsd ├── Victory.DataLayer.Serialization.User_Settings.xsd ├── Victory.DataLayer.Serialization.Vector3.xsd ├── Victory.DataLayer.Serialization.VisualPartTrans.xsd ├── Victory.DataLayer.Serialization.WalletTrans.xsd ├── Victory.DataLayer.Serialization.enumPowerUpType.xsd ├── Victory.DataObjects.Objects.LoginAnnouncement.LoginAnnouncementContext.xsd ├── Victory.DataObjects.Objects.LoginAnnouncement.LoginAnnouncementType.xsd ├── Victory.EngineErrorCode.xsd ├── Victory.Service.Cdn.xsd ├── Victory.Service.EngineExceptionTrans.xsd ├── Victory.Service.EngineInnerExceptionTrans.xsd ├── Victory.Service.LobbyCancelled.xsd ├── Victory.Service.LobbyCountdown.xsd ├── Victory.Service.LobbyEntrantAdded.xsd ├── Victory.Service.LobbyEntrantInfo.xsd ├── Victory.Service.LobbyEntrantRemoved.xsd ├── Victory.Service.LobbyEntrantState.xsd ├── Victory.Service.LobbyEntrantUpdated.xsd ├── Victory.Service.LobbyInfo.xsd ├── Victory.Service.LobbyInvite.xsd ├── Victory.Service.LobbyLaunched.xsd ├── Victory.Service.Objects.AchievementAwarded.xsd ├── Victory.Service.Objects.AchievementDefinitionPacket.xsd ├── Victory.Service.Objects.AchievementProgress.xsd ├── Victory.Service.Objects.AchievementRankPacket.xsd ├── Victory.Service.Objects.AchievementRewards.xsd ├── Victory.Service.Objects.AchievementState.xsd ├── Victory.Service.Objects.AchievementsAwarded.xsd ├── Victory.Service.Objects.AchievementsPacket.xsd ├── Victory.Service.Objects.ArbitrationPacket.xsd ├── Victory.Service.Objects.BadgeBundle.xsd ├── Victory.Service.Objects.BadgeDefinitionPacket.xsd ├── Victory.Service.Objects.BadgeInput.xsd ├── Victory.Service.Objects.BadgePacket.xsd ├── Victory.Service.Objects.BadgesPacket.xsd ├── Victory.Service.Objects.ChatTranscript.xsd ├── Victory.Service.Objects.ClientPhysicsMetrics.xsd ├── Victory.Service.Objects.DragArbitrationPacket.xsd ├── Victory.Service.Objects.ErrorReport.xsd ├── Victory.Service.Objects.Event.CarClass.xsd ├── Victory.Service.Objects.FraudDetection.xsd ├── Victory.Service.Objects.FraudDetectionCollection.xsd ├── Victory.Service.Objects.PersonaBase.xsd ├── Victory.Service.Objects.ProfileData.xsd ├── Victory.Service.Objects.PursuitArbitrationPacket.xsd ├── Victory.Service.Objects.Report.xsd ├── Victory.Service.Objects.RouteArbitrationPacket.xsd ├── Victory.Service.Objects.SecurityResponse.xsd ├── Victory.Service.Objects.ShardInfo.xsd ├── Victory.Service.Objects.ShortcutUsage.xsd ├── Victory.Service.Objects.StatConversion.xsd ├── Victory.Service.Objects.StatNameList.xsd ├── Victory.Service.Objects.TeamEscapeArbitrationPacket.xsd ├── Victory.Service.P2PCryptoTicket.xsd ├── Victory.Service.SecurityChallenge.xsd ├── Victory.Service.ServerTime.xsd ├── Victory.Service.SessionInfo.xsd ├── Victory.Service.SystemInfo.xsd ├── Victory.Service.TermsOfService.xsd ├── Victory.Service.configuration.xsd ├── Victory.Service.region.xsd ├── Victory.TransferObjects.DriverPersona.FriendPersona.xsd ├── Victory.TransferObjects.DriverPersona.FriendResult.xsd ├── Victory.TransferObjects.DriverPersona.PersonaDeleted.xsd ├── Victory.TransferObjects.DriverPersona.PersonaFriendsList.xsd ├── Victory.TransferObjects.DriverPersona.PersonaIdArray.xsd ├── Victory.TransferObjects.DriverPersona.PersonaMotto.xsd ├── Victory.TransferObjects.DriverPersona.PersonaPresence.xsd ├── Victory.TransferObjects.DriverPersona.UserIdArray.xsd ├── Victory.TransferObjects.News.NewsArticleFilters.xsd ├── Victory.TransferObjects.News.NewsArticleTrans.xsd ├── Victory.TransferObjects.News.NewsArticleType.xsd ├── Victory.TransferObjects.Session.chatRoom.xsd ├── Victory.TransferObjects.Session.chatServer.xsd ├── Victory.TransferObjects.User.PersonaCCar.xsd ├── Victory.TransferObjects.User.ProfileData.xsd ├── Victory.TransferObjects.User.User.xsd ├── Victory.TransferObjects.User.UserInfo.xsd ├── Victory.Voip.VoipRoomInfo.xsd └── xjc.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .settings 3 | target 4 | out 5 | build 6 | 7 | project-*.yml 8 | !project-defaults.yml 9 | /.thorntail-runner-cache/ 10 | src/main/java/com/soapboxrace/core/bo/BenchmarkingBO.java -------------------------------------------------------------------------------- /migrations/v103-v200/02-update-online-users.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE ONLINE_USERS MODIFY COLUMN numberOfUsers BIGINT NOT NULL; 2 | ALTER TABLE ONLINE_USERS RENAME COLUMN numberOfUsers TO numberOfOnline; 3 | ALTER TABLE ONLINE_USERS 4 | ADD COLUMN numberOfRegistered BIGINT NOT NULL; -------------------------------------------------------------------------------- /migrations/v103-v200/03-allow-freeroam-powerup-tracking.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE EVENT_POWERUP MODIFY COLUMN eventSessionId bigint null; 2 | ALTER TABLE EVENT_POWERUP RENAME TO USED_POWERUP; -------------------------------------------------------------------------------- /migrations/v103-v200/04-update-social-relationship-id-type.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE SOCIAL_RELATIONSHIP 2 | MODIFY COLUMN ID BIGINT(20) auto_increment; -------------------------------------------------------------------------------- /migrations/v103-v200/05-update-ban-schema.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE BAN 2 | DROP COLUMN willEnd; 3 | ALTER TABLE BAN RENAME COLUMN endsAt TO ends_at; 4 | ALTER TABLE BAN 5 | ADD COLUMN active BOOLEAN DEFAULT TRUE; -------------------------------------------------------------------------------- /migrations/v103-v200/06-add-context-to-login-announcements.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE LOGIN_ANNOUCEMENT 2 | ADD COLUMN context VARCHAR(255) NOT NULL DEFAULT 'NotApplicable'; -------------------------------------------------------------------------------- /migrations/v103-v200/07-fix-login-announcement-table-name.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE LOGIN_ANNOUCEMENT RENAME TO LOGIN_ANNOUNCEMENT; -------------------------------------------------------------------------------- /migrations/v103-v200/08-add-language-to-login-announcements.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE LOGIN_ANNOUNCEMENT 2 | ADD COLUMN language VARCHAR(255) NULL; -------------------------------------------------------------------------------- /migrations/v103-v200/09-update-news-article-timestamp.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE NEWS_ARTICLE 2 | MODIFY COLUMN `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; -------------------------------------------------------------------------------- /migrations/v103-v200/11-carslot-to-ownedcar.sql: -------------------------------------------------------------------------------- 1 | # Add new key 2 | ALTER TABLE OWNEDCAR 3 | ADD COLUMN personaId BIGINT NULL; 4 | ALTER TABLE OWNEDCAR 5 | ADD CONSTRAINT FK_OWNEDCAR_PERSONA_personaId 6 | FOREIGN KEY (personaId) REFERENCES PERSONA (ID) 7 | ON DELETE CASCADE; 8 | 9 | # Update values for new key 10 | UPDATE OWNEDCAR OC 11 | INNER JOIN CARSLOT CS ON CS.id = OC.carSlotId 12 | SET OC.personaId=CS.PersonaId 13 | WHERE OC.personaId IS NULL; 14 | 15 | ALTER TABLE OWNEDCAR 16 | MODIFY COLUMN personaId BIGINT NOT NULL; 17 | 18 | # Remove old key 19 | ALTER TABLE OWNEDCAR 20 | DROP FOREIGN KEY FK_OWNEDCAR_CARSLOT; 21 | ALTER TABLE OWNEDCAR 22 | DROP INDEX FK_OWNEDCAR_CARSLOT; 23 | ALTER TABLE OWNEDCAR 24 | DROP COLUMN carSlotId; 25 | 26 | # Remove old table 27 | DROP TABLE CARSLOT; 28 | 29 | # Update achievement scripts that depend on carSlot 30 | UPDATE ACHIEVEMENT 31 | SET update_trigger=REPLACE(update_trigger, 'carSlot.getOwnedCar().', 'ownedCar.') 32 | WHERE update_trigger LIKE '%carSlot.getOwnedCar().%'; -------------------------------------------------------------------------------- /migrations/v103-v200/12-drop-eventid-from-eventreward.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE EVENT_REWARD 2 | DROP FOREIGN KEY FK_EVENT_REWARD_EVENTID; 3 | ALTER TABLE EVENT_REWARD 4 | DROP COLUMN event_id; -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/Generic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import javax.ws.rs.*; 10 | import javax.ws.rs.core.MediaType; 11 | 12 | @Path("/") 13 | public class Generic { 14 | 15 | @GET 16 | @Path("{path:.*}") 17 | @Produces(MediaType.APPLICATION_XML) 18 | public String genericEmptyGet(@PathParam("path") String path) { 19 | return ""; 20 | } 21 | 22 | @POST 23 | @Path("{path:.*}") 24 | @Produces(MediaType.APPLICATION_XML) 25 | public String genericEmptyPost(@PathParam("path") String path) { 26 | return ""; 27 | } 28 | 29 | @PUT 30 | @Path("{path:.*}") 31 | @Produces(MediaType.APPLICATION_XML) 32 | public String genericEmptyPut(@PathParam("path") String path) { 33 | return ""; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/GetBlockedUserList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.core.bo.SocialRelationshipBO; 11 | 12 | import javax.ejb.EJB; 13 | import javax.ws.rs.GET; 14 | import javax.ws.rs.HeaderParam; 15 | import javax.ws.rs.Path; 16 | import javax.ws.rs.Produces; 17 | import javax.ws.rs.core.MediaType; 18 | import javax.ws.rs.core.Response; 19 | 20 | @Path("/getblockeduserlist") 21 | public class GetBlockedUserList { 22 | 23 | @EJB 24 | private SocialRelationshipBO socialRelationshipBO; 25 | 26 | @GET 27 | @Secured 28 | @Produces(MediaType.APPLICATION_XML) 29 | public Response getBlockedUserList(@HeaderParam("userId") Long userId) { 30 | return Response.ok().entity(socialRelationshipBO.getBlockedUserList(userId)).build(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/GetFriendListFromUserId.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.core.bo.SocialRelationshipBO; 11 | import com.soapboxrace.jaxb.http.PersonaFriendsList; 12 | 13 | import javax.ejb.EJB; 14 | import javax.ws.rs.GET; 15 | import javax.ws.rs.HeaderParam; 16 | import javax.ws.rs.Path; 17 | import javax.ws.rs.Produces; 18 | import javax.ws.rs.core.MediaType; 19 | 20 | @Path("/getfriendlistfromuserid") 21 | public class GetFriendListFromUserId { 22 | 23 | @EJB 24 | private SocialRelationshipBO socialRelationshipBO; 25 | 26 | @GET 27 | @Secured 28 | @Produces(MediaType.APPLICATION_XML) 29 | public PersonaFriendsList getFriendsList(@HeaderParam("userId") Long userId) { 30 | return socialRelationshipBO.getFriendsList(userId); 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/GetServerInformation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.bo.GetServerInformationBO; 10 | import com.soapboxrace.core.bo.util.ServerInformationVO; 11 | 12 | import javax.ejb.EJB; 13 | import javax.ws.rs.GET; 14 | import javax.ws.rs.Path; 15 | import javax.ws.rs.Produces; 16 | import javax.ws.rs.core.MediaType; 17 | 18 | @Path("/GetServerInformation") 19 | public class GetServerInformation { 20 | 21 | @EJB 22 | private GetServerInformationBO bo; 23 | 24 | @GET 25 | @Produces(MediaType.APPLICATION_JSON) 26 | public ServerInformationVO getServerInformation() { 27 | return bo.getServerInformation(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/GetSocialNetworkInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.jaxb.http.SocialNetworkInfo; 11 | 12 | import javax.ws.rs.GET; 13 | import javax.ws.rs.Path; 14 | import javax.ws.rs.Produces; 15 | import javax.ws.rs.core.MediaType; 16 | 17 | @Path("/getsocialnetworkinfo") 18 | public class GetSocialNetworkInfo { 19 | 20 | @GET 21 | @Secured 22 | @Produces(MediaType.APPLICATION_XML) 23 | public SocialNetworkInfo getSocialNetworkInfo() { 24 | SocialNetworkInfo socialNetworkInfo = new SocialNetworkInfo(); 25 | socialNetworkInfo.setFacebookName("test"); 26 | return socialNetworkInfo; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/Gifts.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.jaxb.http.ArrayOfLevelGiftDefinition; 11 | 12 | import javax.ws.rs.POST; 13 | import javax.ws.rs.Path; 14 | import javax.ws.rs.Produces; 15 | import javax.ws.rs.core.MediaType; 16 | 17 | @Path("/Gifts") 18 | public class Gifts { 19 | @POST 20 | @Secured 21 | @Path("/GetAndTriggerAvailableLevelGifts") 22 | @Produces(MediaType.APPLICATION_XML) 23 | public ArrayOfLevelGiftDefinition getAndTriggerAvailableLevelGifts() { 24 | return new ArrayOfLevelGiftDefinition(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/HeartBeat.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | 11 | import javax.ws.rs.HeaderParam; 12 | import javax.ws.rs.POST; 13 | import javax.ws.rs.Path; 14 | import javax.ws.rs.Produces; 15 | import javax.ws.rs.core.MediaType; 16 | 17 | @Path("/heartbeat") 18 | public class HeartBeat { 19 | 20 | @POST 21 | @Secured 22 | @Produces(MediaType.APPLICATION_XML) 23 | public com.soapboxrace.jaxb.http.HeartBeat getPermanentSession(@HeaderParam("userId") Long userId) { 24 | com.soapboxrace.jaxb.http.HeartBeat heartBeat = new com.soapboxrace.jaxb.http.HeartBeat(); 25 | heartBeat.setEnabledBitField(0); 26 | heartBeat.setMetagameFlags(2); 27 | return heartBeat; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/Logging.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | 11 | import javax.ws.rs.GET; 12 | import javax.ws.rs.Path; 13 | import javax.ws.rs.Produces; 14 | import javax.ws.rs.core.MediaType; 15 | 16 | @Path("/logging") 17 | public class Logging { 18 | 19 | @GET 20 | @Secured 21 | @Path("/client") 22 | @Produces(MediaType.APPLICATION_XML) 23 | public String client() { 24 | return ""; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/LoginAnnouncements.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.core.bo.LoginAnnouncementBO; 11 | import com.soapboxrace.jaxb.http.LoginAnnouncementsDefinition; 12 | 13 | import javax.ejb.EJB; 14 | import javax.ws.rs.GET; 15 | import javax.ws.rs.Path; 16 | import javax.ws.rs.Produces; 17 | import javax.ws.rs.QueryParam; 18 | import javax.ws.rs.core.MediaType; 19 | 20 | @Path("/LoginAnnouncements") 21 | public class LoginAnnouncements { 22 | 23 | @EJB 24 | private LoginAnnouncementBO bo; 25 | 26 | @GET 27 | @Secured 28 | @Produces(MediaType.APPLICATION_XML) 29 | public LoginAnnouncementsDefinition loginAnnouncements(@QueryParam("language") String language) { 30 | return bo.getLoginAnnouncements(language); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/Modding.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.bo.ModdingBO; 10 | import com.soapboxrace.core.vo.ModInfoVO; 11 | 12 | import javax.ejb.EJB; 13 | import javax.ws.rs.GET; 14 | import javax.ws.rs.Path; 15 | import javax.ws.rs.Produces; 16 | import javax.ws.rs.core.MediaType; 17 | import javax.ws.rs.core.Response; 18 | 19 | @Path("/Modding") 20 | public class Modding { 21 | 22 | @EJB 23 | private ModdingBO moddingBO; 24 | 25 | @GET 26 | @Path("GetModInfo") 27 | @Produces(MediaType.APPLICATION_JSON) 28 | public Response getModInfo() { 29 | ModInfoVO modInfoVO = moddingBO.getModInfo(); 30 | 31 | if (modInfoVO == null) { 32 | return Response.status(404).build(); 33 | } 34 | 35 | return Response.ok().entity(modInfoVO).build(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/NewsArticles.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.core.bo.NewsArticleBO; 11 | import com.soapboxrace.core.bo.RequestSessionInfo; 12 | import com.soapboxrace.jaxb.http.ArrayOfNewsArticleTrans; 13 | 14 | import javax.ejb.EJB; 15 | import javax.inject.Inject; 16 | import javax.ws.rs.GET; 17 | import javax.ws.rs.Path; 18 | import javax.ws.rs.Produces; 19 | import javax.ws.rs.core.MediaType; 20 | 21 | @Path("/NewsArticles") 22 | public class NewsArticles { 23 | 24 | @EJB 25 | private NewsArticleBO newsArticleBO; 26 | 27 | @Inject 28 | private RequestSessionInfo requestSessionInfo; 29 | 30 | @GET 31 | @Secured 32 | @Produces(MediaType.APPLICATION_XML) 33 | public ArrayOfNewsArticleTrans newsArticles() { 34 | return newsArticleBO.getNewsArticles(requestSessionInfo.getActivePersonaId()); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/RemoveFriend.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api; 8 | 9 | import com.soapboxrace.core.api.util.Secured; 10 | import com.soapboxrace.core.bo.RequestSessionInfo; 11 | import com.soapboxrace.core.bo.SocialRelationshipBO; 12 | 13 | import javax.ejb.EJB; 14 | import javax.inject.Inject; 15 | import javax.ws.rs.GET; 16 | import javax.ws.rs.Path; 17 | import javax.ws.rs.QueryParam; 18 | import javax.ws.rs.core.Response; 19 | 20 | @Path("/removefriend") 21 | public class RemoveFriend { 22 | 23 | @EJB 24 | private SocialRelationshipBO socialRelationshipBO; 25 | 26 | @Inject 27 | private RequestSessionInfo requestSessionInfo; 28 | 29 | @GET 30 | @Secured 31 | public Response removefriend(@QueryParam("friendPersonaId") Long friendPersonaId) { 32 | return Response.ok().entity(socialRelationshipBO.removeFriend(requestSessionInfo.getActivePersonaId(), 33 | friendPersonaId)).build(); 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/util/Engine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api.util; 8 | 9 | import javax.ws.rs.ApplicationPath; 10 | import javax.ws.rs.core.Application; 11 | 12 | @ApplicationPath("/Engine.svc") 13 | public class Engine extends Application { 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/util/HttpHeaderFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api.util; 8 | 9 | import javax.ws.rs.container.ContainerRequestContext; 10 | import javax.ws.rs.container.ContainerResponseContext; 11 | import javax.ws.rs.container.ContainerResponseFilter; 12 | import javax.ws.rs.ext.Provider; 13 | 14 | @Provider 15 | public class HttpHeaderFilter implements ContainerResponseFilter { 16 | 17 | @Override 18 | public void filter(ContainerRequestContext request, ContainerResponseContext response) { 19 | response.getHeaders().add("Connection", "close"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/util/LauncherChecks.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api.util; 8 | 9 | import javax.ws.rs.NameBinding; 10 | import java.lang.annotation.ElementType; 11 | import java.lang.annotation.Retention; 12 | import java.lang.annotation.RetentionPolicy; 13 | import java.lang.annotation.Target; 14 | 15 | @NameBinding 16 | @Retention(value = RetentionPolicy.RUNTIME) 17 | @Target({ElementType.TYPE, ElementType.METHOD}) 18 | public @interface LauncherChecks { 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/util/Secured.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api.util; 8 | 9 | import javax.ws.rs.NameBinding; 10 | import java.lang.annotation.ElementType; 11 | import java.lang.annotation.Retention; 12 | import java.lang.annotation.RetentionPolicy; 13 | import java.lang.annotation.Target; 14 | 15 | @NameBinding 16 | @Retention(value = RetentionPolicy.RUNTIME) 17 | @Target({ElementType.TYPE, ElementType.METHOD}) 18 | public @interface Secured { 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/api/util/UUIDGen.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.api.util; 8 | 9 | import java.nio.ByteBuffer; 10 | import java.util.UUID; 11 | 12 | public class UUIDGen { 13 | public static byte[] getRandomUUIDBytes() { 14 | UUID uuid = UUID.randomUUID(); 15 | ByteBuffer bb = ByteBuffer.wrap(new byte[16]); 16 | bb.putLong(uuid.getMostSignificantBits()); 17 | bb.putLong(uuid.getLeastSignificantBits()); 18 | return bb.array(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/AuthenticationBO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo; 8 | 9 | import com.soapboxrace.core.dao.BanDAO; 10 | import com.soapboxrace.core.jpa.BanEntity; 11 | import com.soapboxrace.core.jpa.UserEntity; 12 | 13 | import javax.ejb.EJB; 14 | import javax.ejb.Stateless; 15 | 16 | @Stateless 17 | public class AuthenticationBO { 18 | @EJB 19 | private BanDAO banDAO; 20 | 21 | public BanEntity checkUserBan(UserEntity userEntity) { 22 | return banDAO.findByUser(userEntity); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/ErrorReportingBO.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.bo; 2 | 3 | import io.sentry.SentryClient; 4 | import io.sentry.SentryClientFactory; 5 | import org.slf4j.Logger; 6 | 7 | import javax.annotation.PostConstruct; 8 | import javax.ejb.*; 9 | import javax.inject.Inject; 10 | 11 | @Startup 12 | @Singleton 13 | public class ErrorReportingBO { 14 | 15 | @EJB 16 | private ParameterBO parameterBO; 17 | 18 | @Inject 19 | private Logger logger; 20 | 21 | private SentryClient sentryClient; 22 | 23 | @PostConstruct 24 | public void init() { 25 | if (parameterBO.getBoolParam("ENABLE_SENTRY_REPORTING")) { 26 | this.sentryClient = SentryClientFactory.sentryClient(parameterBO.getStrParam("SENTRY_DSN")); 27 | this.logger.info("Initialized error reporting system with Sentry support"); 28 | } 29 | } 30 | 31 | @Asynchronous 32 | @Lock(LockType.READ) 33 | public void sendException(Exception exception) { 34 | if (this.sentryClient != null) { 35 | this.sentryClient.sendException(exception); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/ModdingBO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo; 8 | 9 | import com.soapboxrace.core.vo.ModInfoVO; 10 | 11 | import javax.ejb.EJB; 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class ModdingBO { 16 | 17 | @EJB 18 | private ParameterBO parameterBO; 19 | 20 | public ModInfoVO getModInfo() { 21 | if (!parameterBO.getBoolParam("MODDING_ENABLED")) { 22 | return null; 23 | } 24 | 25 | ModInfoVO modInfoVO = new ModInfoVO(); 26 | modInfoVO.setServerID(parameterBO.getStrParam("MODDING_SERVER_ID")); 27 | modInfoVO.setBasePath(parameterBO.getStrParam("MODDING_BASE_PATH")); 28 | modInfoVO.setFeatures(parameterBO.getStrListParam("MODDING_FEATURES")); 29 | 30 | return modInfoVO; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/PowerupTrackingBO.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.bo; 2 | 3 | import com.soapboxrace.core.dao.EventSessionDAO; 4 | import com.soapboxrace.core.dao.PersonaDAO; 5 | import com.soapboxrace.core.dao.UsedPowerupDAO; 6 | import com.soapboxrace.core.jpa.UsedPowerupEntity; 7 | 8 | import javax.ejb.EJB; 9 | import javax.ejb.Stateless; 10 | 11 | @Stateless 12 | public class PowerupTrackingBO { 13 | 14 | @EJB 15 | private UsedPowerupDAO usedPowerupDAO; 16 | 17 | @EJB 18 | private EventSessionDAO eventSessionDAO; 19 | 20 | @EJB 21 | private PersonaDAO personaDAO; 22 | 23 | public void createPowerupRecord(Long eventSessionId, Long activePersonaId, Integer powerupHash) { 24 | UsedPowerupEntity usedPowerupEntity = new UsedPowerupEntity(); 25 | usedPowerupEntity.setPersonaEntity(personaDAO.find(activePersonaId)); 26 | usedPowerupEntity.setPowerupHash(powerupHash); 27 | 28 | if (eventSessionId != null) { 29 | usedPowerupEntity.setEventSessionEntity(eventSessionDAO.find(eventSessionId)); 30 | } 31 | 32 | usedPowerupDAO.insert(usedPowerupEntity); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/SceneryUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo; 8 | 9 | import java.util.HashMap; 10 | import java.util.Map; 11 | 12 | public class SceneryUtil { 13 | private static final Map sceneryIds = new HashMap<>(); 14 | 15 | static { 16 | sceneryIds.put("SCENERY_GROUP_NORMAL", 0L); 17 | sceneryIds.put("SCENERY_GROUP_OKTOBERFEST", 1L); 18 | sceneryIds.put("SCENERY_GROUP_HALLOWEEN", 2L); 19 | sceneryIds.put("SCENERY_GROUP_CHRISTMAS", 3L); 20 | sceneryIds.put("SCENERY_GROUP_NEWYEARS", 5L); 21 | } 22 | 23 | public static long getSceneryId(String scenery) { 24 | return sceneryIds.getOrDefault(scenery, 0L); 25 | } 26 | 27 | public static boolean isValid(String scenery) { 28 | return sceneryIds.containsKey(scenery); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/StartupBO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo; 8 | 9 | import com.soapboxrace.core.api.util.BuildInfo; 10 | import org.slf4j.Logger; 11 | 12 | import javax.annotation.PostConstruct; 13 | import javax.ejb.EJB; 14 | import javax.ejb.Singleton; 15 | import javax.ejb.Startup; 16 | import javax.inject.Inject; 17 | 18 | @Singleton 19 | @Startup 20 | public class StartupBO { 21 | 22 | @EJB 23 | private OnlineUsersBO onlineUsersBO; 24 | 25 | @Inject 26 | private Logger logger; 27 | 28 | @PostConstruct 29 | public void init() { 30 | logger.info("StartupBO: Server running on code version {} ({}) - branch {}", BuildInfo.getCommitID(), BuildInfo.getLongCommitID(), BuildInfo.getBranch()); 31 | onlineUsersBO.insertOnlineStats(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/AchievementInventoryContext.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.bo.util; 2 | 3 | import com.soapboxrace.core.jpa.InventoryItemEntity; 4 | 5 | public class AchievementInventoryContext { 6 | private final InventoryItemEntity inventoryItemEntity; 7 | private final Event event; 8 | private final Integer eventVal; 9 | 10 | public AchievementInventoryContext(InventoryItemEntity inventoryItemEntity, Event event) { 11 | this.inventoryItemEntity = inventoryItemEntity; 12 | this.event = event; 13 | this.eventVal = event.ordinal(); 14 | } 15 | 16 | public InventoryItemEntity getInventoryItemEntity() { 17 | return inventoryItemEntity; 18 | } 19 | 20 | public Event getEvent() { 21 | return event; 22 | } 23 | 24 | public Integer getEventVal() { 25 | return eventVal; 26 | } 27 | 28 | public enum Event { 29 | ADDED, 30 | QUANTITY_DECREASED, 31 | QUANTITY_INCREASED, 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/ItemRewardBase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo.util; 8 | 9 | import com.soapboxrace.core.jpa.ProductEntity; 10 | 11 | import java.util.List; 12 | 13 | public abstract class ItemRewardBase { 14 | public abstract List getProducts(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/ItemRewardCash.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo.util; 8 | 9 | import com.soapboxrace.core.jpa.ProductEntity; 10 | 11 | import java.util.List; 12 | 13 | public class ItemRewardCash extends ItemRewardBase { 14 | private final int cash; 15 | 16 | public ItemRewardCash(int cash) { 17 | this.cash = cash; 18 | } 19 | 20 | public int getCash() { 21 | return cash; 22 | } 23 | 24 | @Override 25 | public List getProducts() { 26 | throw new UnsupportedOperationException(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/ItemRewardMulti.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo.util; 8 | 9 | import com.soapboxrace.core.jpa.ProductEntity; 10 | 11 | import java.util.List; 12 | import java.util.stream.Collectors; 13 | 14 | public class ItemRewardMulti extends ItemRewardBase { 15 | private final List achievementRewardList; 16 | 17 | public ItemRewardMulti(List achievementRewardList) { 18 | this.achievementRewardList = achievementRewardList; 19 | } 20 | 21 | public List getAchievementRewardList() { 22 | return achievementRewardList; 23 | } 24 | 25 | @Override 26 | public List getProducts() { 27 | return achievementRewardList.stream().flatMap(a -> a.getProducts().stream()).collect(Collectors.toList()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/ItemRewardProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo.util; 8 | 9 | import com.soapboxrace.core.jpa.ProductEntity; 10 | 11 | import java.util.Collections; 12 | import java.util.List; 13 | 14 | public class ItemRewardProduct extends ItemRewardBase { 15 | protected final ProductEntity productEntity; 16 | 17 | public ItemRewardProduct(ProductEntity productEntity) { 18 | this.productEntity = productEntity; 19 | } 20 | 21 | @Override 22 | public List getProducts() { 23 | return Collections.singletonList(productEntity); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/ItemRewardQuantityProduct.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.bo.util; 8 | 9 | import com.soapboxrace.core.jpa.ProductEntity; 10 | 11 | public class ItemRewardQuantityProduct extends ItemRewardProduct { 12 | private final Integer useCount; 13 | 14 | public ItemRewardQuantityProduct(ProductEntity productEntity) { 15 | super(productEntity); 16 | this.useCount = -1; 17 | } 18 | 19 | public ItemRewardQuantityProduct(ProductEntity productEntity, Integer useCount) { 20 | super(productEntity); 21 | this.useCount = useCount; 22 | } 23 | 24 | public Integer getUseCount() { 25 | return useCount; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/bo/util/LoggerProducer.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.bo.util; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import javax.enterprise.inject.Produces; 7 | import javax.enterprise.inject.spi.InjectionPoint; 8 | import javax.inject.Named; 9 | import javax.inject.Singleton; 10 | 11 | @Named 12 | @Singleton 13 | public class LoggerProducer { 14 | 15 | @Produces 16 | public Logger produceLogger(InjectionPoint injectionPoint) { 17 | return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass()); 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/AchievementRankDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.AchievementRankEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class AchievementRankDAO extends LongKeyedDAO { 16 | 17 | public AchievementRankDAO() { 18 | super(AchievementRankEntity.class); 19 | } 20 | 21 | public void updateRankRarity(Long rankId, float rarity) { 22 | this.entityManager.createNamedQuery("AchievementRankEntity.updateRarity") 23 | .setParameter("id", rankId) 24 | .setParameter("rarity", rarity) 25 | .executeUpdate(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/AchievementRewardDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.AchievementRewardEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class AchievementRewardDAO extends LongKeyedDAO { 16 | 17 | public AchievementRewardDAO() { 18 | super(AchievementRewardEntity.class); 19 | } 20 | 21 | public AchievementRewardEntity findByDescription(String description) { 22 | return this.entityManager.createNamedQuery("AchievementRewardEntity.findByDescription", 23 | AchievementRewardEntity.class) 24 | .setParameter("description", description) 25 | .getSingleResult(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/BadgeDefinitionDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.BadgeDefinitionEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class BadgeDefinitionDAO extends LongKeyedDAO { 18 | 19 | public BadgeDefinitionDAO() { 20 | super(BadgeDefinitionEntity.class); 21 | } 22 | 23 | public List findAll() { 24 | TypedQuery query = this.entityManager.createNamedQuery("BadgeDefinitionEntity.findAll" 25 | , BadgeDefinitionEntity.class); 26 | return query.getResultList(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/BasketDefinitionDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.StringKeyedDAO; 10 | import com.soapboxrace.core.jpa.BasketDefinitionEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class BasketDefinitionDAO extends StringKeyedDAO { 16 | 17 | public BasketDefinitionDAO() { 18 | super(BasketDefinitionEntity.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/CarClassesDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.StringKeyedDAO; 10 | import com.soapboxrace.core.jpa.CarClassesEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | 15 | @Stateless 16 | public class CarClassesDAO extends StringKeyedDAO { 17 | 18 | public CarClassesDAO() { 19 | super(CarClassesEntity.class); 20 | } 21 | 22 | public CarClassesEntity findByHash(int hash) { 23 | TypedQuery query = entityManager.createQuery("SELECT obj FROM CarClassesEntity obj WHERE " + 24 | "obj.hash = :hash", CarClassesEntity.class); 25 | query.setParameter("hash", hash); 26 | try { 27 | return query.getSingleResult(); 28 | } catch (Exception e) { 29 | // TODO: handle exception 30 | } 31 | return null; 32 | } 33 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/CardPackDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.CardPackEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class CardPackDAO extends LongKeyedDAO { 16 | 17 | public CardPackDAO() { 18 | super(CardPackEntity.class); 19 | } 20 | 21 | public CardPackEntity findByEntitlementTag(String entitlementTag) { 22 | return this.entityManager.createNamedQuery("CardPackEntity.findByEntitlementTag", CardPackEntity.class) 23 | .setParameter("entitlementTag", entitlementTag) 24 | .getSingleResult(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/CategoryDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.CategoryEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class CategoryDAO extends LongKeyedDAO { 18 | 19 | public CategoryDAO() { 20 | super(CategoryEntity.class); 21 | } 22 | 23 | public List getAll() { 24 | TypedQuery query = entityManager.createNamedQuery("CategoryEntity.getAll", 25 | CategoryEntity.class); 26 | return query.getResultList(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/ChatRoomDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.ChatRoomEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class ChatRoomDAO extends LongKeyedDAO { 18 | 19 | public ChatRoomDAO() { 20 | super(ChatRoomEntity.class); 21 | } 22 | 23 | public List findAll() { 24 | TypedQuery query = entityManager.createNamedQuery("ChatRoomEntity.findAll", 25 | ChatRoomEntity.class); 26 | return query.getResultList(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/EventSessionDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.EventSessionEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class EventSessionDAO extends LongKeyedDAO { 16 | 17 | public EventSessionDAO() { 18 | super(EventSessionEntity.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/LevelRepDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.LevelRepEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class LevelRepDAO extends LongKeyedDAO { 18 | 19 | public LevelRepDAO() { 20 | super(LevelRepEntity.class); 21 | } 22 | 23 | @Deprecated 24 | public LevelRepEntity findByLevel(Long level) { 25 | return find(level); 26 | } 27 | 28 | public List findAll() { 29 | TypedQuery query = entityManager.createNamedQuery("LevelRepEntity.findAll", 30 | LevelRepEntity.class); 31 | return query.getResultList(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/NewsArticleDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.NewsArticleEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class NewsArticleDAO extends LongKeyedDAO { 18 | 19 | public NewsArticleDAO() { 20 | super(NewsArticleEntity.class); 21 | } 22 | 23 | public List findAllByPersona(Long personaId) { 24 | TypedQuery query = entityManager.createNamedQuery("NewsArticleEntity.findAllByPersona", 25 | NewsArticleEntity.class); 26 | 27 | query.setParameter("id", personaId); 28 | 29 | return query.getResultList(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/ParameterDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.StringKeyedDAO; 10 | import com.soapboxrace.core.jpa.ParameterEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import java.util.List; 14 | 15 | @Stateless 16 | public class ParameterDAO extends StringKeyedDAO { 17 | 18 | public ParameterDAO() { 19 | super(ParameterEntity.class); 20 | } 21 | 22 | public List findAll() { 23 | return entityManager.createNamedQuery("ParameterEntity.findAll", ParameterEntity.class).getResultList(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/ReportDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.ReportEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class ReportDAO extends LongKeyedDAO { 16 | 17 | public ReportDAO() { 18 | super(ReportEntity.class); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/RewardTableDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.RewardTableEntity; 11 | 12 | import javax.ejb.Stateless; 13 | 14 | @Stateless 15 | public class RewardTableDAO extends LongKeyedDAO { 16 | 17 | public RewardTableDAO() { 18 | super(RewardTableEntity.class); 19 | } 20 | 21 | public RewardTableEntity findByName(String name) { 22 | return this.entityManager.createNamedQuery("RewardTableEntity.findByName", RewardTableEntity.class) 23 | .setParameter("name", name) 24 | .getSingleResult(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/TreasureHuntDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.PersonaEntity; 11 | import com.soapboxrace.core.jpa.TreasureHuntEntity; 12 | 13 | import javax.ejb.Stateless; 14 | import javax.persistence.Query; 15 | 16 | @Stateless 17 | public class TreasureHuntDAO extends LongKeyedDAO { 18 | 19 | public TreasureHuntDAO() { 20 | super(TreasureHuntEntity.class); 21 | } 22 | 23 | public void deleteByPersona(PersonaEntity personaEntity) { 24 | Query query = entityManager.createNamedQuery("TreasureHuntEntity.deleteByPersona"); 25 | query.setParameter("personaId", personaEntity.getPersonaId()); 26 | query.executeUpdate(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/UsedPowerupDAO.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.dao; 2 | 3 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 4 | import com.soapboxrace.core.jpa.UsedPowerupEntity; 5 | 6 | import javax.ejb.Stateless; 7 | 8 | @Stateless 9 | public class UsedPowerupDAO extends LongKeyedDAO { 10 | 11 | public UsedPowerupDAO() { 12 | super(UsedPowerupEntity.class); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/UserDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao; 8 | 9 | import com.soapboxrace.core.dao.util.LongKeyedDAO; 10 | import com.soapboxrace.core.jpa.UserEntity; 11 | 12 | import javax.ejb.Stateless; 13 | import javax.persistence.TypedQuery; 14 | import java.util.List; 15 | 16 | @Stateless 17 | public class UserDAO extends LongKeyedDAO { 18 | 19 | public UserDAO() { 20 | super(UserEntity.class); 21 | } 22 | 23 | public UserEntity findByEmail(String email) { 24 | TypedQuery query = entityManager.createNamedQuery("UserEntity.findByEmail", UserEntity.class); 25 | query.setParameter("email", email); 26 | 27 | List resultList = query.getResultList(); 28 | return !resultList.isEmpty() ? resultList.get(0) : null; 29 | } 30 | 31 | public Long countUsers() { 32 | return entityManager.createNamedQuery("UserEntity.countUsers", Long.class).getSingleResult(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/util/BaseDAO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.dao.util; 8 | 9 | import javax.persistence.EntityManager; 10 | import javax.persistence.PersistenceContext; 11 | 12 | public abstract class BaseDAO { 13 | 14 | protected EntityManager entityManager; 15 | 16 | @PersistenceContext 17 | protected void setEntityManager(EntityManager entityManager) { 18 | this.entityManager = entityManager; 19 | } 20 | 21 | public abstract TE find(TK key); 22 | 23 | public void insert(TE entity) { 24 | entityManager.persist(entity); 25 | } 26 | 27 | public void update(TE entity) { 28 | entityManager.merge(entity); 29 | } 30 | 31 | public void delete(TE entity) { 32 | entityManager.remove(entityManager.merge(entity)); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/util/LongKeyedDAO.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.dao.util; 2 | 3 | /** 4 | * Base class for DAOs that deal with entities with {@link Long} keys. 5 | * 6 | * @param The entity type 7 | */ 8 | public abstract class LongKeyedDAO extends BaseDAO { 9 | private final Class entityClass; 10 | 11 | protected LongKeyedDAO(Class entityClass) { 12 | this.entityClass = entityClass; 13 | } 14 | 15 | @Override 16 | public TE find(Long key) { 17 | return entityManager.find(entityClass, key); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/dao/util/StringKeyedDAO.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.dao.util; 2 | 3 | /** 4 | * Base class for DAOs that deal with entities with {@link String} keys. 5 | * 6 | * @param The entity type 7 | */ 8 | public abstract class StringKeyedDAO extends BaseDAO { 9 | private final Class entityClass; 10 | 11 | protected StringKeyedDAO(Class entityClass) { 12 | this.entityClass = entityClass; 13 | } 14 | 15 | @Override 16 | public TE find(String key) { 17 | return entityManager.find(entityClass, key); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/events/PersonaPresenceUpdated.java: -------------------------------------------------------------------------------- 1 | package com.soapboxrace.core.events; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PersonaPresenceUpdated { 7 | private final Long personaId; 8 | 9 | private final Long presence; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/BasketDefinitionEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa; 8 | 9 | import javax.persistence.*; 10 | 11 | @Entity 12 | @Table(name = "BASKETDEFINITION") 13 | public class BasketDefinitionEntity { 14 | 15 | @Id 16 | private String productId; 17 | 18 | @Lob 19 | @Column(length = 65535) 20 | private String ownedCarTrans; 21 | 22 | public String getProductId() { 23 | return productId; 24 | } 25 | 26 | public void setProductId(String productId) { 27 | this.productId = productId; 28 | } 29 | 30 | public String getOwnedCarTrans() { 31 | return ownedCarTrans; 32 | } 33 | 34 | public void setOwnedCarTrans(String ownedCarTrans) { 35 | this.ownedCarTrans = ownedCarTrans; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/EventMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa; 8 | 9 | import com.soapboxrace.core.engine.EngineException; 10 | import com.soapboxrace.core.engine.EngineExceptionCode; 11 | 12 | public enum EventMode { 13 | 14 | SPRINT(9), CIRCUIT(4), DRAG(19), PURSUIT_SP(12), PURSUIT_MP(24), MEETINGPLACE(22); 15 | private final int eventModeId; 16 | 17 | EventMode(int eventModeId) { 18 | this.eventModeId = eventModeId; 19 | } 20 | 21 | public static EventMode fromId(int id) { 22 | for (EventMode type : EventMode.values()) { 23 | if (type.getEventModeId() == id) { 24 | return type; 25 | } 26 | } 27 | throw new EngineException("Invalid eventModeId: " + id, EngineExceptionCode.UnspecifiedError, true); 28 | } 29 | 30 | public int getEventModeId() { 31 | return eventModeId; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/LevelRepEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa; 8 | 9 | import javax.persistence.*; 10 | 11 | @Entity 12 | @Table(name = "LEVEL_REP") 13 | @NamedQueries({ 14 | @NamedQuery(name = "LevelRepEntity.findAll", query = "SELECT obj FROM LevelRepEntity obj"), 15 | @NamedQuery(name = "LevelRepEntity.findMaxLevel", query = "SELECT MAX(obj.level) FROM LevelRepEntity obj"), // 16 | }) 17 | public class LevelRepEntity { 18 | @Id 19 | @GeneratedValue(strategy = GenerationType.IDENTITY) 20 | private Long level; 21 | private Long expPoint; 22 | 23 | public Long getLevel() { 24 | return level; 25 | } 26 | 27 | public void setLevel(Long level) { 28 | this.level = level; 29 | } 30 | 31 | public Long getExpPoint() { 32 | return expPoint; 33 | } 34 | 35 | public void setExpPoint(Long expPoint) { 36 | this.expPoint = expPoint; 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/ParameterEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa; 8 | 9 | import javax.persistence.*; 10 | 11 | @Entity 12 | @Table(name = "PARAMETER") 13 | @NamedQueries({ 14 | @NamedQuery(name = "ParameterEntity.findAll", query = "SELECT obj FROM ParameterEntity obj") 15 | }) 16 | public class ParameterEntity { 17 | 18 | @Id 19 | @Column(nullable = false) 20 | private String name; 21 | 22 | private String value; 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public void setName(String name) { 29 | this.name = name; 30 | } 31 | 32 | public String getValue() { 33 | return value; 34 | } 35 | 36 | public void setValue(String value) { 37 | this.value = value; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/SkillModRewardType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa; 8 | 9 | public enum SkillModRewardType { 10 | EXPLORER, SOCIALITE, BOUNTY_HUNTER; 11 | 12 | @Override 13 | public String toString() { 14 | return super.toString().replace("_", " "); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/convert/NewsArticleFilterConverter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa.convert; 8 | 9 | import com.soapboxrace.core.jpa.util.NewsArticleFilters; 10 | 11 | import javax.persistence.AttributeConverter; 12 | import javax.persistence.Converter; 13 | 14 | @Converter 15 | public class NewsArticleFilterConverter implements AttributeConverter { 16 | @Override 17 | public String convertToDatabaseColumn(NewsArticleFilters attribute) { 18 | return attribute.name(); 19 | } 20 | 21 | @Override 22 | public NewsArticleFilters convertToEntityAttribute(String dbData) { 23 | return NewsArticleFilters.valueOf(dbData); 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/convert/NewsArticleTypeConverter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa.convert; 8 | 9 | import com.soapboxrace.core.jpa.util.NewsArticleType; 10 | 11 | import javax.persistence.AttributeConverter; 12 | import javax.persistence.Converter; 13 | 14 | @Converter 15 | public class NewsArticleTypeConverter implements AttributeConverter { 16 | @Override 17 | public String convertToDatabaseColumn(NewsArticleType attribute) { 18 | return attribute.name(); 19 | } 20 | 21 | @Override 22 | public NewsArticleType convertToEntityAttribute(String dbData) { 23 | return NewsArticleType.valueOf(dbData); 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/jpa/util/NewsArticleFilters.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.jpa.util; 8 | 9 | public enum NewsArticleFilters { 10 | None(0), 11 | Me(1), 12 | Friends(2), 13 | System(4), 14 | Item_Count(6), 15 | Crew(8), 16 | All(2147483647); 17 | 18 | private final int filterMask; 19 | 20 | NewsArticleFilters(int filterMask) { 21 | this.filterMask = filterMask; 22 | } 23 | 24 | public int getFilterMask() { 25 | return filterMask; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/vo/ModInfoVO.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.vo; 8 | 9 | import java.util.List; 10 | 11 | public class ModInfoVO { 12 | 13 | private String basePath; 14 | 15 | private String serverID; 16 | 17 | private List features; 18 | 19 | public String getBasePath() { 20 | return basePath; 21 | } 22 | 23 | public void setBasePath(String basePath) { 24 | this.basePath = basePath; 25 | } 26 | 27 | public String getServerID() { 28 | return serverID; 29 | } 30 | 31 | public void setServerID(String serverID) { 32 | this.serverID = serverID; 33 | } 34 | 35 | public List getFeatures() { 36 | return features; 37 | } 38 | 39 | public void setFeatures(List features) { 40 | this.features = features; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/xmpp/OccupantEntities.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.xmpp; 8 | 9 | import javax.xml.bind.annotation.XmlElement; 10 | import javax.xml.bind.annotation.XmlRootElement; 11 | import java.util.List; 12 | 13 | @XmlRootElement(name = "occupants") 14 | public class OccupantEntities { 15 | List occupants; 16 | 17 | public OccupantEntities() { 18 | } 19 | 20 | public OccupantEntities(List occupants) { 21 | this.occupants = occupants; 22 | } 23 | 24 | @XmlElement(name = "occupant") 25 | public List getOccupants() { 26 | return occupants; 27 | } 28 | 29 | public void setOccupants(List occupants) { 30 | this.occupants = occupants; 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/xmpp/OpenFireSoapBoxCli.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.xmpp; 8 | 9 | import com.soapboxrace.jaxb.util.JAXBUtility; 10 | 11 | import javax.annotation.PostConstruct; 12 | import javax.ejb.*; 13 | 14 | @Startup 15 | @Singleton 16 | public class OpenFireSoapBoxCli { 17 | 18 | @EJB 19 | private OpenFireConnector openFireConnector; 20 | 21 | @PostConstruct 22 | public void init() { 23 | openFireConnector.connect(); 24 | } 25 | 26 | @Lock(LockType.READ) 27 | public void send(String msg, Long to) { 28 | openFireConnector.send(msg, to); 29 | } 30 | 31 | @Lock(LockType.READ) 32 | public void send(Object object, Long to) { 33 | openFireConnector.send(JAXBUtility.marshal(object), to); 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/xmpp/SessionsCount.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.xmpp; 8 | 9 | import javax.xml.bind.annotation.XmlRootElement; 10 | 11 | @XmlRootElement(name = "sessions") 12 | public class SessionsCount { 13 | 14 | private int clusterSessions; 15 | private int localSessions; 16 | 17 | public int getClusterSessions() { 18 | return clusterSessions; 19 | } 20 | 21 | public void setClusterSessions(int clusterSessions) { 22 | this.clusterSessions = clusterSessions; 23 | } 24 | 25 | public int getLocalSessions() { 26 | return localSessions; 27 | } 28 | 29 | public void setLocalSessions(int localSessions) { 30 | this.localSessions = localSessions; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/core/xmpp/XmppChat.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.core.xmpp; 8 | 9 | public class XmppChat { 10 | public static String createSystemMessage(String message) { 11 | return String.format("\n" + 12 | "\n" + 13 | "\n" + 14 | "System\n" + 15 | "0\n" + 16 | "0\n" + 17 | "%s\n" + 18 | "0\n" + 19 | "2\n" + 20 | "\n" + 21 | "\n" + 22 | "", message); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/http/BadgeBundle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.http; 8 | 9 | import javax.xml.bind.annotation.*; 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | @XmlRootElement(name = "BadgeBundle") 14 | @XmlAccessorType(XmlAccessType.FIELD) 15 | public class BadgeBundle { 16 | @XmlElementWrapper(name = "Badges") 17 | @XmlElement(name = "BadgeInput") 18 | private List badgeInputs = new ArrayList<>(); 19 | 20 | public List getBadgeInputs() { 21 | return badgeInputs; 22 | } 23 | 24 | public void setBadgeInputs(List badgeInputs) { 25 | this.badgeInputs = badgeInputs; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/http/BadgeInput.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.http; 8 | 9 | import javax.xml.bind.annotation.*; 10 | 11 | @XmlRootElement(name = "BadgeInput") 12 | @XmlAccessorType(XmlAccessType.FIELD) 13 | @XmlType(propOrder = {"badgeDefinitionId", "slotId"}) 14 | public class BadgeInput { 15 | @XmlElement(name = "BadgeDefinitionId") 16 | private int badgeDefinitionId; 17 | 18 | @XmlElement(name = "SlotId") 19 | private short slotId; 20 | 21 | public int getBadgeDefinitionId() { 22 | return badgeDefinitionId; 23 | } 24 | 25 | public void setBadgeDefinitionId(int badgeDefinitionId) { 26 | this.badgeDefinitionId = badgeDefinitionId; 27 | } 28 | 29 | public short getSlotId() { 30 | return slotId; 31 | } 32 | 33 | public void setSlotId(short slotId) { 34 | this.slotId = slotId; 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/http/ClientLog.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.http; 8 | 9 | import javax.xml.bind.annotation.XmlAccessType; 10 | import javax.xml.bind.annotation.XmlAccessorType; 11 | import javax.xml.bind.annotation.XmlElement; 12 | import javax.xml.bind.annotation.XmlType; 13 | 14 | @XmlType(name = "ClientLog", propOrder = { 15 | "date", 16 | "message" 17 | }) 18 | @XmlAccessorType(XmlAccessType.FIELD) 19 | public class ClientLog { 20 | @XmlElement 21 | private String date; 22 | 23 | @XmlElement 24 | private String message; 25 | 26 | public String getMessage() { 27 | return message; 28 | } 29 | 30 | public void setMessage(String message) { 31 | this.message = message; 32 | } 33 | 34 | public String getDate() { 35 | return date; 36 | } 37 | 38 | public void setDate(String date) { 39 | this.date = date; 40 | } 41 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/http/FriendResultStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.http; 8 | 9 | import javax.xml.bind.annotation.XmlEnum; 10 | 11 | @XmlEnum 12 | public enum FriendResultStatus { 13 | Success(0), 14 | CannotAddSelf(1), 15 | AlreadyFriends(2), 16 | CannotFindDriver(3), 17 | OurFriendsListIsFull(4), 18 | TargetFriendsListIsFull(6); 19 | 20 | private final int value; 21 | 22 | FriendResultStatus(int value) { 23 | this.value = value; 24 | } 25 | 26 | public int getValue() { 27 | return value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/util/XMLReaderWithoutNamespace.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.util; 8 | 9 | import javax.xml.stream.XMLStreamReader; 10 | import javax.xml.stream.util.StreamReaderDelegate; 11 | 12 | public class XMLReaderWithoutNamespace extends StreamReaderDelegate { 13 | public XMLReaderWithoutNamespace(XMLStreamReader reader) { 14 | super(reader); 15 | } 16 | 17 | @Override 18 | public String getAttributeNamespace(int arg0) { 19 | return ""; 20 | } 21 | 22 | @Override 23 | public String getNamespaceURI() { 24 | return ""; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/xmpp/XMPP_CryptoTicketsType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.xmpp; 8 | 9 | import javax.xml.bind.annotation.XmlAccessType; 10 | import javax.xml.bind.annotation.XmlAccessorType; 11 | import javax.xml.bind.annotation.XmlElement; 12 | import javax.xml.bind.annotation.XmlType; 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | @XmlAccessorType(XmlAccessType.FIELD) 17 | @XmlType(name = "CryptoTicketsType", propOrder = {"p2PCryptoTicket"}) 18 | public class XMPP_CryptoTicketsType { 19 | 20 | @XmlElement(name = "P2PCryptoTicket") 21 | protected List p2PCryptoTicket; 22 | 23 | public List getP2PCryptoTicket() { 24 | if (p2PCryptoTicket == null) { 25 | p2PCryptoTicket = new ArrayList(); 26 | } 27 | return this.p2PCryptoTicket; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/xmpp/XMPP_EventTimedOutType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.xmpp; 8 | 9 | import javax.xml.bind.annotation.XmlAccessType; 10 | import javax.xml.bind.annotation.XmlAccessorType; 11 | import javax.xml.bind.annotation.XmlElement; 12 | import javax.xml.bind.annotation.XmlType; 13 | 14 | @XmlAccessorType(XmlAccessType.FIELD) 15 | @XmlType(name = "XMPP_EventTimedOutType", propOrder = {"eventSessionId"}) 16 | public class XMPP_EventTimedOutType { 17 | @XmlElement(name = "EventSessionId", required = true) 18 | private Long eventSessionId; 19 | 20 | public Long getEventSessionId() { 21 | return eventSessionId; 22 | } 23 | 24 | public void setEventSessionId(Long eventSessionId) { 25 | this.eventSessionId = eventSessionId; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/soapboxrace/jaxb/xmpp/XMPP_ResponseTypeAchievementsAwarded.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Soapbox Race World core source code. 3 | * If you use any of this code for third-party purposes, please provide attribution. 4 | * Copyright (c) 2020. 5 | */ 6 | 7 | package com.soapboxrace.jaxb.xmpp; 8 | 9 | import javax.xml.bind.annotation.*; 10 | 11 | @XmlAccessorType(XmlAccessType.FIELD) 12 | @XmlType(name = "XMPP_ResponseTypeAchievementsAwarded", propOrder = {"achievementsAwarded"}) 13 | @XmlRootElement(name = "response") 14 | public class XMPP_ResponseTypeAchievementsAwarded { 15 | @XmlAttribute(name = "status") 16 | protected int status = 1; 17 | @XmlAttribute(name = "ticket") 18 | protected int ticket = 0; 19 | @XmlElement(name = "AchievementsAwarded", required = true) 20 | private AchievementsAwarded achievementsAwarded; 21 | 22 | public AchievementsAwarded getAchievementsAwarded() { 23 | return achievementsAwarded; 24 | } 25 | 26 | public void setAchievementsAwarded(AchievementsAwarded achievementsAwarded) { 27 | this.achievementsAwarded = achievementsAwarded; 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | jboss/datasources/SoapBoxDS 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | soapbox-race-core 5 | 6 | /index.jsp 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/webapp/forgotPasswd.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | Email:
7 |
8 | 9 | -------------------------------------------------------------------------------- /src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 |

Soapbox Race World server

2 |

There is nothing to see here.

-------------------------------------------------------------------------------- /src/main/webapp/password.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | New password:
6 | Confirm new password:
7 | " /> 8 | 9 |
10 | 11 | -------------------------------------------------------------------------------- /src/main/webapp/reload-login-announcements.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | ~ This file is part of the Soapbox Race World core source code. 3 | ~ If you use any of this code for third-party purposes, please provide attribution. 4 | ~ Copyright (c) 2020. 5 | --%> 6 | 7 | <%-- 8 | Created by IntelliJ IDEA. 9 | User: coder 10 | Date: 1/20/2020 11 | Time: 11:41 AM 12 | To change this template use File | Settings | File Templates. 13 | --%> 14 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 15 | 16 | 17 | Reload Login Announcements 18 | 19 | 20 |

Note: This action clears the login announcement cache. It does not immediately display new 21 | announcements to players already in-game.

22 |
23 | "/>
26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/reload-parameters.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | ~ This file is part of the Soapbox Race World core source code. 3 | ~ If you use any of this code for third-party purposes, please provide attribution. 4 | ~ Copyright (c) 2020. 5 | --%> 6 | 7 | <%-- 8 | Created by IntelliJ IDEA. 9 | User: coder 10 | Date: 1/20/2020 11 | Time: 11:41 AM 12 | To change this template use File | Settings | File Templates. 13 | --%> 14 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 15 | 16 | 17 | Reload Parameters 18 | 19 | 20 |
21 | "/>
24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /src/main/webapp/send-announcement.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | ~ This file is part of the Soapbox Race World core source code. 3 | ~ If you use any of this code for third-party purposes, please provide attribution. 4 | ~ Copyright (c) 2020. 5 | --%> 6 | 7 | <%-- 8 | Created by IntelliJ IDEA. 9 | User: coder 10 | Date: 1/20/2020 11 | Time: 11:41 AM 12 | To change this template use File | Settings | File Templates. 13 | --%> 14 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 15 | 16 | 17 | Send Chat Announcement 18 | 19 | 20 |
21 | Message: 22 |

23 | "/>
26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/webapp/ticket.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 |
8 | Discord Name:

9 | " />
12 |
13 |
14 |
15 |
16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfBadgePacket.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfBasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfCarClass.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfCategoryTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfChatRoom.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfClientConfig.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfCommerceItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfCustomPaintTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfCustomVinylTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfEntitlementItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfFriendPersona.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfInt.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfInvalidBasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfInventoryItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfLevelGiftDefinition.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfLong.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfNewsArticleTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfOwnedCarTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfPerformancePartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfPersonaBase.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfPersonaCCar.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfProductTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfProfileData.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfSkillModPartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfString.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfUdpRelayInfo.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfVisualPartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ArrayOfWalletTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/BasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/BasketTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/CarClass.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/CarSlotInfoTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd-final/ChatRoom.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/ChatServer.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd-final/ClientConfig.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ClientConfigTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/CommerceItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/CommerceResultStatus.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd-final/CommerceSessionResultTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /xsd-final/CommerceSessionTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd-final/CustomPaintTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd-final/DragArbitrationPacket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd-final/DragEntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd-final/DragEventResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd-final/EntitlementItemTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/EntitlementTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/EntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd-final/EventsPacket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/FraudConfig.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd-final/FriendPersona.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/HeartBeat.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/InvalidBasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/InvalidBasketTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd-final/InventoryItemTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /xsd-final/InventoryTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xsd-final/LevelGiftDefinition.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/LobbyEntrantAdded.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd-final/LobbyEntrantRemoved.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/OwnedCarTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/PerformancePartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /xsd-final/PersonaBase.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /xsd-final/PersonaCCar.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd-final/PersonaFriendsList.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/PersonaIdArray.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/PersonaMotto.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd-final/PersonaPresence.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd-final/PursuitEventResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd-final/RegionInfo.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/RouteEntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/RouteEventResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd-final/SessionInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd-final/SkillModPartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/SocialNetworkInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/SocialSettings.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/TeamEscapeEntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd-final/TeamEscapeEventResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd-final/TreasureHuntEventSession.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd-final/UdpRelayCryptoTicket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd-final/UdpRelayInfo.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/UserInfo.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd-final/VisualPartTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/WalletTrans.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd-final/ZExample.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /xsd-final/xjc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export LANG="en_US.UTF-8" 3 | export LANGUAGE="en_US:" 4 | xjc -p com.soapboxrace.jaxb.http -npa -no-header \ 5 | Main.xsd 6 | 7 | cp -r com ../src/main/java 8 | rm -rf com 9 | -------------------------------------------------------------------------------- /xsd/Victory.Data.Objects.Customization.SkillModEffectAmountConversion.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.BasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.BasketTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.ClientConfig.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.ClientConfigTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.ClientLog.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.ClientServerCryptoTicket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.CommerceItemTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.CommerceResultStatus.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Credentials.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.CustomPaintTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.EntitlementItemTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.EntitlementTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.DragEntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.EntrantResult.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.EventTimedOut.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.EventTimingOut.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.ExitPath.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.LuckyDrawBox.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.LuckyDrawItem.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.Reward.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.TreasureHuntEventSession.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Event.enumRewardCategory.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.FraudConfig.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.GetPermanentSessionData.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Gift.LevelGiftDefinition.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.HeartBeat.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.InvalidBasketItemTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.LauncherEndTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.LauncherStartTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.LoginAnnouncement.LoginAnnouncementsModifiedMsg.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.MachineIdentification.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.MetagameFlags.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.PerformancePartTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.PowerUp.PowerupActivated.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.RegionInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.SkillModPartTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.BasicBlockPlayerInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.BlockPlayerMsg.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.RemoveFriendMsg.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.SocialNetworkInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.SocialSettings.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.UnblockPlayerMsg.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.UserPersonaMap.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Social.UserPersonaMapList.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Token.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.UdpRelayCryptoTicket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.UdpRelayInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.UserSettings.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.Vector3.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.VisualPartTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.WalletTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.DataLayer.Serialization.enumPowerUpType.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /xsd/Victory.DataObjects.Objects.LoginAnnouncement.LoginAnnouncementContext.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.DataObjects.Objects.LoginAnnouncement.LoginAnnouncementType.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Cdn.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.EngineInnerExceptionTrans.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyCancelled.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyCountdown.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyEntrantInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyEntrantRemoved.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyEntrantState.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyEntrantUpdated.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd/Victory.Service.LobbyInvite.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.AchievementProgress.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.AchievementState.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.BadgeBundle.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.BadgeDefinitionPacket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.BadgeInput.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.BadgePacket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.ChatTranscript.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.ClientPhysicsMetrics.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.ErrorReport.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.Event.CarClass.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.SecurityResponse.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.ShardInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.ShortcutUsage.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.StatConversion.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.Service.Objects.StatNameList.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.Service.P2PCryptoTicket.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.Service.SecurityChallenge.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /xsd/Victory.Service.ServerTime.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.Service.SessionInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /xsd/Victory.Service.region.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.FriendPersona.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.PersonaDeleted.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.PersonaIdArray.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.PersonaMotto.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.PersonaPresence.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.DriverPersona.UserIdArray.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.News.NewsArticleFilters.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.Session.chatRoom.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /xsd/Victory.TransferObjects.User.PersonaCCar.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xsd/Victory.Voip.VoipRoomInfo.xsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /xsd/xjc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | xjc -p com.soapboxrace.jaxb.http \ 3 | Victory.TransferObjects.User.UserInfo.xsd \ 4 | Victory.TransferObjects.DriverPersona.PersonaFriendsList.xsd \ 5 | Victory.DataLayer.Serialization.User_Settings.xsd \ 6 | Victory.DataLayer.Serialization.ClientConfigTrans.xsd \ 7 | Victory.Service.SystemInfo.xsd \ 8 | Victory.TransferObjects.Session.chatServer.xsd \ 9 | Victory.Service.Objects.Event.CarClass.xsd \ 10 | Victory.DataLayer.Serialization.FraudConfig.xsd \ 11 | Victory.DataLayer.Serialization.UdpRelayInfo.xsd \ 12 | Victory.DataLayer.Serialization.RegionInfo.xsd \ 13 | Victory.DataLayer.Serialization.LoginAnnouncement.LoginAnnouncementsDefinition.xsd \ 14 | Victory.DataLayer.Serialization.HeartBeat.xsd \ 15 | Victory.DataLayer.Serialization.Event.EventDefinition.xsd \ 16 | Victory.DataLayer.Serialization.CommerceResultTrans.xsd \ 17 | Victory.DataLayer.Serialization.ProductTrans.xsd \ 18 | Victory.EngineErrorCode.xsd \ 19 | Victory.Service.EngineExceptionTrans.xsd 20 | 21 | #Victory.DataLayer.Serialization.OwnedCarTrans.xsd 22 | 23 | cp -r com ../src/main/java 24 | rm -rf com 25 | --------------------------------------------------------------------------------